安全性測試入門(二):Command Injection命令行注入攻擊和防御


本篇繼續對於安全性測試話題,結合DVWA進行研習。

Command Injection:命令注入攻擊。

 

 

1. Command Injection命令注入

命令注入是通過在應用中執行宿主操作系統的命令,來達到破壞目的的一種攻擊方式。如果我們的應用程序將不安全的用戶輸入傳遞給了系統命令解析器(shell),那么命令攻擊就有可能發生。

通常來說,由應用程序傳遞操作系統命令會賦有和應用一樣的權限,所以如果沒有合理防御機制會給系統帶來很大危害。命令注入攻擊漏洞是PHP應用程序中常見的漏洞之一。

命令注入和代碼注入不同,代碼注入的目的在於將外部代碼注入應用程序本身,並隨程序執行;命令攻擊的對象是服務器的宿主機。

 

DVWA的相應模塊中,有如下功能:應用提供了一個用來ping對象主機的功能。正常情況下,輸入IP地址,返回命令結果。

在DVWA最低防御級別下,嘗試進行攻擊。

由於在windows cmd和linux shell條件下,都可以通過&&來串行執行命令,我們附上dir命令執行后:

可以看到dir命令被執行,並且打印出了其結果。

如果我們用更復雜的命令附在以上命令之后,基本都可以執行,包括創建刪除文件等等,可以對宿主系統造成非常大的危害。

 

2. 防御機制

 分別對比DVWA4個安全級別的后台核心代碼:

Low:

代碼使用shell_exec將用戶輸入執行ping命令,基本沒有任何防御。

Medium:

使用黑名單機制,替換掉如“&&”和“;”這樣的命令符號。但是這樣簡單的黑名單是很容易繞過的,比如“|”管道符就沒有屏蔽。

High:

完善了黑名單機制,篩除了更多字符,但仍有可能繞開。

Impossible:

使用白名單機制替換掉黑名單,將用戶輸入的字符串重組為數組,依次遍歷數組內元素,刪除其中所有的非數字和“.”。這樣就達到了防御命令注入的目的。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM