来Track安全社区投稿~
千元稿费!还有保底奖励~(https://bbs.zkaq.cn)
人们普遍认为云托管服务比传统服务更安全。由于它在基础设施级别上这个观点可能部分正确,但它们仍然具有可能导致其漏洞的用户控制元素。
接下来将探讨如何利用易受攻击的 Lambda 函数并泄露其 AWS 账户信息。
在我们开始讨论之前,让我们先回顾一下基本术语。
🔥$_AWS_Lambda_函数
Lambda 函数是一项 AWS 无服务器计算服务,旨在仅在需要或触发时执行代码。一旦执行结束,运行代码的计算实例就会自行销毁。您可以根据应用程序需要创建任意数量的函数来处理不同的任务。
与传统 Web 应用程序中检测到的漏洞类似,在无服务器服务上运行的云应用程序也容易出现相同的安全漏洞。
$_命令注入:
操作系统命令注入是攻击者通过 Web 应用程序传递操作系统命令的一种攻击。如果应用程序存在漏洞,它将执行给定的命令并执行特权操作。
在云和无服务器服务(例如 Lambda)的上下文中,操作系统命令注入属于数据事件注入。注入以带有特殊字符串的请求的形式将意外事件传递给易受攻击的函数,该函数将被解释为操作系统级操作。
😈$_Exploiation_Demo:
对于漏洞利用演示,我选择了Pentester Academy:https://www.pentesteracademy.com/的AttackDefense:https://www.attackdefense.com/团队开发的一个示例,以演示易受攻击的 Lambda 函数可能导致的数据泄露。
将 Lambda 上的命令注入漏洞及其不安全的配置链接起来,我们可以获得与正在运行的函数关联的 AWS 帐户信息。
让我们开始……
存在漏洞的应用程序具有通过拖放上传文件的功能。在开始使用 BurpSuite 或 ZAP 代理拦截请求之前,我通常会尝试手动检查应用程序并记下任何有趣且引人注目的细节。
🔎$_我的Checklist:
•-查看源页面并查找隐藏的注释、API 端点、存储位置
•-手动模糊应用程序并使用 Burp Suite 仔细观察响应。我通常通过更改、删除或修改值来测试发送到应用程序的每个参数。
•-有意生成错误消息,以查看应用程序是否会显示可见的错误,从而公开一些有助于我们理解其结构的信息。
我们观察到的第一件事是该 URL 泄露了托管基础设施amazonaws.com。它还显示了托管的区域“东南” ,并且它是一个 API。
初步得出结论:我们有一个 API 端点,我们可以用它来上传文件并将其存储在云中的某个位置。
查看 Firefox 开发人员工具的“调试器”选项卡中的首页代码,我发现该应用程序运行一个 lambda 函数。
此外,还有一个 API 端点“api/file”,其中会发送请求,请求方法为POST 方法。
此时,我用Burp拦截了请求来检查服务器的响应。我发送的请求返回了 500 内部服务器错误状态代码。响应表明服务器无法将对象放入“ temporary-public-image-store”目录。
接下来,我转向手动模糊测试部分。我将 HTTP 方法从预期的 POST 更改为 GET,以查看是否可以向服务器发送不同的请求,并让它显示不同的错误消息。不幸的是,我得到的错误是“无效的 HTTP 方法”。
之后,我开始考虑针对该应用程序的潜在攻击媒介。我在 google 上搜索了针对无服务器架构的一般攻击,特别是针对 AWS lambda 的攻击,并发现了一些有关事件数据注入的资源。
其中之一是 GitHub 上的PureSec:https://github.com/puresec/sas-top-10 — 无服务器应用程序的十大关键风险。他们将操作系统命令注入称为无服务器架构中的常见漏洞之一。
有了这些知识,我开始使用操作系统注入已知的特殊字符对 URL 进行模糊测试,尝试查看是否有任何字符会生成新错误,从而泄露我们目前没有的其他信息。
仅列表中的逗号字符返回不同的错误消息; “/bin/sh: -c: line 0: unexpected EOF while looking for matching”。由此我们可以推测在 Lambda 上存在操作系统注入漏洞。
为了确认这一点,我尝试传递whoami、ls、pwd 和 date等简单命令,看看是否执行并将响应转发给我们。
现在这一点已经得到证实,让我们看看 Lambda 是否可以读取有关其运行的 AWS 账户的重要信息。
我运行命令“ env”来检索存储的环境变量。Lambda 使用这些变量在本地运行代码并分配给它的权限。
如上所示,我们已经检索了 AWS 会话令牌、访问 ID、密钥、node.js 版本和 S3 存储桶信息。
尽管这些是与运行会话相关的临时变量,但它们仍然可以帮助我们进行 AWS 枚举并获取其他信息。
总结:我们通过测试Lambda 函数,发现它容易受到操作系统命令注入的攻击。利用该漏洞,我们检索了会话令牌、访问 ID 和密钥,用于进一步枚举AWS其他信息。
以上内容由白帽子左一翻译并整理。原文:https://medium.com/r3d-buck3t/vulnerable-lambda-leaks-aws-account-information-c613837377ad
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):云安全 | 利用易受攻击的 Lambda 函数泄露 AWS 账户信息
评论