Como descobri acidentalmente uma possível reposição sem fim de uma conta com minha operadora de celular americana

Para evitar abusos, não indico o nome do operador.

Tudo começou quando comprei o cartão SIM de uma operadora com um plano de tarifa de pagamento conforme o uso na chegada. Este é o plano tarifário mais comum que era popular na Rússia antes do advento dos planos tarifários de pacotes, ou seja, você paga por minuto, mensagem, megabyte, enquanto possui um saldo que precisa ser reabastecido.

Em todos os lugares que eu tinha Wi-Fi, a comunicação celular era bastante necessária para chamadas recebidas e acesso raro à Internet móvel. No entanto, o problema com as operadoras americanas é que o saldo da sua conta pode simplesmente expirar. Depois expirou após 30 dias, ou seja, o dinheiro na conta simplesmente se esgotou. Ele poderia ser completamente transferido para o próximo mês, mas para isso era necessário fazer pelo menos uma reposição da conta. Decidi fazer uma recarga mínima para manter contato.

Eu entrei na conta no site da operadora e tentei fazer um depósito usando um cartão bancário. Ao contrário da Rússia, o valor não pôde ser inserido aqui. Me ofereceram uma escolha de apenas alguns montantes, o mínimo é $ 5. Eu não precisava de muito, mas pagava esse dinheiro todos os meses para manter contato. Como resultado, após alguns meses, "inútil" várias dezenas de dólares acumulados na conta, sem chance de gastá-la.

Passando de alguma forma pela saída do operador em um dos shopping centers, vi cartões de recarga comuns (raspadinhas). Eles tinham as mesmas denominações oferecidas para pagamento no site. Mas, aparentemente, por causa do meu desejo intuitivo por experiências, decidi comprar esse cartão, novamente por US $ 5. Quando chegou a hora do pagamento, comecei a considerar o cartão. Parece o mesmo princípio da Rússia (quando esses cartões ainda eram populares): você pode simplesmente discar um comando com um número de cartão e ativá-lo, ou pode “passear” no menu USSD (equipes da categoria * XXX #). Novamente, devido a algum desejo de experimentar, decidi escolher um longo caminho no menu. Entre as opções, foi proposto descobrir o saldo, ativar o raspadinha, reabastecer a conta com um cartão bancário.

Na Rússia, de alguma forma, sempre lidei apenas com a inserção de dados do cartão on-line; portanto, pagar com um cartão através de um menu desse tipo era interessante para mim (afinal, esses pagamentos eram o tema do meu diploma), embora parecesse inseguro (novamente na Rússia, geralmente pode ser encontrado em uma janela separada do banco adquirente, mas não são transferidos para o vendedor de forma clara), decidi tentar. Imediatamente fiquei surpreso com a oferta de inserir o valor. Ou seja, eles não me ofereceram a escolha padrão de valores, como em qualquer outro lugar, mas sugeriram que eu inserisse o valor. Selecionei $ 1, inseri os detalhes do cartão nas etapas a seguir e o pagamento foi aprovado. Como você pode imaginar, tentei inserir US $ 0,01, mas também passou.

Pode-se ficar feliz por não precisar mais transferir US $ 5 por mês para o meu saldo, mas gastar apenas 1 centavo e concluir o experimento. Depois de algumas horas, porém, eu queria examinar novamente a conta no site da operadora e as opções de reposição.

Então É-me oferecido o preenchimento de um formulário com detalhes do cartão, valor e assim por diante. Estou acompanhando a aparência dessa solicitação POST com o envio do formulário. Copio, colo no Postman, tento repetir o pedido. O servidor responde com um erro, parece que alguns tokens no formulário estão acabando.

Eu decido seguir o caminho simples. Ofereci-me para escolher o valor na lista suspensa. Claro que isso é algum tipo de select com a lista de option .

 <select class="selectpicker select form-control show-tick text field" title="Specify an amount.." id="billing_amount" name="billing_amount"> <option class="bs-title-option" value=""></option> <option value="REG10-5">$5</option> <option value="REG11-10">$10</option> <option value="REG12-30">$30</option> </select> 

Obviamente, apenas o value enviado ao servidor. O que significa 5, 10, 30 após um hífen, eu entendo, essa é a quantidade de reabastecimento, mas o que o primeiro valor significa? Existem constantes no código-fonte ou a soma é simplesmente extraída dos dados?

Eu tento. REG12-0.01 em um dos pontos, insira os dados do cartão e envie-os. Uma mensagem aparece: “Obrigado. O valor da carga de US $ 0,01 foi creditado no seu número pré-pago. " O mesmo valor foi debitado do cartão. Tudo parece estar bem. Você pode escolher qualquer quantia, embora eu já tenha descoberto essa oportunidade pelo USSD, não há problema.

Mas aqui está o ponto mais importante. Recebo uma mensagem SMS no número: "$ 30 foram creditados na sua conta". O saldo da conta é aumentado por esse valor.

Existem muitas dessas publicações com vários serviços populares neste site e provavelmente haverá ainda mais. No processo de desenvolvimento de sistemas (especialmente em empresas com foco estrito em TI), praticamente não há testes / controles de segurança / vulnerabilidade e parece que a situação não melhorará no futuro próximo. Felizmente, nenhum dado pessoal do usuário é afetado aqui. Esse experimento dificilmente pode ser chamado de hack, na verdade, ocorre o envio usual da quantidade desejada para o servidor, em vez de o faturamento do operador decidir reabastecer o saldo em uma quantidade milhares de vezes maior que a selecionada.

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


All Articles