0%

文件包含漏洞实战之DVWA

File Inclusion - Low

分析及测试

先看看页面内容:有3个php页面,对应page值

先看看能否修改page值访问到本机的文件(拿Windows宿主机试了下,linux也可以尝试使用本地的文件),发现可行

那么接下来就可以尝试访问到服务器的文件,发现也可以直接访问到,证明既没有设置白名单也没有参数过滤

源代码

只有简单的一行代码,没有任何防御手段

File Inclusion - Medium

分析及测试

直接如法炮制访问服务器文件,发现行不通了

再尝试访问本机文件,结果可以访问到,说明可能对 ../ 等字符做了限制

结合给到的WarningNo such file or directory in /var/www/html/DWVA/vulnerabilities/fi/index.php可以尝试直接使用绝对路径来绕过参数限制

源代码

果然是对 ../ , ..\\\ 等进行了限制,但是str_replace函数并不靠谱,可以使用绝对路径代替。或将限制的字符进行拼接,因为../等会被替换为空,那么在 ../ 中间再拼接一个 ../ :.. ../ / , 由于中间的 ../ 会被替换为空,那么左右两边的又会变成一个完整的 ../,这样就可以正常访问到。

File Inclusion - High

分析及测试

使用之前的方法,发现都不行,报错信息甚至做了自定义,这样就无法通过报错获取到有用的信息

猜测可能做了更严格的限制,可能对参数的格式做了限制,尝试用file://协议类构造一个payload进行文件读取,加一个 file://,发现可以正常访问到。

源代码

这里使用了fnmatch函数对page参数做了限制,开头必须为file。至于为什么能猜到要加file://,原因是相对路径不行,字符拼接不行,用过绝对路径后还不行就大致能确定不是字符限制的问题,问题可能出在参数格式之类的限制上。