0x01 漏洞详情
Webmin是用于类似Unix的系统的基于Web的系统配置工具。该漏洞存在于密码重置页面中,该页面允许未经身份验证的用户通过简单的POST请求执行任意命令。该漏洞由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞,该漏洞允许恶意第三方在缺少输入验证的情况下执行恶意代码,后经知道创宇404实验室发现,该漏洞的存在实则是sourceforge上某些版本的安装包和源码被植入了后门导致的。
0x02 影响版本
webmin<=1.920
0x03 漏洞利用
访问靶场地址https://192.168.18.131:10000/
可以看到是webmin的登录页面。我们在百度搜索关键词webmin 远程代码执行漏洞,可以看到编号为CVE-2019-15107。根据网上公开的poc可知,漏洞利用url是修改密码功能password_change.cgi,且需要开启密码修改功能(1.890默认开启此功能)。
我们随便输入username,password,然后使用burp抓包(需要注意的是,这里的用户名不能再是root,因为如果传入的uesr是root的话代码层面无法进去第37行的if条件语句,从而无法执行第40行qx/...../的命令执行代码,具体可以查看文章Webmin(CVE-2019-15107) 远程代码执行漏洞之 backdoor 探究_知道创宇KCSC-CSDN博客_webmin远程代码执行)
将请求包发送到repeater模块,然后请求/password_change.cgi
post请求的数据改为
payload:
user=yeyu&pam=1&expired=2&old=ls /&new1=1111&new2=1111
可以看到已经执行成功,执行其他命令
payload:user=rootxx&pam=&expired=2&old=test|id&new1=test2&new2=test2
这里的user值要是用的是一个假的用户,使用真实的root测试不成功,只有在发送的用户参数的值不是已知的Linux用户的情况下(而参考链接中是user=root123),展示进入才会到修改/etc/shadow的地方,触发命令注入漏洞