实战篇——文件包含漏洞

实战篇——文件包含漏洞

本地文件包含

本地文件包含一般需要依赖文件上传漏洞。如果文件上传漏洞限制上传文件的后缀必须为.jpg,那么配合本地文件包含,就可以通过上传图片木马获得服务器权限。

上传图片木马:

利用本地文件包含,成功连接一句话木马:

image-20240707150207753

可见本地文件包含最大的缺陷在于需要依赖文件上传漏洞,下面着重介绍不依赖文件上传漏洞获得服务器权限的方法。

远程文件包含

远程文件包含就是利用http://伪协议包含第三方服务器上的文件。如果第三方服务器可控,那么就可以利用第三方服务器上的一句话木马获得目标服务器的权限。远程文件包含的前提条件是在php.ini配置文件中allow_url_fopen和allow_url_include必须同时开启。

需要注意的是,利用远程文件包含包含的文件后缀不能是.php,否则将因先解析后包含而无法连接一句话木马

image-20240707151710504

image-20240707151814863

解决办法就是将后缀改为任意非.php的后缀,这样就可以先包含后解析

image-20240707152106228

image-20240707152147237

data://伪协议

data://伪协议文件包含的前提条件是在php.ini配置文件中allow_url_fopen和allow_url_include必须同时开启。

首先准备一句话载体:

image-20240707153359690

然后对一句话载体进行base64编码,并对末尾的+进行url编码:

image-20240707153625210

执行,即可连接一句话木马:

image-20240707153754134

php://input伪协议

data://伪协议文件包含的前提条件是在php.ini配置文件中allow_url_include必须开启。

抓包,添加一句话载体,发送:

image-20240707154749950

成功连接一句话木马:

image-20240707154930683

日志投毒:

日志投毒就是将一句话木马植入错误日志中,通过包含错误日志获得服务器权限。由于日志投毒本质上是本地文件包含,因此对php.ini中的allow_url_fopen和allow_url_include两项配置没有任何要求。

日志投毒的前提是需要知道错误日志的路径,如果存在phpinfo泄露,可以通过apache2handler中的Server Root得到apache的安装路径,进而得到错误日志的路径。

错误日志的路径为C:/phpStudy/PHPTutorial/Apache/logs/error.log。

image-20240707160136750

将一句话木马嵌入路径:

image-20240707160607690

抓包:

image-20240707160658576

可见URL已被自动URL编码,必须将其还原,否则将无法连接一句话木马。

将一句话木马还原并发送:

image-20240707160916206

成功连接一句话木马:

image-20240707161121364

.html绕过

通过拼接.html包含文件是一种常见的做法:

image-20240707161612643

此时将无法直接连接一句话木马:

image-20240707161831634

第一种绕过方法是00截断(适用于所有文件包含方式)

image-20240707162104138

第二种方法是通过添加大量的'.'或' '实现路径截断(只适用于本地文件包含和日志投毒)

image-20240707162428927

image-20240707162540751

posted @ 2024-07-07 16:35  yaoguyuan  阅读(23)  评论(0编辑  收藏  举报