Wapiti - έλεγχος ενός ιστότοπου για ευπάθειες από μόνος του
Στο παρελθόν άρθρο μιλήσαμε για Nemesida WAF Δωρεάν - ένα δωρεάν εργαλείο για την προστασία ιστότοπων και API από επιθέσεις χάκερ και σε αυτό αποφασίσαμε να εξετάσουμε έναν δημοφιλές σαρωτή ευπάθειας Είδος ελάφου της Αμερικής.
Η σάρωση ενός ιστότοπου για τρωτά σημεία είναι ένα απαραίτητο μέτρο, το οποίο, σε συνδυασμό με την ανάλυση του πηγαίου κώδικα, σας επιτρέπει να αξιολογήσετε το επίπεδο ασφάλειάς του έναντι απειλών συμβιβασμού. Μπορείτε να σαρώσετε έναν πόρο Ιστού χρησιμοποιώντας εξειδικευμένα εργαλεία.
Το Nikto, το W3af (γραμμένο σε Python 2.7, το οποίο δεν υποστηρίζεται πλέον) ή το Arachni (δεν υποστηρίζεται πλέον από τον Φεβρουάριο) είναι οι πιο δημοφιλείς λύσεις που παρουσιάζονται στο δωρεάν τμήμα. Φυσικά, υπάρχουν και άλλα, για παράδειγμα, το Wapiti, στο οποίο αποφασίσαμε να εστιάσουμε.
Το Wapiti λειτουργεί με τους ακόλουθους τύπους ευπάθειας:
επέκταση αρχείου (τοπικό και απομακρυσμένο, fopen, readfile).
ενέσεις (PHP / JSP / ASP / SQL injection και XPath injection).
XSS (Cross Site Scripting) (αντανακλαστικό και επίμονο).
ανίχνευση και εκτέλεση εντολών (eval(), system(), passtru());
χρήση γνωστών δυνητικά επικίνδυνων αρχείων (χάρη στη βάση δεδομένων Nikto).
αδύναμες διαμορφώσεις .htaccess που μπορούν να παρακαμφθούν.
η παρουσία αρχείων αντιγράφων ασφαλείας που αποκαλύπτουν εμπιστευτικές πληροφορίες (αποκάλυψη πηγαίου κώδικα).
Νευρική διαταραχή;
Ανοίξτε ανακατευθύνσεις.
μη τυπικές μεθόδους HTTP που μπορούν να επιλυθούν (PUT).
χαρακτηριστικά:
Υποστήριξη διακομιστή μεσολάβησης HTTP, HTTPS και SOCKS5.
έλεγχος ταυτότητας χρησιμοποιώντας διάφορες μεθόδους: Basic, Digest, Kerberos ή NTLM.
τη δυνατότητα περιορισμού της περιοχής σάρωσης (τομέας, φάκελος, σελίδα, διεύθυνση URL).
αυτόματη κατάργηση μιας από τις παραμέτρους στη διεύθυνση URL.
πολλαπλές προφυλάξεις έναντι ατελείωτων βρόχων σάρωσης (παράδειγμα: ifor, οριακές τιμές για μια παράμετρο).
τη δυνατότητα ορισμού προτεραιότητας για την εξέταση διευθύνσεων URL (ακόμα και αν δεν βρίσκονται στην περιοχή σάρωσης).
δυνατότητα εξαίρεσης ορισμένων διευθύνσεων URL από σάρωση και επιθέσεις (για παράδειγμα: αποσύνδεση URL).
εισαγωγή cookie (πάρτε τα χρησιμοποιώντας το εργαλείο wapiti-getcookie).
δυνατότητα ενεργοποίησης/απενεργοποίησης επαλήθευσης πιστοποιητικού SSL.
τη δυνατότητα εξαγωγής διευθύνσεων URL από JavaScript (ένας πολύ απλός διερμηνέας JS).
αλληλεπίδραση με HTML5.
πολλές επιλογές για τη διαχείριση της συμπεριφοράς και των περιορισμών του προγράμματος ανίχνευσης.
ρύθμιση του μέγιστου χρόνου για τη διαδικασία σάρωσης.
προσθέτοντας ορισμένες προσαρμοσμένες κεφαλίδες HTTP ή ρυθμίζοντας έναν προσαρμοσμένο παράγοντα χρήστη.
Πρόσθετα χαρακτηριστικά:
δημιουργία αναφορών ευπάθειας σε διάφορες μορφές (HTML, XML, JSON, TXT).
παύση και συνέχιση μιας σάρωσης ή μιας επίθεσης (μηχανισμός περιόδου λειτουργίας που χρησιμοποιεί βάσεις δεδομένων SQLite3).
οπίσθιο φωτισμό στο τερματικό για την επισήμανση τρωτών σημείων.
διαφορετικά επίπεδα υλοτομίας.
Ένας γρήγορος και εύκολος τρόπος για να ενεργοποιήσετε/απενεργοποιήσετε μονάδες επίθεσης.
Εγκατάσταση
Η τρέχουσα έκδοση του Wapiti μπορεί να εγκατασταθεί με 2 τρόπους:
κατεβάστε την πηγή από την επίσημη сайта και εκτελέστε το σενάριο εγκατάστασης, έχοντας προηγουμένως εγκαταστήσει το Python3.
χρησιμοποιώντας την εντολή pip3 install wapiti3.
Μετά από αυτό, ο Wapiti θα είναι έτοιμος να πάει.
Εργασία με το εργαλείο
Για να επιδείξουμε το έργο του Wapiti, θα χρησιμοποιήσουμε ένα ειδικά προετοιμασμένο περίπτερο sites.vulns.pentestit.ru (εσωτερικός πόρος), που περιέχει διάφορα τρωτά σημεία (Injection, XSS, LFI/RFI) και άλλες ελλείψεις εφαρμογών ιστού.
Οι πληροφορίες παρέχονται μόνο για ενημερωτικούς σκοπούς. Μην παραβιάζετε το νόμο!
Βασική εντολή για την εκκίνηση του σαρωτή:
# wapiti -u <target> <options>
Ταυτόχρονα, υπάρχει αρκετά λεπτομερής βοήθεια με έναν τεράστιο αριθμό επιλογών εκκίνησης, για παράδειγμα:
--πεδίο εφαρμογής - περιοχή εφαρμογής
Εάν καθορίσετε την παράμετρο εμβέλειας μαζί με τη διεύθυνση URL ανίχνευσης, μπορείτε να προσαρμόσετε την περιοχή ανίχνευσης του ιστότοπου καθορίζοντας τόσο μια σελίδα όσο και όλες τις σελίδες που μπορούν να βρεθούν στον ιστότοπο.
-s и -x — επιλογές για προσθήκη ή αφαίρεση συγκεκριμένων διευθύνσεων URL. Αυτές οι επιλογές είναι χρήσιμες όταν χρειάζεται να προσθέσετε ή να αφαιρέσετε μια συγκεκριμένη διεύθυνση URL κατά τη διαδικασία ανίχνευσης.
--παραλείπω — η καθορισμένη παράμετρος με αυτό το κλειδί θα σαρωθεί, αλλά δεν θα δεχθεί επίθεση. Χρήσιμο εάν υπάρχουν επικίνδυνες παράμετροι που αποκλείονται καλύτερα κατά τη σάρωση.
--verify-ssl — ενεργοποιήστε ή απενεργοποιήστε την επαλήθευση πιστοποιητικού.
Ο σαρωτής Wapiti είναι αρθρωτός. Ωστόσο, για να εκκινήσετε συγκεκριμένες μονάδες, συμπεριλαμβανομένων εκείνων που συνδέονται αυτόματα ενώ λειτουργεί ο σαρωτής, πρέπει να χρησιμοποιήσετε το διακόπτη -m και να αναφέρετε αυτές που χρειάζεστε, διαχωρισμένες με κόμματα. Εάν το κλειδί δεν χρησιμοποιείται, τότε όλες οι μονάδες θα λειτουργούν από προεπιλογή. Στην απλούστερη έκδοση θα μοιάζει με αυτό:
Αυτό το παράδειγμα χρήσης σημαίνει ότι θα χρησιμοποιήσουμε μόνο τις μονάδες SQL, XSS και XXE κατά τη σάρωση του στόχου. Επιπλέον, μπορείτε να φιλτράρετε τη λειτουργία των μονάδων ανάλογα με την επιθυμητή μέθοδο. Για παράδειγμα -m “xss: get, blindsql: post, xxe: post”. Σε αυτή την περίπτωση, η ενότητα xss θα ισχύει για αιτήματα που αποστέλλονται χρησιμοποιώντας τη μέθοδο GET και τη μονάδα blibdsql - σε POST αιτήματα κ.λπ. Παρεμπιπτόντως, εάν κάποια λειτουργική μονάδα που συμπεριλήφθηκε στη λίστα δεν χρειαζόταν κατά τη σάρωση ή διαρκεί πολύ, τότε πατώντας το συνδυασμό Ctrl+C μπορείτε να παραλείψετε τη χρήση της τρέχουσας μονάδας επιλέγοντας το αντίστοιχο στοιχείο στο διαδραστικό μενού.
Το Wapiti υποστηρίζει τη διέλευση αιτημάτων μέσω διακομιστή μεσολάβησης χρησιμοποιώντας ένα κλειδί -p και έλεγχος ταυτότητας στον ιστότοπο προορισμού μέσω της παραμέτρου -a. Μπορείτε επίσης να καθορίσετε τον τύπο ελέγχου ταυτότητας: Βασικός, Σύνοψη, Kerberos и NTLM. Τα δύο τελευταία μπορεί να απαιτούν την εγκατάσταση πρόσθετων μονάδων. Επιπλέον, μπορείτε να εισαγάγετε τυχόν κεφαλίδες σε αιτήματα (συμπεριλαμβανομένων των αυθαίρετων User-Agent) και πολλα ΑΚΟΜΑ.
Για να χρησιμοποιήσετε τον έλεγχο ταυτότητας, μπορείτε να χρησιμοποιήσετε το εργαλείο wapiti-getcookie. Με τη βοήθειά του σχηματίζουμε κουλουράκι, το οποίο θα χρησιμοποιήσει το Wapiti κατά τη σάρωση. Σχηματισμός κουλουράκι γίνεται με την εντολή:
Κατά την εξέταση της κύριας λειτουργικότητας του σαρωτή, το τελικό αίτημα για τη δοκιμή της διαδικτυακής εφαρμογής στην περίπτωσή μας ήταν:
# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128
όπου μεταξύ άλλων παραμέτρων:
-f и -o — μορφή και διαδρομή για την αποθήκευση της αναφοράς·
-m — δεν συνιστάται η σύνδεση όλων των μονάδων, γιατί θα επηρεάσει τον χρόνο δοκιμών και το μέγεθος της έκθεσης.
--χρώμα — επισημάνετε τις ευπάθειες που εντοπίστηκαν ανάλογα με την κρισιμότητα τους σύμφωνα με το ίδιο το Wapiti.
-c - χρησιμοποιώντας ένα αρχείο με κουλουράκι, που δημιουργείται χρησιμοποιώντας wapiti-getcookie;
--πεδίο εφαρμογής — επιλογή στόχου για επίθεση. Επιλέγοντας μια επιλογή φάκελο Κάθε URL θα ανιχνεύεται και θα δέχεται επίθεση, ξεκινώντας από το βασικό. Η βασική διεύθυνση URL πρέπει να έχει κάθετο προς τα εμπρός (χωρίς όνομα αρχείου).
-- flush-session — επιτρέπει την επαναλαμβανόμενη σάρωση, στην οποία τα προηγούμενα αποτελέσματα δεν θα λαμβάνονται υπόψη·
-A - τα δικά User-Agent;
-p — διεύθυνση διακομιστή μεσολάβησης, εάν είναι απαραίτητο.
Λίγα λόγια για την έκθεση
Το αποτέλεσμα της σάρωσης παρουσιάζεται με τη μορφή λεπτομερούς αναφοράς για όλα τα ευπάθεια που βρέθηκαν σε μορφή σελίδας HTML, σε σαφή και ευανάγνωστη μορφή. Η αναφορά θα υποδεικνύει τις κατηγορίες και τον αριθμό των ευπαθειών που βρέθηκαν, τις περιγραφές, τα αιτήματα, τις εντολές τους μπούκλα και συμβουλές για το πώς να τα κλείσετε. Για ευκολία πλοήγησης, ένας σύνδεσμος θα προστεθεί στα ονόματα των κατηγοριών, κάνοντας κλικ στον οποίο μπορείτε να μεταβείτε σε αυτόν:
Ένα σημαντικό μειονέκτημα της αναφοράς είναι η απουσία ενός χάρτη εφαρμογών ιστού, χωρίς τον οποίο δεν θα είναι σαφές εάν έχουν αναλυθεί όλες οι διευθύνσεις και οι παράμετροι. Υπάρχει επίσης πιθανότητα ψευδών θετικών. Στην περίπτωσή μας, η αναφορά περιλαμβάνει "αρχεία αντιγράφων ασφαλείας" και "δυνητικά επικίνδυνα αρχεία". Ο αριθμός τους δεν ανταποκρίνεται στην πραγματικότητα, καθώς δεν υπήρχαν τέτοια αρχεία στον διακομιστή:
Ίσως οι λανθασμένες λειτουργικές μονάδες θα διορθωθούν με την πάροδο του χρόνου. Ένα άλλο μειονέκτημα της έκθεσης είναι η έλλειψη χρωματισμού των ευπαθών σημείων που βρέθηκαν (ανάλογα με την κρισιμότητα τους), ή τουλάχιστον η διαίρεση τους σε κατηγορίες. Ο μόνος τρόπος με τον οποίο μπορούμε να κατανοήσουμε έμμεσα την κρισιμότητα της ευπάθειας που βρέθηκε είναι να χρησιμοποιήσουμε την παράμετρο --χρώμα κατά τη σάρωση και, στη συνέχεια, τα τρωτά σημεία που βρέθηκαν θα χρωματιστούν με διαφορετικά χρώματα:
Αλλά η ίδια η έκθεση δεν παρέχει τέτοιο χρωματισμό.
Ευπάθειες
SQLi
Ο σαρωτής αντιμετώπισε εν μέρει την αναζήτηση SQLi. Κατά την αναζήτηση για τρωτά σημεία SQL σε σελίδες όπου δεν απαιτείται έλεγχος ταυτότητας, δεν προκύπτουν προβλήματα:
Δεν ήταν δυνατό να βρεθεί μια ευπάθεια σε σελίδες που είναι προσβάσιμες μόνο μετά τον έλεγχο ταυτότητας, ακόμη και χρησιμοποιώντας έγκυρο κουλουράκι, αφού πιθανότατα μετά από επιτυχή έλεγχο ταυτότητας, η σύνοδός τους θα «αποσυνδεθεί» και κουλουράκι θα καταστεί άκυρη. Εάν η συνάρτηση κατάργησης εξουσιοδότησης υλοποιούνταν ως ξεχωριστή δέσμη ενεργειών υπεύθυνη για την επεξεργασία αυτής της διαδικασίας, τότε θα ήταν δυνατό να εξαιρεθεί εντελώς μέσω της παραμέτρου -x και, ως εκ τούτου, να αποτραπεί η ενεργοποίησή της. Διαφορετικά, δεν θα είναι δυνατό να αποκλειστεί η επεξεργασία του. Αυτό δεν είναι πρόβλημα με μια συγκεκριμένη ενότητα, αλλά με το εργαλείο στο σύνολό του, αλλά λόγω αυτής της απόχρωσης, δεν ήταν δυνατός ο εντοπισμός πολλών εγχύσεων σε μια κλειστή περιοχή πόρων.
XSS
Ο σαρωτής αντιμετώπισε τέλεια τη δεδομένη εργασία και βρήκε όλα τα προετοιμασμένα τρωτά σημεία:
LFI/RFI
Ο σαρωτής βρήκε όλα τα υποκείμενα τρωτά σημεία:
Γενικά, παρά τα ψευδώς θετικά και τα τρωτά σημεία που λείπουν, το Wapiti, ως δωρεάν εργαλείο, παρουσιάζει αρκετά καλά αποτελέσματα απόδοσης. Σε κάθε περίπτωση, αξίζει να αναγνωρίσουμε ότι ο σαρωτής είναι αρκετά ισχυρός, ευέλικτος και πολυλειτουργικός και το πιο σημαντικό, είναι δωρεάν, επομένως έχει το δικαίωμα να χρησιμοποιηθεί για να βοηθήσει τους διαχειριστές και τους προγραμματιστές να αποκτήσουν βασικές πληροφορίες σχετικά με την κατάσταση ασφάλειας ενός ιστού εφαρμογή.