新版RCE宝典
字数 2411 2025-08-04 08:17:24
RCE漏洞全面解析与实战指南
1. 基础概念
1.1 RCE定义
任意代码执行(RCE)是攻击者在目标机器或目标进程中运行攻击者选择的任何命令或代码的能力。RCE漏洞是软件或硬件中允许任意代码执行的安全漏洞。
1.2 Shell符号使用
cmd1 | cmd2:管道符,将cmd1输出作为cmd2输入cmd1 || cmd2:cmd1失败才执行cmd2cmd1 & cmd2:并行执行cmd1和cmd2cmd1 && cmd2:cmd1成功才执行cmd2cmd1 ; cmd2:顺序执行多个命令- 反引号
`command`:执行命令并返回输出
2. 常规RCE方式
2.1 基础命令/代码执行
PHP执行函数
-
命令执行:
exec():执行外部命令,返回最后一行输出shell_exec():执行命令并返回完整输出system():执行命令并直接输出结果passthru():执行命令并直接输出原始结果- 反引号:执行命令并返回输出
popen():打开进程管道ob_start():输出缓冲控制
-
代码执行:
eval():执行字符串作为PHP代码assert():断言测试(PHP8已移除)call_user_func():调用回调函数create_function():创建匿名函数(PHP7.2弃用)array_map():应用回调到数组元素call_user_func_array():调用回调并传递数组参数usort():用户自定义排序array_filter():用回调过滤数组array_reduce():迭代减少数组preg_replace():正则替换(/e模式PHP5.6后移除)${}:复杂变量解析
Java执行函数
-
命令执行:
Runtime.getRuntime().exec()ProcessBuilder
-
代码执行:
- 字节码加载执行
- 反射调用底层方法
- BCEL ClassLoader(低版本JDK8)
2.2 任意文件写入导致RCE
PHP写入方式
file_put_contents()fwrite()/fputs()fprintf()
Java写入方式
FileOutputStreamBufferedOutputStreamFileWriterFiles.write()
2.3 文件上传导致RCE
PHP上传方式
move_uploaded_file()
Java上传方式
- 通过Servlet API处理文件上传
2.4 文件包含导致RCE
PHP文件包含
- 本地文件包含(LFI)
- 远程文件包含(RFI)
- PHP伪协议:
php://inputdata://php://filter特殊编码利用
Java文件包含
- 主要用于包含JSP文件
2.5 SSTI导致RCE
PHP模板注入
- Twig模板引擎注入
Java模板注入
- FreeMarker
- Thymeleaf
- Velocity
2.6 反序列化导致RCE
PHP反序列化
- 魔术方法利用
- PHAR反序列化
Java反序列化
- CommonsCollections
- CommonsBeanutils
- C3P0
- FastJson
- Jackson
2.7 缓冲区溢出导致RCE
- 覆盖EIP寄存器
- 执行Shellcode
- 绕过DEP/ASLR等防护
3. 不同语言特有RCE
3.1 SQL注入导致RCE
- MySQL:
SELECT ... INTO OUTFILE - SQL Server:
xp_cmdshell - H2:
CREATE ALIAS SHELLEXEC - PostgreSQL:
CREATE OR REPLACE FUNCTION
3.2 XSS升级RCE
- Electron框架RCE
- XSS配合CSRF实现1-click RCE
3.3 表达式注入
- Spring SpEL注入
- OGNL注入
3.4 JNDI注入
- RMI协议利用
- LDAP协议利用
- 高版本JDK绕过
3.5 环境变量注入
- LD_PRELOAD加载恶意.so
- Bash环境变量注入
3.6 原型链污染
- Lodash merge污染
- EJS模板渲染RCE
3.7 Python反序列化
- pickle模块利用
__reduce__魔术方法
3.8 XXE注入
expect://协议执行命令- 其他外部实体注入
3.9 JDBC反序列化
- MySQL
queryInterceptors - PostgreSQL
SocketFactoryFactory
4. 特殊环境RCE
4.1 Redis未授权访问
- 写入Webshell
- 写入SSH密钥
- 定时任务反弹Shell
- 主从复制RCE
5. 防御方案
5.1 通用防御
- 输入验证和过滤
- 最小权限原则
- 安全编码实践
- 及时更新补丁
5.2 语言特定防御
- PHP:
escapeshellarg/escapeshellcmd - Java:反序列化白名单
- Python:避免pickle不可信数据
- JavaScript:原型链保护
5.3 环境加固
- 禁用危险函数/协议
- 配置安全策略
- 网络访问控制
6. 实战案例解析
每个漏洞类型都包含详细的分析流程:
- 环境搭建步骤
- 漏洞复现过程
- 代码审计方法
- 利用链分析
- 修复建议
7. 高级技巧
- 绕过过滤的方法
- 多漏洞组合利用
- 不同环境下的利用差异
- 最新研究进展
8. 工具与资源
- 常用漏洞利用工具
- 调试与分析工具
- 学习资源推荐
- 靶场环境
9. 总结与展望
- RCE漏洞发展趋势
- 新兴防御技术
- 研究方向建议
这份文档全面覆盖了RCE漏洞的各个方面,从基础概念到高级利用技术,从常见语言到特殊环境,包含了详细的原理分析、实战案例和防御方案,可作为安全研究和渗透测试的参考手册。