PrestaShop

Reading time: 5 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Perl backticks/qx// sinks u Apache mod_perl handlerima (dostupnost i eksploatacija)

Stvarni obrazac: Perl kod formira shell komandni string i izvršava ga preko backticks (ili qx//). U mod_perl AccessHandler-u, delovi zahteva pod kontrolom napadača, npr. $r->uri(), mogu dospeti u taj string. Ako bilo koja grana konkatenira neobrađen unos i zatim ga prosledi shell-u na izvršenje, dobijate pre-auth RCE.

Rizične Perl primitivne operacije za izvršavanje (pokreću shell ako dobiju jedan string):

  • Backticks / qx//: my $out = cmd ...;
  • system kada se pozove sa jednim stringom: system("/bin/sh -c '...'") implicitno
  • open sa pipe-om: open my $fh, "cmd |" or "| cmd"
  • IPC::Open3 kada se pozove sa jednim stringom

Minimalni ranjiv obrazac primećen u stvarnom svetu:

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
}
}

Key reachability considerations in mod_perl:

  • Handler registration: httpd.conf mora usmeriti zahteve u vaš Perl modul, npr. PerlModule MOD_SEC_EMC::AccessHandler i konfiguracija koja poziva AccessHandler::handler za opseg puta.
  • Triggering the vulnerable branch: primorajte neautentifikovani login tok tako da type == "login" (npr. izostavite očekivani auth cookie).
  • Resolvable path: osigurajte da vaš zahtev cilja URI koji se rešava unutar konfigurisane oblasti. Ako Apache nikada ne usmeri zahtev kroz handler, sink isn’t reached.

Exploitation workflow

  1. Inspect httpd.conf for PerlModule/MOD_PERL handler scopes to find a resolvable path processed by the handler.
  2. Send an unauthenticated request so the login redirect path is taken (type == "login").
  3. Place shell metacharacters in the request-URI path so $r->uri() carries your payload into the command string.

Example HTTP PoC (path injection via ';')

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

Saveti

  • Probajte separatore: ;, &&, |, backticks, $(...), i enkodovane novolinije (%0A) zavisno od citiranja.
  • Ako ranije zakrpe citiraju druge args ali ne i URI u jednoj grani, payloads dodat na kraju stringa često rade: ;id# or &&/usr/bin/id#

Ojačavanje (Perl)

  • Ne pravite shell stringove. Preferirajte izvršavanje pomoću vektora argumenata: system('/usr/bin/curl', '--silent', '--', $safe_url) — bez shell-a.
  • Ako je shell neizbežan, striktno i konzistentno escape-ujte kroz sve grane; tretirajte $r->uri() kao hostile. Razmotrite URI::Escape za paths/queries i jake liste dozvoljenih.
  • Izbegavajte backticks/qx// za izvršavanje komandi; uhvatite output preko open3/list forme ako je zaista potrebno bez pozivanja shell-a.
  • U mod_perl handler-ima, držite auth/redirect kodne putanje bez izvršavanja komandi ili osigurajte identičnu sanitizaciju kroz sve grane da biste izbegli regresije tipa “fixed everywhere but one branch”.

Lov na ranjivosti

  • Pregledajte diff-ove zakrpa modula koji sastavljaju shell komande; tražite nekonzistentno citiranje između grana (npr. if ($type eq 'login') ostavljen neescape-ovan).
  • Grep-ujte za backticks, qx//, open\s*(|||, i system\s*(\s* da biste pronašli string-bazirane shelove. Izgradite call graph od sink do request entry ($r) da verifikujete pre-auth dostupnost.

Stvarni slučaj: Dell UnityVSA pre-auth RCE (CVE-2025-36604)

  • Pre-auth command injection putem backticks u AccessTool.pm:getCASURL kada je type == "login" i konkateniran je raw $uri ($r->uri()).
  • Dostupno preko MOD_SEC_EMC::AccessHandler → make_return_address($r) → getCASLoginURL(..., type="login") → getCASURL(..., $uri, 'login').
  • Praktična napomena: koristite resolvable path koji pokriva handler; inače modul neće biti izvršen i sink neće biti pogođen.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks