PrestaShop
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Perl backticks/qx// sinks em Apache mod_perl handlers (reachability and exploitation)
Padrão observado na prática: código Perl constrói uma string de comando de shell e a executa via backticks (ou qx//). Em um mod_perl AccessHandler, componentes da requisição controlados pelo atacante como $r->uri() podem fluir para essa string. Se qualquer ramo concatenar input bruto e então avaliá-lo com um shell, você obtém pre-auth RCE.
Primitivas Perl de execução arriscadas (disparam um shell quando recebem uma única string):
- 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
}
}
Considerações chave de alcance em mod_perl:
- Handler registration: o httpd.conf deve direcionar as requisições para o seu módulo Perl, por exemplo PerlModule MOD_SEC_EMC::AccessHandler, e conter configuração que invoque AccessHandler::handler para um escopo de caminho.
- Triggering the vulnerable branch: force o fluxo de login não autenticado para que type == “login” (por exemplo, omita o auth cookie esperado).
- Resolvable path: garanta que sua requisição aponte para uma URI que seja resolvida dentro do escopo configurado. Se o Apache nunca encaminhar a requisição pelo handler, o sink não é alcançado.
Exploitation workflow
- Inspecione o httpd.conf em busca de escopos de handler PerlModule/MOD_PERL para encontrar um caminho resolvível processado pelo handler.
- Envie uma requisição não autenticada para que o caminho de redirecionamento de login seja seguido (type == “login”).
- Coloque shell metacharacters no caminho do request-URI para que $r->uri() leve seu payload para dentro da string de comando.
Example HTTP PoC (path injection via ‘;’)
GET /ui/health;id HTTP/1.1
Host: target
Connection: close
Dicas
- Tente separadores: ;, &&, |,
backticks, $(…), and encoded newlines (%0A) dependendo do quoting. - Se patches anteriores colocam outros args entre aspas mas não a URI em um ramo, payloads anexados ao final da string frequentemente funcionam: ;id# ou &&/usr/bin/id#
Endurecimento (Perl)
- Do not build shell strings. Prefira execução por vetor de argumentos: system(‘/usr/bin/curl’, ‘–silent’, ‘–’, $safe_url) — sem shell.
- Se um shell for inevitável, escape estritamente e de forma consistente em todos os ramos; trate $r->uri() como hostil. Considere URI::Escape para paths/queries e strong allowlists.
- Evite backticks/qx// para execução de comandos; capture a saída via open3/list form se realmente necessário sem invocar um shell.
- Em mod_perl handlers, mantenha os caminhos de código de auth/redirect livres de execução de comandos ou garanta sanitização idêntica entre os ramos para evitar regressões do tipo “fixed everywhere but one branch”.
Caça a vulnerabilidades
- Analise diffs de patches em módulos que montam comandos de shell; procure por cotações inconsistentes entre ramos (por exemplo, if ($type eq ‘login’) left unescaped).
- Grep por backticks, qx//, open\s*(|||, and system\s*(\s*“ para encontrar shells baseados em strings. Construa um grafo de chamadas do sink até a entrada da request ($r) para verificar se é alcançável sem autenticação.
Caso real: Dell UnityVSA pre-auth RCE (CVE-2025-36604)
- Pre-auth command injection via backticks em AccessTool.pm:getCASURL quando type == “login” concatenated raw $uri ($r->uri()).
- Alcançável via MOD_SEC_EMC::AccessHandler → make_return_address($r) → getCASLoginURL(…, type=“login”) → getCASURL(…, $uri, ‘login’).
- Detalhe prático: use um path resolvível coberto pelo handler; caso contrário o módulo não executará e o sink não será atingido.
Referências
- 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
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


