【翻译】小BUG,大影响。25K赏金漏洞(001)

114 阅读3分钟

标题:Little bug, Big impact. 25k bounty

作者:Nightbane

原文地址:medium.com/prodefense/…

介绍

作为一名道德黑客,我正在寻找一个知名公司网站应用程序中的漏洞。我已经多次扫描了代码,但总感觉不对劲。这时我决定更仔细地查看应用程序前端正在运行的JavaScript。

当我深入挖掘时,我偶然发现了敏感数据的金矿:用于通过Stripe处理付款的硬编码密钥。所涉及的密钥就是Stripe API可发布密钥和机密密钥本身。这些密钥存储在应用程序前端,使得任何具有恶意意图的人都能轻松获得。

令我最惊讶的是,这些密钥没有一个通用名称,可以轻松地被扫描器或工具捕获。它们被巧妙地隐藏在JavaScript中,使其难以检测。然而,由于我有经验和专业知识,我能够发现它们,并立即通知了该公司。

JavaScript source mapping

Not_actual_website_just_an_example.webp

Not actual website, just an example

JavaScript源代码映射将压缩后的JavaScript文件中的代码映射到原始源代码,有助于调试,使开发人员能够轻松找到错误的来源。压缩可以去除诸如注释、函数名称和变量名称等信息,使得调试更加困难。源代码映射会与压缩文件一起生成,将编译后的代码映射回原始代码,帮助浏览器在遇到编译代码错误时显示更有用的错误消息。

尽管源代码映射对于开发和调试非常有用,但如果机密信息如API密钥或密码包含在原始源代码中,它们也可能带来安全风险。这些信息可能会通过源代码映射暴露,从而允许未经授权访问敏感资源。因此,避免在JavaScript代码中包含秘密信息并使用安全存储或环境变量非常重要,同时确保构建过程删除任何可能在源代码映射中暴露敏感信息的注释或数据。

寻找BUG

使用工具SourceMapper,我可以将压缩的JavaScript重构为更易读的版本。以下是如何使用该工具的示例:

doi@asov:~$ ./sourcemapper -output dhubsrc -url https://hub.docker.com/public/js/client.356c14916fb23f85707f.js.map
[+] Retriving Sourcemap from https://hub.docker.com/public/js/client.356c14916fb23f85707f.js.map
[+] Read 23045027 bytes, parsing JSON
[+] Retrieved Sourcemap with version 3, containing 1828 entries
[+] Writing 9076765 bytes to dhubsrc/webpack:/js/client.356c14916fb23f85707f.js
[+] Writing 1014 bytes to dhubsrc/webpack:/webpack/bootstrap 356c14916fb23f85707f
[+] Writing 3174 bytes to dhubsrc/webpack:/app/scripts/client.js
[+] Writing 281 bytes to dhubsrc/webpack:/~/babel-runtime/helpers/interop-require-default.js
[+] Writing 151 bytes to dhubsrc/webpack:/~/babel-core/polyfill.js
{snip}

一旦代码呈可读格式,需要花费几分钟时间在JavaScript中进行搜索以找到这个:

export const S0 = 'pk_live_[REDACTED]es33';
export const S1 = 'sk_live_[REDACTED]du8d';
export const STRIPE_HEADER_NAME = 'REDACTED';
export const CURRENCY = 'USD';
export const STRIPE_PAY_BUTTON = 'Pay for REDACTED';

你看到了吗?是的!那就是硬编码API密钥!!Stripe有一个非常方便的API,**可以用于检查该帐户的余额或将资金转移到其他帐户。**你好比特币!(开玩笑的)

❯ curl https://api.stripe.com/v1/balance -u sk_live_REDACTEDdu8d
{"object": "balance",
 "available": [ {
 "amount": 1761520.76,
 "currency": "usd",
 "source_types": {
 "card": 0 } } ]
}

总结

可以想象,我非常高兴地收到了公司安全团队提供的25000美元的漏洞赏金。知道我的努力有助于确保平台的安全,并防止任何恶意行为者利用此关键漏洞,这是一种难以置信的感觉。

更令人惊讶的是该公司对我发现的反应。他们非常欣赏我的道德方式,甚至还开玩笑说很高兴我没有从Stripe账户中提取任何资金!这证明了让道德黑客努力改善数字平台的安全是多么重要。

参考链接

github.com/denandz/sou…

每周三9点发布精选内容。

更多安全资讯,请关注微信公众号:安全虫。

更多在线安全资讯,请访问secwiki.icu