Skip to content
Aur0ra edited this page Mar 10, 2023 · 1 revision

APIKiller 食用宝典

》》》 如果能结合企业内部以往case进行自定义的配置,效果将会更nice 《《《

基础环境配置

数据库环境配置(我个人采用的是docker)

  1. docker pull 数据库镜像
    sudo docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306  mysql:5.7
  2. 导入apikiller.sql文件
    sudo docker cp /tmp/apikiller.sql bteye-mysql:/tmp/apikiller.sql
  3. 登入mysql
    docker exec -it mysql-server mysql -uroot -p123456
    source /tmp/apikiller.sql
  4. 【重点】在 config.yaml 中进行相关配置 img.png

项目配置

数据源配置

目前只支持端口实时流量监听,以及Burpsuite历史流量

端口实时流量

如果是想处理https流量,需要先将根目录下的ca.crt证书导入到系统根目录

  1. 在config.yaml 中配置好监听ip以及端口即可 img_3.png

Burpsuite历史流量

  1. 项目通过命令行启动时通过-f来指定burpsuite历史流量文件
go run ./main.go -f "~/Desktop/xx.txt"

流量过滤配置

通过配置可以基于内置filter模块,过滤指定文件

httpFilter

目前只针对host进行过滤,默认无配置时,处理所有流量,配置了以后将会过滤除配置外的其他流量,例如默认只会处理host为127.0.0.1的流量

img_4.png

staticFileFilter

通过配置,从后缀维度过滤掉指定静态文件,被过滤的文件将不进入后续处理模块

img_5.png

duplicateFilter

无需配置,默认会对当前上下文已经处理过的流量进行过滤,被过滤的流量将无法进行后续处理过程

运营平台配置

  1. 直接在config.yaml中配置好监听ip_port即可
    img_1.png
  2. 然后项目启动时,通过-web选项启用运营平台
go run ./main.go -web

通知服务配置

  1. 在config.yaml填写好任意一种即可,目前只支持单一方式,如果配置了lark&dingding,默认启用第一个
    img_2.png
  2. 如果是Lark,可以通过配置secret配置进行token校验

核心扫描引擎配置

所有模块必须在项目配置子模块根路径下配置option为1才会启动,否则模块不被启动

越权检测模块

img_6.png

  1. 首先配置option为1,后续才会启动越权检测模块
  2. 通过authHeader指定鉴权头,一般是cookie,也有可能是自定义的鉴权请求头
  3. 通过roles设定不同权限的鉴权头数据,例如:对admin流量进项扫描时,可以指定一个低权限的账号role来进行逻辑处理,从而判断越权状态
  4. 可以通过设置判断引擎,来通过status_code或者body中的关键黑名单,来代表接口请求鉴权失败

40x bypass检测

img_7.png

  1. 首先配置option为1
  2. 和越权检测模块中设置类似,设置status_code或者body来代表接口鉴权失败的标志
  3. 如果项目是有不同版本的话,请根据样例进行apiVersion配置

CSRF检测模块

img_8.png

  1. 首先配置option为1
  2. 配置CSRF网关csrf-token的参数名
  3. 配置CSRF网关校验失败返回的标志

DoS检测模块

img_9.png

  1. 首先配置option为1
  2. 配置数据查询时,查询量大小控制参数,例如size、num等

开放重定向检测模块

img_10.png

  1. 首先配置option为1
  2. 配置企业内部常见的跳转参数
  3. 配置跳转失败的标志

接口运营平台

  1. 直接访问web服务端口,即可获取检测历史 img_12.png
  2. 通过最右侧的开关,即可完成接口运营工作

注意

  1. 项目配置时请遵照已有格式,注意int型和string型
  2. 如果项目启动出现报错,请查看 Q&A ,如果还是没能解决,欢迎加主页wx进行反馈