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 閱讀(193) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辉县市| 台安县| 金塔县| 留坝县| 大同市| 漳浦县| 日照市| 凌云县| 烟台市| 顺义区| 田阳县| 石嘴山市| 潼南县| 饶阳县| 东海县| 邯郸市| 焦作市| 凤阳县| 偃师市| 渝北区| 陕西省| 高淳县| 平定县| 乌兰县| 长宁县| 普安县| 宜宾市| 开封县| 通道| 剑阁县| 红河县| 监利县| 四平市| 白朗县| 丹巴县| 错那县| 兴国县| 新竹县| 宿松县| 梁平县| 内丘县|