qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Web安全測試學習筆記——“淘金”式攻擊

          軟件測試的目的在于找到缺陷和證明缺陷,在這個過程中進行全面覆蓋性或反復測試,以圖無限地趨近100%,結果可能很好,但工作效率非常低。在WEB安全測試上,如何避免大海撈沙,需要有的放矢,把有價值的信息淘出來。

            安全測試的出發點和功能測試不太相同,安全測試的手段就是攻擊,攻擊,還是攻擊。尋找有價值的信息,就是測試的第一招。“淘金”就是其中的一種方式,一般來說由以下信息需要關注。

            ◆ HTML中的代碼注釋

            ◆ HTML中的敏感代碼

            ◆ 服務器或應用程序的錯誤信息和HTTP響應

            代碼注釋是一塊很容易被開發人員忽略掉的信息,因為對于開發人員來說,這些就是他們做后期開發的“工程文檔”,再正常不過的東西,甚至很樂意文件中能有更的關鍵注釋。如代碼中會出現“標記為1時,表示XXX信息”或“若為空,則交由XX處理”。這類信息只需要通過閱讀HTML文件即可發現,并且對于攻擊者來說是非常好的指南。

            如果攻擊者能夠根據通過對源代碼的處理,獲取到數據庫信息、用戶名、密碼等數據時,這個應用是非常危險的。要獲取這樣的信息,首先需要清楚應用間的數據傳遞方式。通過GET方式傳遞的,可以直接在URL中獲取到“參數名=參數值”,如果是通過POST傳遞的,就需要借助抓包工具,比如HttpFox、HttpWatch。當把所有關聯頁面都瀏覽完成后,就可以生成一張頁面間的映射關系圖,同時也可以知道它們之間參數的傳遞情況。如果應用程序實現了訪問級別區分,比如高級別用戶享有特權操作,那么就可以從低等級用戶開始,逐級淘金。通過映射圖閱讀源代碼,尋找注釋中引導信息,就可以獲得有價值的信息。除了手工地去尋找,還可以利用正則表達式自動搜尋。

            當找到以上信息后,檢查頁面之間傳遞的參數,看看哪些參數能夠使得應用程序出錯,這個時候就能發現一些有用的信息。如連接數據庫時出錯,腳本無法處理,該出錯頁面不但會提示錯誤,還可能把出錯點附近的相關代碼也顯示出來,這些相關代碼可能會把數據庫名、表對象名及字段名等信息暴露出來。或者強行產生語法錯誤、營造無法處理的異常場景來破壞應用程序,則會得到服務器對其響應的許多函數調用。因此無論是應用程序還是Web服務器,應該謹慎維護好應對對策略。還有一種常見的漏洞,大家可以到各網站上去自行尋找,即對于用戶名和密碼輸入不正確時觸發不同的報錯信息。如果使用這樣的邏輯進行用戶名和密碼匹配的判斷,當攻擊者暴力破解時,他能夠很清楚的知道,當前使用的用戶名是否是已注冊用戶(當用戶名正確時,提示是密碼錯誤)。

            如何進行防范

            1、確定HTML中注釋是否包含敏感信息;或在日常環境中保留這些注釋,而在線上去除這些注釋。

            2、盡量對于錯誤信息進行二次處理,盡量讓用戶看到的錯誤提示是模糊且有價值的;盡量把相關細節信息保留在服務器的日志文件中,方便開發調試的同時規避安全風險。同時需要定期檢查這些日志文件,了解是否有錯誤信息是未被處理的。

          posted on 2011-10-21 16:32 順其自然EVO 閱讀(192) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 甘泉县| 靖宇县| 德清县| 元氏县| 甘洛县| 德昌县| 宁都县| 香港 | 商洛市| 大竹县| 巴中市| 襄汾县| 潮安县| 汾阳市| 福安市| 理塘县| 城固县| 襄汾县| 静乐县| 宜丰县| 自治县| 东辽县| 海伦市| 苍山县| 永修县| 芜湖县| 常山县| 股票| 南江县| 民权县| 汝州市| 肥城市| 吕梁市| 昌宁县| 安阳市| 开远市| 繁峙县| 奉新县| 九龙坡区| 绥芬河市| 义马市|