# 2FA/OTP bypass

## Contournement OTP via manipulation de réponse HTTP

### Description

La vulnérabilité a été découverte chez un fournisseur de télécommunication Philippen sur un interface web dédié à la vente de forfaits et téléphones. Le site en question demandait un OTP par SMS pour démarrer une transaction.&#x20;

Cependant, la condition pour passer à l'étape suivante était validée côté frontend et utilisait la réponse HTTP pour déterminer si oui ou non le code OTP était valide. De cette manière, il était possible de rensigner un faux numéro de téléphone ainsi qu'un faux code OTP puis de remplacer le contenu de la réponse HTTP d'échec par un message de succès.

### Exploitation

* J'ai d'abord envoyé un code OTP vers un numéro valide afin d'analyser le comportement normal de l'application lors d'une validation réussie.
* J'ai ensuite envoyé un code OTP à un numéro arbitraire puis entré un code invalide (000000) tout en interceptant la réponse HTTP.

<figure><img src="/files/lzMJ0dXhhymzv8CuHSC4" alt=""><figcaption><p>code invalide</p></figcaption></figure>

* Remarquant que le site attendait la réponse pour afficher le message d'erreur j'ai compris que la validation était probablement effectué en se basant sur la réponse HTTP.
* J'ai dont remplacé les données JSON d'échec par celles d'un succès.

<figure><img src="/files/zXdDMiY06LgzFq4XcFPo" alt=""><figcaption><p>Réponse pour un échec</p></figcaption></figure>

<figure><img src="/files/bM88liTciUoW48WcM8wh" alt=""><figcaption><p>Réponse falsifiée</p></figcaption></figure>

* Une cela fait j'ai tout simplement désactivé l'interception et la vérification OTP a été contourné avec succès.

<figure><img src="/files/fogFzEc2nJMT19en5uF0" alt=""><figcaption><p>Formulaire accessible après validation</p></figcaption></figure>

### Risques

Les risques ici étaient limités à un risque d'usurpation d'identité principalement avec la possibilité d'effectuer des transactions avec le numéro de téléphone d'un autre individu.

En effet, il n'existait pas de comptes sur le site, il n'était donc pas possible de prendre le contrôle du compte de quelqu'un d'autre par ce procédé.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bugbounty.s1rn3tz.ovh/2fa-otp-bypass.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
