hacktricks/network-services-pentesting/pentesting-web
2024-09-27 11:28:13 +00:00
..
buckets Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
drupal Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat 2024-09-23 23:36:10 +00:00
electron-desktop-apps Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat 2024-09-19 16:43:13 +00:00
php-tricks-esp Translated ['network-services-pentesting/pentesting-web/php-tricks-esp/R 2024-09-05 18:59:50 +00:00
tomcat Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-09-04 13:40:55 +00:00
403-and-401-bypasses.md Translated ['network-services-pentesting/512-pentesting-rexec.md', 'netw 2024-08-04 15:20:33 +00:00
aem-adobe-experience-cloud.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
angular.md Translated to Greek 2024-02-10 22:40:18 +00:00
apache.md Translated ['network-services-pentesting/pentesting-web/apache.md', 'pen 2024-08-19 11:13:14 +00:00
artifactory-hacking-guide.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
bolt-cms.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
cgi.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
code-review-tools.md Translated ['network-services-pentesting/pentesting-web/code-review-tool 2024-09-27 11:28:13 +00:00
dotnetnuke-dnn.md Translated ['crypto-and-stego/cryptographic-algorithms/unpacking-binarie 2024-07-19 05:00:03 +00:00
drupal.md Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/ 2024-05-02 15:56:18 +00:00
flask.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
git.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
golang.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
grafana.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
graphql.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
gwt-google-web-toolkit.md Translated to Greek 2024-02-10 22:40:18 +00:00
h2-java-sql-database.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
iis-internet-information-services.md Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-09-04 13:40:55 +00:00
imagemagick-security.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
jboss.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
jira.md Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat 2024-09-23 23:36:10 +00:00
joomla.md Translated ['network-services-pentesting/pentesting-web/drupal/README.md 2024-08-21 09:10:19 +00:00
jsp.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
laravel.md Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:28:47 +00:00
moodle.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
nextjs.md Translated ['network-services-pentesting/pentesting-web/nextjs.md', 'pen 2024-08-18 15:54:51 +00:00
nginx.md Translated ['network-services-pentesting/512-pentesting-rexec.md', 'netw 2024-08-04 15:20:33 +00:00
nodejs-express.md Translated to Greek 2024-02-10 22:40:18 +00:00
prestashop.md Translated ['network-services-pentesting/pentesting-web/drupal/README.md 2024-08-21 09:10:19 +00:00
put-method-webdav.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
python.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
README.md Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat 2024-09-23 23:36:10 +00:00
rocket-chat.md Translated ['generic-methodologies-and-resources/pentesting-methodology. 2024-08-31 16:27:55 +00:00
special-http-headers.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
spring-actuators.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
symphony.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
tomcat.md Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-09-04 13:40:55 +00:00
uncovering-cloudflare.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
vmware-esx-vcenter....md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:27:20 +00:00
waf-bypass.md Translated to Greek 2024-02-10 22:40:18 +00:00
web-api-pentesting.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 12:02:35 +00:00
werkzeug.md Translated ['network-services-pentesting/512-pentesting-rexec.md', 'netw 2024-08-04 15:20:33 +00:00
wordpress.md Translated ['network-services-pentesting/pentesting-web/drupal/README.md 2024-08-21 09:10:19 +00:00

80,443 - Pentesting Web Methodology

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

If you are interested in hacking career and hack the unhackable - we are hiring! (απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά).

{% embed url="https://www.stmcyber.com/careers" %}

Basic Info

Η υπηρεσία ιστού είναι η πιο συνηθισμένη και εκτενή υπηρεσία και υπάρχουν πολλοί διαφορετικοί τύποι ευπαθειών.

Default port: 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 Guidance

{% content-ref url="web-api-pentesting.md" %} web-api-pentesting.md {% endcontent-ref %}

Methodology summary

Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι θα επιτεθείτε σε ένα domain (ή subdomain) και μόνο σε αυτό. Έτσι, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, subdomain ή IP με ακαθόριστο web server εντός του πεδίου εφαρμογής.

  • Ξεκινήστε με την ταυτοποίηση των τεχνολογιών που χρησιμοποιούνται από τον web server. Αναζητήστε κόλπα που να έχετε υπόψη σας κατά τη διάρκεια της υπόλοιπης δοκιμής αν μπορείτε να ταυτοποιήσετε επιτυχώς την τεχνολογία.
  • Υπάρχει κάποια γνωστή ευπάθεια της έκδοσης της τεχνολογίας;
  • Χρησιμοποιείτε κάποια γνωστή τεχνολογία; Υπάρχει κάποιο χρήσιμο κόλπο για να εξάγετε περισσότερες πληροφορίες;
  • Υπάρχει κάποιος ειδικευμένος σαρωτής για να τρέξετε (όπως το wpscan);
  • Ξεκινήστε με γενικούς σαρωτές. Ποτέ δεν ξέρετε αν θα βρουν κάτι ή αν θα βρουν κάποιες ενδιαφέρουσες πληροφορίες.
  • Ξεκινήστε με τους αρχικούς ελέγχους: robots, sitemap, 404 σφάλμα και SSL/TLS σάρωση (αν είναι HTTPS).
  • Ξεκινήστε spidering τη web σελίδα: Είναι ώρα να βρείτε όλα τα πιθανά αρχεία, φακέλους και παραμέτρους που χρησιμοποιούνται. Επίσης, ελέγξτε για ειδικές ανακαλύψεις.
  • Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει spidering.
  • Directory Brute-Forcing: Προσπαθήστε να κάνετε brute force σε όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα αρχεία και φακέλους.
  • Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced.
  • Έλεγχος αντιγράφων ασφαλείας: Δοκιμάστε αν μπορείτε να βρείτε αντίγραφα ασφαλείας των ανακαλυφθέντων αρχείων προσθέτοντας κοινές επεκτάσεις αντιγράφων ασφαλείας.
  • Brute-Force παράμετροι: Προσπαθήστε να βρείτε κρυφές παραμέτρους.
  • Μόλις έχετε ταυτοποιήσει όλα τα πιθανά endpoints που δέχονται είσοδο χρήστη, ελέγξτε για κάθε είδους ευπάθειες που σχετίζονται με αυτό.
  • Ακολουθήστε αυτή τη λίστα ελέγχου

Server Version (Vulnerable?)

Identify

Ελέγξτε αν υπάρχουν γνωστές ευπάθειες για την έκδοση του server που τρέχει.
Οι HTTP headers και τα cookies της απάντησης θα μπορούσαν να είναι πολύ χρήσιμα για να ταυτοποιήσετε τις τεχνολογίες και/ή την έκδοση που χρησιμοποιείται. Η σάρωση Nmap μπορεί να ταυτοποιήσει την έκδοση του 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

Search for ευπάθειες της έκδοσης της διαδικτυακής εφαρμογής

Έλεγχος αν υπάρχει WAF

Web tech tricks

Ορισμένα tricks για να βρείτε ευπάθειες σε διάφορες γνωστές τεχνολογίες που χρησιμοποιούνται:

Λάβετε υπόψη ότι το ίδιο domain μπορεί να χρησιμοποιεί διαφορετικές τεχνολογίες σε διαφορετικές θύρες, φακέλους και subdomains.
Αν η διαδικτυακή εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή τεχνολογία/πλατφόρμα που αναφέρθηκε παραπάνω ή οποιαδήποτε άλλη, μην ξεχάσετε να αναζητήσετε στο Διαδίκτυο νέες τεχνικές (και ενημερώστε με!).

Ανασκόπηση Κώδικα

Αν ο κώδικας της εφαρμογής είναι διαθέσιμος στο github, εκτός από την εκτέλεση ενός White box test της εφαρμογής, υπάρχει ορισμένες πληροφορίες που θα μπορούσαν να είναι χρήσιμες για την τρέχουσα Black-Box testing:

  • Υπάρχει κάποιο Change-log ή Readme ή Version αρχείο ή οτιδήποτε με πληροφορίες έκδοσης προσβάσιμες μέσω διαδικτύου;
  • Πώς και πού αποθηκεύονται τα credentials; Υπάρχει κάποιο (προσβάσιμο;) αρχείο με credentials (ονόματα χρηστών ή κωδικούς);
  • Είναι οι κωδικοί σε καθαρό κείμενο, κρυπτογραφημένοι ή ποιος αλγόριθμος hashing χρησιμοποιείται;
  • Χρησιμοποιεί κάποιο master key για την κρυπτογράφηση κάποιου πράγματος; Ποιος αλγόριθμος χρησιμοποιείται;
  • Μπορείτε να πρόσβαση σε οποιοδήποτε από αυτά τα αρχεία εκμεταλλευόμενοι κάποια ευπάθεια;
  • Υπάρχει κάποια ενδιαφέρουσα πληροφορία στο github (λυμένα και μη λυμένα) issues; Ή στην ιστορία commit (ίσως κάποιο password που εισήχθη σε ένα παλιό commit) ;

{% content-ref url="code-review-tools.md" %} code-review-tools.md {% endcontent-ref %}

Αυτόματοι σαρωτές

Γενικής χρήσης αυτόματοι σαρωτές

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 scanners

Αν χρησιμοποιείται ένα 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

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.

Βήμα-βήμα Ανακάλυψη Εφαρμογής Ιστού

Από αυτό το σημείο θα αρχίσουμε να αλληλεπιδρούμε με την εφαρμογή ιστού.

Αρχικές ελέγχοι

Προεπιλεγμένες σελίδες με ενδιαφέροντα πληροφορίες:

  • /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

Ελέγξτε αν μπορείτε να ανεβάσετε αρχεία (PUT verb, WebDav)

Αν διαπιστώσετε ότι το WebDav είναι ενεργοποιημένο αλλά δεν έχετε αρκετές άδειες για ανέβασμα αρχείων στον ριζικό φάκελο, προσπαθήστε να:

  • Brute Force διαπιστευτήρια
  • Ανεβάστε αρχεία μέσω WebDav στους υπόλοιπους βρεθέντες φακέλους μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες να ανεβάσετε αρχεία σε άλλους φακέλους.

SSL/TLS ευπάθειες

  • Αν η εφαρμογή δεν αναγκάζει τον χρήστη σε HTTPS σε κανένα σημείο, τότε είναι ευάλωτη σε MitM
  • Αν η εφαρμογή στέλνει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP. Τότε είναι μια υψηλή ευπάθεια.

Χρησιμοποιήστε testssl.sh για να ελέγξετε για ευπάθειες (Στα προγράμματα Bug Bounty πιθανώς αυτές οι ευπάθειες δεν θα γίνουν αποδεκτές) και χρησιμοποιήστε a2sv για να επανελέγξετε τις ευπάθειες:

./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:

Spidering

Λάβετε κάποιο είδος 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 και ένα αρχείο με δρόμους και το meg θα ανακτήσει κάθε δρόμο σε κάθε host και θα αποθηκεύσει την απάντηση.
  • urlgrab (go): HTML spider με δυνατότητες απόδοσης JS. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προcompiled έκδοση είναι παλιά και ο τρέχων κώδικας δεν μεταγλωττίζεται.
  • gau (go): HTML spider που χρησιμοποιεί εξωτερικούς παρόχους (wayback, otx, commoncrawl).
  • ParamSpider: Αυτό το script θα βρει URLs με παραμέτρους και θα τα καταγράψει.
  • galer (go): HTML spider με δυνατότητες απόδοσης JS.
  • LinkFinder (python): HTML spider, με δυνατότητες beautify JS ικανές να αναζητούν νέους δρόμους σε αρχεία 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, αρκετά εργαλεία): Συγκεντρώνει ενδιαφέρουσες πληροφορίες από αρχεία JS χρησιμοποιώντας διάφορα εργαλεία.
  • subjs (go): Βρείτε αρχεία JS.
  • page-fetch (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτώσετε τη σελίδα.
  • Feroxbuster (rust): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει πολλές επιλογές των προηγούμενων εργαλείων.
  • Javascript Parsing: Μια επέκταση Burp για να βρείτε δρόμους και παραμέτρους σε αρχεία JS.
  • Sourcemapper: Ένα εργαλείο που δίνοντας το URL .js.map θα σας δώσει τον 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 Force directories and files

Ξεκινήστε 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 για να ανιχνεύσει τις χρησιμοποιούμενες τεχνολογίες και να επιλέξει τις λίστες λέξεων που θα χρησιμοποιηθούν.

Συνιστώμενα λεξικά:

Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced.

What to check on each file found

  • 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 ή οποιοδήποτε link σχετίζεται με κάποιο S3 bucket. Σε αυτή την περίπτωση, ελέγξτε τις άδειες του bucket.

Special findings

Κατά τη διάρκεια της spidering και του brute-forcing μπορεί να βρείτε ενδιαφέροντα πράγματα που πρέπει να σημειώσετε.

Ενδιαφέροντα αρχεία

  • Αναζητήστε συνδέσμους σε άλλα αρχεία μέσα στα CSS αρχεία.
  • Αν βρείτε ένα .git αρχείο μπορεί να εξαχθεί κάποια πληροφορία.
  • Αν βρείτε ένα .env πληροφορίες όπως api keys, κωδικούς βάσεων δεδομένων και άλλες πληροφορίες μπορεί να βρεθούν.
  • Αν βρείτε API endpoints θα πρέπει επίσης να τα δοκιμάσετε. Αυτά δεν είναι αρχεία, αλλά πιθανότατα θα "μοιάζουν" με αυτά.
  • JS αρχεία: Στην ενότητα spidering αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν δρόμους από αρχεία 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 με χαρακτήρες:"[]!+" 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)

{% content-ref url="403-and-401-bypasses.md" %} 403-and-401-bypasses.md {% endcontent-ref %}

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 Vulnerabilities Checking

Τώρα που έχει γίνει μια εκτενής αρίθμηση της web εφαρμογής είναι καιρός να ελέγξετε για πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε τη λίστα ελέγχου εδώ:

{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %} web-vulnerabilities-methodology.md {% endcontent-ref %}

Βρείτε περισσότερες πληροφορίες σχετικά με τις web ευπάθειες στο:

Monitor Pages for changes

Μπορείτε να χρησιμοποιήσετε εργαλεία όπως https://github.com/dgtlmoon/changedetection.io για να παρακολουθείτε σελίδες για τροποποιήσεις που μπορεί να εισάγουν ευπάθειες.

Αν ενδιαφέρεστε για καριέρα hacking και να χακάρετε το αχάρακτο - προσλαμβάνουμε! (απαιτείται άπταιστη πολωνική γραπτή και προφορική).

{% embed url="https://www.stmcyber.com/careers" %}

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.xyz/pentesting/pentesting-web

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}

{% hint style="success" %} Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Υποστήριξη HackTricks
{% endhint %}