Taxi Hacking

 

Taxi Hacking

 

Existem centenas ou milhares de aplicações que prestam serviço a diversas empresas no mundo sendo que a moda atual está nas aplicações de táxi e carros particulares como: Easy Taxi, 99taxis, Uber e etc. Uma das coisas notáveis no mercado de segurança é a falta de análise de vulnerabilidades nos aplicativos mobile o que trás bastante consequência para os consumidores.

Neste artigo irei explicar como uma aplicação vulnerável pode interferir no sistema financeiro das empresas que o utilizam.

 

Nome da aplicação: 99taxis

Fabricante: http://www.99taxis.com/

Versão: 3.9.5.4

Descrição da empresa: Aplicativo mobile para prestação de serviço em táxi.

Resumo da vulnerabilidade: Utilizar a aplicação com conta bancária de outros clientes da fabricante.

 

Ao abrirmos a aplicação nos é mostrado a seguinte tela:

1

Ao clicarmos em “Pedir Táxi” nos aparece três opções sendo elas:

2

Endereço: Endereço de onde você se encontra (Utilizei um endereço não referente a lugares que frequento para este artigo.)

Opcionais: São opções que você pode pedir no serviço como táxis com o porta-malas maiores ou táxis que aceitem transporte de animais. Uma observação interessante dessa opção é que ela depende do local que você está, ou seja, se você estiver perto do Aeroporto de Guarulhos, por exemplo, irá aparecer uma promoção de transporte para este lugar.

Posso pagar como: Aqui são listadas as opções para você pagar. Muitas empresas fazem um contrato com o 99taxis para gerarem um Voucher de uso (Ex: XXPTY02) que normalmente são utilizados para o pagamento de seus colaboradores.

 

Descrição da vulnerabilidade:

 

Cada colaborador ou cliente da 99taxis é identificado por um número específico (EX: 50751540 – número fictício).

Ao pedirmos para listar as formas de pagamento é passada a seguinte URL para o servidor da 99taxi.

3

Servidor: api.99taxi.com

URL: api.99taxi.com/paymentMethods2/{NUMERO DE ID}?lat={LATITUDE}&lng={LONGITUDE}&locale=pt&uuid= {ID DE IDENTIFICACAO QUE SE FOR RETIRADO NÃO FAZ DIFERENÇA NOTADA}

 

Ao jogarmos essa url para um navegador, vemos:

4

Isso nos permite através do navegador mostrar todos os clientes da 99taxis e se possuem algum tipo de serviço como voucher ou paypal. A fórmula que encontrei pata listagem dos clientes é:

 

ID Novo Cliente = último ID + 1; Ou seja:

 

Se temos uma url por exemplo:

api.99taxi.com/paymentMethods2/123456/

O próximo cliente será:

api.99taxi.com/paymentMethods2/123457/

E assim por diante…

 

Arquitetura da prova de conceito:

Para provar que o ataque funcionaria eu tive que testar com a conta do paypal de um amigo (Greetz: Filipi Pires https://br.linkedin.com/in/filipipires) pela autorização.)

6

 

Passos descritos:

 

1 – Atacante loga na aplicação 99Taxis.

2 – Atacante clica no “Modos de pagamento” e captura o trafego.

3 – Atacante modifica a identificação dele para a identificação da vítima.

4 – Modo de pagamento do atacante é alterado para modos de pagamento da vítima e ela possui voucher ou paypal registrados na aplicação.

5 – Requisição maliciosa chega para o taxista com a identificação da vítima.

6 – Autenticação do pagamento feito via CPF.

7 – Vítima recebe e-mail de comprovante

 

Como é possível encontrar o CPF da vítima?

 

Quando acessamos a aba “Conta -> Método de pagamento” conseguimos capturar o seguinte tráfego:

https://api.99taxis.com/profilePayments/{NUMERO DE ID}?locale=pt&uuid= {ID DE IDENTIFICACAO QUE SE FOR RETIRADO NÃO FAZ DIFERENÇA NOTADA}

5

Obs: Número de ID (666) ficticio.

Tela retornada na aplicação após alteração do ID para conta da vítima:

7

Ou simplesmente colocamos a seguinte URL:

http://api.99taxis.com/users/00000 -> ID do usuário

Picture1

E observamos o campo: PaymentPin
Além da possibilidade de capturar o CPF pela própria aplicação, também é possível capturar através do nome em sites como: http://tudosobretodos.se/.

 

Comentário pessoal sobre o Response Disclosure

 

Aparentemente a fabricante corrigiu as visualizações via navegador do /user (informação de CPF) e /PaymentMethod2 (informação dos métodos de pagamento)

payment

Não testei a possibilidade de ainda alterar o método de pagamento pela fórmula de geração do identificador.

Ontem palestrei sobre essa vulnerabilidade no evento ROADSEC:

http://roadsec.com.br/sao-paulo-2015-palestrantes/

A 99taxis não atribuiu crédito a mim sobre a descoberta da vulnerabilidade, o que não é uma boa prática nas fabricantes de aplicação.

ATUALIZAÇÃO 19/11/2015

1 – Saiu uma reportagem sobre essa vulnerabilidade que pode se encontrada em: http://g1.globo.com/tecnologia/blog/seguranca-digital/post/99taxis-corrige-falha-que-permitia-cobrar-corridas-de-outros-usuarios.html

2 – Conversei com o CTO da 99taxis e ele explicou os motivos de problemas na comunicação da vulnerabilidade e que a segurança está em roadmap para a aplicação 99.

3 – Considerei a nota pública da 99taxis no G1 como uma forma de reconhecimento.

Igor Rincon  a.k.a M4dwolf

Deixe um comentário