Cálculo da pizzaria: Papa Jones, que não se importa com segurança

imagem

A foto para atrair atenção é tirada aqui.

A pizzaria Papa Jones está aberta em muitos países, o mecanismo do site é quase todo diferente. No entanto, o mecanismo, desenvolvido em algum lugar da Rússia, também é usado em locais da Polônia, Quirguistão e Bielorrússia. Vamos considerar isso.

Você pode ver o próprio mecanismo em um site móvel para a Rússia , por exemplo. Por que móvel? Como a área de trabalho nem sequer possui um formulário de registro, embora isso seja explicado pelo fato de o registro ser automático no pedido. Certa vez, decidi verificar como estão as vulnerabilidades lá.

Como escolher os aplicativos é a maneira mais fácil, eu aceitei. Para minha surpresa, descobri que o aplicativo é apenas um invólucro estranho para o site, embora o servidor possa distinguir claramente também de quem veio a solicitação durante as solicitações. Acabou sendo possível testar com igual sucesso a aplicação e a versão móvel. A única diferença é que o campo platform - mobSite é transmitido para o site móvel e os aplicativos informam o sistema e a versão.

Consegui sucesso imediatamente, porque comecei com a recuperação de senha. Sugiro uma olhada em como isso acontece.

Primeiro, você precisa obter o próprio código no SMS. Pediremos o link com JSON no corpo:

POST https://www.papajohns.ru/api/auth/recovery/requestCode { "username": "+79", "transport": "sms", "lang": "ru", "version": "1.0.34", "platform": "Android" } 

O servidor responde:

 { "status": true } 

Estranho, há poucos dados. Pelo menos um identificador ou sessão, mas procure mais.

Um código de quatro dígitos vem para o SMS (apenas números). Não o enviaremos, pois a alteração da senha bloqueará pontos por duas semanas, mas eu tinha planos para eles. Vamos tentar enviar aleatoriamente:

 POST https://www.papajohns.ru/api/auth/recovery/updatePassword { "code": "1234", "password": "123456qwe", "transport": "sms", "version": "1.0.34", "platform": "Android" } 

Fiquei muito impressionado. Verificou-se que, quando você solicita o SMS, o número do telefone + o código é gravado no banco de dados no SMS e, quando você solicita a recuperação por código, o servidor verifica o código no banco de dados e, se o código for encontrado, define a senha recebida no banco de dados.

A situação está piorando porque não há nenhuma restrição na enumeração de código. Empiricamente, descobri que, ao tentar em 10 minutos, o script garante uma senha. E se você solicitar a recuperação de todos os 10.000 códigos de 0000 a 9999?

Em 12 de maio, relatei todos os detalhes diretamente ao desenvolvedor do site (bem, pelo menos ele se apresentou a eles). Em 19 de junho, fiquei interessado em como as coisas estão indo com o fechamento da vulnerabilidade. O script enviou cerca de trezentos pedidos e se levantou. Depois de verificar o status do desenvolvedor, descobri que o servidor agora está bloqueando por IP se receber 5 solicitações incorretas. Hoje, verifiquei novamente se a lógica mudou e estou pronto para relatar: não mudou. O servidor também é indiferente agora: enviei 3.000 solicitações sem muita dificuldade; portanto, todas as 10.000, acredito, sairão sem problemas.

O perigo de divulgar todos os endereços armazenados apenas pela presença de um número de telefone celular permanece significativo. Os cartões bancários são excluídos quando a senha é redefinida. Eu tenho 1000 pontos e pizza. A pizza é deliciosa, mas não vou guardar o endereço lá.

Source: https://habr.com/ru/post/pt418611/


All Articles