技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
深入解析 AWS Lambda:权限管理与提权技巧全揭秘
1341025112991831
WEB安全
180浏览 · 2025-03-07 16:59
返回文档
深入解析 AWS Lambda:权限管理与提权技巧全揭秘
主要是从逻辑层面来理解为什么可以权限提升,细节可能有所不足,因为真实环境可能千奇百怪,但是本质还是一样的
lambda:CreateFunction & iam:PassRole
iam:PassRole
iam:PassRole 是 AWS IAM 权限中的一个重要权限,它允许某个 IAM 用户或角色将特定的 IAM 角色传递(“pass”)给 AWS 服务,以便这些服务可以使用该角色来执行任务或访问资源。
简单来讲就是可以把自己的权限加到自己创造的东西上
这个角色通常有相关权限,可以让服务执行其预定的任务(如访问 S3 存储、写入 CloudWatch 日志、访问其他 AWS 资源等)。
具有 iam:PassRole 权限的用户可以将一个角色传递给其他 AWS 服务,但用户自己并不会直接拥有该角色的权限。
iam:PassRole 权限仅仅是传递角色,而不是授予角色的权限
CreateFunction
就是可以创建匿名函数,这里默认有执行权限,因为正常逻辑来讲能够创建就是能够执行的
原理
我们可以思考一下漏洞该如何利用,其实原理非常简单,我们有 PassRole 权限,我们给匿名函数赋予管理员的权限,然后通过控制匿名函数,比如获取当前函数的 env,就可以得到高权限的 key 了
利用
我们来尝试一波,首先第一个需要解决的问题就是匿名函数的形式
反弹 shell?
在
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc#iam-passrole-lambda-createfunction-lambda-invokefunction-or-lambda-invokefunctionurl
中有演示
我们可以先自己在本地尝试一下
运行后
能够连上,但是秒断开了
然后又去网上找了很多反弹 shell 的 python 代码,都失败了
这里尝试直接读取 env 文件
这里我们先在环境上尝试一下,是否可以
图片加载失败
设置匿名函数的源代码如上,然后触发一波
可以看到是成功了的
我们首先查询当前的 IAM 角色
这里我就使用 Test 角色作为演示
--zip-file fileb://rev.zip:
这个参数指定了 Lambda 函数的代码包,即将要上传的压缩文件。fileb://rev.zip 表示使用本地的 rev.zip 文件,该文件需要是一个包含 Python 代码及其所有依赖的压缩包,AWS Lambda 会解压并执行其中的内容。
--role
这个参数也是我们的关键,指定了 Lambda 函数的执行角色(IAM Role)
我们查看创建成功没有
图片加载失败
图片加载失败
可以看见是成功的传上去了
然后我们执行这个匿名函数
之后可能会报错,只需要修改文件名为 rev.py
主要和--handler rev.lambda_handler 参数有关
--handler rev.lambda_handler 这个参数用于指定 Lambda 函数的入口点,它告诉 AWS Lambda 从哪里开始执行代码。
rev: 这是 Python 脚本文件的名称(不带 .py 扩展名)。在你的例子中,它指向一个名为 rev.py 的 Python 文件。
lambda_handler: 这是在 rev.py 文件中定义的函数名称。AWS Lambda 会查找这个函数,并且在触发 Lambda 函数时调用它作为程序的入口。
执行函数
图片加载失败
得到了数据成功
lambda:AddPermission
lambda:AddPermission 是 AWS Lambda 的 API 操作,用于向 Lambda 函数添加权限,允许其他 AWS 服务或用户调用该函数。通过 AddPermission,可以控制哪些实体(如 IAM 用户、IAM 角色或 AWS 服务)能够执行 Lambda 函数的某些操作。
原理
其实原理还是很简单的,就是用户可以随意给某 IAM 角色赋予 lambda 函数的任意权限,比如 a 用户只有列出用户的权限,但是我们可以通过 lambda 函数给他其他的权限
而且可以更改 lambda 函数的代码,把原本正常的更能改为有漏洞的代码
分析
查看函数
以 aaa 为例子
首先我们给当前角色赋予我们的权限
--action 我这里使用* 代表的是所有的权限
然后准备我们的文件
然后压缩
之后我们更新函数
然后执行这个函数
图片加载失败
之后收到请求
lambda:UpdateFunctionConfiguration
lambda:UpdateFunctionConfiguration 是 AWS IAM(Identity and Access Management)中的一个权限,它允许用户或角色修改现有 AWS Lambda 函数的配置设置。具体来说,这个权限允许用户对 Lambda 函数的以下内容进行更改
这里说两个重要的
环境变量(Environment Variables):
用户可以设置、修改或删除 Lambda 函数的环境变量。环境变量可以包含各种配置信息,比如 API 密钥、数据库连接信息等,甚至可以用于注入恶意代码(例如通过 Python 的 PYTHONWARNINGS 或 Bash 的 BROWSER 环境变量进行命令注入)。
角色(Role):
用户可以为 Lambda 函数分配 IAM 角色,授予它执行特定操作所需的权限。若用户拥有足够权限,还可以将具有更高权限的角色赋予 Lambda 函数,进而通过 Lambda 获得更高的访问权限。这是权限提升的一种常见方式。
参考
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc#lambda-addpermission
使用此权限,可以添加将导致 Lambda 执行任意代码的环境变量。例如,在 python 中,可以滥用环境变量 PYTHONWARNING 和 BROWSER 来使 python 进程执行任意命令:
也就是执行函数的时候会导入环节变量,然后执行命令
参考
www.ms08067.com
0
人收藏
0
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
没有评论
发布投稿
热门文章
1
cyberstrikelab-shadow靶场首杀
2
从零开始手搓C2框架
3
契约锁电子签章系统 pdfverifier rce 前台漏洞分析(从源码分析)
4
大华智能物联管理平台1day分析
5
契约锁电子签章系统 pdfverifier 远程代码执行漏洞分析(补丁包逆向分析)
近期热点
一周
月份
季度
1
cyberstrikelab-shadow靶场首杀
2
从零开始手搓C2框架
3
契约锁电子签章系统 pdfverifier rce 前台漏洞分析(从源码分析)
4
大华智能物联管理平台1day分析
5
契约锁电子签章系统 pdfverifier 远程代码执行漏洞分析(补丁包逆向分析)
暂无相关信息
暂无相关信息
优秀作者
1
T0daySeeker
贡献值:41700
2
一天
贡献值:29800
3
Yale
贡献值:25000
4
1674701160110592
贡献值:21800
5
1174735059082055
贡献值:16000
6
手术刀
贡献值:14000
7
Loora1N
贡献值:13000
8
bkbqwq
贡献值:12800
9
Ha1ey
贡献值:11000
10
lufei
贡献值:11000
目录
深入解析 AWS Lambda:权限管理与提权技巧全揭秘
lambda:CreateFunction & iam:PassRole
原理
利用
lambda:AddPermission
原理
分析
lambda:UpdateFunctionConfiguration
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板
没有评论