PrestaShop

Reading time: 5 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Perl backticks/qx// sinks in Apache mod_perl-handelaars (reachability and exploitation)

Werklike patroon: Perl-kode bou 'n shell-opdragstring en voer dit uit via backticks (of qx//). In 'n mod_perl AccessHandler kan aanvaller-gekontroleerde versoekkomponente soos $r->uri() in daardie string vloei. As enige tak rou insette concateneer en dit dan met 'n shell evalueer, kry jy pre-auth RCE.

Riskante Perl-uitvoeringsprimitiewe (spawn a shell when given a single 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

Minimale kwesbare vorm waargeneem in die wild:

perl
sub getCASURL {
...
my $exec_cmd = "...";
if ($type eq 'login') {
$exec_cmd .= $uri;        # $uri from $r->uri() → attacker-controlled
my $out = `$exec_cmd`;    # backticks = shell
}
}

Belangrike bereikbaarheidsoorwegings in mod_perl:

  • Handler registrasie: httpd.conf moet versoeke na jou Perl-module roeteer, bv. PerlModule MOD_SEC_EMC::AccessHandler en 'n konfigurasie wat AccessHandler::handler vir 'n pad-scope aanroep.
  • Aktivering van die kwesbare tak: forceer die ongeverifieerde login-flow sodat type == "login" (bv. laat die verwagte auth cookie weg).
  • Oplosbare pad: verseker dat jou versoek 'n URI teiken wat binne die gekonfigureerde scope oplos. As Apache die versoek nooit deur die handler roeteer nie, word die sink nie bereik nie.

Eksploitasie-werkvloei

  1. Inspect httpd.conf for PerlModule/MOD_PERL handler scopes to find a resolvable path processed by the handler.
  2. Stuur 'n ongeverifieerde versoek sodat die login redirect path geneem word (type == "login").
  3. Plaas shell metacharacters in die request-URI path sodat $r->uri() jou payload in die command string dra.

Voorbeeld HTTP PoC (path injection via ';')

http
GET /ui/health;id HTTP/1.1
Host: target
Connection: close

Wenke

  • Probeer skeidingstekens: ;, &&, |, backticks, $(...), en gekodeerde newlines (%0A) afhangend van die aanhaling.
  • As vroeëre patches ander args aanhaal maar nie die URI in een tak nie, werk payloads wat aan die einde van die string aangeheg is dikwels: ;id# or &&/usr/bin/id#

Verharding (Perl)

  • Moet nie shell-strings bou nie. Gebruik eerder argument-vektor uitvoering: system('/usr/bin/curl', '--silent', '--', $safe_url) — geen shell.
  • As 'n shell onvermybaar is, ontsnap streng en konsekwent oor alle takke; behandel $r->uri() as vyandig. Oorweeg URI::Escape vir paths/queries en sterk allowlists.
  • Vermy backticks/qx// vir opdraguitvoering; vang uitvoer via open3/list-vorm as dit werklik nodig is sonder om 'n shell aan te roep.
  • In mod_perl handlers, hou auth/redirect-kodepaaie vry van opdraguitvoering of verseker identiese sanitasie oor alle takke om “fixed everywhere but one branch” regressies te vermy.

Soek na kwesbaarhede

  • Doen patch-diff op modules wat shell-opdragte saamstel; soek na inkonsistente aanhaling tussen takke (bv., if ($type eq 'login') wat onontsnap gelaat word).
  • Grep vir backticks, qx//, open\s*(|||, en system\s*(\s* om string-gebaseerde shells te vind.
  • Bou 'n oproepgrafiek vanaf sink na request entry ($r) om pre-auth bereikbaarheid te verifieer.

Werklike geval: Dell UnityVSA pre-auth RCE (CVE-2025-36604)

  • Pre-auth command injection via backticks in AccessTool.pm:getCASURL wanneer type == "login" wat die rou $uri ($r->uri()) aanmekaar sit.
  • Bereikbaar via MOD_SEC_EMC::AccessHandler → make_return_address($r) → getCASLoginURL(..., type="login") → getCASURL(..., $uri, 'login').
  • Praktiese nuansa: gebruik 'n oplosbare path wat deur die handler gedek word; anders sal die module nie uitvoer nie en sal die sink nie bereik word nie.

References

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks