前言
當(dāng)我們想通過(guò)網(wǎng)站獲取目標(biāo)主機(jī)的shell權(quán)限時(shí),很容易想到通過(guò)文件寫(xiě)入的方式將惡意代碼存到服務(wù)器,這樣就可以通過(guò)蟻劍等工具進(jìn)行遠(yuǎn)程控制。
那么文件寫(xiě)入漏洞的原理是什么呢?
原理
當(dāng)web網(wǎng)站對(duì)用戶寫(xiě)入、上傳的文件缺乏權(quán)限限制或文件類(lèi)型的檢驗(yàn)功能不全等,攻擊者可以通過(guò)web網(wǎng)站寫(xiě)入惡意文件到服務(wù)器。
該漏洞經(jīng)常出現(xiàn)在模板備份、文件編輯、文件備份等功能點(diǎn)。PHP文件寫(xiě)入的常見(jiàn)函數(shù)包括fopen()、fwrite()、fputs()、file_put_contents()等。
該漏洞的產(chǎn)生需要具備以下條件
攻擊思路:顯然,當(dāng)尋找到可控參數(shù)及發(fā)現(xiàn)程序存在無(wú)效校驗(yàn)時(shí),即可進(jìn)行文件寫(xiě)入攻擊。
利用方式
<?php
$tpl_name = $_POST['tpl_name'];
$tpl_content = addslashes($_POST['$tpl_content']);
if(!empty($tpl_name)&&!empty($tpl_content))
{
file_put_contents($tpl_name,$tpl_content);
echo"成功寫(xiě)入內(nèi)容到".$tpl_name."文件!"."</br>";
}
else
{
echo "請(qǐng)輸入文件名或文件內(nèi)容!</br>";
}
?>
這段代碼通過(guò)POST請(qǐng)求傳遞兩個(gè)參數(shù),并使用函數(shù)將tpl_content的內(nèi)容寫(xiě)入以tpl_name為文件名的文件中。

由于代碼沒(méi)有對(duì)文件的寫(xiě)入內(nèi)容與類(lèi)型做有效校驗(yàn),此時(shí)就形成了文件寫(xiě)入漏洞。
通過(guò)傳參來(lái)執(zhí)行命令即可:

接著我們?cè)L問(wèn)shell.php即可獲取PHP版本信息

要形成更高的危害可以寫(xiě)入一句話木馬,本文不再贅述。
————————————————
版權(quán)聲明:本文為CSDN博主「秋說(shuō)」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/2301_77485708/article/details/135185286
該文章在 2023/12/27 17:29:05 編輯過(guò)