During a red team engagement you discovered hardcoded AWS credentials and reference to the region eu-north-1. What cloud infrastructure and sensitive information might be accessible using these details? The red team engagement is ending soon and another impactful finding would complete the report!
题目提供的信息
eu-north-1 | AKIATWVWNKAVFMBHTHOR | xkyuDW2oXX/knwb/eRi9ng07e1sfzbbjZ+5qnVf+ |
先安装一下权限枚举工具
枚举
这玩意枚举起来还挺快的
然后 dump 就能看具体结果了
先查看 lambda 函数
但想查看详情就不行了
一个个尝试,可以调用
随便试了几个参数,就不行了,得 fuzz 了
下载参数 fuzz 字典
写个脚本
fuzz_labmda_param.sh趁fuzz我们看下其他权限能拿到啥
尝试接收消息
刚刚脚本运行结果
需要一个 trackingID 参数,然后我们参考消息队列里的。刚好接受消息里有
trackingID,值为 HLT7748好像并没有什么用,从消息队列多接收几次也是如此
我们自己提交一个消息
就能执行成功了
多尝试几次 receive-message 会发现 Client 的字段基本是固定的几个,尝试发送不存在的 Client
输出为
[] 空数组尝试一下 SQL注入
VELUS CORP.\”报 DB 错,意味着很可能有 SQL 注入
以上过程大概是 数据传入至消息队列(
payload 引用)→ 等待处理→ 当 lambda 被触发 → lambda 向消息队列利用 SQL 语句查询数据 → 引起 SQL注入这是一个典型的SQL二次注入,即输入SQL语句没有马上触发SQL注入,而是在另一功能点触发
写个脚本触发
lambda_sqli.sh先枚举字段
和正常返回的字段个数一样,得到数据库版本在第四个字段
8.0.35Amazon Relational Database Service (Amazon RDS) for MySQL now supports MySQL minor versions 5.7.42 and 8.0.33)
改一下脚本只输出 delivered 字段的内容
获取表名
一个 TrackingData 一个 customerData
查看数据 flag 就是 VELUS CORP 地址的
cardUsed 字段了漏洞防御
有漏洞的函数是这样写的
即直接拼接了 clientName 到 SQL 语句里去查 MySQL
应该用预编译来防止 SQL 注入
此外,通过 AWS CloudTrail 来主动和快速响应正在进行的恶意攻击,比如频繁的访问的来源IP是一个已被攻击者利用的指标
此外存储到数据库的敏感数据应该加密存储,而不是明文~
