命令行執(zhí)行漏洞介紹
應(yīng)用程序鐘又是需要調(diào)用一些執(zhí)行系統(tǒng)命令的函數(shù),如Python的os模塊提供了很多函數(shù)來執(zhí)行系統(tǒng)命令菩掏。
當(dāng)黑客能夠控制這些函數(shù)時,就可以將惡意的系統(tǒng)命令拼接到正常的命令鐘凭峡,從而造成命令行攻擊选泻。
命令行攻擊
如圖,頁面提供了一個輸入IP地址后程序執(zhí)行ping命令淫茵,然后將ping命令返回到頁面上爪瓜,
當(dāng)輸入127.0.0.1&&cat /ect/passwd則獲取到了系統(tǒng)中的passwd文件的內(nèi)容,這里利用了
Linux利用管道符"&&"連接多行命令來執(zhí)行了cat /ect/passwd命令匙瘪,從而得到了passwd文件內(nèi)容
常用管道符
Windows
| :直接執(zhí)行后面語句 例如:ping 127.0.0.1 | who am i
|| :如果前面執(zhí)行的語句執(zhí)行出錯铆铆,則執(zhí)行后面的語句,前面只能為假丹喻,例如:ping 2? ||? whoami
&:如果前面的語句為假則執(zhí)行后面的語句薄货,前面可真可假,后面語句都會執(zhí)行碍论。例如:ping 127.0.0.1&?whoami
&&:如果前面語句為假則直接出錯谅猾,也不執(zhí)行后面的語句,前面的語句只能為真骑冗。例如ping 127.0.0.1&& whoami
Linux
;:執(zhí)行完前面語句再執(zhí)行后面的赊瞬。例如:ping 127.0.0.1;whoami
| :顯示后面語句的執(zhí)行結(jié)果贼涩。
||:當(dāng)前面語句出錯是執(zhí)行后面的語句
&:如果前面前面的語句為假則執(zhí)行后面的語句巧涧,前面的語句可真可假
&&:如果前面的語句為假則直接出錯,也不執(zhí)行后面的語句遥倦。
命令行漏洞代碼分析
命令行執(zhí)行漏洞代碼分析
多少因為直接拼接入?yún)⒔o執(zhí)行函數(shù)谤绳,未對參數(shù)進行過濾處理
命令行執(zhí)行漏洞修復(fù)建議
1)盡量不要使用命令執(zhí)行函數(shù)
2)客戶提交的變量要做好過濾與檢測
3)在使用動態(tài)函數(shù)之前,確保使用的函數(shù)是指定的函數(shù)之一
4)不能完全控制的危險函數(shù)最后不要使用