文件包含漏洞(上)

释放双眼,带上耳机,听听看~!

0x00 文件包含概述:

1.文件包含的含义

服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行。

2.文件包含的好处

有效避免防火墙的查杀。

3.PHP中文件包含函数有以下四种

(1)require()

(2)require_once()

(3)include()

(4)include_once()

include和require区别主要是include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。

include_once(),require_once()这两个函数,与前两个的不同之处就在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。

0x01 本地文件包含:

1.简单文件包含

(1)创建1.php、b.php、c.php

(2)访问127.0.0.1/1.php?sj=b.php

(3)访问127.0.0.1/1.php?sj=c.php


2.本地文件包含

(1)创建2.php、3.php

(2)访问127.0.0.1/2.php?sj=3.php

3.本地文件包含——升级

(1)创建1.txt


(2)浏览器访问127.0.0.1/1.txt

(3)将1.txt重新命名为1.jpg,访问127.0.0.1/2.php?sj=1.jpg

(4)浏览器访问127.0.0.1/2.php?sj=1.jpg

无论是txt、jpg、rar等任何格式 ,经过文件包含都会转化为php来执行。

(5)菜刀连接127.0.0.1/2.php?sj=1.jpg


4.本地文件包含——读敏感文件

Windows系统

C:\boot.ini //查看系统版本C:\windows\system32\inetsrv\MetaBase.xml //IIs配置文件C:Program Files\mysql\my.ini //MySQL 配置C:Program Files\mysql\data\mysql\user.MYD //MySQL rootC:\windows\php.ini //php配置文件 C:\windows\my.ini


Linux系统/Unix系统

/etc/passwd //账户信息 /etc/shadow //账户密码文件/usr/local/app/apache2/conf/httpd.conf //Apache2配置默认文件/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置/usr/local/app/php5/lib/php.ini //PHP相关配置/etc/http/conf/httpd.conf //Apache配置文件/etc/my.conf //mysql配置文件

例如127.0.0.1/2.php?=../../../../etc/passwd


5.本地文件包含——绕过限制

这会限制被包含文件的格式。所有的文件都会被当html执行。


6.本地文件包含——绕过

(1)修改3.php里面的内容

访问http://127.0.0.1/4.php?sj=3.php

(2)绕过方法

1)点点点*n绕过(点数正好相等)

2)%00(%00截断)

在url后面输入%00即可截断html

条件:allow_url_fopen=Off

php版本<5.3.4>

3)长路径截断

条件:windows OS,点号需要长于256;windows下目录最大长度为256字节,超出的部分将会被丢弃

linux OS 长于4096;linux下目录最大长度为4096字节,超出的部分将会被丢弃


7.本地文件包含——权限提升  写shell

(1)了解apache日志

(2)开启日志

将前面的注释去掉,重启服务器即可

(3)读取日志2.php里面的内容

访问127.0.0.1/2.php?sj=../Apache/logs/access.log

(4)burp抓包,添加一句话木马

(5)查看日志

(6)连接菜刀,查看文件管理


0x02文件包含总结:

由于文件包含内容涉及面过广,下节继续远程文件包含及如何防御。

本文源自微信公众号:弥天安全实验室

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新消息 消息中心
有新私信 私信列表
搜索