
Serverless Attack
Serverless/云函数安全测试与攻击。当目标涉及 AWS Lambda、腾讯云 SCF、阿里云 FC、Azure Functions 等 Serverless...
Install
npx skills add wgpsec/AboutSecurity --skill serverless-attack -g -a claude-code -y- Repository
- wgpsec/AboutSecurity1.8k
- Category
- Security
- Updated
- 11d ago
- License
- See repository
- Context cost
- Lightabout 686 tokens
- Runs scripts
- No, instructions only
What it does
Serverless/云函数安全测试与攻击。当目标涉及 AWS Lambda、腾讯云 SCF、阿里云 FC、Azure Functions 等 Serverless 服务时使用。当发现 API Gateway 后端是 Lambda/SCF 触发、通过 cloud-aksk-exploit 获取到函数操作权限、或需要分析云函数代码中的漏洞时使用。覆盖事件注入(HTTP/OSS/消息队列触发器参数篡改)、环境变量泄露(硬编码凭据提取)、函数代码注入/覆盖(UpdateFunctionCode)、Runtime 利用(/tmp 写入/Layer 劫持/依赖投毒)、临时凭据滥用。发现任何 Lambda/SCF/云函数、API Gateway、或 Serverless 架构时都应使用此 skill
Serverless/云函数攻击方法论
Serverless 函数运行在短暂的容器中,传统的持久化和横向移动思路不适用。攻击重点是:事件注入(输入篡改)、凭据提取(环境变量/临时 Token)、代码注入(修改函数代码)。
按云平台查阅详细命令
识别云平台后,加载对应 reference 获取完整命令:
- AWS Lambda → references/lambda-techniques.md
- 腾讯云 SCF → references/scf-techniques.md
Phase 0: 通用信息收集
不论哪个云平台,第一步都是枚举函数列表、获取函数详情(代码 + 配置 + 环境变量)。具体命令参见对应 reference。
Phase 1: 环境变量提取(最快获取凭据的方式)
开发者经常在环境变量中硬编码数据库密码、API Key、其他服务凭据。常见敏感变量名:
DB_PASSWORD,DATABASE_URL,MONGODB_URIAWS_ACCESS_KEY_ID(嵌套凭据)、TENCENTCLOUD_SECRET_IDSECRET_KEY,JWT_SECRET,API_KEYREDIS_URL,SMTP_PASSWORD
Phase 2: 函数代码分析
# 搜索硬编码凭据
grep -rn "password\|secret\|key\|token\|credential" lambda_code/
# 搜索不安全的输入处理
grep -rn "eval\|exec\|os.system\|subprocess\|pickle\|yaml.load" lambda_code/
# 搜索 SQL 拼接
grep -rn "format\|f'\|%s.*query\|execute" lambda_code/
# 检查依赖版本
cat lambda_code/requirements.txt # Python
cat lambda_code/package.json # Node.js
Phase 3: 事件注入
Serverless 函数通过"事件"触发,事件数据就是输入, , 如果函数没有正确校验事件数据,就可以注入。
3.1 API Gateway → Lambda/SCF 注入
API Gateway 将 HTTP 请求封装为事件传给函数:
{
"httpMethod": "POST",
"path": "/api/query",
"queryStringParameters": {"id": "1' OR '1'='1"},
"body": "{\"username\": {\"$ne\": \"\"}}",
"headers": {"X-Forwarded-For": "127.0.0.1"}
}
常见注入点:
queryStringParameters→ SQL/NoSQL 注入body→ 反序列化/命令注入headers→ SSRF/日志注入pathParameters→ 路径遍历
3.2 OSS/COS/S3 触发器注入
对象存储触发器将文件信息作为事件:
{
"Records": [{
"s3": {
"bucket": {"name": "my-bucket"},
"object": {"key": "../../../etc/passwd"}
}
}]
}
如果函数用 event['key'] 拼接文件路径做 open() → 路径遍历。
如果函数处理上传的文件内容(如 XML/图片/CSV)→ XXE/SSRF/命令注入。
3.3 消息队列触发器
SQS/CMQ/Kafka 消息作为事件传入:
{"Records": [{"body": "'; import os; os.system('id'); '"}]}
Phase 4: 代码注入/覆盖
需要 UpdateFunctionCode 权限。具体命令参见对应云平台 reference。
核心思路:用恶意代码替换函数,让函数既执行原始功能又植入后门(如接受 cmd 参数执行命令)。

