命令注入
是指程序中有調用系統命令的部分,例如輸入ip,程序調用系統命令ping這個ip。如果在ip后面加一個&&、&、|、||命令拼接符號再跟上自己需要執行的系統命令
在ping設備的輸入框中ip后面加上&ifconfig,或者其他命令
222.222.221.138&ifconfig
和文件上傳漏洞對比
相同點
相同的地方是都是根據程序調用系統命令
不同點
命令注入是程序調用系統命令,在參數沒有約束的情況下,在參數后加上需要執行的系統命令。這個限制在於程序不一定提供這種調用系統命令的功能。
文件上傳漏洞是自己手動上傳一個執行系統命令的頁面,然后訪問這個頁面,把命令以參數的形式傳給頁面執行。
上圖中在文件上傳漏洞同樣可以達到一樣的效果
工具的使用
Commix工具可以用來命令注入.
防護
參數過濾
白名單保護
如果命令的參數是有特征性的建議使用白名單對輸入的參數進行保護
比如允許[a-z][A-Z][0-9] _- 等有限的字符
黑名單保護
|;&$><`\! 可以將這些字符直接作為黑名單過濾
\t\n\r\f \u0000 這些字符需要作為黑名單過濾,特別是空字符截斷 \u0000 (這個在JVM6里是沒有保護)