压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

針對SOAP的滲透測試與防護

SOAP概述

簡單對象訪問協議(SOAP)是連接或Web服務或客戶端和Web服務之間的接口。SOAP通過應用層協議(如HTTP,SMTP或甚至TCP)進行操作,用于消息傳輸。

http://p3.qhimg.com/t018a390a8123f09261.jpg

圖1 SOAP操作

 

它是基于xml語言開發的,它使用Web服務描述語言(WSDL)來生成Web服務之間的接口。如果客戶端或用戶的獨立應用程序想要與Web服務連接,則它需要由應用程序生成的服務端點接口(SEI)。這些接口WSDL和SEI是使用自動化工具或手動生成的,它們具有平臺無關性。通用描述,發現和集成(UDDI)是Web服務可以發布關于其服務的一個目錄,用戶可以提交他們的查詢。

一個簡單的SOAP消息包含:

  • Envelope: 標識XML文檔,具有名稱空間和編碼詳細信息。
  • 標題:包含標題信息,如內容類型和字符集等。
  • 正文:包含請求和響應信息.
  • 故障:錯誤和狀態信息。

http://p1.qhimg.com/t01005df9d52935509d.jpg

圖2 SOAP請求和響應的示例

圖2顯示了SOAP請求和響應,其中Web服務請求用戶的名稱并回復消息。SOAP是一組被定義為執行某些操作的標準協議,因此它只傳輸請求的數據,無論請求是什么,如果它在其機制中被驗證,它將有答復。

常見SOAP漏洞:

SQL 注入:

SOAP請求易受SQL注入攻擊,提交參數作為變種 sql查詢可以泄露敏感信息。

攻擊前:

在執行攻擊之前,必須知道Web服務的功能,如圖3所示,可以看到以string作為輸入的username參數。

http://p7.qhimg.com/t018f7fc9952d4069d5.jpg

圖3請求功能分析

輸入隨機用戶名以檢查其操作,此時它回應用戶名不存在的消息,這可以幫助執行具有可能性的攻擊。

http://p0.qhimg.com/t01741508de6b6f4a96.jpg

圖4響應信息分析

攻擊后:

下面顯示的請求是一個攻擊者試圖通過在參數的位置傳遞一個sql查詢來訪問用戶詳細信息,數據庫的錯誤消息將有助于猜測查詢的內容。

http://p9.qhimg.com/t0169e2022df55b3beb.jpg

圖5數據庫錯誤消息

http://p5.qhimg.com/t01622549b5800c7e17.jpg

圖6 SQL注入請求

如果傳遞的查詢成功中斷了數據庫語句查詢,那么它將回應用戶的信息。

http://p4.qhimg.com/t01a4dbdd45906e3819.jpg

http://p4.qhimg.com/t015124dad80365ef29.jpg

圖7 SQL注入響應

payload:?SQL注入的payload是簡單的變形查詢,它使數據庫獲取詳細信息,在上面的例子中,使用的數據庫是My SQL(來自Fig.5),它可能包含不同的表,知道所有表中的信息可能是不可能的,但是 在這種情況下可以訪問某些字段。在圖3中,SOAP消息正在使用結合用戶名和1=1的OR語句請求管理員帳戶的詳細信息,并且將其他所有內容標記為“– ”注釋,這使得數據庫顯示所有用戶的用戶名和簽名。在SQL注入中,可以有更多的可能性來執行攻擊,例如具有“,”,“ – ”,“or””and”,“insert”或滿足條件的任何其他組合查詢的語句。

補丁這種類型的攻擊可以通過兩種方式來進行防護與修復:

白名單:雖然列表只允許某些字符通過,但在此列表中添加admin等字符會使應用程序只接收列出的字符。

過濾:其中涉及通過刪除不需要的字符(例如admin’OR’1 = 1”)來過濾用戶輸入 – 將被清理,以便只有admin通過它。

命令注入

命令注入是通常通過傳遞具有數據的命令以獲得諸如目錄結構,網站地圖或甚至與web應用相關的敏感信息的攻擊。

http://p3.qhimg.com/t011c01a370595dea42.jpg

圖8命令注入請求(1)

在上述lookupDNS web服務中,使用IP地址和命令ls進行請求,其列出了如下所示的應用的目錄結構

http://p0.qhimg.com/t01637dcbd63edba25e.jpg

圖9命令注入響應(1)

在其他請求ping命令傳遞與IP地址ping主機,如下所示:

http://p9.qhimg.com/t01a7fc4d8b29dd7c09.jpg

圖10命令注入請求(2)

http://p1.qhimg.com/t016383b6a868b83d84.jpg

圖11命令注入響應(2)

payload:對于這種類型的攻擊,payload是與用戶輸入相結合的命令語句,但有些命令是常用的,有些是操作系統特定的,操作系統的類型是可以由HTTP可以看到的簡單操作。 諸如ls,adduser,install,kill或join等命令可用于執行操作。

補丁:為了修補命令注入攻擊,必須構建嚴格的驗證機制,并且實現其功能,數據庫對于包含攻擊模式192.168.66.2; ls 和192.168.66.2& & ping c1 localhost 進行驗證,以便它只允許字母數字字符。在上述命令中,注入攻擊包括特殊字符&或;這將在服務端執行時分離命令和數據,因此必須開發考慮這些情況的函數功能。

 

XML 注入

在XML注入類型的攻擊中,SOAP消息的變形請求可以在數據庫中進行更改,并對數據庫造成嚴重損壞。

正常功能:創建用戶函數在應用程序中創建新用戶,這需要幾個參數作為輸入,如圖12所示

http://p6.qhimg.com/t0104088fcace3546ba.jpg

圖12 XML請求

響應將具有帶有插入了用戶名帳戶的消息的return語句,如圖13所示

http://p0.qhimg.com/t016e9a6e7bd472c79c.jpg

圖13 XML響應

攻擊

在實際的XML注入中,代碼的一部分被變形并與請求一起發送,使得代碼將在另一側執行,在圖14中,創建用戶功能被添加有附加代碼以利用服務。

http://p1.qhimg.com/t019a3fbfd5ca284caf.jpg

圖14 變形的XML請求

從圖15可以看出,web服務被執行具有插入了用戶名帳戶的消息的代碼。該功能執行攻擊者插入的參數,而不是實際請求。

http://p0.qhimg.com/t01d77abd52f28d009f.jpg

圖15 變形請求的響應

payload:這種類型攻擊的有效載荷實際上是在另一端提交的參數,在這種情況下,創建用戶XML標簽被變形或添加了帳戶Alice的詳細信息并附加請求,以便它將執行它。

補丁:這種類型的攻擊的補丁對createUser的標簽字符串進行了嚴格的限制,它必須使用字符串的長度來定義,并且必須定義wsdl中createUser功能的次數或發生次數。 基于數據和解析器為用戶輸入開發清理機制,并且還使用文檔類型定義(DTD)來驗證嘗試注入是最佳實踐。

SOAP操作欺

每個HTTP請求都包含一個稱為SOAP Action的字段,用于執行在其內容中定義的操作。可能由攻擊者改變內容,攻擊者在客戶端和服務器之間操作,一種繞過或中間人攻擊。

下面顯示的請求消息包含一個稱為create user的功能,它可以在SOAP Action字段和SOAP主體中看到。

http://p7.qhimg.com/t01f1c9f9c6fc68abfa.jpg

圖16帶有SOAP動作字段的SOAP請求

簡單地變形(可能不是一個)可以改變其功能,如圖17所示

http://p1.qhimg.com/t0196945d96701150f6.jpg

圖17 變形的SOAP動作的請求

在更改請求并將其傳遞到服務器后,請求將有一個響應,因為它似乎是合法的,并執行其操作刪除帳戶,可以在圖18

http://p3.qhimg.com/t01e2f4841e3b734c6c.jpg

圖18 SOAP執行變形請求后的響應

payload:對于這種類型的攻擊沒有特定的有效載荷,SOAP動作字段被認為是目標,對功能的徹底分析可以提供執行攻擊的線索。僅改變SOAP字段可能不足以執行攻擊,它可能需要根據所執行的動作來改變請求消息。

補丁:為了防止這種類型的攻擊,必須在HTTP請求中禁用SOAP Action字段(如createUser或deleteUser),或使用不容易猜到的SOAP Action術語。有時可能需要在這樣的事件中強制添加Action字段,開發人員必須考慮SOAPAction:“”(意味著SOAP消息的意圖由請求的URI給出)的可能性或SOAP Action:(空字段表示 消息的意圖是不指示任何值或URI)。

SOAP參數DOS

每個SOAP請求包含一個被傳遞以獲取一些數據的參數,有一些請求,攻擊者可以利用這些請求來執行拒絕服務攻擊。 如果應用程序無法執行輸入驗證或沒有參數的邊界,可能導致緩沖區溢出,這將使服務不可用。 下圖顯示的參數用戶名沒有任何邊界限制,因此任何一個都可以將任意長度的字符串傳遞給應用程序。

http://p5.qhimg.com/t01425f5ec5d7ada156.jpg

圖19沒有限制條件的SOAP請求

如果用戶名有限制,那么它會有一些異常傳遞正確的字符串,這將使應用程序安全。

payload:這種類型的攻擊的有效載荷是知道在請求中傳遞的數據類型,因此基于傳遞最大值或大值的數據類型可以是攻擊的方式。

補丁:為了減輕這種類型的攻擊,必須使用最小和最大長度或某些邊界來定義參數,例如參數用戶名包含5個最小值和35個字符串最大長度,可以在處理中輕松驗證。

http://p8.qhimg.com/t01f6d8b45960e895a6.jpg

圖20 帶條件的SOAP請求

 

WSDL

WSDL泄露不能被視為攻擊,而是攻擊的一個步驟,就像我們所知道的,所有WSDL都知道的包含Web服務的信息,有一些Web服務需要對諸如支付網關或正在收集敏感信息的服務等攻擊者隱藏。 任何攻擊者都可以通過在搜索引擎中輸入“inurl:?wsdl”來搜索Web服務。

http://p6.qhimg.com/t016448fd1dff572579.jpg

圖21 wsdl搜索

http://p6.qhimg.com/t0131ec4d3e508e2874.jpg

圖22 Web服務WSDL

補丁

用于數據的安全傳輸的Web應用程序從不依賴于其安全性如使得Web服務的URL,對于搜索引擎和公開內容是隱藏的,并且對諸如機密性,完整性和真實性的特征進行嚴格保持。

 

參考鏈接:https://www.owasp.org/index.php/Testing_for_Web_Services

來源:安全客(http://bobao.360.cn/learning/detail/3454.html)

上一篇:Grand Mars行動—對抗Carbanak網絡攻擊

下一篇:spora敲詐者木馬分析