kong未经授权漏洞分析

简介

什么是kong,Kong是一个开源的api网关,其实我很早就开始使用了,最主要原因是因为可以加一个web界面方便去管理各个服务,添加插件也很方便,但是个人一直很不喜欢这个东西,没有原因,就是不喜欢,默认搭建的时候kong建议开4个端口

  • 8000
  • 8443
  • 8001
  • 8444

8000是代理http流量的,8443是用来代理https端口的,8001是管理restful接口走http协议,8444是管理restful接口走https协议,因为8001和8444直接访问时不需要任何验证的,所以只要端口对公网开放,理论上所有人都可以接管你的kong

漏洞利用

这里我们直接使用docker启动一个kong的web管理界面konga就可以了

首先搭建一个postgresql

postgres的docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: "3"
services:
kong-postgres:
image: "postgres:9.5"
container_name: "kong-postgres"
restart: "always"
environment:
- "POSTGRES_PASSWORD=changeme"
- "POSTGRES_USER=konga"
- "POSTGRES_DB=konga"
ports:
- "5432:5432"
volumes:
- "./kong-postgres-data/:/var/lib/postgresql/data"
healthcheck:
test: ["CMD", "pg_isready", "-U", "kong"]
interval: 30s
timeout: 30s
retries: 3

之后使用docker-compose启动

docker-compose up -d

接着是konga的docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3"
services:
konga:
image: "pantsel/konga:latest"
container_name: "konga"
restart: "always"
ports:
- "1337:1337"
environment:
- "DB_ADAPTER=postgres"
- "DB_HOST=192.168.3.14"
- "DB_USER=konga"
- "DB_PASSWORD=changeme"
- "DB_DATABASE=konga"
- "TOKEN_SECRET=changeme"
- "NODE_ENV=production"

根据你的网络环境修改一下DB_HOST

之后使用docker-compose启动konga

启动完成之后进入容器prepare一下数据库

docker exec -it konga bash

node ./bin/konga.js prepare --adapter postgres --uri postgresql://konga:changeme@192.168.3.14:5432/konga

prepare完成之后重启konga

docker-compose down && docker-compose up -d

接着访问konga的界面

127.0.0.1:1337

创建用户名密码

登陆

之后就是要找目标了

找暴露在公网的8001端口

这里我推荐使用shadon

https://www.shodan.io

登陆shadon之后

直接在输入框中输入

kong port:"8001" country:"CN"

选择一个ip在konga的界面输入

点击创建链接就可以了

防范

这个很简单,只要别让8001和8444端口暴露在公网中就好了

欢迎关注Bboysoul的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道