未授权漏洞利用总结List

# 未授权漏洞利用总结List
### 一、Nacos未授权访问漏洞
### Nacos简介
Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

### 漏洞危害
Nacos官方仓库的issue中披露了Nacos存在一个由于不当处理User-Agent导致的鉴权绕过漏洞,通过该漏洞,攻击者可以进行任意操作,包括创建新用户并进行登录后操作。 影响版本: Nacos <= 2.0.0-ALPHA.1

### 漏洞检测方法
访问用户列表接口 http://ip:8848/nacos/v1/auth/users/?pageNo=1&pageSize=9

详细请参照:

[Nacos未授权漏洞验证](https://txnbzwmryle.feishu.cn/wiki/FWQywYV1EitL05kZQVgcS1zgnxc)



### 修复建议
升级到新版本。

### 二、Docker未授权访问漏洞
### 漏洞简介
Docker remote api主要的目的是取代命令行界面,docker client和docker daemon通过unix domain socket进行通信,默认情况下,只有本机的root和docker组用户才能操作docker。

由于docker安装后是默认不允许远程访问的,但是可以使用docker\_remote\_api开启dcoker远程访问,虽然这样可以远程访问了,但是直接暴露在公网上的2375端口是非常危险的,导致所有人都可以远程操作这台主机上的Docker。

### 漏洞危害
Docker的2375端口是docker remote API的默认端口,一般是不使用的(不占用)。开启2375端口即可远程访问可以任意执行Docker命令了。可以操作Docker的容器。如果网站部署在了Docker容器里面的话,可以进入攻击。

### 检测方式
进行端口扫描查看是否开放2375端口,并且访问ip:2375/version :

详细请参照:

[Docker未授权访问漏洞验证](https://txnbzwmryle.feishu.cn/wiki/LZfOwesuAifMcKksQ9PcGXkGnhc)



### 漏洞修复与总结
```javascript
关闭2375端口 (尤其是公网情况下一定要禁用此端口)
在防火墙上配置禁止外网访问2375端口
Docker是以root权限运行的,这是所有姿势的前提
Docker在运行一个容器的时候可以将宿主机上的一个目录挂载到容器内的一个目录,来进行docker逃逸, 还可以通过crontab写计划任务反弹shell。
```
### 三、Redis 4.x/5.x 未授权访问漏洞
### Redis未授权访问漏洞原理
  Redis 默认情况下会绑定在 服务器6379端口,如果没有进行采用相关的策略,将 Redis 服务暴露到公网上,在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized\_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

验证方法及过程请参照:

[Redis 4.x/5.x 未授权访问漏洞验证及防御方法](https://txnbzwmryle.feishu.cn/wiki/BXaqwEVWEicFOCk35itc7ydaneb)

### Redis安全配置思路
```javascript
禁止root用户启动Redis
限制redis文件目录访问权限
开启redis密码,并设置高复杂度密码
禁用或重命名危险命令,如config/save两个命令
配置redis仅监听在本地或具体IP
修改默认6379端口
打开保护模式
```
### 四、Elasticsearch未授权访问漏洞
### Elasticsearch简介
Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

### 攻击方法
```javascript
/_plugin/head/ web管理界面
/_cat/indices
/_river/_search 查看数据库敏感信息
/_nodes 查看节点数据
/_search?pretty=true 查询所有的index ,意思差不多就是数据库里的database
```
如果想要查看某个index下面的数据则访问:index

```javascript
/_search?pretty=true
```
![image](d5fea395-571f-45e2-9aed-5135440d8142_files/0.32267541360273594.png)

### 修复方案
1.关闭9200端口

2.防火墙上设置禁止外网访问此端口

### 五、ZooKeeper未授权访问漏洞
### 漏洞简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

### 漏洞危害
zookeeper 未授权访问是指安装部署之后默认情况下不需要任何身份验证,从而导致 zookeeper 被远程利用,导致大量服务级别的信息泄露。

攻击方法:

```javascript
默认使用端口:2181、2182。
fofa语法:protocol="Zookeeper" && port="2181" && banner="version"
```
常用命令:

```javascript
echo conf | nc xx.xx.xx.xx 2181 输出相关服务配置的详细信息,端口、数据路径、日志路径、session 超时时间,最大连接数等。
echo envi | nc xx.xx.xx.xx 2181 输出服务器的详细信息。
echo dump | nc xx.xx.xx.xx 2181 | more 输出未处理的会话和临时节点,leader 节点有效。
echo cons | nc xx.xx.xx.xx 2181 | more 列出所有连接到当前服务器的客户端/会话的详细信息。
```
也可以使用

```javascript
apt-get install zookeeper
```
下载客户端连接工具进行连接。

### 漏洞修复
```javascript
禁止把Zookeeper直接暴露在公网。
添加访问控制,根据情况选择对应方式(认证用户,用户名密码)
zookeeper有三个端口(可以修改),默认端口作用:
2181:对cline端提供服务 3888:选举leader使用 2888:集群内机器通讯使用(Leader监听此端口)
```
### 六、Swagger-ui未授权访问漏洞
### 漏洞简介
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,JAVA在金融机构开发语言的地位一直居高不下,而作为JAVA届服务端的大一统框架Spring,便将Swagger规范纳入自身的标准,建立了Spring-swagger项目,所以在实际测试环境中,基于spring框架的swagger-ui接口展示及调试文档页面最为常见。

### 漏洞危害
可以通过翻查SWAGER UI文档,得到api接口,点击parameters,即可得到该api接口的详细参数。直接构造参数发包,可以实现用户密码修改,文件上传,信息泄露等危害。

### 攻击方法
将以下常见目录加入扫描字典:

```javascript
/api
/api-docs
/api-docs/swagger.json
/api.html
/api/api-docs
/api/apidocs
/api/doc
/api/swagger
/api/swagger-ui
/api/swagger-ui.html
/api/swagger-ui.html/
/api/swagger-ui.json
/api/swagger.json
/api/swagger/
/api/swagger/ui
/api/swagger/ui/
/api/swaggerui
/api/swaggerui/
/api/v1/
/api/v1/api-docs
/api/v1/apidocs
/api/v1/swagger
/api/v1/swagger-ui
/api/v1/swagger-ui.html
/api/v1/swagger-ui.json
/api/v1/swagger.json
/api/v1/swagger/
/api/v2
/api/v2/api-docs
/api/v2/apidocs
/api/v2/swagger
/api/v2/swagger-ui
/api/v2/swagger-ui.html
/api/v2/swagger-ui.json
/api/v2/swagger.json
/api/v2/swagger/
/api/v3
/apidocs
/apidocs/swagger.json
/doc.html
/docs/
/druid/index.html
/graphql
/libs/swaggerui
/libs/swaggerui/
/spring-security-oauth-resource/swagger-ui.html
/spring-security-rest/api/swagger-ui.html
/sw/swagger-ui.html
/swagger
/swagger-resources
/swagger-resources/configuration/security
/swagger-resources/configuration/security/
/swagger-resources/configuration/ui
/swagger-resources/configuration/ui/
/swagger-ui
/swagger-ui.html
/swagger-ui.html# /api-memory-controller
/swagger-ui.html/
/swagger-ui.json
/swagger-ui/swagger.json
/swagger.json
/swagger.yml
/swagger/
/swagger/index.html
/swagger/static/index.html
/swagger/swagger-ui.html
/swagger/ui/
/Swagger/ui/index
/swagger/ui/index
/swagger/v1/swagger.json
/swagger/v2/swagger.json
/template/swagger-ui.html
/user/swagger-ui.html
/user/swagger-ui.html/
/v1.x/swagger-ui.html
/v1/api-docs
/v1/swagger.json
/v2/api-docs
/v3/api-docs
```
谷歌语法:

```javascript
inurl: /api/swagger-ui.html
```
### 七、springboot未授权访问漏洞
### 1、漏洞简介
开发人员没有意识到地址泄漏会导致安全隐患或者开发环境切换为线上生产环境时,相关人员没有更改配置文件。

### 2、攻击方式
将以下目录加入字典:

```javascript
/actuator/auditevents
/actuator/beans
/actuator/health
/actuator/conditions
/actuator/configprops
/actuator/env
/actuator/info
/actuator/loggers
/actuator/heapdump
/actuator/threaddump
/actuator/metrics
/actuator/scheduledtasks
/actuator/httptrace
/actuator/mappings
/actuator/jolokia
/actuator/hystrix.stream
```
**3、详细解释**

```javascript
/env、/actuator/envGET 
#请求 /env 会直接泄露环境变量、内网地址、配置中的用户名等信息;当程序员的属性名命名不规范,例如 password 写成 psasword、pwd 时,会泄露密码明文;同时有一定概率可以通过 POST 请求 /env 接口设置一些属性,间接触发相关 RCE 漏洞;同时有概率获得星号遮掩的密码、密钥等重要隐私信息的明文。

./refresh、/actuator/refreshPOST 
#请求 /env 接口设置属性后,可同时配合 POST 请求 /refresh 接口刷新属性变量来触发相关 RCE 漏洞。

./restart、/actuator/restart
#暴露出此接口的情况较少;可以配合 POST请求 /env 接口设置属性后,再 POST 请求 /restart 接口重启应用来触发相关 RCE 漏洞。

./jolokia、/actuator/jolokia
#可以通过 /jolokia/list 接口寻找可以利用的 MBean,间接触发相关 RCE 漏洞、获得星号遮掩的重要隐私信息的明文等。

./trace、/actuator/httptrace
#一些 http 请求包访问跟踪信息,有可能在其中发现内网应用系统的一些请求信息详情;以及有效用户或管理员的 cookie、jwt token 等信息。

./actuator/heapdump 
#可以转储用来获取数据库密码
```
参考:springboot相关漏洞利用方式:

fofa语法:

```javascript
body="Whitelabel"
```
例如对/actuator/heapdump 下载的文件进行密码抓取可以下载 [https://www.eclipse.org/mat/downloads.php](https://www.eclipse.org/mat/downloads.php) 使用 Eclipse Memory Analyzer 工具的 OQL 语句进行查询

查询语句:

```javascript
select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))
```
![image](d5fea395-571f-45e2-9aed-5135440d8142_files/0.35843103893480943.png)

### 4、修复建议
在使用Actuator时,不正确的使用或者一些不经意的疏忽,就会造成严重的信息泄露等安全隐患。在代码审计时如果是springboot项目并且遇到actuator依赖,则有必要对安全依赖及配置进行复查。也可作为一条规则添加到黑盒扫描器中进一步把控。安全的做法是一定要引入security依赖,打开安全限制并进行身份验证。同时设置单独的Actuator管理端口并配置不对外网开放。