由于依赖性混乱导致的RCE


关于我提交给 HackerOne 上的一个私人程序的错误赏金报告。

你猜怎么了?我得到了 5,000 美元的奖励,他们只用了 30 分钟就搞定了!

我不会深入探讨依赖性混淆的本质,因为有很多很棒的文章涵盖了它。

因此,我检查了这个自定义身份验证门户,您可以在其中登录后进入多个内部应用程序。可惜的是,他们在测试期间没有向我们提供凭据,因此只有公司员工才能登录。

但是,嘿,我没有放弃!我使用浏览器中的网络选项卡查看了应用加载的 .js 文件。我看到当 auth 登录页面加载时,它捆绑了一个app.[random_characters].js文件。

我记得读过有关源映射以及如何将前端源代码与它们放回一起的文章。

推荐阅读:

依赖性混乱:我如何侵入苹果、微软和其他数十家公司

https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610

因此,我使用了这个名为Sourcemapper (项目地址:https://github.com/denandz/sourcemapper)的很酷的工具来帮助做到这一点。

有了源代码,我开始寻找漏洞。我发现了一些有趣的,但代码中真正引起我注意的是导入语句。


我注意到导入引用了一个需要在 npm.org 上找到的 NPM 包。

所以我做了任何黑客都会做的事情,试图看看我是否可以劫持那个包。幸运的是,我成功了!

我很快创建了一个 PoC,并开始将 ping 返回给我的 burp Suite,并且能够提取敏感数据并执行代码。


我向平台报告了这个漏洞问题,它在 30 分钟内被分类并获得了他们的最高赏金。