API数据安全研究报告

看了一下中国信通院出的,API数据安全研究报告,有几个点还是可以说下的。

API安全风险分析

一. 外部威胁因素

  • API漏洞导致数据被非法获取
  • API成为外部网络攻击的重要目标
  • 网络爬虫通过API爬取大量数据
  • 合作第三方非常留存接口数据
  • API请求参数易被非常篡改

二.内部脆弱性因素

  • 身份认证机制
  • 访问授权机制
  • 数据脱敏策略
  • 返回数据筛选机制
  • 异常行为监测
  • 特权账号管理
  • 第三方管理

API安全系列——漏洞分析之Facebook OAuth框架漏洞

这个漏洞的公开链接为:https://www.amolbaikar.com/facebook-oauth-framework-vulnerability/

发布时间为2020年3月1日

OAuth基本的认证流程如下图:

OAuth 的流程是, 用户请求facebook资源给B,然后B发起许可,用户同意许可并请求facebook,facebook给了一个token给用户转交给了B,B再去利用这个token去facebook请求资源。 其实最重要的就是那个token。

参考链接:

  1. https://www.freebuf.com/vuls/234519.html
  2. https://wooyun.js.org/drops/OAuth%202.0%E5%AE%89%E5%85%A8%E6%A1%88%E4%BE%8B%E5%9B%9E%E9%A1%BE.html

API安全系列——Astra工具的使用

Astra是2018年黑帽大会上公布的一款工具,专门用于对REST API的渗透测试。

地址:https://github.com/flipkart-incubator/Astra

Astra竟然还是使用的Python2.7,那我就用docker来运行它。

首先,它依赖mango,先把mango跑起来。

$ docker pull mongo
$ docker run --name astra-mongo -d mongo

然后是GUI Astra

$ git clone https://github.com/flipkart-incubator/Astra.git
$ cd Astra
$ docker build -t astra .
$ docker run --rm -it --link astra-mongo:mongo -p 8094:8094 astra

浏览器打开 http://localhost:8094/

在URL中只能填入单个URL,效果如下

Astra 还是命令行模式,支持多个URL扫描,命令如下:

$ git clone -b docker-cli https://github.com/flipkart-incubator/Astra.git
$ cd Astra
$ docker build -t astra-cli .
$ docker run --rm -it --link astra-mongo:mongo astra-cli 

然后可以使用python astra.py 来使用

$ python astra.py --help

                      _
        /\       | |
       /  \   ___| |_ _ __ __ _
      / /\ \ / __| __| '__/ _` |
     / ____ \__ \ |_| | | (_| |
    /_/    \_\___/\__|_|  \__,_|



usage: astra.py [-h] [-c {Postman,Swagger}] [-n COLLECTION_NAME] [-u URL]
                [-headers HEADERS] [-method {GET,POST}] [-b BODY]
                [-l LOGINURL] [-H LOGINHEADERS] [-d LOGINDATA]

REST API Security testing Framework

optional arguments:
  -h, --help            show this help message and exit
  -c {Postman,Swagger}, --collection_type {Postman,Swagger}
                        Type of API collection
  -n COLLECTION_NAME, --collection_name COLLECTION_NAME
                        Type of API collection
  -u URL, --url URL     URL of target API
  -headers HEADERS, --headers HEADERS
                        Custom headers.Example: {"token" : "123"}
  -method {GET,POST}, --method {GET,POST}
                        HTTP request method
  -b BODY, --body BODY  Request body of API
  -l LOGINURL, --loginurl LOGINURL
                        URL of login API
  -H LOGINHEADERS, --loginheaders LOGINHEADERS
                        Headers should be in a dictionary format. Example:
                        {"accesstoken" : "axzvbqdadf"}
  -d LOGINDATA, --logindata LOGINDATA
                        login data of API

API安全系列——SoapUI和Burp的联动使用

soapUI的下载: https://www.soapui.org/

SoapUI的优势主要是安全扫描的功能,burp用于手工测试,所以他们是可以很好的联动的。

第一步,代理设置。

burp充当代理服务器,把请求发给soapUI。所以burp是soapUI和目标服务器中间转发。

设置burp的代理

soapUI的代理设置

我们还可以使用SOAPUI的pro版本——ReadAPI进行测试。

创建项目:

随便找一个文件来测试:

看看单个请求:

可以看到,这是在测试XSS




运行中,完毕之后可以在View Summary Report中查看报告。

可以在Transaction log中看到具体一次请求的所有参数。

报告内容