80,443 - Pentesting Web Μεθοδολογία
Reading time: 20 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Βασικές Πληροφορίες
Η web υπηρεσία είναι η πιο συνηθισμένη και εκτεταμένη υπηρεσία και υπάρχουν πολλά διαφορετικά είδη ευπαθειών.
Προεπιλεγμένη θύρα: 80 (HTTP), 443(HTTPS)
PORT STATE SERVICE
80/tcp open http
443/tcp open ssl/https
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
Οδηγίες Web API
Περίληψη μεθοδολογίας
Σε αυτή τη μεθοδολογία υποθέτουμε ότι θα επιτεθείς σε ένα domain (ή subdomain) και μόνο σε αυτό. Επομένως, πρέπει να εφαρμόσεις αυτή τη μεθοδολογία σε κάθε ανιχνευμένο domain, subdomain ή IP με αδιευκρίνιστο web server εντός του scope.
- Ξεκίνησε εντοπίζοντας τις technologies που χρησιμοποιεί ο web server. Ψάξε για tricks που αξίζει να θυμάσαι κατά τη διάρκεια του υπόλοιπου test αν καταφέρεις να τα identify.
- Υπάρχει κάποια known vulnerability στην έκδοση της technology;
- Χρησιμοποιείται κάποια well known tech; Κάποιο useful trick για να εξάγεις περισσότερες πληροφορίες;
- Κάποιο specialised scanner για να τρέξεις (όπως wpscan);
- Εκτέλεσε general purposes scanners. Ποτέ δεν ξέρεις αν θα βρουν κάτι ή αν θα αποκαλύψουν ενδιαφέρουσες πληροφορίες.
- Ξεκίνησε με τους initial checks: robots, sitemap, 404 error και SSL/TLS scan (if HTTPS).
- Ξεκίνησε spidering της web page: Είναι ώρα να βρεις όλα τα πιθανά files, folders και parameters being used. Επίσης, έλεγξε για special findings.
- Σημείωσε ότι κάθε φορά που εντοπίζεται ένας νέος directory κατά τη διάρκεια brute-forcing ή spidering, θα πρέπει να γίνει spidering.
- Directory Brute-Forcing: Προσπάθησε να brute force όλους τους ανιχνευμένους folders αναζητώντας νέα files και directories.
- Σημείωσε ότι κάθε φορά που εντοπίζεται ένας νέος directory κατά τη διάρκεια brute-forcing ή spidering, θα πρέπει να γίνει Brute-Forced.
- Backups checking: Δοκίμασε αν μπορείς να βρεις backups των discovered files προσθέτοντας κοινές backup extensions.
- Brute-Force parameters: Προσπάθησε να βρεις hidden parameters.
- Μόλις έχεις identified όλα τα πιθανά endpoints που δέχονται user input, έλεγξε για κάθε είδους vulnerabilities σχετικές με αυτά.
- Follow this checklist
Έκδοση Server (Ευάλωτο;)
Αναγνώριση
Ελέγξτε εάν υπάρχουν known vulnerabilities για την έκδοση του server που τρέχει.
Τα HTTP headers and cookies of the response μπορούν να είναι πολύ χρήσιμα για να identify τις technologies και/ή την version που χρησιμοποιούνται. Μια Nmap scan μπορεί να identify την έκδοση του server, αλλά χρήσιμα μπορεί επίσης να είναι τα εργαλεία whatweb, webtech ή https://builtwith.com/:
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
Αναζήτηση για ευπάθειες της έκδοσης της web εφαρμογής
Έλεγχος αν υπάρχει WAF
- https://github.com/EnableSecurity/wafw00f
- https://github.com/Ekultek/WhatWaf.git
- https://nmap.org/nsedoc/scripts/http-waf-detect.html
Κόλπα για web τεχνολογίες
Μερικά κόλπα για την εύρεση ευπαθειών σε διάφορες γνωστές τεχνολογίες που χρησιμοποιούνται:
- AEM - Adobe Experience Cloud
- Apache
- Artifactory
- Buckets
- CGI
- Drupal
- Flask
- Git
- Golang
- GraphQL
- H2 - Java SQL database
- ISPConfig
- IIS tricks
- Microsoft SharePoint
- JBOSS
- Jenkins
- Jira
- Joomla
- JSP
- Laravel
- Moodle
- Nginx
- PHP (php has a lot of interesting tricks that could be exploited)
- Python
- Spring Actuators
- Symphony
- Tomcat
- VMWare
- Web API Pentesting
- WebDav
- Werkzeug
- Wordpress
- Electron Desktop (XSS to RCE)
- Sitecore
- Zabbix
Λάβετε υπόψη ότι το same domain μπορεί να χρησιμοποιεί different technologies σε διαφορετικά ports, folders και subdomains.
Αν η web εφαρμογή χρησιμοποιεί κάποια από τις γνωστές τεχνολογίες/πλατφόρμες που αναφέρθηκαν προηγουμένως ή οποιαδήποτε άλλη, μην ξεχάσετε να αναζητήσετε στο Internet νέα κόλπα (και ενημερώστε με!).
Source Code Review
Εάν ο source code της εφαρμογής είναι διαθέσιμος στο github, πέραν της διεξαγωγής από εσάς ενός White box test της εφαρμογής, υπάρχουν κάποιες πληροφορίες που θα μπορούσαν να είναι χρήσιμες για το τρέχον Black-Box testing:
- Υπάρχει κάποιο αρχείο Change-log ή Readme ή Version ή οτιδήποτε με πληροφορίες έκδοσης προσβάσιμες μέσω web;
- Πώς και πού αποθηκεύονται τα credentials; Υπάρχει κάποιο (προσβάσιμο;) file με credentials (usernames or passwords);
- Είναι τα passwords σε plain text, encrypted ή ποιος hashing algorithm χρησιμοποιείται;
- Χρησιμοποιείται κάποιο master key για την κρυπτογράφηση; Ποιος algorithm χρησιμοποιείται;
- Μπορείτε να έχετε πρόσβαση σε κάποιο από αυτά τα αρχεία εκμεταλλευόμενοι κάποια ευπάθεια;
- Υπάρχει κάποια ενδιαφέρουσα πληροφορία στο github (solved και μη) στα issues; Ή στο commit history (ίσως κάποιο password εισήχθη σε ένα παλιό commit)?
Source code Review / SAST Tools
Αυτόματοι σαρωτές
Αυτόματοι σαρωτές γενικού σκοπού
nikto -h <URL>
whatweb -a 4 <URL>
wapiti -u <URL>
W3af
zaproxy #You can use an API
nuclei -ut && nuclei -target <URL>
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
Σαρωτές CMS
Αν χρησιμοποιείται 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 or (M)oodle
droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
cmsmap [-f W] -F -d <URL>
wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
Σε αυτό το σημείο θα πρέπει να έχετε ήδη κάποιες πληροφορίες για τον web server που χρησιμοποιεί ο πελάτης (εάν υπάρχουν δεδομένα) και μερικά κόλπα να έχετε υπόψη κατά τη διάρκεια της δοκιμής. Εάν είστε τυχεροί, ίσως έχετε βρει και ένα CMS και έχετε τρέξει κάποιο scanner.
Ανακάλυψη Web εφαρμογής βήμα-βήμα
Από αυτό το σημείο θα αρχίσουμε να αλληλεπιδρούμε με την web εφαρμογή.
Αρχικοί έλεγχοι
Default pages with interesting info:
- /robots.txt
- /sitemap.xml
- /crossdomain.xml
- /clientaccesspolicy.xml
- /.well-known/
- Ελέγξτε επίσης σχόλια στις κύριες και δευτερεύουσες σελίδες.
Προκαλώντας σφάλματα
Web servers μπορεί να συμπεριφέρονται απρόβλεπτα όταν τους αποστέλλονται περίεργα δεδομένα. Αυτό μπορεί να ανοίξει vulnerabilities ή να οδηγήσει σε αποκάλυψη ευαίσθητων πληροφοριών.
- Πρόσβαση σε fake pages όπως /whatever_fake.php (.aspx,.html,.etc)
- Προσθέστε "[]", "]]" και "[[" σε τιμές cookie και τιμές παραμέτρων για να προκαλέσετε σφάλματα
- Δημιουργήστε σφάλμα δίνοντας είσοδο ως
/~randomthing/%s
στο τέλος του URL - Δοκιμάστε διαφορετικά HTTP Verbs όπως PATCH, DEBUG ή λάθος όπως FAKE
Check if you can upload files (PUT verb, WebDav)
Αν διαπιστώσετε ότι το WebDav είναι enabled αλλά δεν έχετε επαρκή δικαιώματα για uploading files στον root φάκελο, δοκιμάστε να:
- Brute Force credentials
- Upload files μέσω WebDav στους υπόλοιπους φακέλους που βρέθηκαν μέσα στην ιστοσελίδα. Ίσως έχετε δικαιώματα να ανεβάσετε αρχεία σε άλλους φακέλους.
SSL/TLS vulnerabilites
- Αν η εφαρμογή δεν αναγκάζει τη χρήση HTTPS σε κάποιο σημείο, τότε είναι vulnerable σε MitM
- Αν η εφαρμογή αποστέλλει ευαίσθητα δεδομένα (passwords) μέσω HTTP. Τότε είναι ένα high vulnerability.
Χρησιμοποιήστε testssl.sh για έλεγχο για vulnerabilities (Σε Bug Bounty προγράμματα πιθανότατα αυτού του είδους οι vulnerabilities δεν θα γίνονται δεκτοί) και χρησιμοποιήστε a2sv για επανέλεγχο των vulnerabilities:
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
# You can also use other tools, by testssl.sh at this momment is the best one (I think)
sslscan <host:port>
sslyze --regular <ip:port>
Information about SSL/TLS vulnerabilities:
- https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/
- https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/
Spidering
Εκκινήστε κάποιο είδος spider μέσα στο web. Ο στόχος του spider είναι να βρει όσο το δυνατόν περισσότερα paths από την εφαρμογή που δοκιμάζεται. Επομένως, web crawling και εξωτερικές πηγές πρέπει να χρησιμοποιηθούν για να βρεθούν όσο το δυνατόν περισσότερα έγκυρα paths.
- gospider (go): HTML spider, LinkFinder σε JS αρχεία και εξωτερικές πηγές (Archive.org, CommonCrawl.org, VirusTotal.com).
- hakrawler (go): HML spider, με LinkFider για JS αρχεία και Archive.org ως εξωτερική πηγή.
- dirhunt (python): HTML spider, επίσης δείχνει "juicy files".
- evine (go): Interactive CLI HTML spider. Ψάχνει επίσης στο Archive.org
- meg (go): Αυτό το εργαλείο δεν είναι spider αλλά μπορεί να είναι χρήσιμο. Μπορείτε να υποδείξετε ένα αρχείο με hosts και ένα αρχείο με paths και το meg θα φέρει κάθε path σε κάθε host και θα αποθηκεύσει την απάντηση.
- urlgrab (go): HTML spider με δυνατότητες rendering JS. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προ-συμπιεσμένη έκδοση είναι παλιά και ο τρέχων κώδικας δεν μεταγλωττίζεται.
- gau (go): HTML spider που χρησιμοποιεί εξωτερικούς providers (wayback, otx, commoncrawl)
- ParamSpider: Αυτό το script θα βρει URLs με parameters και θα τα καταγράψει.
- galer (go): HTML spider με δυνατότητες rendering JS.
- LinkFinder (python): HTML spider, με δυνατότητες JS beautify ικανό να βρει νέους paths σε JS αρχεία. Αξίζει επίσης να ρίξετε μια ματιά σε JSScanner, που είναι wrapper του LinkFinder.
- goLinkFinder (go): Για εξαγωγή endpoints τόσο από HTML source όσο και από embedded javascript αρχεία. Χρήσιμο για bug hunters, red teamers, infosec ninjas.
- JSParser (python2.7): Ένα python 2.7 script που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει relative URLs από JavaScript αρχεία. Χρήσιμο για εύκολη ανακάλυψη AJAX requests. Φαίνεται μη συντηρούμενο.
- relative-url-extractor (ruby): Δίνοντας ένα αρχείο (HTML) θα εξάγει URLs από αυτό χρησιμοποιώντας έξυπνα regular expressions για να βρει και εξάγει τα relative URLs από ugly (minify) αρχεία.
- JSFScan (bash, several tools): Συλλέγει ενδιαφέρουσες πληροφορίες από JS αρχεία χρησιμοποιώντας πολλά εργαλεία.
- subjs (go): Βρίσκει JS αρχεία.
- page-fetch (go): Φορτώνει μια σελίδα σε headless browser και τυπώνει όλα τα urls που φορτώθηκαν για να φορτωθεί η σελίδα.
- Feroxbuster (rust): Content discovery εργαλείο που συνδυάζει επιλογές από τα προηγούμενα εργαλεία
- Javascript Parsing: Μια Burp extension για να βρει paths και params σε JS αρχεία.
- Sourcemapper: Ένα εργαλείο που δίνοντας το .js.map URL θα σας φέρει τον beautified JS κώδικα
- xnLinkFinder: Εργαλείο για να ανακαλύπτονται endpoints για έναν συγκεκριμένο στόχο.
- waymore: Ανακαλύπτει links από τη wayback machine (κατεβάζοντας επίσης τις απαντήσεις στο wayback και ψάχνοντας για περισσότερα links)
- HTTPLoot (go): Crawl (ακόμα και συμπληρώνοντας forms) και επίσης βρίσκει sensitive info χρησιμοποιώντας συγκεκριμένα regexes.
- SpiderSuite: Spider Suite είναι ένα advance multi-feature GUI web security Crawler/Spider σχεδιασμένο για cyber security professionals.
- jsluice (go): Είναι ένα Go package και command-line tool για εξαγωγή URLs, paths, secrets, και άλλων ενδιαφερόντων δεδομένων από JavaScript source code.
- ParaForge: ParaForge είναι μια απλή Burp Suite extension για εξαγωγή των paramters και endpoints από τα requests για να δημιουργήσει custom wordlist για fuzzing και enumeration.
- katana (go): Awesome tool για αυτό.
- Crawley (go): Τυπώνει κάθε link που μπορεί να βρει.
Brute Force directories and files
Ξεκινήστε brute-forcing από τον root φάκελο και φροντίστε να brute-force όλους τους φακέλους που βρέθηκαν χρησιμοποιώντας αυτή τη μέθοδο και όλους τους φακέλους ανακαλυφθέντες από το Spidering (μπορείτε να κάνετε αυτό το brute-forcing αναδρομικά και να προσθέτετε στην αρχή της χρησιμοποιούμενης wordlist τα ονόματα των φακέλων που βρέθηκαν).
Εργαλεία:
- Dirb / Dirbuster - Περιλαμβάνονται σε Kali, παλιά (και αργή) αλλά λειτουργική. Επιτρέπουν auto-signed certificates και recursive search. Πολύ πιο αργά σε σύγκριση με άλλες επιλογές.
- Dirsearch (python): Δεν επιτρέπει auto-signed certificates αλλά επιτρέπει recursive search.
- Gobuster (go): Επιτρέπει auto-signed certificates, δεν έχει recursive search.
- Feroxbuster - Fast, supports recursive search.
- wfuzz
wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
- ffuf - Fast:
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
- uro (python): Αυτό δεν είναι spider αλλά ένα εργαλείο που δίνοντας τη λίστα των βρεθέντων URLs θα διαγράψει τα "duplicated" URLs.
- Scavenger: Burp Extension για να δημιουργήσει μια λίστα φακέλων από το burp history διαφορετικών σελίδων
- TrashCompactor: Αφαιρεί URLs με διπλότυπες λειτουργίες (με βάση τα js imports)
- Chamaleon: Χρησιμοποιεί wapalyzer για να ανιχνεύσει τις τεχνολογίες που χρησιμοποιούνται και να επιλέξει τις κατάλληλες wordlists.
Recommended dictionaries:
- https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt
- Dirsearch included dictionary
- http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10
- Assetnote wordlists
- https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content
- raft-large-directories-lowercase.txt
- directory-list-2.3-medium.txt
- RobotsDisallowed/top10000.txt
- https://github.com/random-robbie/bruteforce-lists
- https://github.com/google/fuzzing/tree/master/dictionaries
- https://github.com/six2dez/OneListForAll
- https://github.com/random-robbie/bruteforce-lists
- https://github.com/ayoubfathi/leaky-paths
- /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.
What to check on each file found
- Broken link checker: Βρείτε broken links μέσα σε HTMLs που μπορεί να είναι επιρρεπή σε takeovers
- File Backups: Μόλις έχετε βρει όλα τα αρχεία, ψάξτε για backup όλων των εκτελέσιμων αρχείων (".php", ".aspx"...). Κοινές παραλλαγές ονοματοδοσίας backup είναι: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp and file.old. Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο bfac ή backup-gen.
- Discover new parameters: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως Arjun, parameth, x8 και Param Miner για να ανακαλύψετε κρυμμένους parameters. Αν μπορείτε, δοκιμάστε να αναζητήσετε κρυμμένους parameters σε κάθε εκτελέσιμο 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: Ελέγξτε τα comments όλων των αρχείων, μπορεί να βρείτε credentials ή κρυμμένη λειτουργικότητα.
- Αν παίζετε CTF, ένα "κοινό" κόλπο είναι να κρύβετε πληροφορίες μέσα σε comments στη δεξιά πλευρά της σελίδας (χρησιμοποιώντας εκατοντάδες spaces ώστε να μην δείτε τα δεδομένα αν ανοίξετε τον source code με τον browser). Άλλη δυνατότητα είναι να χρησιμοποιήσετε πολλαπλά new lines και να κρύψετε πληροφορία σε ένα comment στο κάτω μέρος της σελίδας.
- API keys: Αν βρείτε κάποιο API key υπάρχει οδηγός που υποδεικνύει πώς να χρησιμοποιήσετε API keys από διάφορες πλατφόρμες: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
- Google API keys: Αν βρείτε κάποιο API key που μοιάζει με AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik μπορείτε να χρησιμοποιήσετε το project gmapapiscanner για να ελέγξετε σε ποιες apis έχει πρόσβαση το key.
- S3 Buckets: Κατά το spidering ελέγξτε αν κάποιο subdomain ή κάποιο link σχετίζεται με κάποιο S3 bucket. Σε αυτή την περίπτωση, ελέγξτε τα permissions του bucket.
Special findings
Κατά την εκτέλεση του spidering και του brute-forcing μπορεί να βρείτε ενδιαφέροντα πράγματα που πρέπει να σημειώσετε.
Interesting files
- Ψάξτε για links σε άλλα αρχεία μέσα σε CSS αρχεία.
- If you find a .git file some information can be extracted
- Αν βρείτε ένα .env μπορεί να βρείτε πληροφορίες όπως api keys, dbs passwords και άλλες πληροφορίες.
- Αν βρείτε API endpoints θα πρέπει επίσης να τα testάρετε. Αυτά δεν είναι αρχεία, αλλά πιθανότατα "θα φαίνονται" σαν αρχεία.
- JS files: Στην ενότητα spidering αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν paths από JS αρχεία. Επιπλέον, θα ήταν ενδιαφέρον να παρακολουθείτε κάθε JS αρχείο που βρέθηκε, καθώς σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να δείχνει ότι εισήχθη μια πιθανή ευπάθεια στον κώδικα. Μπορείτε να χρησιμοποιήσετε για παράδειγμα JSMon.
- Θα πρέπει επίσης να ελέγξετε τα ανακαλυφθέντα JS αρχεία με RetireJS ή JSHole για να δείτε αν είναι ευάλωτα.
- 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 with chars:"[]!+" https://enkhee-osiris.github.io/Decoder-JSFuck/)
- TrainFuck](https://github.com/taco-c/trainfuck):
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
- Σε πολλές περιπτώσεις, θα χρειαστεί να κατανοήσετε τα regular expressions που χρησιμοποιούνται. Αυτό θα βοηθήσει: https://regex101.com/ ή https://pythonium.net/regex
- Μπορείτε επίσης να παρακολουθείτε τα αρχεία όπου εντοπίστηκαν φόρμες, καθώς μια αλλαγή στα parameters ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδεικνύει μια νέα πιθανή ευπάθεια.
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
502 Proxy Error
Αν κάποια σελίδα απαντάει με αυτόν τον κωδικό, πιθανόν είναι κακώς ρυθμισμένος proxy. Αν στείλετε ένα HTTP request όπως: GET https://google.com HTTP/1.1
(με το host header και άλλα κοινά headers), ο proxy θα προσπαθήσει να προσεγγίσει το google.com και έχετε βρει ένα SSRF.
NTLM Authentication - Info disclosure
Αν ο server που ζητά authentication είναι Windows ή βρείτε μια φόρμα login που ζητάει τα credentials σας (και ζητάει domain name), μπορείτε να προκαλέσετε information disclosure.
Στείλτε το header: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
και λόγω του τρόπου που λειτουργεί η NTLM authentication, ο server θα απαντήσει με εσωτερικές πληροφορίες (IIS version, Windows version...) μέσα στο header "WWW-Authenticate".
Μπορείτε να αυτοματοποιήσετε αυτό χρησιμοποιώντας το nmap plugin "http-ntlm-info.nse".
HTTP Redirect (CTF)
Είναι δυνατόν να βάλεις περιεχόμενο μέσα σε μια Redirection. Αυτό το περιεχόμενο δεν θα εμφανιστεί στον χρήστη (καθώς ο browser θα εκτελέσει την redirection) αλλά κάτι θα μπορούσε να κρυφτεί εκεί.
Web Vulnerabilities Checking
Τώρα που έχει γίνει μια εκτενής enumeration της web εφαρμογής, είναι ώρα να ελέγξετε για πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε το checklist εδώ:
Web Vulnerabilities Methodology
Βρείτε περισσότερες πληροφορίες για web vulns σε:
- https://six2dez.gitbook.io/pentest-book/others/web-checklist
- https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html
- https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection
Monitor Pages for changes
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως https://github.com/dgtlmoon/changedetection.io για να παρακολουθείτε σελίδες για τροποποιήσεις που μπορεί να εισάγουν ευπάθειες.
HackTricks Automatic Commands
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.
Protocol_Description: Web #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
Entry_2:
Name: Quick Web Scan
Description: Nikto and GoBuster
Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
Entry_3:
Name: Nikto
Description: Basic Site Info via Nikto
Command: nikto -host {Web_Proto}://{IP}:{Web_Port}
Entry_4:
Name: WhatWeb
Description: General purpose auto scanner
Command: whatweb -a 4 {IP}
Entry_5:
Name: Directory Brute Force Non-Recursive
Description: Non-Recursive Directory Brute Force
Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
Entry_6:
Name: Directory Brute Force Recursive
Description: Recursive Directory Brute Force
Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10
Entry_7:
Name: Directory Brute Force CGI
Description: Common Gateway Interface Brute Force
Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200
Entry_8:
Name: Nmap Web Vuln Scan
Description: Tailored Nmap Scan for web Vulnerabilities
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}
Entry_9:
Name: Drupal
Description: Drupal Enumeration Notes
Note: |
git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration
Entry_10:
Name: WordPress
Description: WordPress Enumeration with WPScan
Command: |
?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php
wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e
Entry_11:
Name: WordPress Hydra Brute Force
Description: Need User (admin is default)
Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'
Entry_12:
Name: Ffuf Vhost
Description: Simple Scan with Ffuf for discovering additional vhosts
Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters}
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.