云渗透实战:解密 AWS CTF 挑战中的秘密
云渗透实战:解密 AWS CTF 挑战中的秘密
导语:大家好,今天我将展示如何在不同的场景中对云环境进行渗透测试。这些实际上都是 CTF 挑战,属于 THM Hackfinity Battle Encore 挑战赛的一部分。让我们开始吧!
Hackfinity Battle Encore 挑战
欢迎来到 Hackfinity Battle CTF!
挑战第一部分
第一个挑战给出了一些 AWS 凭证用于测试:
我使用这些凭证进行了身份验证,现在我是 user0。尝试列出 S3 桶但没有任何结果,我们没有执行此操作的权限。
接下来需要找出该账户中运行了哪些 AWS 服务。为此我们可以使用这个工具:GitHub - shabarkin/aws-enumerator
运行该工具后发现有一个服务正在运行:SECRETMANAGER。
我们可以使用以下查询与 SECRETMANAGER 交互:
这里可以看到列出了一个 Secret 名称,我们可以用以下查询提取 Secret:
这样我们就获得了第一个 Flag。
挑战第二部分
这个挑战给出了一个钓鱼网站,需要找出被盗数据存储在哪里,并尝试获取受害者用户列表:
在 URL 末尾添加一些随机路径后,我们发现这个网站内容托管在 S3 桶中:
接下来尝试匿名列出桶内容,并获得了关于捕获登录的数据。我将其下载到我的 VM 中:
最后我获得了所有捕获的用户名和密码以及 Flag:
挑战第三部分
这个挑战又给出了一些 AWS 凭证和一个 S3 桶用于测试:
使用这些凭证登录后,我现在是 user1。接下来我列出了桶中的所有内容并下载到 VM 中。
这是一个使用对称密钥的 AWS KMS 加密数据。我们可以使用给定的 KeyId 解密,但需要修改一些数据。将 CiphertextBlob 放入文件(Base64 解码形式),应该如下所示。
但当我尝试用 AWS CLI 解密时被阻止了,因为没有足够的权限使用解密标志:
接下来我使用 aws-enumerator 工具列出所有服务,注意到 IAM 正在运行。于是尝试列出 AWS 角色。
搜索后发现一个有趣的角色,因为在描述中显示该角色可用于加密和解密 Cipher 的消息。
让我们获取该角色的凭证,使用以下命令:
将这些凭证导出到终端后,就可以进行解密了。运行以下命令后我们获得了解密文本和 Flag:
挑战第四部分
这个挑战给出了 AWS 凭证:
首先尝试列出所有 AWS 服务,发现多个服务正在运行:S3、IAM、DYNAMODB。
首先尝试列出所有 S3 桶,发现 1 个,但没有权限列出桶对象。于是尝试 AWS 桶版本控制。如果不了解 AWS 桶版本控制,可以参考这篇博客:AWS s3 Bucket Versioning Discloses Secrets
执行以下命令后列出了其他桶版本:
有多个 VersionId 可以测试。我逐一尝试后找到了一个有效的,下载了旧的 index.html 文件并打开。
这是网站和第一个 Flag。查看页面源代码后发现了一些有趣的内容。
它通过 url 参数在 AWS 域上执行 POST 请求。这里可以尝试 SSRF。尝试访问内部数据但无果。接着尝试使用 file://模式(SSRF)获取内部数据。获取/etc/passwd 后得到了文件内容,确认了 SSRF。
在/proc/self/environ 中获得了 AWS Lambda 凭证。在/var/task/flag2.txt 中获得了第二个 Flag。
在使用 Lambda 凭证执行任何操作前,我们可以枚举 AWS IAM 角色以寻找下一步的有趣数据。从中获得了一个 Dev 角色:
这个角色连接到 redteamapp-lambda-role-szx0n1l0 角色。接着使用 Lambda 凭证进行身份验证,现在我是 redteamapp-lambda 用户。
有了这个用户访问权限,我可以获取 redteamapp-dev-role 角色的凭证。使用以下命令完成:
在这个挑战之前我们看到 DYNAMODB 正在运行。这是 AWS 完全托管的 NoSQL 数据库服务。我们可以查询这个数据库来检索数据(之前无法操作是因为没有 dev-role 凭证)。
最终获得了最后一个 Flag。通过这种方式可以利用 AWS 漏洞。希望你能学到新东西。
感谢阅读!
如果喜欢请不要忘记点赞和关注我获取更多文章。
Happy Hacking~更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

评论