RCE(遠端程式碼執行漏洞)原理
阿新 • • 發佈:2020-12-10
RCE(遠端程式碼執行漏洞)原理
一般在交換機或者路由器等等會設定一個ping的介面以便測試,如果防範不到會造成遠端程式碼執行
一般使用ping會用到下面程式碼
$cmd = shell_exec( 'ping ' . $target );
但是這個程式碼沒有做任何處理,這樣就會導致非預期輸入例如:
輸入:127.0.0.1|ipconfig
解釋:|代表管道符,|的意思是隻執行後面的程式
諸如此類的還有
|| 前面為假則執行後面語句,否則只執行前面語句
& 無論前後是真是假都執行
&& 前面為假則後面不執行,前面為真則都執行
; (linux專用)無論前後是真是假都執行
那如果我們想防範呢,我們可以這麼加
(程式碼來自DVWA,感興趣可以自己去練練)
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = trim($_REQUEST[ 'ip' ]);
// Set blacklist
$substitutions = array(
'&' => '',
';' => '',
'|' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
);
把特殊字元全部轉義掉,這樣基本上可以防範大部分執行