Nikto: Πως να βρίσκετε web ευπάθειες με το open source εργαλείο
2 min readΈνα από τα αρχικά βήματα ενός ethical hacker ή penetration tester κατά τη διάρκεια δοκιμής μιας web εφαρμογής, είναι να εντοπίσει τις ευπάθειες που σχετίζονται με αυτή. Ένα από τα εργαλεία τέτοιου σκοπού είναι το, πολύ γνωστό, Nikto.
Το Nikto είναι ένα πολύ απλό, open source εργαλείο γραμμένο σε γλώσσα Perl και σκοπός του είναι να ελέγχει ένα website (δηλαδή μια web εφαρμογή) για ευπάθειες ασφάλειας. Σαν αποτέλεσμα επιστρέφει τις ευπάθειες που μπορεί να εκμεταλλευτεί ένας επιτιθέμενος και να χακάρει το website.
Αν και πολύ απλό στη χρήση του, αποτελεί ένα εργαλείο που μπορεί να εντοπιστεί, αφού όποιο website χρησιμοποιεί σύστημα εντοπισμού εισβολών (Intrusion Detection System – IDS) θα μπορέσει να το εντοπίσει.
Πως να το εγκαταστήσετε
Όπως φαντάζεστε, το Nikto είναι προ-εγκατεστημένο στα Kali Linux άρα δεν θα χρειαστεί να το κατεβάσετε ή να το εγκαταστήσετε. Θα το βρείτε στη κατηγορία “Vulnerability Analysis”.
Ubuntu & Debian
Εγκαταστήστε το Nikto σε Ubuntu, τρέχοντας τις παρακάτω εντολές σε ένα terminal. :
sudo apt-get update sudo apt-get upgrade sudo apt-get install nikto -y |
Windows
Ακολουθήστε τη παρακάτω διαδικασία για να εγκαταστήσετε το Nikto σε περιβάλλον Windows:
- Εγκαταστήστε τον perl interpreter από εδώ.
- Κατεβάστε τον συμπιεσμένο φάκελο του Nikto.
- Αποσυμπιέστε το περιεχόμενο του φακέλου από το βήμα 2. στη τοποθεσία της επιλογής σας.
- Ανοίξτε ένα command prompt με δικαιώματα διαχειριστή.
- Για να ελέγξετε ότι η Perl έχει εγκατασταθεί σωστά, εκτελέστε perl -v
- Στη συνέχεια περιηγηθείτε στη τοποθεσία του Nikto (Βήμα 3) και
- Εκτελέστε την παρακάτω εντολή για να εκκινήσετε το scan: perl nikto.pl -h www.site.com
Πως να το χρησιμοποιήσετε
Για να δούμε τις διαθέσιμες παραμέτρους που μπορούμε να χρησιμοποιήσουμε με το Nikto, αρκεί να ανοίξουμε ένα terminal (Linux περιβάλλον) και να πληκτρολογήσουμε nikto –help. To αποτέλεσμα της εντολής φαίνεται παρακάτω:
root@kali:~# nikto –help Unknown option: help -config+ Use this config file -Display+ Turn on/off display outputs -dbcheck check database and other key files for syntax errors -Format+ save file (-o) format -Help Extended help information -host+ target host/URL -id+ Host authentication to use, format is id:pass or id:pass:realm -list-plugins List all available plugins -output+ Write output to this file -nossl Disables using SSL -no404 Disables 404 checks -Plugins+ List of plugins to run (default: ALL) -port+ Port to use (default 80) -root+ Prepend root value to all requests, format is /directory -ssl Force ssl mode on port -Tuning+ Scan tuning -timeout+ Timeout for requests (default 10 seconds) -update Update databases and plugins from CIRT.net -Version Print plugin and database versions -vhost+ Virtual host (for Host header) + requires a valueNote: This is the short help output. Use -H for full help text. |
Στα παραδείγματα που θα δούμε παρακάτω, τρέξαμε Nikto scans σε ένα site που χρησιμοποιούμε για σκοπούς testing (IP: 192.168.142.130).
nikto -h <IP or hostname> |
Βλέπουμε τις ευπάθειες που μας επιστρέφει το Nikto στη παρακάτω οθόνη.
nikto -h <IP or hostname> -ssl |
Στην παραπάνω εντολή επιλέξαμε τη παράμετρο -ssl ώστε να πραγματοποιήσουμε το scan για τη πόρτα 443 (HTTPS).
Το Νikto μας δίνει τη δυνατότητα να τρέξουμε scan για να ελέγξουμε για την ύπαρξη συγκεκριμένη ευπάθειας. Τα διαφορετικά είδη ευπάθειας που μπορούμε να συμπεριλάβουμε στους ελέγχους μας είναι:
0 – File Upload
1 – Interesting File / Seen in logs
2 – Misconfiguration / Default File
3 – Information Disclosure
4 – Injection (XSS/Script/HTML)
5 – Remote File Retrieval – Inside Web Root
6 – Denial of Service
7 – Remote File Retrieval – Server Wide
8 – Command Execution / Remote Shell
9 – SQL Injection
a – Authentication Bypass
b – Software Identification
c – Remote Source Inclusion
Η επιλογή Tuning x μας επιτρέπει να αντιστρέψουμε την επιλογή μας και να ελέγξουμε για την ύπαρξη όλων των υπόλοιπων ευπαθειών εκτός από αυτή που θα ορίσουμε. Π.χ.:
nikto -Tuning x 6 <IP or hostname> |
Τα διαφορετικά formats που μπορούμε να χρησιμοποιήσουμε για να αποθηκεύσουμε τα αποτελέσματα του scan είναι:
- csv – Comma-separated-value
- htm – HTML Format
- msf+ – Log to Metasploit
- nbe – Nessus NBE format
- txt – Plain text (default if not specified)
- xml – XML Format
Άρα η παρακάτω εντολή θα αποθηκεύσει τα αποτελέσματα του scan μας σε ένα αρχείο xml:
nikto -h <IP or hostname> -o results.xml |
Μια ακόμα επιλογή που μπορούμε να χρησιμοποιήσουμε είναι το ανώνυμο scanning. Αυτό θα γίνει ανακατευθύνοντας τη δικτυακή κίνηση ώστε να πραγματοποιείται μέσω proxy. Αρχικά θα πρέπει να τροποποιήσουμε το config αρχείο του nikto τρέχοντας τη παρακάτω εντολή:
Nano /etc/nikto/config.txt |
Πηγαίνοντας στις ρυθμίσεις του proxy θα πρέπει να ενημερώσουμε τις τιμές ανάλογα (IP διεύθυνση και πόρτα του proxy):
# Proxy settings — still must be enabled by -useproxy PROXYHOST=διεύθυνση_IP_proxy PROXYPORT= νούμερο_πόρτας |
Πλέον μπορούμε να τρέξουμε το scan μας ανώνυμα με τη παρακάτω εντολή:
nikto -useproxy -h <IP or hostname> |
Πηγή: SecNews.gr