当前位置: 首页 > news >正文

Nacos配置文件攻防思路总结|揭秘Nacos被低估的攻击面|挖洞技巧

0x01 前言 

当渗透测试遇到成百上千的Nacos节点,你会怎么做?99%的人只会盯着RCE漏洞,却忽略了真正的漏洞利用点——配置文件!笔者亲历证明:集群环境下配置分析的漏洞深度利用危害极高。本文揭秘如何利用JWT弱密钥漏洞全量导出配置,并通过正则引擎快速提炼关键攻击要素,打造高阶渗透链路。

图片

参考文章:

Top18漏洞知识库-SRC技巧库、工具库

Nacos综合漏洞利用工具合集

0x02 漏洞详情

内网渗透测试中,发现大量Nacos实例,但相关研究资料多集中于Nacos自身漏洞(如RCE等),鲜少涉及其他利用思路。目前Nacos漏洞有:

Nacos Console 默认口令漏洞
Nacos Derby SQL 注入漏洞
Nacos 未授权访问漏洞
Nacos User-Agent 权限绕过漏洞
Nacos serverIdentity 权限绕过漏洞
Nacos token.secret.key 默认配置漏洞 
Nacos-Client Yaml 反序列化漏洞
Nacos Jraft Hessian 反序列化漏洞 
Nacos Jraft 任意文件读写 

这些漏洞可以利用Nacos综合漏洞利用工具V7.8一键检测

 点击下载Nacos综合漏洞利用工具合集

图片

效果如下:

图片

User-Agent权限绕过(CVE-2021-29441)

直接访问下面的目录,可以未授权查看到账号密码

/v1/auth/users?pageNo=1&pageSize=100  //可查看到用户列表

图片

可以看下里面的账号密码,很多情况下账号密码都是这个暴露出来的username

图片

图片

添加用户,访问下面的接口

/v1/auth/users  //添加用户
username=hhh&password=123456
User-Agent:Nacos-Server

图片

    //查看用户是否添加成功:
    /v1/auth/search?username=hhh
    curl 'http://IP/v1/auth/search?username=hhh'
    curl -X DELETE "http://IP/v1/auth/users?username=hhh"
    //删除用户
    

    图片

    然后还可以使用我前面介绍的工具哈,直接就可以进行创建用户和删除用户的操作,十分简单便捷,适用于大批量IP渗透测试

    图片

    默认弱口令漏洞

    nacos框架的默认弱口令直接使用工具刚才检索出来了,直接常用的nacos:nacos登录成功

    图片

    阿里云主机泄露Access Key

    然后你可以直接在配置列表中的详情里面查看网站的配置信息,然后去挨个找,因为里面都是云安全的一些环境的配置,里面经常会泄露一些云安全的信息key值等,都是可以进行利用的

    图片

    比如说里面找到OSS储存桶相关的,然后访问下,尝试打个OSS存储桶漏洞,感兴趣的师傅们可以根据我的这个思路进行测试下

    图片

    后来我在rokid-ar-security-platform-biz-prod.yml配置详情里面找到了这个东西,这个也是OSS储存桶相关的漏洞,下面的url可以访问下,然后要是有回显的话,然后尝试使用下面的access-key和secret-key进行密钥登录

    endpoint: xxxxxxxxxxxxxxx
    access-key: xxxxxxxxxxxxxxxxxxxxxxxx
    secret-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxx

    图片

    可以看到这里我直接就登录成功了,且里面都是云空间里面的存储东西,下面可以看到里面的日志信息等

    图片

    图片

    有一些他里面你要是没有找到那个访问的url或者访问不了禁止访问登录连接,那么师傅们可以尝试下下面的这个工具oss-browser,就是专门来连接OSS的

    https://github.com/aliyun/oss-browser

    图片

    直接输入泄露的access-key值,直接使用OSS连接工具就可以直接连接成功了

    图片

    包括也会使用阿里云的下面的这个连接工具:aliyun-accesskey-Tools

    https://github.com/mrknow001/aliyun-accesskey-Tools

    图片

    要是运气好的话们,也就是我们上面的那个直接找到了下面的OSS阿里云主机登录的后台地址,且允许我们直接拿泄露Access Key值进行登录连接,直接可以看到改阿里云服务器云上的所有信息了

    图片

    token.secret.key默认配置(QVD-2023-6271)

    利用刚才的图形化nacos自动化漏洞扫描工具扫出来的一个token.secret.key默认配置(QVD-2023-6271)漏洞,下面就来打下这个洞

    图片

    使用nacos默认key可进行jwt构造

    nacos默认key

    token.secret.key值的位置在conf下的application.properties

    SecretKey012345678901234567890123456789012345678901234567890123456789
    JWT DATA:
    {"sub": "nacos","exp": 1682308800
    }

    SecretKey012345678901234567890123456789012345678901234567890123456789利用该key构造JWT,可以直接进入后台。
    在:https://jwt.io/

    payload:{"sub": "nacos","exp": 1721781819
    }
    //1721781819是unix的时间戳 需要比系统晚  一般可以改成明天的时间

    图片

      eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyMTc4MTgxOX0.ltShA79EVJaJmhD0zYxtwsx_4K8erjXsorZ5T3RrARw

      我们先直接随便输入一个账号密码,然后看看登录失败的返回包

      图片

      然后把下面的payload复制到数据包中,就可以成功了​​​​​​​

      payload:
      Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyMTc4MTgxOX0.ltShA79EVJaJmhD0zYxtwsx_4K8erjXsorZ5T3RrARw
      

      图片

      然后再把返回包复制,再利用刚才的网站登录抓包,然后修改返回包,然后放包,就可以直接登录到网站后台了

      图片

      Spring-Boot漏洞

      对于Spring-Boot漏洞,我们可以使用Spring-Boot-Scan漏洞扫描工具

      图片

      图片

      然后进入后台里面有spring-boot相关源代码,都是可以进行分析的,感兴趣的十分可以尝试下

      图片

      以上是一些nacos常见的通用漏洞

      但针对配置文件的拓展利用研究明显不足。实际测试发现,面对大量Nacos资产时,配置分析的重要性不输RCE。基于此,笔者编写了自动化脚本,可以利用nacos jwt弱密钥漏洞获取所有namespace配置文件,通过正则提取关键信息以供后续利用。(脚本获取方式在文末)

      打法思路概述

      根据笔者遇到的情况,通过nacos配置文件延伸出来的打法,主要有以下几条,供大家参考:

      1. 查找数据库账密,尤其是redis、postgresql这类能拿shell的-->横向/敏感数据

      2. 查找xxl-job账密-->拿业务系统服务器/横向

      3. 查找jwt key,伪造token登录-->减少爆破/进业务系统(但是个人感觉并不是很好伪造)

      4. 查找AK/SK-->存储桶接管/云主机接管

      5. 查找企微corpid和corpsecret-->获取员工信息/了解企业架构/接管企微应用/钓鱼

      6. 查找邮箱信息-->写到Nacos配置里的一般都是公共邮箱,可以查找邮件来往中的账密信息-->登录业务系统,还有就是利用公共邮箱来钓鱼

      当然了站在甲方的立场,也可以是根据以上的攻击路径,来证明该资产的危害,加强领导的重视,促进业务方的整改(手动狗头)。

      1、2两条没什么可说的,找到账密后都是比较常规的操作,就不演示了。
      下面说一下实际环境中遇到3/4/5/6这4条路径的一些操作,以供师傅们参考。若有不对的地方,该请见谅并指正!

      企微corpid和corpsecret-人员信息&钓鱼

      这块利用思路的话,主要有:​​​​​​​

      1、查找部门、人员信息2、创建企微成员,然后钓鱼(创建成员需要通讯录权限,笔者很少遇到)3、没有权限创建成员的话,利用企微应用发消息钓鱼;(划重点)

      基础信息获取

      获取企微access_token

      https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=SafetyCockpit03&corpsecret=SafetyCockpit03

      图片

      先查看access_token权限

      https://open.work.weixin.qq.com/devtool/query

      图片

      获取企业微信API域名IP段

      https://qyapi.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=SafetyCockpit03

      图片

      获取部门列表

      https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=SafetyCockpit03

      图片

      获取部门成员/详情

      https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=SafetyCockpit03&department_id=SafetyCockpit03&&fetch_child=1

      我这里尝试,未带&&fetch_child=1如果只出来的一条信息,那么一般就是部门老大的信息(划重点,大鱼,只要你敢钓(狗头保命)):

      图片


      而带&&fetch_child=1遍历的话,就是全部门的人员信息

      图片

      获取加入企业二维码/创建成员

      https://qyapi.weixin.qq.com/cgi-bin/corp/get_join_qrcode?access_token=SafetyCockpit03

      拿到secret当然是直接添加成员到企微,然后进行后续操作比如钓鱼的话方便一点。
      但有时候我们拿到的key可能没有那么大的权限,如图,在获取加入企业微信二维码和创建成员的时候,并没有权限:
      获取加入企业二维码:错误码48002
       

      图片


      创建成员:错误码48002

      图片


      错误码48002解释:API接口无权限调用
       

      图片


      这个时候没法加入企微,除了得到一些人员信息,还能怎么利用呢?
      答案是我们可以接管企微应用,利用企微应用钓鱼。

      接管高权限应用

      如图,查询access_token的时候,可以查到应用的AgentId,这个发送消息会用到。

      https://developer.work.weixin.qq.com/devtool/query

      图片

      然后在

      https://developer.work.weixin.qq.com/resource/devtool 

      工具里,发送应用消息
       

      图片


      或者直接掏出数据包发送:

      POST /cgi-bin/message/send?access_token=SafetyCockpit03 HTTP/1.1
      Host: qyapi.weixin.qq.com
      Content-Type: application/json
      {"touser": "SafetyCockpit03", #一般是工号,结合上面获得的基础信息"toparty": "@all","totag": "@all","msgtype" : "news","agentid" : 1000xxx, #上面查出来的应用的AgentId"news" : {"articles" : [{"title" : "中秋节礼品领取","description" : "今年中秋节公司有豪礼相送","url" : "钓鱼链接","picurl" : "展示的图片链接","appid": "","pagepath": ""}]},"enable_id_trans": 0,"enable_duplicate_check": 0,"duplicate_check_interval": 1800
      }

      测试效果图:

      图片

      点进去后:

      图片

      更多应用消息发送方式见官方文档,但是一般来讲上面提供的图文消息就够用了。

      邮箱-敏感信息&JWT伪造&钓鱼

      这块利用思路的话:主要有:​​​​​​​

      1、钓鱼;因为nacos配置文件中的邮箱,一般都是一些公共邮箱,非常适合拿来钓鱼;2、查找账密信息;理由如上;3、结合第二条,进行JWT伪造,接管高权限账号;

      具体思路操作如下:
      比如打进去的公司邮箱域名为@xxx.com,那么就可以先搜索mail、mail.xxx.com,看有无网页登录邮箱的口子,要不然拿到账密后续也难利用。
      如图,这里通过搜索mail.xxx.com,找到两个域名:​​​​​​​

      email.xxx.comszmail.xxx.com

      经确认第一个outlook的登录页面,第二个是coremail的登录页面
       

      图片


      然后就是搜索关键字,比如:邮箱,@xxx.com
       

      图片


      最终找到N个公共邮箱系统,登录其中一个,是个核心公共邮箱,好几万封邮件:
       

      图片


      还可以搜索关键字,比如账号、开通、激活、经理……
      这里搜索出来一些最近的账号开通信息:
       

      图片


      很贴心,账密系统URL都在里面:
       

      图片


      成功拿邮件里的账密成功登录到某系统,但就是个普通用户:
       

      图片


      F12查看该系统的验证方式,发现是JWT
       

      图片


      复制到jwt.io看下信息:发现算法是HS256对称加密算法,可以在配置文件找找秘钥,看能否伪造管理员的token。
      不过看着data部分的rnStr字段,有种不妙的感觉。
       

      图片


      这里运气挺好,根据关键字找到了jwt key:
       

      图片


      拿爆破脚本验证下该key是不是正确的:
       

      图片


      也可以直接在jwt.io验证,具体方式看图,稍微有点绕:
       

      图片


      先改变一下userid,从原来的4087变成4086,测试下是否可以伪造。
      改变后发现直接提示401,感觉和上面提到的rnStr字段有关,试了删除了也不行,最终尝试无果,只能从其他地方找突破了。
       

      图片


      其他思路再有就是钓鱼了,因为本身就是公共账号,所以具有公信力,直接根据来往邮件信息,准备好话术开钓即可。

      AK/SK-敏感信息&云主机接管

      这块可以网上找找更加详细的利用方式。
      但是需要注意的是,前期最好不要使用开源的云环境利用框架工具,因为大部分厂商都是有安全监测的,这里以阿里云为例:

      图片

      所以建议先使用官方提供的工具看看存储桶有无敏感信息,没有敏感信息的话再用开源工具进行利用也不迟,以免浪费辛辛苦苦搜集到的key。
      阿里云官方工具下载链接:

      https://gosspublic.alicdn.com/ossbrowser/1.18.0/oss-browser-win32-x64.zip

      图片


      腾讯云的话,可以直接使用在线环境:​​​​​​​

      https://cosbrowser.cloud.tencent.com/loginhttps://cos.cloud.tencent.com/tools/cosbrowser

      图片


      AWS官方工具下载链接:

      https://s3browser.com/download/s3browser-11-7-5.exe

      巨多资料:

      图片

      如何防护

      写了这么多利用方式,站在甲方角度的话,该如何防护呢?​​​​​​​

      1、常规漏洞的话,根据官方修复建议修复即可;2、配置文件的话,建议开发在写的时候,能加密的尽量加密,可以参考官方文档:https://nacos.io/docs/v2/plugin/config-encryption-plugin/

      效果图:

      图片

      脚本及Nacos综合漏洞检测工具下载​​​​​​​

      getNacosConfig:https://pan.quark.cn/s/3afea548a79c
      SpringBoot-Scan-2.6:https://pan.quark.cn/s/d2f807f08df2
      Nacos综合漏洞检测工具V7.8:https://t.zsxq.com/iqp6o

      0x03 总结

      相比RCE漏洞,Nacos配置文件的敏感信息泄露可能带来更大的危害,比如数据库账密、AK/SK泄露,甚至企微接管。本文基于实战经验,总结Nacos配置文件利用的多种打法,从查找敏感信息到伪造JWT、钓鱼攻击,覆盖攻防全链路。无论是红队挖掘漏洞,还是蓝队加固防护,这篇干货都能为你提供新思路。喜欢的师傅可以点赞转发支持一下谢谢!

      http://www.dtcms.com/a/363994.html

      相关文章:

    • Python 基础核心概念与实战代码示例(含数据类型、变量、流程控制、数据结构、函数与文件操作)
    • # Shell 文本处理三剑客:awk、sed 与常用小工具详解
    • 如何修改 Docker 默认网段(网络地址池)配置:以使用 10.x.x.x 网段为例
    • 2024 年 AI 产业格局复盘:头部企业竞逐方向与中小玩家生存破局点
    • 跨境电商账号风控核心:IP纯净度与浏览器指纹的防护策略
    • 基于单片机车流车速检测系统设计
    • 90%的C++ 程序员都忽略了这个容器——unordered_multiset,让我们来看看开源项目中怎么使用的
    • 最小二乘法之线性回归篇(普通最小二乘OLS、加权最小二乘WLS、广义最小二乘GLS)-原理讲解
    • 毕业项目推荐:69-基于yolov8/yolov5/yolo11的轴承缺陷检测识别系统(Python+卷积神经网络)
    • Python入门教程之类型转换
    • 【 HarmonyOS 6 】HarmonyOS智能体开发实战:Function组件和智能体创建
    • 博客系统的测试
    • Shell脚本一键监控平台到期时间并钉钉告警推送指定人
    • 黑马头条面试重点业务
    • 如何避免研发文档命名混乱导致难以检索
    • 我们正在成为机械半类人你信吗?
    • Photoshop - Ps 处理图层
    • 数字社会学必读书目推荐!唐兴通20年数字社会学探索思想之旅再回顾人工智能社会学AI社会学下新秩序
    • 计算机保研机试准备——C++算法题(二)
    • 嵌入式学习 day62 SPI子系统、adxl345驱动、驱动回顾
    • 依托深兰科技AI技术生态,深兰教育携手沪上高校企业启动就业科创营
    • CRM数据暴风升级!3步将DataEase可视化神技嵌入Cordys,销售分析直接开挂!
    • 如何解决pip安装报错ModuleNotFoundError: No module named ‘flake8’问题
    • 【Vue2 ✨】Vue2 入门之旅(十):Vuex 入门
    • 【机器学习学习笔记】Matplotlib 基本操作
    • 论文解读:基于 77 GHz FMCW 毫米波雷达的舱内占位检测
    • HDI是什么?与普通线路板有何区别?优势在哪?
    • java面试中经常会问到的多线程问题有哪些(基础版)
    • 宋红康 JVM 笔记 Day10|对象实例化
    • 2025全球绿色发展与健康生活方式高峰论坛 推动HLCC国际认证体系全球化实施