開發人員通常直接使用或連接潛在的易受攻擊的輸入與檔,或假設輸入檔是有效的。如果未正確檢查數據,則可能導致Web伺服器處理或調用易受攻擊的內容。
示例
一些經典的例子包括 -
- 將
.jsp
檔上傳到Web目錄中。 - 上傳
.gif
進行調整大小。 - 上傳大檔。
- 上傳包含代碼(標籤)的檔。
- 將
.exe
檔上傳到Web目錄中。
動手實踐
第1步 - 啟動WebGoat並導航到惡意檔執行部分。如下所示-
第2步 - 為了測試演示,我們需要在上述位置上傳guest.txt。
第3步 - 我們創建一個jsp
檔,以便在執行jsp時創建guest.txt
檔。由於我們執行jsp來創建檔,因此jsp在此上下文中沒有任何顯示。
<HTML>
<% java.io.File file = new
java.io.File("C:\\Users\\username$\\.extract\\webapps\\WebGoat\\mfe_target\\guest.txt");
file.createNewFile(); %>
</HTML>
第4步 - 這裏將上傳jsp檔並在上傳後複製相同的鏈接位置。上傳期望的是圖片,但這裏上傳的一個jsp檔。
第5步 - 通過導航到jsp檔,將不會向用戶發送任何消息。
第6步 - 現在刷新已上傳jsp檔的會話,將收到消息“* Congratulations. You have successfully completed the lesson”。
預防機制
- 使用網站許可權保護網站。
- 採用Web應用安全對策。
- 瞭解IIS 7.0中的內置用戶和組帳戶。