挖洞经验 | 篡改密码重置的加密参数实现账号劫持

栏目: IT技术 · 发布时间: 4年前

内容简介:想必大家都对参数篡改攻击有所了解,今天作者分享的是对RSA加密参数的篡改从而实现账号劫持的简单测试,漏洞原因在于Web应用在客户端缺乏安全的防护机制。一起来看看。出于保密,目标Web应用暂且叫它为target.com,在接触该目标时,经测试发现,其上所有的参数操作都是加密传输的,在Burp的抓包配合下,可见其大概的加密形式如下:

挖洞经验 | 篡改密码重置的加密参数实现账号劫持

想必大家都对参数篡改攻击有所了解,今天作者分享的是对RSA加密参数的篡改从而实现账号劫持的简单测试,漏洞原因在于Web应用在客户端缺乏安全的防护机制。一起来看看。

出于保密,目标Web应用暂且叫它为target.com,在接触该目标时,经测试发现,其上所有的参数操作都是加密传输的,在Burp的抓包配合下,可见其大概的加密形式如下:

userName=8cfe39943d6e08e505531ddfd90c66f47c2f55ce140e5770fef58d3bec826f52490a089d1942aaed74a9f6ed0fd8890cef6c36e31220c9859a3ab423062wxbeea480d94850d95374ab3a7a47de3e9f89b3250a58397044817069c6a17109cc27408b0c53f94q34a5878270ff6random8c96b916bb9594af648e6dc6851685a9d41cdb868761c4d36d49389150840af05a277530dd191464befc79a46d418a4e4f12b2dec0c5cc01097efed4b2a6608c2c2f076a27fe0ce62a70a4fe2f02b558abae6f4a4757fb34a593ccd04f2356c2c521758b0e59c017087121d63c1b002fc794953e690290489f8af87d17359ba0fc59b832f972d80293fe8d2aafcb4faca

接下来,我把关注点放到了其“忘记密码”功能上,其大概流程如下:

1、访问target.com/signin页面,输入需要重置密码的邮箱号;
2、Web服务端会向邮箱发送一个6位数授权码;
3、访问target.com/forgotPasswd,输入需要重置密码的邮箱号、授权码和重置后的密码,提交即可完成密码重置操作。

现在,我以邮箱“attacker@email.com”向Web服务端发起密码重置请求,在收到授权码之后,访问target.com/forgotPasswd,重复上述密码重置操作,该过程用Burp抓包的数据如下:

挖洞经验 | 篡改密码重置的加密参数实现账号劫持

从上图中可以看到,其中包含4个参数:Email, Username, Encrypted Password 和 Code,但是所有这些参数都是加密的。我尝试着把参数数值替换成明文数值,如用“attacker@email.com” 或“victim@email.com”替换掉其中的邮箱,但提交的请求却不成功。

接着,我用另外的浏览器访问target.com/forgotpasswd,以“victim@email.com”身份发起密码重置请求,抓包,复制其中的email 和 username加密数值,到之前的浏览器请求包中,提交,但请求还是无效。

因此,总结来看,忘记密码的请求格式如下:

email=encryptedattackeremail&userName=encryptedattackerusername&passwd=encryptedattackerpasswd&code=encryptedcode

我度过把其中的encryptedattackeremail替换为encryptedvictimemail,encryptedattackerusername替换为encryptedvictimusername,但都不可行。

我依然没有气馁。经过一番分析,根据加密长度,我发现其加密方式为RSA。同时,我对目标Web应用的源代码分析后发现,其中多个js脚本中包含了rsa方法名称,因此,我确信其为RSA加密无疑了。

后来我意识到Burp抓包时参数值已经被加密了,这是一种客户端加密,所以我尝试把浏览器中调用的js脚本执行关闭,看看加密功能是否还可行,但之后,密码重置请求就完全不起效。

我又考虑到,由于这是客户端加密,RSA函数肯定是在某个js脚本中被定义,且被浏览器调用的,于是我点击Chrome浏览器的Inspect Element按钮,来到了其Console一栏下,输入“rsa” ,让我吃惊的是其中匹配出了“rsaEncrypt”方法函数名。

挖洞经验 | 篡改密码重置的加密参数实现账号劫持

经过测试发现,只要为该方法函数提供一个参数名,其就能生成相应的加密数值,因此,我以参数s定义了数值“victim@email.com”,即s=“victim@email.com“,执行rsaEncrypt,它即生成了如下相应的加密串:

挖洞经验 | 篡改密码重置的加密参数实现账号劫持

需要注意的是,可能是其与会话参数相关,所以在端点/forgotpasswd上每次刷新页面,上述的加密串都会发生变化。

按照前述的密码重置操作,我以“attacker@email.com”身份发起密码重置请求,提交授权码和新密码,并进行Burp抓包,其相应界面如下:

挖洞经验 | 篡改密码重置的加密参数实现账号劫持

在Burp的请求包中,除了 把其中的“username”替换成浏览器端rsaEncrypt方法生成的“rsaencryptedvictimemail”加密串之外,其它的都无需更改,也即:

email=encryptedattackeremail& username=rsaencryptedvictimemail &passwd=encryptedattackerpasswd&code=encryptedcode

请求提交后,奇迹发生了,victim@email.com对应的账号密码被成功更改,实现了账户劫持!

考来源

medium

* 本文作者:clouds ,转载请注明来自 FreeBuf.COM


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

新媒体营销概论

新媒体营销概论

秋叶、刘勇 / 人民邮电出版社 / 2016-12-1 / 36.00

本书共分6章。第1章重点介绍了新媒体的概念和特征,引导读者全面认识新媒体所处的行业;第2章用历史发展的眼光,介绍了不同类型的新媒体,让读者不仅能看到最新的新媒体模式,也能看到这个模式发展背后的脉络;第3章重点介绍了新媒体广告投放载体,便于读者选择适合自己的新媒体运营方式;第4章介绍了新媒体运营的策划思维;第5章介绍了新媒体舆情管理知识;第6章选取了可口可乐、海底捞、恒大冰泉等的新媒体助力传统行业转......一起来看看 《新媒体营销概论》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换