Webmin未经身份验证的远程代码执行漏洞复现(CVE-2019-15107)
墨者学院—Webmin未经身份验证的远程代码执行漏洞
前言:
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。据统计,互联网上大约有13w台机器使用Webmin。当用户开启Webmin密码重置功能后,攻击者可以通过发送POST请求在目标系统中执行任意命令,且无需身份验证。
2019年8月10日,在pentest上发布了Webmin CVE-2019-15107远程代码执行漏洞。
该漏洞由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞,该漏洞允许恶意第三方在缺少输入验证的情况下而执行恶意代码,后经知道创宇404实验室发现,该漏洞的存在实则是sourceforge上某些版本的安装包和源码被植入了后门导致的。
靶场地址:https://www.mozhe.cn/bug/detail/d01lL2RSbGEwZUNTeThVZ0xDdXl0Zz09bW96aGUmozhe
正文:
打开靶机,看到的是一个POST提交登录界面。对于POST表单提交,我们首先想到的是抓包分析。
抓包分析:
随便输入账号密码,通过burp,获得图中的数据包
在这里我们能看到,页面数据显示为**/session_login.cgi**,而漏洞复现资料里是**/password_change.cgi**,所以在这里要进行修改,对提交的**user=&pass=**进行修改,利用百度漏洞资料中的poc进行模仿构造自己的语句。
user=nuist&pam=1&expired=2&old=nuist|pwd&new1=nuist&new2=nuist
这里我在POST提交时插入了pwd命令,让我们放包来看看会出现什么。
这时果然出现了当前所在目录为 /usr/share/webmin/acl。
到这一步为止,说明我们的操作没有问题,所有的问题都迎刃而解了,我们只需要看到看到根目录下的key就完成了。
解决:
最后,直接执行命令查看根目录下key.txt
user=nuist&pam=1&expired=2&old=nuist|cat /key.txt&new1=nuist&new2=nuist
成功拿到flag:mozhe778171c9d938bee647b5b766d6e。
反思:
1.在解题中,并不是第一时间就能找到思路的,在遇到POST提交登陆时,我第一时间想到了POST万能密码登陆的SQL漏洞,后来发现根本行不通,在上网查找之后,才知道了漏洞的位置。
2.该漏洞存在于password_change.cgi,而不是一开始抓包中的/session_login.cgi,所以要留意每一个细节。
这里贴上漏洞发现者创宇404实验室的博客,方便大家深入了解:https://blog.csdn.net/qq_43380549/article/details/100011292