声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
背景介绍:
LFI(本地文件包含):允许攻击者暴露目标服务器上的文件,在目录遍历(../)的帮助下,可以使攻击者访问本不应该访问到的文件。
今天的故事来自国外一位名为Abhishek的白帽子,接下来我们看看他是如何绕过LFI过滤的吧。
绕过利用:
首先来看个例子:
https://example.com/redirect.php?page=/home/index.html
上面这个URL是正常访问index.html页面。
https://example.com/redirect.php?page=../../../etc/passwd
而如果该网站存在LFI漏洞的话,通过上面这个URL可以顺利读取到服务器上的passwd文件。
而此类漏洞被评级为P1级,因为通过LFI漏洞有可能通过各种方法实现RCE。
hackerone上对于LFI的评级
这位白帽小哥在一次目标渗透时,遇到了一个疑似可以LFI的漏洞,他进行某次尝试时:
../../../../../../../etc/passwd.html
出现了如下提示:
感觉有戏,但是结尾会以.html结束。
于是这位小哥尝试将文件类型更改为 txt、png等后缀,得到的结果却依然失败:
另外,小哥还尝试使用了空字节%00,同样失败:
在经历了大量的错误与阻止后,经过小哥的不懈努力,最终成功绕过:
而最终的Payload是:
www.target.com/rd?page=Li4lMkYuLiUyRi4uJTJGLi4lMkYuLiUyRi4uJTJGLi4lMkZldGMuLiUyRnBhc3N3ZC4uJTJGMDAudHh0Ly8uJTAw
如果你把上面这段编码进行base64解码的话,就是:
..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc..%2Fpasswd..%2F00.txt//.%00
正所谓“世上无难事,只怕有心人!”,希望这篇文章能给正在阅读的你有更多的启发!
另外,附上一份LFI的字典:
https://raw.githubusercontent.com/emadshanab/LFI-Payload-List/master/LFI%20payloads.txt
点击下方“阅读原文”可跳转至文章原文地址。
====正文结束====
原文始发于微信公众号(骨哥说事):一种绕过LFI(本地文件包含)的方法