80,443 - Pentesting Web Methodology
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Αποκτήστε την προοπτική ενός χάκερ για τις διαδικτυακές σας εφαρμογές, το δίκτυο και το cloud
Βρείτε και αναφέρετε κρίσιμες, εκμεταλλεύσιμες ευπάθειες με πραγματικό επιχειρηματικό αντίκτυπο. Χρησιμοποιήστε τα 20+ προσαρμοσμένα εργαλεία μας για να χαρτογραφήσετε την επιφάνεια επίθεσης, να βρείτε ζητήματα ασφαλείας που σας επιτρέπουν να κλιμακώσετε προνόμια και να χρησιμοποιήσετε αυτοματοποιημένα exploits για να συλλέξετε βασικά αποδεικτικά στοιχεία, μετατρέποντας τη σκληρή σας δουλειά σε πειστικές αναφορές.
Η διαδικτυακή υπηρεσία είναι η πιο συνηθισμένη και εκτενή υπηρεσία και υπάρχουν πολλές διαφορετικοί τύποι ευπαθειών.
Προεπιλεγμένη θύρα: 80 (HTTP), 443(HTTPS)
Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι θα επιτεθείτε σε ένα domain (ή subdomain) και μόνο σε αυτό. Έτσι, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, subdomain ή IP με ακαθόριστο web server εντός του πεδίου εφαρμογής.
Ελέγξτε αν υπάρχουν γνωστές ευπάθειες για την έκδοση του server που τρέχει. Οι HTTP headers και τα cookies της απάντησης θα μπορούσαν να είναι πολύ χρήσιμα για να ταυτοποιήσετε τις τεχνολογίες και/ή την έκδοση που χρησιμοποιείται. Η σάρωση Nmap μπορεί να ταυτοποιήσει την έκδοση του server, αλλά θα μπορούσαν επίσης να είναι χρήσιμα τα εργαλεία whatweb, webtech ή https://builtwith.com/:
Search for ευπάθειες της έκδοσης της διαδικτυακής εφαρμογής
Ορισμένα τεχνάσματα για να βρείτε ευπάθειες σε διάφορες γνωστές τεχνολογίες που χρησιμοποιούνται:
Λάβετε υπόψη ότι το ίδιο domain μπορεί να χρησιμοποιεί διαφορετικές τεχνολογίες σε διαφορετικές θύρες, φακέλους και subdomains. Αν η διαδικτυακή εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή τεχνολογία/πλατφόρμα που αναφέρθηκε παραπάνω ή οποιαδήποτε άλλη, μην ξεχάσετε να αναζητήσετε στο Διαδίκτυο νέες τεχνικές (και ενημερώστε με!).
Αν ο πηγαίος κώδικας της εφαρμογής είναι διαθέσιμος στο github, εκτός από την εκτέλεση ενός White box test της εφαρμογής, υπάρχει ορισμένες πληροφορίες που θα μπορούσαν να είναι χρήσιμες για την τρέχουσα Black-Box testing:
Υπάρχει κάποιο Change-log ή Readme ή Version αρχείο ή οτιδήποτε με πληροφορίες έκδοσης προσβάσιμες μέσω διαδικτύου;
Πώς και πού αποθηκεύονται τα credentials; Υπάρχει κάποιο (προσβάσιμο;) αρχείο με credentials (ονόματα χρηστών ή κωδικούς);
Είναι οι κωδικοί σε καθαρό κείμενο, κρυπτογραφημένοι ή ποιος αλγόριθμος κατακερματισμού χρησιμοποιείται;
Χρησιμοποιεί κάποιο master key για την κρυπτογράφηση κάποιου πράγματος; Ποιος αλγόριθμος χρησιμοποιείται;
Μπορείτε να πρόσβαση σε οποιοδήποτε από αυτά τα αρχεία εκμεταλλευόμενοι κάποια ευπάθεια;
Υπάρχει κάποια ενδιαφέρουσα πληροφορία στο github (λυμένα και μη λυμένα) issues; Ή στην ιστορία commit (ίσως κάποιο password που εισήχθη σε ένα παλιό commit) ;
Αν χρησιμοποιείται ένα CMS, μην ξεχάσετε να τρέξετε έναν σαρωτή, ίσως βρείτε κάτι ενδιαφέρον:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin ιστοσελίδες για θέματα Ασφαλείας. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal ή (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
Σε αυτό το σημείο θα πρέπει ήδη να έχετε κάποιες πληροφορίες σχετικά με τον web server που χρησιμοποιεί ο πελάτης (αν υπάρχουν δεδομένα) και μερικά κόλπα που πρέπει να έχετε κατά νου κατά τη διάρκεια της δοκιμής. Αν είστε τυχεροί, μπορεί να έχετε βρει ακόμη και ένα CMS και να έχετε τρέξει κάποιο scanner.
Από αυτό το σημείο θα αρχίσουμε να αλληλεπιδρούμε με την εφαρμογή ιστού.
Προεπιλεγμένες σελίδες με ενδιαφέροντα πληροφορίες:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
Ελέγξτε επίσης τα σχόλια στις κύριες και δευτερεύουσες σελίδες.
Εξαναγκασμός σφαλμάτων
Οι web servers μπορεί να συμπεριφέρονται απροσδόκητα όταν τους αποστέλλονται περίεργα δεδομένα. Αυτό μπορεί να ανοίξει ευπάθειες ή αποκάλυψη ευαίσθητων πληροφοριών.
Πρόσβαση σε ψεύτικες σελίδες όπως /whatever_fake.php (.aspx,.html,.κλπ)
Προσθέστε "[]", "]]", και "[[" στις τιμές cookie και τιμές παραμέτρων για να δημιουργήσετε σφάλματα
Δημιουργήστε σφάλμα δίνοντας είσοδο ως /~randomthing/%s
στο τέλος της διεύθυνσης URL
Δοκιμάστε διαφορετικά HTTP Verbs όπως PATCH, DEBUG ή λάθος όπως FAKE
Αν διαπιστώσετε ότι το WebDav είναι ενεργοποιημένο αλλά δεν έχετε αρκετές άδειες για ανέβασμα αρχείων στον ριζικό φάκελο, προσπαθήστε να:
Brute Force διαπιστευτήρια
Ανεβάστε αρχεία μέσω WebDav στους υπόλοιπους βρεθέντες φακέλους μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες να ανεβάσετε αρχεία σε άλλους φακέλους.
Αν η εφαρμογή δεν αναγκάζει τον χρήστη σε HTTPS σε κανένα σημείο, τότε είναι ευάλωτη σε MitM
Αν η εφαρμογή στέλνει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP. Τότε είναι μια υψηλή ευπάθεια.
Χρησιμοποιήστε testssl.sh για να ελέγξετε για ευπάθειες (Στα προγράμματα Bug Bounty πιθανώς αυτές οι ευπάθειες δεν θα γίνουν αποδεκτές) και χρησιμοποιήστε a2sv για να επανελέγξετε τις ευπάθειες:
Information about SSL/TLS vulnerabilities:
Λάβετε κάποιο είδος spider μέσα στο διαδίκτυο. Ο στόχος του spider είναι να βρει όσο το δυνατόν περισσότερους δρόμους από την εφαρμογή που δοκιμάζεται. Επομένως, θα πρέπει να χρησιμοποιηθούν web crawling και εξωτερικές πηγές για να βρείτε όσο το δυνατόν περισσότερους έγκυρους δρόμους.
gospider (go): HTML spider, LinkFinder σε αρχεία JS και εξωτερικές πηγές (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HML spider, με LinkFider για αρχεία JS και Archive.org ως εξωτερική πηγή.
dirhunt (python): HTML spider, υποδεικνύει επίσης "juicy files".
evine (go): Διαδραστικός CLI HTML spider. Αναζητά επίσης στο Archive.org.
meg (go): Αυτό το εργαλείο δεν είναι spider αλλά μπορεί να είναι χρήσιμο. Μπορείτε απλά να υποδείξετε ένα αρχείο με hosts και ένα αρχείο με paths και το meg θα ανακτήσει κάθε path σε κάθε host και θα αποθηκεύσει την απάντηση.
urlgrab (go): HTML spider με δυνατότητες JS rendering. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προcompiled έκδοση είναι παλιά και ο τρέχων κώδικας δεν μεταγλωττίζεται.
gau (go): HTML spider που χρησιμοποιεί εξωτερικούς παρόχους (wayback, otx, commoncrawl).
ParamSpider: Αυτό το script θα βρει URLs με παραμέτρους και θα τα καταγράψει.
galer (go): HTML spider με δυνατότητες JS rendering.
LinkFinder (python): HTML spider, με δυνατότητες JS beautify ικανές να αναζητούν νέους δρόμους σε αρχεία JS. Θα άξιζε επίσης να ρίξετε μια ματιά στο JSScanner, το οποίο είναι ένα wrapper του LinkFinder.
goLinkFinder (go): Για την εξαγωγή endpoints τόσο σε HTML πηγή όσο και σε ενσωματωμένα αρχεία javascript. Χρήσιμο για bug hunters, red teamers, infosec ninjas.
JSParser (python2.7): Ένα script python 2.7 που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει σχετικές URLs από αρχεία JavaScript. Χρήσιμο για την εύκολη ανακάλυψη AJAX requests. Φαίνεται ότι δεν συντηρείται.
relative-url-extractor (ruby): Δίνοντας ένα αρχείο (HTML) θα εξάγει URLs από αυτό χρησιμοποιώντας έξυπνη κανονική έκφραση για να βρει και να εξάγει τις σχετικές URLs από άσχημα (minify) αρχεία.
JSFScan (bash, several tools): Συγκεντρώνει ενδιαφέρουσες πληροφορίες από αρχεία JS χρησιμοποιώντας διάφορα εργαλεία.
subjs (go): Βρείτε αρχεία JS.
page-fetch (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτώσετε τη σελίδα.
Feroxbuster (rust): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει πολλές επιλογές των προηγούμενων εργαλείων.
Javascript Parsing: Μια επέκταση Burp για να βρείτε δρόμους και παραμέτρους σε αρχεία JS.
Sourcemapper: Ένα εργαλείο που δίνοντας το .js.map URL θα σας δώσει τον beautified JS κώδικα.
xnLinkFinder: Αυτό είναι ένα εργαλείο που χρησιμοποιείται για την ανακάλυψη endpoints για έναν δεδομένο στόχο.
waymore: Ανακαλύψτε συνδέσμους από τη μηχανή wayback (κατεβάζοντας επίσης τις απαντήσεις στη wayback και αναζητώντας περισσότερους συνδέσμους).
HTTPLoot (go): Crawl (ακόμα και συμπληρώνοντας φόρμες) και επίσης βρείτε ευαίσθητες πληροφορίες χρησιμοποιώντας συγκεκριμένες regexes.
SpiderSuite: Spider Suite είναι ένα προηγμένο multi-feature GUI web security Crawler/Spider σχεδιασμένο για επαγγελματίες κυβερνοασφάλειας.
jsluice (go): Είναι ένα πακέτο Go και εργαλείο γραμμής εντολών για την εξαγωγή URLs, δρόμων, μυστικών και άλλων ενδιαφέροντων δεδομένων από τον πηγαίο κώδικα JavaScript.
ParaForge: Το ParaForge είναι μια απλή επέκταση Burp Suite για να εξάγει τις παραμέτρους και τα endpoints από το αίτημα για να δημιουργήσει προσαρμοσμένες λίστες λέξεων για fuzzing και αρίθμηση.
katana (go): Καταπληκτικό εργαλείο για αυτό.
Crawley (go): Εκτυπώνει κάθε σύνδεσμο που είναι ικανό να βρει.
Ξεκινήστε brute-forcing από τον ριζικό φάκελο και βεβαιωθείτε ότι θα brute-force όλους τους φακέλους που βρέθηκαν χρησιμοποιώντας αυτή τη μέθοδο και όλους τους φακέλους που ανακαλύφθηκαν από το Spidering (μπορείτε να κάνετε αυτό το brute-forcing αναδρομικά και προσθέτοντας στην αρχή της χρησιμοποιούμενης λίστας λέξεων τα ονόματα των βρεθέντων φακέλων). Εργαλεία:
Dirb / Dirbuster - Συμπεριλαμβάνεται στο Kali, παλιό (και αργό) αλλά λειτουργικό. Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά και αναδρομική αναζήτηση. Πολύ αργό σε σύγκριση με τις άλλες επιλογές.
Dirsearch (python): Δεν επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά αλλά επιτρέπει αναδρομική αναζήτηση.
Gobuster (go): Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά, δεν έχει αναδρομική αναζήτηση.
Feroxbuster - Γρήγορο, υποστηρίζει αναδρομική αναζήτηση.
wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - Γρήγορο: ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): Αυτό δεν είναι spider αλλά ένα εργαλείο που δίνοντας τη λίστα των βρεθέντων URLs θα διαγράψει τα "διπλά" URLs.
Scavenger: Επέκταση Burp για να δημιουργήσει μια λίστα φακέλων από την ιστορία burp διαφόρων σελίδων.
TrashCompactor: Αφαιρεί URLs με διπλές λειτουργίες (βάσει js imports).
Chamaleon: Χρησιμοποιεί wapalyzer για να ανιχνεύσει τις χρησιμοποιούμενες τεχνολογίες και να επιλέξει τις λίστες λέξεων που θα χρησιμοποιηθούν.
Συνιστώμενα λεξικά:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced.
Broken link checker: Βρείτε σπασμένους συνδέσμους μέσα σε HTML που μπορεί να είναι επιρρεπείς σε καταλήψεις.
File Backups: Μόλις βρείτε όλα τα αρχεία, αναζητήστε αντίγραφα ασφαλείας όλων των εκτελέσιμων αρχείων (".php", ".aspx"...). Κοινές παραλλαγές για την ονομασία ενός αντιγράφου ασφαλείας είναι: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp και file.old. Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο bfac ή backup-gen.
Discover new parameters: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως Arjun, parameth, x8 και Param Miner για να ανακαλύψετε κρυφές παραμέτρους. Αν μπορείτε, θα μπορούσατε να προσπαθήσετε να αναζητήσετε κρυφές παραμέτρους σε κάθε εκτελέσιμο web αρχείο.
Arjun all default wordlists: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
Comments: Ελέγξτε τα σχόλια όλων των αρχείων, μπορείτε να βρείτε credentials ή κρυφή λειτουργικότητα.
Αν παίζετε CTF, ένα "κοινό" κόλπο είναι να κρύβετε πληροφορίες μέσα σε σχόλια στα δεξιά της σελίδας (χρησιμοποιώντας εκατοντάδες κενά ώστε να μην βλέπετε τα δεδομένα αν ανοίξετε τον πηγαίο κώδικα με τον browser). Μια άλλη δυνατότητα είναι να χρησιμοποιήσετε πολλές νέες γραμμές και να κρύψετε πληροφορίες σε ένα σχόλιο στο κάτω μέρος της ιστοσελίδας.
API keys: Αν βρείτε οποιοδήποτε API key υπάρχει οδηγός που υποδεικνύει πώς να χρησιμοποιήσετε API keys διαφόρων πλατφορμών: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird.
Google API keys: Αν βρείτε οποιοδήποτε API key που μοιάζει με AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik μπορείτε να χρησιμοποιήσετε το έργο gmapapiscanner για να ελέγξετε ποιες APIs μπορεί να έχει πρόσβαση το key.
S3 Buckets: Κατά τη διάρκεια του spidering ελέγξτε αν κάποια subdomain ή οποιοσδήποτε σύνδεσμος σχετίζεται με κάποιο S3 bucket. Σε αυτή την περίπτωση, ελέγξτε τις άδειες του bucket.
Ενώ εκτελείτε το spidering και brute-forcing μπορεί να βρείτε ενδιαφέροντα πράγματα που πρέπει να σημειώσετε.
Interesting files
Αναζητήστε συνδέσμους σε άλλα αρχεία μέσα στα CSS αρχεία.
Αν βρείτε ένα .env πληροφορίες όπως api keys, κωδικούς db και άλλες πληροφορίες μπορεί να βρεθούν.
Αν βρείτε API endpoints θα πρέπει επίσης να τα δοκιμάσετε. Αυτά δεν είναι αρχεία, αλλά πιθανότατα θα "μοιάζουν" με αυτά.
JS files: Στην ενότητα spidering αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν δρόμους από αρχεία JS. Επίσης, θα ήταν ενδιαφέρον να παρακολουθείτε κάθε JS αρχείο που βρέθηκε, καθώς σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να υποδηλώνει ότι μια πιθανή ευπάθεια εισήχθη στον κώδικα. Μπορείτε να χρησιμοποιήσετε για παράδειγμα JSMon.
Javascript Deobfuscator and Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator.
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/.
JsFuck deobfuscation (javascript με χαρακτήρες:"[]!+" https://ooze.ninja/javascript/poisonjs/).
TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
Σε πολλές περιπτώσεις θα χρειαστεί να κατανοήσετε τις κανονικές εκφράσεις που χρησιμοποιούνται, αυτό θα είναι χρήσιμο: https://regex101.com/.
Μπορείτε επίσης να παρακολουθείτε τα αρχεία όπου ανιχνεύθηκαν φόρμες, καθώς μια αλλαγή στην παράμετρο ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδηλώνει μια πιθανή νέα ευάλωτη λειτουργικότητα.
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
502 Proxy Error
Αν οποιαδήποτε σελίδα απαντά με αυτόν τον κωδικό, είναι πιθανό να είναι μια κακώς ρυθμισμένη proxy. Αν στείλετε ένα HTTP αίτημα όπως: GET https://google.com HTTP/1.1
(με την κεφαλίδα host και άλλες κοινές κεφαλίδες), η proxy θα προσπαθήσει να πρόσβαση google.com και θα έχετε βρει μια SSRF.
NTLM Authentication - Info disclosure
Αν ο τρέχων server ζητάει αυθεντικοποίηση είναι Windows ή βρίσκετε μια είσοδο που ζητάει τα credentials σας (και ζητάει το domain name), μπορείτε να προκαλέσετε μια διαρροή πληροφοριών.
Στείλτε την κεφαλίδα: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
και λόγω του πώς λειτουργεί η NTLM αυθεντικοποίηση, ο server θα απαντήσει με εσωτερικές πληροφορίες (έκδοση IIS, έκδοση Windows...) μέσα στην κεφαλίδα "WWW-Authenticate".
Μπορείτε να αυτοματοποιήσετε αυτό χρησιμοποιώντας το nmap plugin "http-ntlm-info.nse".
HTTP Redirect (CTF)
Είναι δυνατόν να βάλετε περιεχόμενο μέσα σε μια Redirection. Αυτό το περιεχόμενο δεν θα εμφανιστεί στον χρήστη (καθώς ο browser θα εκτελέσει την ανακατεύθυνση) αλλά κάτι θα μπορούσε να είναι κρυμμένο εκεί.
Τώρα που έχει γίνει μια εκτενής αρίθμηση της web εφαρμογής είναι καιρός να ελέγξετε για πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε τη λίστα ελέγχου εδώ:
Βρείτε περισσότερες πληροφορίες σχετικά με τις web ευπάθειες στο:
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως https://github.com/dgtlmoon/changedetection.io για να παρακολουθείτε σελίδες για τροποποιήσεις που μπορεί να εισάγουν ευπάθειες.
Get a hacker's perspective on your web apps, network, and cloud
Find and report critical, exploitable vulnerabilities with real business impact. Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)