PrestaShop
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Perl backticks/qx// sinks σε Apache mod_perl handlers (reachability and exploitation)
Πραγματικό μοτίβο: Κώδικας Perl κατασκευάζει μια συμβολοσειρά εντολής shell και την εκτελεί μέσω backticks (ή qx//). Σε έναν mod_perl AccessHandler, στοιχεία αιτήματος που ελέγχονται από τον attacker όπως $r->uri() μπορούν να ρέουν σε αυτή τη συμβολοσειρά. Αν οποιοδήποτε branch συγκολλήσει raw input και μετά το αξιολογήσει με ένα shell, προκύπτει pre-auth RCE.
Risky Perl execution primitives (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
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
}
}
Βασικές παράμετροι προσβασιμότητας στο mod_perl:
- Εγγραφή handler: το httpd.conf πρέπει να δρομολογεί τα αιτήματα στο Perl module σας, π.χ. PerlModule MOD_SEC_EMC::AccessHandler και διαμόρφωση που καλεί AccessHandler::handler για ένα scope διαδρομής.
- Ενεργοποίηση του ευάλωτου κλάδου: αναγκάστε τη ροή μη-αυθεντικοποιημένης σύνδεσης ώστε type == “login” (π.χ. παραλείψτε το αναμενόμενο auth cookie).
- Resolvable path: διασφαλίστε ότι το request σας στοχεύει σε URI που επιλύεται εντός του διαμορφωμένου scope. Αν το Apache δεν δρομολογήσει ποτέ το request μέσω του handler, το sink δεν επιτυγχάνεται.
Exploitation workflow
- Εξετάστε το httpd.conf για PerlModule/MOD_PERL handler scopes ώστε να βρείτε μια διαδρομή που επιλύεται και επεξεργάζεται από τον handler.
- Στείλτε ένα μη-αυθεντικοποιημένο request ώστε να επιλεγεί η διαδρομή ανακατεύθυνσης σύνδεσης (type == “login”).
- Τοποθετήστε shell metacharacters στο request-URI path έτσι ώστε $r->uri() να μεταφέρει το payload σας στην αλυσίδα εντολής.
Παράδειγμα HTTP PoC (path injection via ‘;’)
GET /ui/health;id HTTP/1.1
Host: target
Connection: close
Συμβουλές
- Δοκιμάστε διαχωριστικά: ;, &&, |,
backticks, $(…), και encoded newlines (%0A) ανάλογα με τον τρόπο παράθεσης. - Εάν προηγούμενα patches παραθέτουν άλλα args αλλά όχι το URI σε κάποιο branch, payloads που προστίθενται στο τέλος της συμβολοσειράς συχνά δουλεύουν: ;id# or &&/usr/bin/id#
Σκληροποίηση (Perl)
- Μην κατασκευάζετε shell strings. Προτιμήστε εκτέλεση με argument-vector: system(‘/usr/bin/curl’, ‘–silent’, ‘–’, $safe_url) — χωρίς shell.
- Εάν το shell είναι αναπόφευκτο, κάντε escape με αυστηρό και συνεπή τρόπο σε όλους τους branches; θεωρήστε το $r->uri() εχθρικό. Σκεφτείτε τη χρήση του URI::Escape για paths/queries και ισχυρές allowlists.
- Αποφύγετε τα backticks/qx// για εκτέλεση εντολών· απαλλαγείτε την έξοδο μέσω open3/list form αν είναι πραγματικά απαραίτητο χωρίς να καλείτε shell.
- Σε mod_perl handlers, κρατήστε τα auth/redirect μονοπάτια του κώδικα χωρίς εκτέλεση εντολών ή εξασφαλίστε ταυτόσημη sanitization σε όλους τους branches, για να αποφύγετε regressions τύπου «fixed everywhere but one branch».
Αναζήτηση ευπαθειών
- Κάντε patch-diff στα modules που συναρμολογούν shell commands· αναζητήστε ασυνεπές quoting μεταξύ branches (π.χ., if ($type eq ‘login’) που δεν έχει escaped).
- Grep για backticks, qx//, open\s*(|||, and system\s*(\s*“ για να βρείτε string-based shells. Δημιουργήστε call graph από το sink μέχρι την είσοδο του request ($r) για να επαληθεύσετε pre-auth προσβασιμότητα.
Πραγματικό περιστατικό: Dell UnityVSA pre-auth RCE (CVE-2025-36604)
- Pre-auth command injection μέσω backticks στο AccessTool.pm:getCASURL όταν type == “login” όπου γίνεται concatenation με το raw $uri ($r->uri()).
- Προσπελάσιμο μέσω MOD_SEC_EMC::AccessHandler → make_return_address($r) → getCASLoginURL(…, type=“login”) → getCASURL(…, $uri, ‘login’).
- Πρακτική λεπτομέρεια: χρησιμοποιήστε ένα resolvable path που καλύπτεται από τον handler· αλλιώς το module δεν θα εκτελεστεί και το sink δεν θα χτυπηθεί.
Αναφορές
- 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
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks

