Select Browser Mobile | Continue

Silic Group Froum Archive - Silic Security

 Forgot Password?
 Join Us
Search
Show: 1111|Reply: 7

[翻译] 现代Web应用防火墙指纹识别与XSS过滤Bypass(RAFAY BALOCH)

  [Copy URL]
heiben The user has been deleted
Posted 2016-7-28 11:10:39 | Show all replies |Read Mode
本帖最后由 heiben 于 2016-8-2 14:30 编辑

20160728105727.jpg
从2.1开始翻译的。前面也没有什么好说的。。

密码:silic
################################################################
2.1指纹识别WAF
在这一章里面,我们学习多种用于指纹识别各种网页防火墙的技术。因为搜索侦察是hacking的第一步,开始绕过之前知道我们面临的是什么是非常重要的。几款WAF留下明显的标记在cookie值里面,http响应等都会使我们更容易检测到是什么WAF并与之对抗。

2.1.1 cookie
几款WAF都会增加它们自身唯一cookie放入到HTTP通信中。这对于攻击者的视角来说是很有帮助的。
2.1.2 指纹识别CitrixNetscaler
一个WAF的例子就是“Citrix Netscaler”。一个没有恶意的GET请求例子被运行在Citrix Netscaler的应用所执行。
GET / HTTP/1.1
Host:target.com
User-Agent: Mozilla/5.0 (Windows NT 6.1;WOW64; rv:25.0) Gecko/20100101
Firefox/25.0
Accept:text/html,application/xhtml+xml,applicat ion/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie:ASPSESSIONIDAQQSDCSC=HGJHINLDNMNFHABGPPBNGFKC;
ns_af=31+LrS3EeEOBbxBV7AWDFIEhrn8A000;ns_af_.target.br_%2F_wat=QVNQU0VTU0lP
TklEQVFRU0RDU0Nf?6IgJizHRbTRNuNoOpbBOiK RET2gA&
Connection:keep -alive
Cache-Control: max-age=0

高亮部分为红色(ns_af)是cookie---netscaler添加在GET请求的一部分,这揭示了应用的前端还放了一台citrix netscaler。


2.1.3指纹识别F5  BIG  IP  ASM
F5是世界上最知名的WAF具备深度检测能力的(厂商)之一。与citrixnetscaler 相似F5 BIG  IP 也会添加一段固定的cookie作为HTTP通信的一部分。下列情景演示一个非恶意GET请求提交到应用前端的F5 BIG IP ASM防火墙
GET / HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/5.0 (Windows NT 6.1;WOW64; rv:25.0) Gecko/20100101
Firefox/25.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: target_cem_tl=40FC2190D3B2D4E60AB22C0F9EF155D5;s_fid=77F8544DA30373AC -
31AE8C79E13D7394;s_vnum=1388516400627%26vn%3D1; s_nr=1385938565978 -New;
s_nr2=1385938565979 -New;s_lv=1385938565980; s_vi=[CS]v1|294DCEC0051D2761 -
40000143E003E9DC[CE]; fe_typo_user=7a64cc46ca253f9889675f9b9b79eb66;
TSe3b54b=36f2896d9de8a61cf27aea24f35f8ee1abd1a43de557a25c529fe828;
TS65374d=041365b3e678cba0e338668580430c26abd1a43de557a25c529fe8285a5ab5a8e5d0f299
Connection: keep -alive
Cache-Control: max-age=0

2.1.4 HTTP响应
其他WAF的检测可以通过在提交恶意请求是检查http响应的类型,响应的变化取决于一个WAF到一个WAF(的变化)。一些通用的响应为403,406,419,500,501等。
2.1.5指纹识别Mod_Security
Mod_security是一款由Apache server特别设计的开源WAF。由于开源的原因其被绕过多次,因此检测规则也获得显著的提升。恶意请求发送到应用前端的mod_security时会返回来到一个“406 Not acceptable”的错误并放入到响应体中,这也意味着错误是由mod_security生成的。

请求
GET /<script>alert(1);</script> HTTP/1.1
Host: www.target.com
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101
Firefox/25.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep –alive

响应
HTTP/1.1 406 Not Acceptable
Date: Thu, 05 Dec 2013 03:33:03 GMT
Server: Apache
Content-Length: 226
Keep-Alive: timeout=10, max=30
Connection: Keep -Alive
Content-Type: text/html; charset=iso-8859-1
<head><title>NotAcceptable!</title></head><body><h1>Not
Acceptable!</h1><p>Anappropriate rep resentation of the requested resource
could not be found on this server. Thiserror was generated by
Mod_Security.</p></body></html>


2.1.5指纹识别WebKnight
Webnight是另一款非常流行的Web应用防火墙,专为IIS 服务器所设计。WAF工作是依据一个黑名单并为攻击者寻找到一种通用模式,如SQL注入,目录遍历,XSS之类。不像其他WAF,webknight非常容易被指纹识别一个恶意请求并返回一个“999 No Hacking”的响应。

请求
GET /?PageID=99 <script>alert(1);</script>HTTP/1.1
Host:www.aqtronix.com
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101
Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep -alive

响应
HTTP/1.1 999 No Hacking
Server: WWWServer/1.1
Date: Thu, 05 Dec 2013 03:14:23 GMT
Content-Type: text/html; charset=windows-1252
Content-Length: 1160
Pragma: no-cache
Cache-control: no-cache
Expires: Thu, 05 Dec 2013 03:14:23 GMT



2.1.6指纹识别F5 BIG IP
恶意请求发送至F5 BIG IP返回一个“419 Unkown”的响应,如果万一在请求中cookie的值被隐藏了,这种方法也能用于识别F5。
响应
GET /<script> HTTP/1.0
HTTP/1.1 419Unknown
Cache-Control: no-cache
Content-Type: text/html; charset=iso-8859-15
Pragma: no-cache
Content-Length: 8140
Date: Mon, 25 Nov 2013 15:22:44 GMT
Connection: keep -alive
Vary: Accept-Encoding

2.1.7识别dotDefender
dotDefender是另一款专为.net应用设计保护其免受攻击的知名WAF。与Mod_security相似。Webknight,dotDefender当一个恶意请求被发送到一台运行dotDefender的服务器时其也泄露自身到响应体中。
请求
GET /---HTTP/1.1
Host: www.acc.com
User-Agent: Mozilla/5.0 (Windows NT 6.1;WOW64; rv:25.0)
Gecko/20100101Firefo x/25.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep -alive
Cache-Control: max-age=0

响应
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/html
Vary: Accept-Encoding
Server: Microsoft -IIS/7.5
X-Powered-By: ASP.NET
Date: Thu, 05 Dec 2013 03:40:14 GMT
Content-Length: 2616
<!DOCTYPEHTML PUBLIC " -//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>dotDefenderBlocked Your Request </title>


2.2.1Wafw00f自动指纹识别
一些WAF有足够智能从cookie值和http响应中隐藏自己的身份,这意味着即便你发送一些恶意的请求,响应始终会是“200 OK”,在这种情况下我们需要执行额外的测试识别这种WAF的指纹。幸运的是,为了节省我们的时间我们可以使用一个非常常用的工具名叫Wafw00f。
Wafw00f是一款由python编写的小工具专门用于指纹识别web应用防火墙,通过执行物种测试来检测WAF,如保持对http请求中cookie的跟踪,通过接收来自发送恶意请求时分析http响应,通过丢包,如:FIN和RST和查看接收响应,通过服务器伪装,如修改URL和修改方法并通过测试不同的预建阴性签名从一个WAF到另一个WAF。
我们看一下wafw00f的检测方法,我们直接从它的源码中看,下面的截图展示了一些攻击向量作为http请求的一部分,其包含了一些常用的XSS字符串,试图遍历/etc/passwd文件和一个干净的HTML字符串。这是最常用的模式,任何一个WAF都会在第一时间拦截,因此发送这个请求背后的想法是导致WAF触发一个独特的错误,如果在WAF后面运行着应用的话可以帮助wafw00f识别。

2.2.2基于Cookie的识别
最常见的一种检测是wafw00f使用基于cookie的检测,屏幕截图下面展示了正则表达式的使用(模式匹配的使用)来匹配确定的cookie,这种情况下的有F5 asm和F5  traffic sheild
注意F5的流量盾也会返回一个’F5-trafficSheild’内嵌到服务器的消息头内部,这就是我们要找的代码。

2.2.3匹配HTTP响应
第二种最常见的检测方法的类型就是匹配http响应,正如我们之前所了解到的一些WAF响应对应着他们自己独特的http响应码,帮助我们识别WAF所使用的类型。例如下面的代码用来检测如果应用在“webknight”防火墙后,它将发送攻击向量并匹配到响应码为“999”,这是我们早期发现当webknight WAF接收到一个恶意请求时抛出的。
defiswebknight(self):
detected =False
for attack inself.attacks:
r = attack(self)
if r isNone:
Return
response,responsebody= r
ifresponse.status== 999:
detected =True
Break
return detected

2.2.4WAF列表

Waf00f里面的-list参数可以用来确定waf00f当前能够检测的所有WAF。

Command
./wafw00f.py –list

Output
^ ^
_ __ _ ____ _ __ _ _ ____
///7/ /.' \ / __////7/ /,' \ ,' \ / __/
| V V // o // _/ | V V // 0 // 0 // _/
|_n_,'/_n_//_/ |_n_,' \_,' \_,'/_/
<
...'
WAFW00F - Web Application FirewallDetection Tool
By SandroGauci&&Wendel G. Henrique
Can test for these WAFs:
Profense
NetContinuum
Barracuda
HyperGuard
BinarySec
Teros
F5 Trafficshield
F5 ASM
Airlock
Citrix NetScaler
ModSecurity
DenyALL
dotDefender
webApp.secure
BIG-IP
URLScan
WebKnight
SecureIIS
Imperva


##############字数限制 请看PDF附件##########################

解压密码:silic


因为翻译的比较匆促,可能会出现个别错别字,望见谅。

2.7z

773.46 KB, Downloads: 99

Isred The user has been deleted
Posted 2016-7-28 14:27:09 | Show all replies
不错,高大上,先赞再看
Mood The user has been deleted
Posted 2016-7-28 15:31:01 | Show all replies
支持
流弊的小白 The user has been deleted
Posted 2016-7-28 20:05:29 | Show all replies
可以 支持一波
Posted 2016-7-29 01:56:59 | Show all replies
SQL注入的话感觉sqlmap的--identify-waf就挺好用,华为的WAF基本可以过。
纯洁小白 The user has been deleted
Posted 2016-8-3 09:49:36 | Show all replies
点个赞
采菇凉的小蘑菇 The user has been deleted
Posted 2016-8-3 10:55:42 | Show all replies
学习了 楼主厉害
野生萝莉 The user has been deleted
Posted 2016-8-4 12:49:12 | Show all replies
楼主厉害,学习了
You need to login before reply! Login | Join Us

Credit Rules of This Forum

Close

公告Privious /1 Next

小黑屋|手机版|Archiver|Silic Security

GMT+8, 2019-10-16 11:06

© 2001-2014 Silic Corp.

Quick Reply Top Return List