王亞麗
摘要
Web安全一直是網(wǎng)絡(luò)安全防護領(lǐng)域最為關(guān)注的問題,WAF(Web應(yīng)用防火墻,Web Application Firewall)作為保障Web服務(wù)器安全一道重要防線,自產(chǎn)生起,其應(yīng)用越來越廣泛,國內(nèi)外對其研究也越來越多。本文對Web應(yīng)用防火墻的基本原理和工作流程,以及繞過Web應(yīng)用防火墻的攻擊方法進行了列舉和原理分析,最后總結(jié)了WAF繞過的方法與技術(shù)。
【關(guān)鍵詞】WAF繞過技術(shù) 防火墻 過濾規(guī)則
1WAF基本原理和工作流程
Web應(yīng)用防火墻通過在應(yīng)用層對請求服務(wù)器的內(nèi)容進行規(guī)則匹配、行為分析等識別出惡意行為,并執(zhí)行相關(guān)動作,這些動作包括阻斷、記錄、告警等。
Web應(yīng)用防火墻的基本工作流程為:數(shù)據(jù)獲取→數(shù)據(jù)清洗→規(guī)則匹配→二次檢驗。其中規(guī)則匹配指的是Web應(yīng)用防火墻對數(shù)據(jù)進行清洗之后,將清洗處理完畢的數(shù)據(jù)與Web應(yīng)用防火墻中的規(guī)則進行匹配,從而對客戶端請求的數(shù)據(jù)流量中的惡意攻擊行為進行正確識別,進而對其進行攔截與過濾。
通過處理流程可知,Web應(yīng)用防火墻可能存在缺陷的地方在請求到達WAF之前(主要針對云WAF)、在WAF自身處理數(shù)據(jù)流量環(huán)節(jié)以及WAF處理與服務(wù)器端特性導(dǎo)致的處理不一致環(huán)節(jié)等。
2Web應(yīng)用防火墻繞過技巧
繞過WAF的本質(zhì)是繞過WAF設(shè)備(主要指云WAF)或者尋找WAF設(shè)備處理應(yīng)用層數(shù)據(jù)存在缺陷的特性。攻擊者利用這些存在缺陷的特性構(gòu)造出WAF無法處理或不做處理而對應(yīng)用程序會產(chǎn)生危害的有效載荷,從而繞過WAF防護。
繞過Web應(yīng)用防火墻的技巧主要有:
(1)請求真實IP繞過WAF:主要針對云WAF,由于其部署架構(gòu)的特性,并不是直接串在目標站點線路上,而是通過DNS解析的形式部署,此時可以先探測到目標站點的真實ip,然后在hosts文件中綁定好域名的真實ip,直接請求ip以此繞過WAF的檢測。
(2)檢測內(nèi)容范圍繞過:WAF性能限制,檢測特定的內(nèi)容前幾k或幾十k的內(nèi)容,然后在此特定內(nèi)容段內(nèi)填充無用數(shù)據(jù),payload放于無用數(shù)據(jù)用,從而達到繞過WAF檢測的目的。
(3)檢測規(guī)則繞過:利用WAF開發(fā)人員規(guī)則編寫經(jīng)驗不足、規(guī)則覆蓋面不全等問題,來繞過WAF檢測,例如利用MySQL對一些特殊字符處理的特性、語法特性繞過。
3Web服務(wù)器層繞過
利用WAF和Web服務(wù)器處理輸入不同時來進行繞過,也就是利用Web服務(wù)器的特性,WAF的解析與服務(wù)器端環(huán)境對于輸入的解析存在差異從而可能導(dǎo)致出現(xiàn)WAF防護缺陷。
3.1IIS服務(wù)器特性
由前面可以看到IIS上部署的編程語言一般為ASP和ASPX,通過合理利用其特性,則可能達到繞過效果。如在ASP+IIS的環(huán)境下特殊字符“%”存在處理特性。當(dāng)在ASP+IIS環(huán)境下輸入“f%rom”的時候,在經(jīng)過WAF時解析處理完畢后的結(jié)果可能是,而在到達服務(wù)器端ASP+IIS環(huán)境下的時候,解析處理完畢的結(jié)果就為“from”,從而繞過了WAF對于“from”的攔截。
3.2Apache服務(wù)器
3.2.1畸形請求方法
在一些版本的Apache服務(wù)器上進行請求的時候,服務(wù)器端對客戶端的HTTP請求方法METHOD處理不當(dāng),當(dāng)METHOD非設(shè)定的請求方式時會默認設(shè)置為GET請求。如果WAF進行請求處理的時候按照特定的請求方式(比如GET、POST等)來處理數(shù)據(jù),就會因為之前不當(dāng)?shù)奶幚碚埱蠓绞蕉鴮AF進行繞過。
3.2.2畸形的boundary
在PHP+Apache的環(huán)境下,PHP解析multipartdata有其固有的處理特性,對于Content-Type中的boundary的識別,它只截取了逗號前面的內(nèi)容。比如客戶端設(shè)置的boundary為“----------698241790,test”,PHP在進行解析處理的時候只識別“----------698241790”,對于后面的內(nèi)容都沒有識別出來。但是在WAF進行解析處理的時候獲取到的就很可能是整個字符串,從而對WAF進行繞過。
4緩沖區(qū)溢出繞過
緩沖區(qū)溢出繞過Web應(yīng)用防火墻的方法,主要用于用C語言編寫的Web應(yīng)用防火墻,考慮到C語言沒有緩沖區(qū)保護機制,若是通過客戶端向服務(wù)器端請求的測試向量超過緩沖區(qū)長度時,WAF就無法對其進行處理,從而出現(xiàn)bug進而對Web應(yīng)用防火墻成功實現(xiàn)繞過。比如客戶端請求URL為“http://www.waftest.com/sqltest.php?id=land(select1)=(select 0xB*50000)union select1,2,user()”時,服務(wù)器端接收的數(shù)據(jù)經(jīng)過WAF時,WAF無法對其進行處理,就直接將數(shù)據(jù)傳給了服務(wù)器,從而造成SQL注入。
5結(jié)束語
針對Web應(yīng)用使用廣泛、惡意攻擊泛濫的現(xiàn)狀,惡意攻擊者利用SQL注入、XSS攻擊、命令執(zhí)行等漏洞來攻擊Web應(yīng)用程序,獲取網(wǎng)站數(shù)據(jù)或致使網(wǎng)站癱瘓,更有甚者通過獲取網(wǎng)站服務(wù)器權(quán)限后對內(nèi)網(wǎng)進行滲透,嚴重損害了企業(yè)、機構(gòu)網(wǎng)站安全。為了應(yīng)對各類攻擊,本文對Web應(yīng)用防火墻的基本原理和工作流程,以及繞過Web應(yīng)用防火墻的攻擊方法進行了列舉和原理分析。
針對己做的工作,下一階段將重點放在構(gòu)建基于回溯分析的Web應(yīng)用防火墻繞過測試框架,從而提高過濾規(guī)則收集完整性、優(yōu)化各類特性組合方式、加強實驗驗證。
參考文獻
[1]Koved L,LuoL.Interactive management of Web application firewall rules:U.S.Patent 9,473,457[P].2016-10-18.
[2]Ji P,Luo L,Sreedhar VC,et al. Hierarchical rule development and binding for Web application server firewall:U.S.Patent 9,237,130[P].2016-1-12.
[3]辛?xí)越?,辛陽,姬碩.基于特征匹配的Web應(yīng)用防火墻的研究與設(shè)計[J].信息網(wǎng)絡(luò)安全,2015(11):53-59.endprint