Το Nikto είναι ένα λογισμικό που σκανάρει τους web servers για να βρει χιλιάδες τρωτά σημεία και άλλα γνωστά προβλήματα. Είναι απίστευτα εύκολο στην χρήση του και τα κάνει όλα μόνο του, χωρίς να σας δίνει πολλές οδηγίες -αφού δεν θα σας χρειαστούν-. Περιλαμβάνεται από προεπιλογή (default) στις διανομές pen testing, δηλαδή στις διανομές εκείνες που ελέγχουν ενδελεχώς (Penetration Testing) το σύστημα του υπολογιστή (σας), το δίκτυο ή τις Web (διαδικτυακές) εφαρμογές για να βρουν τα τρωτά σημεία που ένας εισβολέας θα μπορούσε να εκμεταλλευτεί. Τέτοιου είδους pen testing διανομή είναι για παράδειγμα τo Kali Linux. Σε άλλες πλατφόρμες θα χρειαστεί να το εγκαταστήσετε με το χέρι.
Το Nikto είναι λογισμικό open source (υπό άδεια GPL) που, όπως προείπαμε, ελέγχει συνολικά τον σέρβερ για να εντοπίσει τα τρωτά σημεία του, στα οποία συμπεριλαμβάνονται και πάνω από 6.500 εν δυνάμει επικίνδυνα αρχεία/CGIs. Ακόμα, ελέγχει πάνω από 1250 servers για παρωχημένες εκδόσεις και περισσότερους από 270 servers για πολύ συγκεκριμένα και εξειδικευμένα προβλήματα.
Περαιτέρω, κάνει εξονυχιστικούς ελέγχους για τα στοιχεία που ρυθμίζουν τις παραμέτρους του server, όπως την παρουσία πολλαπλών αρχείων ευρετηρίου και τις επιλογές HTTP του διακομιστή (του server). Προσπαθεί ακόμα και να ταυτοποιήσει τους εγκατεστημένους servers αλλά και το λογισμικό. Εννοείται πως σκανάρει όλα τα στοιχεία και τα plugins που έχουν συχνές ενημερώσεις και οι οποίες γίνονται αυτόματα.
Εγκατάσταση του Nikto
Σε Debian, Mint, Ubuntu και παράγωγες διανομές, θα το βρείτε στους διαχειριστές πακέτων (Κέντρο Λογισμικού, Synapric, Software Manager, κλπ).
Για συντομία, μπορείτε να το εγκαταστήσετε και με την παρακάτω εντολή:
sudo apt-get install nikto
Σημείωση: η εφαρμογή είναι γραμμένη σε Perl και ενδέχεται να σας την ζητήσει, Θα την βρείτε επίσης στους διαχειριστές πακέτων των διανομών σας.
Το ίδιο και σε Windows. Θα πρέπει πρώτα να εγκαταστήσετε το perl interpreter.
Μετά, θα πρέπει να κατεβάσετε το Niktoκαι να εξαγάγετε τα περιεχόμενα του αρχείου σε έναν κατάλογο. Τώρα τρέχει από την γραμμή εντολών, όπως αυτή:
C:\pentest\nikto-2.1.5>perl nikto.pl -h example.com
Η παραπάνω εντολή εκτελεί το perl interpreter τ’οποίο φορτώνει το source file: nikto.pl.
Χρήση του Nikto
Ας προσπαθήσουμε μια δοκιμή σε μια ορισμένη php + mysql ιστοσελίδα που φιλοξενείται σε apache. Οι πραγματικές διευθύνσεις URL δεν πρέπει να εμφανίζονται στην έξοδο:
$ nikto -h somesite.org
- Nikto v2.1.4
+ Target IP: 208.90.215.95
+ Target Hostname: somesite.org
+ Target Port: 80
+ Start Time: 2014-12-03 15:30:30
---------------------------------------------------------------------------
+ Server: Apache/2.2.22 (FreeBSD) mod_ssl/2.2.22 OpenSSL/1.0.1c DAV/2
+ robots.txt contains 4 entries which should be manually viewed.
+ mod_ssl/2.2.22 appears to be outdated (current is at least 2.8.31) (may depend on server version)
+ ETag header found on server, inode: 5918348, size: 121, mtime: 0x48fc943691040
+ mod_ssl/2.2.22 OpenSSL/1.0.1c DAV/2 - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell (difficult to exploit). CVE-2002-0082, OSVDB-756.
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ /lists/admin/: PHPList pre 2.6.4 contains a number of vulnerabilities including remote administrative access, harvesting user info and more. Default login to admin interface is admin/phplist
+ OSVDB-2322: /gallery/search.php?searchstring=<script>alert(document.cookie)</script>: Gallery 1.3.4 and below is vulnerable to Cross Site Scripting (XSS). Upgrade to the latest version. http://www.securityfocus.com/bid/8288.
+ OSVDB-7022: /calendar.php?year=<script>alert(document.cookie);</script>&month=03&day=05: DCP-Portal v5.3.1 is vulnerable to Cross Site Scripting (XSS). http://www.cert.org/advisories/CA-2000-02.html.
+ OSVDB-3233: /phpinfo.php: Contains PHP configuration information
+ OSVDB-3092: /system/: This might be interesting...
+ OSVDB-3092: /template/: This may be interesting as the directory may hold sensitive files or reveal system information.
+ OSVDB-3092: /updates/: This might be interesting...
+ OSVDB-3092: /README: README file found.
+ 6448 items checked: 1 error(s) and 14 item(s) reported on remote host
+ End Time: 2014-12-03 17:15:56 (5458 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
$
Αυτή η έξοδος έχει πολλές χρήσιμες πληροφορίες. Το Nikto εντόπισε τα ακόλουθα:
- webserver
- XSS vulnerabilitites.
- Ευάλωτες εφαρμογές web, όπως phplist και gallery.
- Διαρροή πληροφοριών σελίδων.
Επίσης παρέχει τα osvdb numbers για περαιτέρω ανάλυση. Συνεπώς, ως σύνολο το Nikto, είναι ένα πολύ κατατοπιστικό εργαλείο. Το επόμενο βήμα θα είναι το πώς μπορεί κάποιος να εκμεταλλευτεί τα τρωτά αυτά σημεία που εντοπίστηκαν.
Τα περισσότερα από τα tests που γίνονται με το nikto βασίζονται σε ένα σύνολο κανόνων ή σε ένα λεξικό. Για παράδειγμα, το Nikto έχει μια λίστα με προεπιλεγμένα directories για αναζήτηση των αρχείων που θέλουμε να ελέγξουμε. Έτσι, η όλη διαδικασία σάρωσης απαριθμεί μόνο την παρουσία των προκαθορισμένων urls στον http server. Εκτός από αυτό, το Nikto εξετάζει επίσης τις κεφαλίδες http για περισσότερες πληροφορίες και μπορείτε επίσης να πάρετε τις παραμέτρους για ευπάθειες XSS. Ελέγξτε τις πρόσθετες επιλογές που υποστηρίζονται από Nikto χρησιμοποιώντας το help switch ως εξής:
nikto -Help
Για να καταλάβουμε πώς τo Nikto ανακαλύπτει τα τρωτά σημεία, μπορούμε να το αναλύσουμε περαιτέρω. Το Nikto δίνει την δυνατότητα να χρησιμοποιήσετε ένα διακομιστή μεσολάβησης (server) http proxy. Έτσι, χρησιμοποιώντας ένα εργαλείο που μπορεί να υποκλέψει τα http requests και να τα δούμε σε κατάλληλη μορφή (format), μπορώντας ν’αναλύσουμε αυτά τα ερωτήματα (queries) μέσω του Nikto. Ένα τέτοιο εργαλείο είναι το burp suite. Έχει μια ελεύθερη έκδοση που μπορείτε να χρησιμοποιήσετε.
To Burp suite είναι γραμμένο σε Java, και χρειάζεταιτο JRE για να τρέξει. Την Java ή ακόμα καλύτερα το openJDK, θα τα βρείτε στους διαχειριστές πακέτων των διανομών σας (Κέντρο Λογισμικού, Synaptic, Yum, Yast, κλπ), αν δεν τα έχετε ήδη εγκατεστημένα, κάνοντας αναζήτηση (java) και μπορείτε να εγκαταστήσετε την τελευταία έκδοση (συνιστάται το openJDK), με δυο κλικ.
Αν θέλετε σε Ubuntu, Mint και παράγωγες διανομές, μπορείτε να το εγκαταστήσετε και με την παρακάτω εντολή στο τερματικό/κονσόλα σας:
sudo apt-get install openjdk-7-jdk
Ξεκινήστε το burp suite και πηγαίνετε στην καρτέλα: Proxy.
Εκεί θα δείτε να έχει 3 επιμέρους καρτέλες και συγκεκριμένα: intercept, optionsκαι history.
Στο intercept tab, βάλτε την επιλογή: intercept στο off. Στη συνέχεια, πηγαίνετε στην καρτέλα history. Εκεί, στο history tab, θα εμφανιστούν όλα τα requests που πρέπει να κάνει το nikto.
Στη συνέχεια, μπορείτε να πείτε στο nikto, να χρησιμοποιήσετε κάποιον proxy server. Η εντολή για να χρησιμοποιήσετε proxy θα είναι:
nikto -host www.binarytides.com -useproxy http://localhost:8080/
Θα δείτε κάτι τέτοιο, όπως θα τα αποδώσει το burp suite και όπως θα δείτε, παρέχει μια σειρά από πληροφορίες, όπως το request (αίτημα), response (ανταπόκριση), headers (κεφαλίδες) κ.λ.π.