文件包含漏洞利用
一、包含日志文件
网站存在漏洞但没有合适的上传点时,可以尝试包含日志文件(mysql/ssh/apache等)
1.原理
用户发起请求时,服务器会将请求写入日志;因此可以将一句话木马写入日志文件,再包含日志文件执行木马。
同样,在ssh登录或者mysql连接时也会写入日志
2.利用条件
- 日志文件可读
- 日志文件存放位置可知
- 存在文件包含漏洞
以Apache为例,日志文件内容如下
可以看到即便是404页面也会被记录
3.利用过程
1)向服务器发送请求,POC如下
http://192.168.30.103/security/fileinc.php?filename=1.php<?php phpinfo();?>
2)通过burp抓包可以发现,‘<’ 和 '>'被转码了,修改后转发
服务器记录日志的时候以空格分隔 因此<?php phpinfo(); ?> 写入日志会被截取
不加空格php会将phpphpinfo()当成一个函数,所以要使用短标记<? ?>
3)请求发送后查看日志文件
可以看到php代码成功写入日志
4)包含日志文件
上传的代码成功被执行
ssh登录日志类似,在ssh登录时,将用户名修改为恶意代码即可,例:
ssh "<?phpinfo();?>"@xxx.xxx.xxx.xxx
linux默认登录日志路径:/var/log/auth.log 或 /var/log/secure
mysql同理:
mysql -u"<?phpinfo();?>" -h 192.168.30.103 -p
二、包含上传文件
无法上传php文件时,如果存在文件包含,可以上传符合服务器要求的文件,在文件中写入恶意代码,然后再包含以执行。
制作图片马:
copy dark.jpg/b + shell.php/a picshell.jpg
- 此种方法制作的图片马是以image解析,图片可以正常显示;但是只能通过文件包含利用,蚁剑无法连接。
- /b 表示以二进制流打开
- /a 表示以ascii形式打开
然后将图片马上传,包含利用
xxx.php?filename=picshell.jpg&code=phpinfo();
三、包含session文件
session文件通常保存在temp目录下,文件名格式通常为sess_xxxxx(session id),找到一个可以写入session的点即可利用文件包含漏洞。