Anos atrás, eu estava envolvido em pesquisa de segurança e fui consultor de algumas empresas de tecnologia em meu país. Durante esse tempo encontrei muitas coisas, mas uma que era muito comum eram sistemas de pagamento com problemas de implementação. Se você gosta de recompensas por bugs ou se possui um site e deseja melhorar sua segurança, este artigo é para você.
história de fundo
Sempre me interessei por segurança de computadores. Aprendi a usar algumas ferramentas, incluindo Burpsuite e alguns plugins no meu navegador. Conheço algum código, incluindo Python, e conheço um pouco de criptografia. Mas também sei que isso não é suficiente.
Existem muitas ferramentas para encontrar problemas de segurança. Eles também estão disponíveis para desenvolvedores, portanto, vulnerabilidades conhecidas são difíceis de encontrar. Você também compete com outros Pentesters e hackers de chapéu branco em busca de uma recompensa, então, se houver algo por aí, você deve ser mais rápido do que eles. Você também precisa ter sorte para encontrar um pote de ouro.
Quando se trata de sistemas de pagamento; bibliotecas e SDKs são suportados pelo provedor de serviços de pagamento, isso significa que, se alguém relatar uma vulnerabilidade, ela será resolvida rapidamente e eles informarão todos os seus usuários sobre isso.
Então, onde você precisa olhar?
Isso se aplica não apenas a pagamentos, mas provavelmente a outras implementações, e a resposta é: onde você sabe, provavelmente é uma solução interna. Isso significa que ele foi criado apenas para aquele site por uma equipe interna.
Onde olhar
Como a última recomendação se aplica aos sistemas de pagamento?
Bem, se a implementação for feita usando um único provedor de pagamento, os desenvolvedores geralmente seguem a documentação ou implementam o SDK. O problema surge quando um site precisa de um sistema de pagamento multicanal, o que significa que eles tiveram que implementar seu próprio sistema para processar as aprovações.
Quando digo multicanal, quero dizer que eles têm mais de um provedor de pagamento e geralmente é assim:

Outro alvo também são as páginas que estão presentes em diversos países.
Por que é que? Se a mesma página estiver em mais de um país, eles provavelmente têm os mesmos serviços de back-end para todos eles, fornecendo um micro front-end para cada local, mas também provavelmente têm uma API desenvolvida internamente para funcionar como um switch para ligar provedores de pagamento locais. Mesmo a troca de cartão de crédito não será a mesma para todos os países.
Como você pode ver neste caso, as vulnerabilidades que você pode encontrar são devido a falhas na lógica ou verificações e não as backdoors comuns encontradas em bibliotecas.
Vulnerabilidades
Antes de prosseguirmos, há algumas coisas a saber sobre sites onde você pode comprar coisas.
Se você estiver em um site que vende computadores, mesmo que encontre uma maneira de burlar o sistema de pagamento, há várias outras etapas no processo. Eles podem ter um cronograma de entrega de 2 a 3 dias, onde aguardam a liberação dos pagamentos, dando-lhes tempo para detectar todas as transações falsas. Caso contrário, eles ainda podem ter um endereço que entregaram ou podem ter uma assinatura, portanto, esses tipos de sites podem ter problemas técnicos, mas isso não significa que todo o sistema de transações esteja vulnerável, dependendo das etapas necessárias para a entrega.
O que torna um site vulnerável a um invasor é quando eles entregam as mercadorias imediatamente: ingressos para shows, cupons, vales-presente, jogos de computador ou qualquer tipo de DLC.
Mudança de preço
A coisa mais comum a procurar é alterar o preço de finalização da compra antes de pagar pelo item. Observe que às vezes está em vários lugares e é uma questão de descobrir qual deles pode impactar o resultado. Às vezes, em uma solicitação, como pode haver várias antes de você chegar ao provedor de pagamento real, você pode encontrá-la mais de uma vez em uma única solicitação, mas isso não significa que todas elas devam ser alteradas, talvez uma vá para o pagamento provedor e os demais não precisam ser trocados pois voltam para o sistema de inventário.
Comprar frações
Às vezes, alterar a quantidade do item para uma fração (0,1 Computadores, por exemplo, em vez de 1 Computador), o que também afetará o preço, levará o sistema de estoque a verificar 1 item inteiro porque não é capaz de vender uma fração do o produto.

O fracasso é um sucesso
Outra coisa comum a se tentar é alterar a página de falha de pagamento pela bem-sucedida. Normalmente, quando o método de pagamento é chamado, você vê nas cargas úteis o URL de redirecionamento bem-sucedido e o da falha, você pode alternar isso e ver o que acontece. Você também pode tentar perceber que, quando cancela um pagamento e o navegador o redireciona de volta para a página, altere a URL para uma bem-sucedida usando o proxy no Burpsuite. Às vezes, isso funciona porque a carga útil de uma página de sucesso é a mesma de uma falha.

Problema de conversão de pagamento
Isso acontece em páginas que estão usando o mesmo back-end para atender a vários países.
Digamos que esta página esteja nos EUA e na Argentina e eles compartilham o mesmo URL para acessar, mas você deve selecionar o país. 300 dólares é muito dinheiro, mas 300 pesos argentinos custam cerca de 2 dólares.
Primeiro, você precisa selecionar seu item de 300 dólares no site dos EUA e fazer o checkout. Nesse momento, quando você selecionar o método de pagamento, poderá ver algo assim no código-fonte:

Podemos ver que o valor dessa opção é “us_payment_method”. Se sabemos o valor dos pagamentos usados na Argentina, então é uma questão de substituí-lo:

Quando o site leva você para pagar, ele o redireciona para um provedor de pagamento argentino. O problema é que quando eles recebem o número 300, eles o entendem como sua moeda local e não pensam que é dólares, nem tentam converter esse valor. Isso o torna vulnerável. O pagamento então pode continuar, é um pagamento real, e quando o site recebe de volta entende que está tudo bem e conclui a transação.
Procure por itens gratuitos

Você já esteve em uma página que dá itens grátis? Às vezes, você pode adicionar ao carrinho um item de cortesia, talvez seja um ingresso grátis para um show, ou talvez eles tenham criado um item gratuito para transformar seu pacote em um presente, ou às vezes você vê um jogo de computador gratuito para download. Se isso acontecer, verifique o código. Você pode descobrir que há uma etiqueta especial para transformar este item em cortesia e transformar um item regular em um brinde.
FONTE: MEDIUM