1. 程式人生 > >PHP命令執行與防範

PHP命令執行與防範

命令執行漏洞是指攻擊者可以隨意執行系統命令,是高危漏洞之一。

命令連線符:&  &&   ||     |

如: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語言來說,不能完全控制的危險函式最好不要使用。