1. 程式人生 > 其它 >RCE(遠端程式碼執行漏洞)原理

RCE(遠端程式碼執行漏洞)原理

技術標籤:漏洞滲透ctf安全漏洞滲透CTF

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(
		'&'  => '',
		';'  => '',
		'|' => '',
		'-'  => '',
		'$'  => '',
		'('  => '',
		')'
=> '', '`' => '', '||' => '', );

把特殊字元全部轉義掉,這樣基本上可以防範大部分執行