首页 公告 项目 RSS

kong未经授权漏洞分析

April 28, 2020 本文有 728 个字 需要花费 2 分钟阅读

简介

什么是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文件

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文件

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:[email protected]: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的界面输入

  • name:任意
  • Kong Admin URL: http://ip:8001

点击创建链接就可以了

防范

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

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

Have Fun