在網絡安全領域,我們經常會看到或聽到一些比較陌生的專業術語,比如“命令注入”,那么什么是命令注入?如何形成的?具體內容請看下文。
什么是命令注入?
Command Injection,即命令注入攻擊,是指由于嵌入式應用程序或者web應用程序對用戶提交的數據過濾不嚴格,導致黑客可以通過構造特殊命令字符串的方式,將數據提交至應用程序中,并利用該方式執行外部程序或系統命令實施攻擊,非法獲取數據或者網絡資源等。
在命令注入的漏洞中,最為常見的是PHP的命令注入。PHP命令注入攻擊存在的主要原因是web應用程序員在應用PHP語言中一些具有命令執行功能的函數時,對用戶提交的數據內容沒有進行嚴格的過濾就帶入函數中執行而造成的。例如,當黑客提交的數據內容為向網站目錄寫入PHP文件時,就可以通過該命令注入攻擊漏洞寫入一個PHP后門文件,進而實施進一步的滲透攻擊。
原理:Web應用在調用這些函數執行系統命令的時候,在沒有做好過濾用戶輸入的情況下,如果用戶將自己的輸入作為系統命令的參數拼接到命令行中,就會造成命令注入的漏洞。
命令注入攻擊是如何形成的?
嵌入式應用程序或者web應用程序有時需要調用一些系統命令的函數,如Linux C中的system(),exec(),shell-exec()等等,當用戶能夠控制這些函數中的參數時,就可以將惡意參系統命令拼接到正常命令中,從而造成命令注入攻擊設備系統。
命令注入的形成需要如下三個條件:
1、使用了內部調用shell的函數:system(),exec()等。
2、將外界傳入的參數沒有足夠的過濾,直接傳遞給內部調用shell的函數。
3、參數中shell的元字符沒有被轉義。
危害:繼承嵌入式應用程序或者web應用程序的權限去執行系統命令讀寫執行文件,導致系統有可能會被惡意攻擊或者泄露系統用戶信息。