6.2 SOA攻擊掃描與弱點偵測

Attack Vector 有以下幾種:

1. Profiling and Invoking Web Services:

--- Web Services Profile ---

[Method] Intro

[Input]

[Output] string

[Method] getProductInfo

[Input] string id

[Output] string

[Method] getRebatesInfo

[Input] string fileinfo

[Output] string

[Method] getSecurityToken

[Input] string username, string password

[Output] string

<soap:Body>

<getProductInfo xmlns="http://tempuri.org/"> <id>*</id>

</getProductInfo></soap:Body>

 以上是透過 wsScanner 取 WSDL 檔案的一個範例,從中我們可以發現到,這個 web services 所有可使用的 method 和其 characteristic都被揭露出來,如此一來有心人士就可以自製 SOAP message,裡頭可以放入合法 or 非法的 parameters,之後透過收到的 response 來探就該 web services 的行為。

2. Technology Fingerprinting and Enumeration

HEAD /ws/customer.asmx HTTP/1.0

HTTP/1.1 500 Internal Server Error

Server: Microsoft-IIS/5.0

Date: Wed, 13 Oct 2004 18:29:07 GMT

X-Powered-By: ASP.NET

X-AspNet-Version: 1.1.4322

Cache-Control: private

Content-Type: text/html; charset=utf-8

Content-Length: 3026

Set-Cookie: ASPSESSIONIDASSBTQAC=LIBHCFKCDJNKKKWCONLACMMB; path=/

Cache-control: private

 

HTTP/1.x 200 OK

Date: Tue, 20 Sep 2005 08:58:35 GTM

Server: Apache/2.0.50 (Unix) mod_ssl/2.0.50 OpenSSL/0.9.7d

mod_jk2/2.0.4

Content-Type: text/html; charset=ISO-8859-1

Content-Length: 89

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

上面的 info 為 web server 回傳 packet 中的內容,透過 Wireshark 這一類的網路封包分析軟體,很容易就可以解析出不少帶有分險性的資訊。e.g., underscore 的部分,是一些關於 web HTTP server 的版本號、server 端的運作平臺,看似無傷大雅的訊息其實藏有玄機,如果對前一陣子總統府網站被駭有深入研究的話,它其實就是因為 server 端的 PHP version 還是 v4,沒有升到 v5,導致當時的漏洞被人利用。


3. XML Poisoning / Injection

DoS 過去都是透過大量 SYN-ACK 這類的 HTTP request 來達成,不過拉到 data 的層級亦可以辦到。主要是透過對 XML 下毒,這是什麼意思?因為 XML 檔案會透過 DTD or XML Schema 來 validate,poor policy 就是一個可攻擊的漏洞。
e.g., 某個 element 我們只需要在 XML 檔案中出現一次,但是我們卻在
DTD or XML Schem 中 define 允許它一或多次,正常的 use case 肯定沒有問題,但如果被下毒後的 XML,它有 10000 個該 element,對於 parser 在 parsing 必然會損耗大量的 memory,如果是 hardware 較差的 server or 迫使 server 大量處理這個下毒的 XML 都可能導致 server 的 shut down,達成 DoS 的目的

XML parsers are of two types: SAX and DOM
XML Poisoniog with SAX Parsing
SAX parser used mainly to overwrite or change already passed values to the previous node.
XML Poisoniog with DOM
DOM parser used mainly to excute many times, and case the system loss.

4. Parameter Tampering

  • Metacharacter injection
    • ', ", %, &, $, *
  • Data type mismatch
  • Abnormal values
    • inject out-of-boundary value
  • Sequence breaking

修改參數是一種很直覺的做法,過去在 HTTP 的網址列上我們可能會換致 query string 看看能不能看到不一樣的網頁內容。同樣的思維把它帶入 SOAP 中,將正常的 input string 換成 metacharacter,這些通常對系統都別具意義,不管能否達成預想的功能,執行錯誤所產生的 error message 都可以變成尋找新突破點的 clue,透過多次且不同類型的 input 所產生的 error messages,極有可能推敲出整個 system 的架構,造成潛在的風險。



 

5. SQL Injection with SOAP Manipulation

<soap:Body>

<getProductInfo xmlns="http://tempuri.org/"> <id>1 OR 1=1</id>

</getProductInfo></soap:Body>

這段指令在SQL Injection裡面代表了讀取整個database

在Injection裡面,通常都是加入一些metacharacter來讀取資料,無論是SQL Injection、XPATH Injection或是LDAP Injection其方法大同小異。

LDAP:Lightweight Directory Access Protocol為一個industry standar that is supported by several venders。LDAP usually resides on a trusted internal network, whereas the Web server and Web services are deployed in the demilitarized zone (DMZ)。