前言
文件包含是指一个文件可以包含(接入)另一个文件。常见的PHP文件包含函数为include()、require()、include_once()、require_once()。
文件包含可以分为本地文件包含和远程文件包含。本地文件包含只能对服务器本地文件进行包含;远程文件包含可以通过URL地址包含其他服务器的内容。
在PHP环境中,远程文件包含需要的条件为
allow_url_include、allow_url_fopen为开启状态:on
实操
一、本地文件包含
(一)存在上传点
如果目标存在文件上传点,那么可以通过上传木马文件,然后通过文件包含访问木马文件,达到getshell的目的,因为在PHP环境下,包含的文件会被当做PHP格式解析。
要求:(1)有文件上传点;(2)知道文件上传位置
1、上传图片格式的PHP木马文件
2、通过本地文件包含功能访问刚才的图片木马文件,使用冰蝎连接木马。
(二)日志文件
当访问网站服务时,我们的行为会被网站记录到日志中。如果将我们被记录到日志的信息替换为恶意语句(一句话木马、反弹shell命令),然后在访问日志文件,那么恶意语句就会被执行,我们就可以拿到目标服务器的权限。
但一般在没获取到目录信息的情况下,我们可以对日志的默认位置进行包含
windows: apache/logs/access.log apache/logs/error.log
linux: /var/log/apache/access.log /var/log/apache2/access.log /var/log/apache/access_log /var/www/logs/access_log /var/log/access_log
相应的的也有error.log、对ssh日志进行包含等多种方式。
ssh日志默认位置:/var/log/auth.log
1、将一句话木马写入到日志文件中
2、用文件包含功能包含日志文件
3、使用木马连接工具。
二、远程文件包含
1、包含远程服务器上的木马文件
2、通过PHP伪协议
data、input等进行木马文件写入。