您现在的位置是:百科 >>正文

nacos未授权访问漏洞 原理扫描

百科4人已围观

简介```html nacos未授权访问漏洞 原理扫描 nacos未授权访问漏洞 原理扫描 Nacos 的默认端口是 8848,这个数字本身没什么特殊,但如果你在浏览器里直接敲上 http:/ ...

```html nacos未授权访问漏洞 原理扫描

nacos未授权访问漏洞 原理扫描

Nacos 的授权扫描默认端口是 8848,这个数字本身没什么特殊,访问但如果你在浏览器里直接敲上 http://目标IP:8848/nacos/v1/auth/users?漏洞pageNo=1&pageSize=9,页面返回了一串 JSON,原理里面带着用户名和密码的授权扫描哈希,那基本可以确定——这个 Nacos 没设防。访问我去年在一个客户的漏洞测试环境里就碰到过,当时他们以为内网没人会扫,原理结果我随手一请求,授权扫描nacos 这个默认用户名和它对应的访问 BCrypt 哈希就躺在响应体里,连翻页参数都不用改。漏洞

漏洞的原理根子不在认证逻辑,而在“默认信任”

Nacos 早期版本(1.x 到 2.0.0 之前的授权扫描部分版本)对 /nacos/v1/auth/ 下的接口没有强制鉴权。更准确地说,访问它把“是漏洞否开启鉴权”这个开关交给了 application.properties 里的 nacos.core.auth.enabled,而默认值是 false。这意味着你装完 Nacos,不做任何额外配置,任何人都能通过 HTTP 接口读取用户列表、新建用户、甚至删除用户。这不是代码写错了,是设计上默认把门敞开了。

我见过一个更离谱的场景:某公司的运维在 K8s 里用 Helm 装 Nacos,values.yaml 里 auth.enabled 写的是 true,但启动参数里又加了个 --nacos.core.auth.enabled=false,结果容器里的实际配置被覆盖,鉴权根本没生效。他们直到被扫描器扫出漏洞才反应过来。

扫描这件事,不需要多高深的技术

写个 Python 脚本,循环请求几个关键路径就行。比如 /nacos/v1/auth/users 返回用户列表,/nacos/v1/console/namespaces 返回命名空间,/nacos/v1/cs/configs?search=accurate&dataId=&group=&pageNo=1&pageSize=100 能直接拉配置。配置里经常藏着数据库密码、Redis 连接串、第三方 API Key。我试过在一个未授权的 Nacos 上翻到阿里云 AK/SK,虽然只是测试环境,但足够说明问题。

扫描器一般会先发一个 GET /nacos/,看返回的 HTML 里有没有 Nacos 字样和版本号。有版本号就能直接匹配 CVE。比如 1.4.1 之前的版本存在 /nacos/v1/auth/users/?pageNo=&pageSize= 未授权,2.0.0 到 2.0.3 有 User-Agent 绕过鉴权的漏洞。这些细节在 GitHub 的 issue 里都能翻到,扫描器作者只是把它们自动化了。

真实环境里,这个洞往往不是孤立的

去年某次攻防演练,我通过一个未授权的 Nacos 拿到了生产配置,里面有一个 spring.datasource.url 指向内网 MySQL,用户名 root,密码是弱口令 root123。接着用 Nacos 的 /nacos/v1/cs/configs 接口修改了一个服务的配置,把 logging.level.root 改成 DEBUG,然后观察日志里有没有敏感信息。整个过程没用到任何 0day,全是默认配置和未授权接口的组合。

更麻烦的是,Nacos 的未授权不止读,还能写。你可以往配置里注入一个恶意类,或者直接改数据库连接串指向自己的服务器。有些团队把 Nacos 当配置中心,也当服务注册中心,一旦被控,整个微服务架构的通信拓扑就暴露了。

怎么扫,怎么防

扫描的话,nuclei 有现成的模板:nuclei -t http/cves/2021/CVE-2021-29441.yaml -u http://target:8848。或者用 nacos-vuln-scanner 这种小工具,直接跑一遍 /nacos/v1/auth/users 和 /nacos/v1/auth/login,看返回码和内容长度。如果 /nacos/v1/auth/users 返回 200 且 body 里有 username 字段,基本就中了。

防护上,别只改 nacos.core.auth.enabled=true。还要改默认的 nacos.core.auth.default.token.secret.key,这个值在 2.2.0 之前是硬编码的 SecretKey012345678901234567890123456789012345678901234567890123456789,不改的话 JWT 能被伪造。另外,把 Nacos 的 8848 端口限制在内网访问,别暴露到公网。如果非要用公网,前面挂个 Nginx 做 Basic Auth 也比裸奔强。

我自己的习惯是,每次看到 8848 端口开放,先发一个 curl -s http://ip:8848/nacos/v1/auth/users?pageNo=1&pageSize=1,如果返回 { "username":"nacos","password":"$2a$10$..."},就在笔记里记一笔。这个动作花不了两秒钟,但能省掉后面一堆麻烦。

```

Tags:

上一篇:搜狐首页网站首页

下一篇:直播间网站

相关文章

  • 伪装网的使用教案

    百科

    伪装网这东西,看着就是一块破布,用好了能骗过卫星,用砸了连肉眼都瞒不住。我在某次演习中见过最离谱的失误——一个班的战士把伪装网撑得平平整整,像晾床单似的,结果无人机航拍图里,那片矩形阴影比靶标还显眼。 ...

    【百科】

    阅读更多
  • 教育漏洞报告平台邀请码

    百科

    昨天下午三点十七分,我收到一条短信。发件人是个陌生号码,内容只有一行字:“教育漏洞报告平台邀请码:EDU-HOLE-2024-0715,有效期48小时。” 我盯着这串字符看了足足两分钟。第一反应是诈骗 ...

    【百科】

    阅读更多
  • phpinfo如何防止目录遍历

    百科

    phpinfo() 页面本身不提供目录遍历功能。这个函数只是把 PHP 的配置信息、环境变量、模块加载情况一股脑地输出到浏览器上。但问题恰恰出在“一股脑”这三个字上——它泄露的信息量足够一个老练的攻击 ...

    【百科】

    阅读更多


友情链接