Nacos2.4.3新版漏洞利用方式总结
tj 发表于 重庆 漏洞分析 1618浏览 · 2024-11-21 07:11

filter分析寻找未授权接口

HttpRequestContextFilter 获取请求头信息,
AuthFilter 获取uri,token,权限控制
ParamCheckerFilter 处理参数,过滤恶意字符

AuthFilter,
请求头如果存在jwt秘钥,那么就进入下个filter,

如果配置了nacos.core.auth.enable.userAgentAuthWhite=true,那么利用伪造userAgent就进入下个filter,

然后获取uri从map中匹配是否存在相应路径,如果map中没有匹配到路径,那么就进行进入下个filter,

如果在map中匹配到路径,就会根据Secured注解去判断是否需要获取token去验证身份,
如果没有Secured注解,就直接进入下一个filter,

如果Secured注解需要验证,就会获取ip和accessToken,

然后用jwt秘钥解密,解密失败则报错退出,

解密正确则进入下一个filter,

ParamCheckerFilter,
会通过Extractor注解去得到需要被检测的参数,
然后使用checkParamInfoList去检测参数是否符合要求,

或者

那么需要满足以下三个条件,就能找到未授权sql注入:
1.查找没有被Secured注解的路由,
2.Extractor注解时,是否存在一些参数没有被获取检测,
3.参数执行相应的sql语句,就可能存在sql注入,
但是后面发现都是预编译处理sql的,因此未授权sql注入这条路就利用不了了,

这里刚好存在接口/nacos/v1/ns/instance/statuses?key=DEFAULT_GROUP@@1',
并且Extractor注解也并没有获取key,因此key就绕过了检测,不过key带入进去后,并没有执行相应的sql语句,因此此接口也利用不了,

以下是一些存在信息的未授权接口,

http://192.168.91.1:8848/nacos/v1/console/namespaces
http://192.168.91.1:8848/nacos/v1/console/namespaces?show=all&namespaceId=
http://192.168.91.1:8848/nacos/v2/ns/operator/switches
http://192.168.91.1:8848/nacos/v2/ns/operator/metrics?onlyStatus=false
http://192.168.91.1:8848/nacos/v1/ns/health/checkers
更改日志级别
http://192.168.91.1:8848/nacos/v1/ns/ops/log    Put logName=naming-push&logLevel=INFO

CVE-2021-29442 可能被利用

设置了nacos.config.derby.ops.enabled=true,
那么就可以调用derby的sql语句,不过只能使用select开头的语句,

利用此接口进行条件竞争文件上传,然后使用select加载恶意包达到命令执行,

总结新版漏洞利用方式

1.新版本依然是默认没有开启鉴权,需要用户开启,不开启则存在未授权
2.如果设置了nacos.core.auth.enable.userAgentAuthWhite=true,可以有useragent绕过权限认证
3.可以利用CVE-2021-29442后台getshell,条件是使用derby数据库,设置了nacos.config.derby.ops.enabled=true
4.存在一些无关紧要的未授权接口

0 条评论
某人
表情
可输入 255