您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何通過濫用SSL與TLS繞過Web應用程序防火墻,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
近些年來,Web安全已經逐漸變成了IT安全領域里非常重要的一個部分。Web應用的優勢就在于開發人員可以在較短的時間內集成各種關鍵服務,而且維護難度也比傳統的桌面端應用程序要低很多。除了設計新的Web標準之外,企業對Web應用的安全需求也在不斷變化。我們將跟大家介紹一種針對防火墻的新型繞過技術。
近期,我對某公司的網絡防火墻進行了測試,該公司所部署的基礎設施架構如下:
當我拿到我所需要的數據信息之后,我打算嘗試一些不同的繞過方法來對其基礎設施進行滲透測試。除了一些常規的WAF測試方法之外,我準備利用SSL Cypher來繞過WAF。當我第一次登錄WAF時,系統彈出了一個“Unsupported SSL Ciphers”警告信息,這就非常有意思了,查看了詳細的產品文檔之后,我獲取到了該設備支持的所有SSL Cypher,但是在開始之前我想跟大家簡單介紹一下SSL連接的工作機制。
SSL握手由下面三個主要步驟組成:
握手過程由客戶端發送的ClientHello消息開始,這條消息包含了服務器端需要的全部信息。服務器端受到連接消息之后會響應一條ServerHello消息,其中包含了客戶端所需要的信息。除此之外,服務器還會返回需要使用到的相關Cypher套件版本以及SSL版本。
連接初始化完成之后,服務器需要向客戶端提供身份驗證信息,服務器會給客戶端發送SSL證書,客戶端會驗證證書的真實性,并確定是否可以信任該證書,然后繼續完成連接。
此時安全信道以建立成功,服務器和客戶端會交換用于加密和解密數據的密鑰。
我的攻擊思路如下:如果我使用一個“不被WAF支持”的SSL Cypher來跟目標Web服務器進行初始化連接,而這個Web服務器實際上是支持這個Cypher版本的,那么WAF就無法識別我所進行的攻擊了,因為它無法查看到真實的請求數據。
因此,在查看了防火墻廠商所提供的詳細技術文檔之后,我提取出了所有支持的SSL Cypher,相關內容如下所示。
SSL_RSA_WITH_NULL_MD5SSL_RSA_WITH_NULL_SHASSL_RSA_WITH_RC4_128_MD5SSL_RSA_WITH_RC4_128_SHASSL_RSA_WITH_DES_CBC_SHASSL_RSA_WITH_3DES_EDE_CBC_SHASSL_RSA_EXPORT_WITH_RC4_40_MD5SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_RSA_WITH_NULL_SHA256TLS_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_EXPORT1024_WITH_RC4_56_MD5TLS_RSA_EXPORT1024_WITH_RC4_56_SHATLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_RC4_128_MD5= { 0x000x04 }TLS_RSA_WITH_RC4_128_SHA= { 0x000x05 }TLS_RSA_WITH_DES_CBC_SHA= { 0x000x09 }
接下來要做的就是識別目標Web服務器所支持的SSL Cypher了,這一步有很多種方法可以實現,但我選擇利用sslscan這款工具,因為它安裝起來比較簡單,而且還可以提供非常多的詳細數據。
pwn@thinkpad:~$sudo apt install sslscanReadingpackage lists... DoneBuildingdependency tree Readingstate information... DoneThefollowing NEW packages will be installed: sslscan0upgraded, 1 newly installed, 0 to remove and 0 not upgraded.Needto get 26,7 kB of archives.Afterthis operation, 81,9 kB of additional disk space will be used.Get:1http://al.archive.ubuntu.com/ubuntu bionic/universe amd64 sslscan amd641.11.5-rbsec-1.1 [26,7 kB]Fetched26,7 kB in 0s (73,8 kB/s) Selectingpreviously unselected package sslscan.(Readingdatabase ... 177002 files and directories currently installed.)Preparingto unpack .../sslscan_1.11.5-rbsec-1.1_amd64.deb ...Unpackingsslscan (1.11.5-rbsec-1.1) ...Processingtriggers for man-db (2.8.3-2) ...Settingup sslscan (1.11.5-rbsec-1.1) ...pwn@thinkpad:~$sslscan http://target/ | grep Accept
上述命令可以列舉出目標Web服務器支持的所有SSL/TLS版本以及Cypher。通過將sslscan的掃描結果與產品文檔數據進行對比之后,我發現了Web應用防火墻不支持但Web服務器支持的Cypher:
Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA
為了測試我的攻擊思路是否正確,我創建了一條WAF規則,它會屏蔽請求路徑為/ssl-cipher-test的網絡請求。
訪問這條路徑之后,連接便會被成功屏蔽:
利用這種繞過技術的最快方法就是指定客戶端所使用的Cypher,只留下一個就可以了。你可以利用curl的“—ciphers”命令來指定需要使用的Cypher,這里我指定使用ECDHE-RSA-AES256-SHA:
pwn@thinkpad:~$curl --ciphers ECDHE-RSA-AES256-SHA https://waf-test.lab.local/ssl-cipher-test<htmllang=en> <title>HELLO </title> <p>Bypass worked</p>pwn@thinkpad:~$
大家可以從響應信息中看到,我們已經成功繞過了Web應用防火墻。
關于如何通過濫用SSL與TLS繞過Web應用程序防火墻就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。