PrestaShop
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Perl backticks/qx// sinks in Apache mod_perl handlers (reachability and exploitation)
Pattern reale: il codice Perl costruisce una stringa di comando shell ed la esegue tramite backticks (o qx//). In un mod_perl AccessHandler, componenti della request controllate dallâattaccante come $r->uri() possono fluire in quella stringa. Se qualche ramo concatena input raw e poi lo valuta con una shell, ottieni pre-auth RCE.
Primitive di esecuzione Perl rischiose (avviano una shell quando ricevono una singola stringa):
- Backticks / qx//: my $out =
cmd ...; - system with a single string: system(â/bin/sh -c ââŚââ) implicitly
- open with a pipe: open my $fh, âcmd |â or â| cmdâ
- IPC::Open3 with a single string
Minimal vulnerable shape observed in the wild:
sub getCASURL {
...
my $exec_cmd = "...";
if ($type eq 'login') {
$exec_cmd .= $uri; # $uri from $r->uri() â attacker-controlled
my $out = `$exec_cmd`; # backticks = shell
}
}
Considerazioni chiave sulla raggiungibilitĂ in mod_perl:
- Registrazione dellâhandler: httpd.conf deve instradare le richieste nel tuo modulo Perl, e.g. PerlModule MOD_SEC_EMC::AccessHandler e configurazione che invoca AccessHandler::handler per uno scope di percorso.
- Attivazione del ramo vulnerabile: forza il flusso di login non autenticato in modo che type == âloginâ (e.g., ometti il cookie di auth previsto).
- Percorso risolvibile: assicurati che la tua richiesta punti a una URI che si risolve nello scope configurato. Se Apache non instrada mai la richiesta attraverso lâhandler, la sink non viene raggiunta.
Exploitation workflow
- Ispeziona httpd.conf per PerlModule/MOD_PERL handler scopes per trovare un percorso risolvibile processato dallâhandler.
- Invia una richiesta non autenticata in modo che sia presa la path di redirect del login (type == âloginâ).
- Inserisci metacaratteri shell nel percorso del request-URI cosĂŹ che $r->uri() trasporti il tuo payload nella stringa di comando.
Example HTTP PoC (path injection via â;â)
GET /ui/health;id HTTP/1.1
Host: target
Connection: close
Tips
- Prova separatori: ;, &&, |,
backticks, $(âŚ), and encoded newlines (%0A) a seconda del quoting. - Se patch precedenti citano altri argomenti ma non lâURI in un ramo, i payload aggiunti alla fine della stringa spesso funzionano: ;id# or &&/usr/bin/id#
Rafforzamento (Perl)
- Non costruire stringhe shell. Preferisci lâesecuzione con vettore di argomenti: system(â/usr/bin/curlâ, ââsilentâ, âââ, $safe_url) â no shell.
- Se una shell è inevitabile, effettua escaping in modo rigoroso e coerente in tutti i rami; tratta $r->uri() come ostile. Considera URI::Escape per paths/queries e allowlist rigorose.
- Evita backticks/qx// per lâesecuzione di comandi; cattura lâoutput tramite open3/list form se veramente necessario senza invocare una shell.
- Nei mod_perl handlers, mantieni i percorsi di auth/redirect privi di esecuzione di comandi o assicurati che la sanitizzazione sia identica in tutti i rami per evitare regressioni âfixed everywhere but one branchâ.
Ricerca di vulnerabilitĂ
- Diff delle patch sui moduli che assemblano comandi shell; cerca quote incoerenti tra i rami (e.g., if ($type eq âloginâ) left unescaped).
- Grep per backticks, qx//, open\s*(|||, and system\s*(\s*â per trovare shell basate su stringhe. Costruisci un call graph dal sink allâentry della richiesta ($r) per verificare la raggiungibilitĂ pre-auth.
Real-world case: Dell UnityVSA pre-auth RCE (CVE-2025-36604)
- Pre-auth command injection via backticks in AccessTool.pm:getCASURL when type == âloginâ concatenated raw $uri ($r->uri()).
- Raggiungibile tramite MOD_SEC_EMC::AccessHandler â make_return_address($r) â getCASLoginURL(âŚ, type=âloginâ) â getCASURL(âŚ, $uri, âloginâ).
- Nuance pratica: use a resolvable path covered by the handler; otherwise the module wonât execute and the sink wonât be hit.
References
- Itâs Never Simple Until It Is: Dell UnityVSA PreâAuth Command Injection (CVEâ2025â36604)
- Dell PSIRT DSAâ2025â281 â Security update for Dell Unity/UnityVSA/Unity XT
- watchTowr Detection Artefact Generator â Dell UnityVSA PreâAuth CVEâ2025â36604
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

