這篇文章給大家介紹如何通過濫用SSL與TLS繞過Web應(yīng)用程序防火墻,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
我們一直強(qiáng)調(diào)成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)站建設(shè)公司不一定是大公司,創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。
近些年來,Web安全已經(jīng)逐漸變成了IT安全領(lǐng)域里非常重要的一個部分。Web應(yīng)用的優(yōu)勢就在于開發(fā)人員可以在較短的時間內(nèi)集成各種關(guān)鍵服務(wù),而且維護(hù)難度也比傳統(tǒng)的桌面端應(yīng)用程序要低很多。除了設(shè)計(jì)新的Web標(biāo)準(zhǔn)之外,企業(yè)對Web應(yīng)用的安全需求也在不斷變化。我們將跟大家介紹一種針對防火墻的新型繞過技術(shù)。
近期,我對某公司的網(wǎng)絡(luò)防火墻進(jìn)行了測試,該公司所部署的基礎(chǔ)設(shè)施架構(gòu)如下:
當(dāng)我拿到我所需要的數(shù)據(jù)信息之后,我打算嘗試一些不同的繞過方法來對其基礎(chǔ)設(shè)施進(jìn)行滲透測試。除了一些常規(guī)的WAF測試方法之外,我準(zhǔn)備利用SSL Cypher來繞過WAF。當(dāng)我第一次登錄WAF時,系統(tǒng)彈出了一個“Unsupported SSL Ciphers”警告信息,這就非常有意思了,查看了詳細(xì)的產(chǎn)品文檔之后,我獲取到了該設(shè)備支持的所有SSL Cypher,但是在開始之前我想跟大家簡單介紹一下SSL連接的工作機(jī)制。
SSL握手由下面三個主要步驟組成:
握手過程由客戶端發(fā)送的ClientHello消息開始,這條消息包含了服務(wù)器端需要的全部信息。服務(wù)器端受到連接消息之后會響應(yīng)一條ServerHello消息,其中包含了客戶端所需要的信息。除此之外,服務(wù)器還會返回需要使用到的相關(guān)Cypher套件版本以及SSL版本。
連接初始化完成之后,服務(wù)器需要向客戶端提供身份驗(yàn)證信息,服務(wù)器會給客戶端發(fā)送SSL證書,客戶端會驗(yàn)證證書的真實(shí)性,并確定是否可以信任該證書,然后繼續(xù)完成連接。
此時安全信道以建立成功,服務(wù)器和客戶端會交換用于加密和解密數(shù)據(jù)的密鑰。
我的攻擊思路如下:如果我使用一個“不被WAF支持”的SSL Cypher來跟目標(biāo)Web服務(wù)器進(jìn)行初始化連接,而這個Web服務(wù)器實(shí)際上是支持這個Cypher版本的,那么WAF就無法識別我所進(jìn)行的攻擊了,因?yàn)樗鼰o法查看到真實(shí)的請求數(shù)據(jù)。
因此,在查看了防火墻廠商所提供的詳細(xì)技術(shù)文檔之后,我提取出了所有支持的SSL Cypher,相關(guān)內(nèi)容如下所示。
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 }
接下來要做的就是識別目標(biāo)Web服務(wù)器所支持的SSL Cypher了,這一步有很多種方法可以實(shí)現(xiàn),但我選擇利用sslscan這款工具,因?yàn)樗惭b起來比較簡單,而且還可以提供非常多的詳細(xì)數(shù)據(jù)。
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
上述命令可以列舉出目標(biāo)Web服務(wù)器支持的所有SSL/TLS版本以及Cypher。通過將sslscan的掃描結(jié)果與產(chǎn)品文檔數(shù)據(jù)進(jìn)行對比之后,我發(fā)現(xiàn)了Web應(yīng)用防火墻不支持但Web服務(wù)器支持的Cypher:
Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA
為了測試我的攻擊思路是否正確,我創(chuàng)建了一條WAF規(guī)則,它會屏蔽請求路徑為/ssl-cipher-test的網(wǎng)絡(luò)請求。
訪問這條路徑之后,連接便會被成功屏蔽:
利用這種繞過技術(shù)的最快方法就是指定客戶端所使用的Cypher,只留下一個就可以了。你可以利用curl的“—ciphers”命令來指定需要使用的Cypher,這里我指定使用ECDHE-RSA-AES256-SHA:
pwn@thinkpad:~$curl --ciphers ECDHE-RSA-AES256-SHA https://waf-test.lab.local/ssl-cipher-testHELLO Bypass worked
pwn@thinkpad:~$
大家可以從響應(yīng)信息中看到,我們已經(jīng)成功繞過了Web應(yīng)用防火墻。
關(guān)于如何通過濫用SSL與TLS繞過Web應(yīng)用程序防火墻就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。