SMS Recebida

Pois bem, esses dias eu recebi uma SMS que se dizia ser da SKY, e como eu não sou cliente lá, imaginei que pudesse ser para minha mãe. Mas ao olhar o endereço do link, comecei a desconfiar que seria alguma tentativa de phishing ou algo do gênero, dado que o endereço não terminava em sky.com ou sky.com.br, e sim sky.negocie.online.

Mas por curiosidade resolvi acessar, até para entender do que se tratava. Então me deparo com a seguinte página:

Como o site não me parecia muito profissional, e nem sequer usava as mesmas cores da SKY, reafirmava minhas suspeitas de ser algum tipo de golpe. Nesse ponto, achei interessante o fato de ter aparecido um nome na tela e o início de um CPF. Antes de mais nada, acessei o site negocie.online para ver se tinha alguma coisa, e me pareceu ser uma empresa legítima, o que se confirmou quando acessei o “portal de negociação” da SKY e caí numa página nos moldes da que recebi por SMS, pois ambas possuíam o mesmo domínio.

Bom, dado que aquele portal é legítimo, então eu já havia recebido informações que eu não deveria, que era o início do CPF de alguém e o seu primeiro nome. Mas um ponto que quem desenvolveu esse sistema não entende, é que um CPF é formado por 9 dígitos e mais 2 dígitos verificadores. Ao pedir para que se preencha os últimos 3 dígitos, na verdade, é a mesma coisa que pedir para preencher 1 dígito apenas, afinal os últimos 2 são calculados de acordo com os 9 primeiros.

Portanto, ao invés de termos que testar até 1000 diferentes combinações para acessar, em 10 tentativas é possível o acesso (e por sinal, o site não restringe acesso e nem apresenta nenhum captcha no caso de reincidência de erros).

Uma vez preenchido os últimos dígitos, caímos numa página no seguinte formato:

Nesse momento, o site exibe dados como:

- Código do cliente, que é número do contrato;

- CPF completo;

- Valor devido, que é um dado sensível, no meu ponto de vista.

Além disso, a mensagem “Ambiente Seguro” no rodapé é, definitivamente, um easter egg nessa página.

Obviamente que nesse ponto eu já estava inspecionando as requisições, e foi possível receber outras informações, como:

{

"Nome": "FULANO SILVA",

"NumeroContrato": "1122334455",

"CPFCompleto": "12345678901",

"ValorDivida": "143,10",

"Expiracao": "16/07/2018 23:59:00",

"Email": "FULANO.DA.SILVA@GMAIL.COM",

"Telefone": "31998765432*",

"interactionId": "99887766",

"customerId": "1122334455",

"CreditCard": {

"InstallmentAmount": "47,70",

"InstallmentQuantity": "3",

"IsElegible": true

}

}

O que já nos revela o email e o telefone da pessoa, além de um nome, que apesar de não ser o nome completo com todos os sobrenomes, é algo a se considerar. Outra coisa recebida, mas que não sei até que ponto seria útil, é o número de parcelas e se o cliente é elegível para parcelamento, o que pode representar o “credit score” daquele indivíduo.

Desse sistema foram esses os dados recebidos, mas existe uma outra falha de segurança que poderia impactar muito nos custos deles, ou pelo menos serviria para irritar algumas pessoas. Na funcionalidade de enviar o boleto por SMS, você pode especificar qualquer número do Brasil, podendo então enviar quantos SMS você quiser, para quem você quiser.

Testei algumas vezes o envio de diversas mensagens no mesmo minuto, e o sistema em nenhum momento me impediu, o que me leva a crer que eu poderia enviar quantas mensagens eu quisesse. Se levarmos em consideração o custo do envio de uma SMS, rapidamente a conta poderia ficar alta (centenas ou milhares de reais por dia).

Além disso, ao inspecionar algumas requisições, ao receber uma mensagem de erro descobri o endereço do banco de dados deles, que é: no-db-prd-01.negocie.online (IP: 34.193.112.103), mas que a princípio não tem acesso externo. Outras coisas, como a estrutura das tabelas do banco de dados, os nomes de classes e funções também são expostos, pois eles devolvem a stacktrace na resposta.