1.本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
2.远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,因此,需要做严格的白名单策略进行过滤。
Low级:查看源码,发现没有过滤。
(1)因为dvwa是使用docker搭的,把URL中文件名替换为/etc/hosts,
(2)这里PHP版本为5.5.9,
(3)在攻击机上搭建一个web服务器,在web根目录下写入一个shell.php文件,用来显示phpinfo,
(4)将文件名替换,可以远程执行PHP脚本,
Medium级:
查看源码,
发现str_replace()函数把http://等替换为了空置,但是str_replace()函数只做一次替换,如果在http://中再嵌套一个http://就能绕过了。
(1)
(2)采用嵌套,可以顺利执行,
(3)使用远程文件包含的时候,也要嵌套,可以顺利执行,
High级:
查看源码,发现使用fnmatch()函数来检查变量page的值,开头必须是file或者file是include.php文件,否则不会执行,可以通过file协议进行绕过: