美国国防部网站导致账户劫持的IDOR漏洞-RadeBit瑞安全

该篇Writeup基于HackerOne披露的美国国防部网站漏洞,漏洞涉及IDOR问题,攻击者利用漏洞可通过账户更新功能劫持网站任意用户。以下是作者的漏洞发现过程。

漏洞发现

我在开展美国国防部漏洞众测项目中,发现了某个美国国防部网站登录界面与众不同,它需要通用访问卡(common access card,CAC)认证方式,感觉来说,值得搞搞,因此,决定深入测试一下。

通用访问卡(common access card,CAC):美国国防部用来进行多重身份验证(multifactor authentication)的智能卡(smart card)。通用访问卡作为标准认证发行,可以认证现役军人、后备军人、文职雇员、非国防部雇员、国民警卫队的工薪阶层和合格的承包商人员。加上它作为身份验证功能,访问政府建筑和计算机网络时需要出示通用访问卡。

美国国防部网站导致账户劫持的IDOR漏洞-RadeBit瑞安全

于是,我马上注册成为了该网站用户,登录后转到以下账户设置页面,该页面的URL跳转路径为https://DOD.mil/signIn/account。乍一看来,该URL路径中没有任何值得下手的ID或IDOR参数,而且也发现不了其它可以产生报错的东西。

美国国防部网站导致账户劫持的IDOR漏洞-RadeBit瑞安全

但在点击了账户更新“Update”按钮后,通过Burp抓包我发现了以下POST请求,其中包含了我的账户ID、用户名name、绑定邮箱email、绑定电话phone:

美国国防部网站导致账户劫持的IDOR漏洞-RadeBit瑞安全

从这里的POST请求中我能隐约感觉到其暗含账户劫持的可能,这个包为什么要发送我的账户ID 623呢?这是用我的会话去验证其它安全措施吗?之后,我又注册了另外一个账户,在此过程中该账户被分配的账户ID为624。于是,我退出了该第二个账户,登录到了第一个账户(ID 623)中,在上个POST请求的基础上把其中的ID替换为了624,还把其中涉及的name、email、phone参数都做了替换。如下:

id=624&fName=hacked&lName=hacked&email=hacker@wearehackerone.com&phone=12345

POST请求发出后,我收到了以下有效的响应:

美国国防部网站导致账户劫持的IDOR漏洞-RadeBit瑞安全

漏洞利用流程

用Burp拦截账户更新'Update'按钮流量POST包;

把POST请求中的账户ID替换为受害者账户ID;

再把其中绑定的邮箱email、电话phone替换为可以控制的值;

发送修改后的POST请求包;

然后以上成功绑定的邮箱发起密码重置请求;

成功劫持了受害者账户。

美国国防部网站导致账户劫持的IDOR漏洞-RadeBit瑞安全

经验总结

Think outside of the box!

美国国防部网站导致账户劫持的IDOR漏洞-RadeBit瑞安全