PHP命令執行與防範
阿新 • • 發佈:2018-11-04
命令執行漏洞是指攻擊者可以隨意執行系統命令,是高危漏洞之一。
命令連線符:& && || |
如:ping www.baidu.com && net user
PHP命令執行
(1)命令執行
PHP提供了一些函式用來執行外部應用程式,如:system(),shell_exec(),exec()和passthru。
(2)程式碼執行
eval()函式是一個危險函式,函式內的字串被當做PHP程式碼來執行,也就是說,這個函式可以動態的執行PHP程式碼,如一句話木馬:<?php eval($_POST['x']);?>
(3)動態函式呼叫
舉程式碼例子:<?php $a=$_GET['a']; $b=$_GET['b']; $a($b);?>
如果使用者傳參:a=system&b=net user,最終執行的函式是:system("net user"),這只是一個簡單的例子,說明其危害還是很大的。
(4)PHP函式程式碼執行漏洞
想preg_replace(),ob_start,array_map()等函式都是存在程式碼執行漏洞的,我所學略淺,想要深入瞭解,可上網查資料或者參考《高階PHP應用程式漏洞稽核技術》。
防範命令執行漏洞
儘量不要使用系統執行命令。
在執行命令函式、方法前,變數一定要做好過濾,對敏感字元進行轉義。
使用動態函式之前,確保使用的函式是指定的函式之一。
對PHP語言來說,不能完全控制的危險函式最好不要使用。