8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png
Astra:针对REST API的自动化安全测试工具
aiyun 2020-5-13

1.png 

REST即表述性状态传递(英文:Representational State Transfer,简称REST)是一套新兴的WEB通讯协议,访问方式和普通的HTTP类似,平台接口分GET和POST两种请求方式。

针对REST API的渗透测试非常的复杂,因为已有的API会不断更新和变化,而且不断增加新的API。对于广大安全研究人员,安全工程师和开发者们来说,Astra这款工具可以帮助他们完成大量工作,并在开发周期的早期过程中检测并修复安全漏洞。Astra可以自动检测并测试登录和重置功能(认证API),因此任何人都可以轻松地将其集成到CICD管道中。除此之外,Astra还可以将API **作为输入参数来进行测试,进行独立模式下测试大量API安全。

功能介绍

1,SQL注入

2,跨站脚本XSS

3,信息长度

4,不安全的身份认证和会话管理

5,CSRF(包括盲CSRF)

6,频率限制

7,CORS错误配置(包括CORS绕过技术)

8,JWT攻击

9,CRLF检测

10,XEE盲注

工具要求

Linux或macOS

 

Python 2.7

 

MongoDB

工具安装

 

$ git clone https://github.com/flipkart-incubator/Astra

 

$ cd Astra

 

$ sudo pip install -r requirements.txt

 

Docker安装

运行Mongo容器:

 

$ docker pull mongo

 

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

 

安装GUI Docker:

 

$ 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

 

安装CLI Docker:

 

$ 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

 

依赖组件

 

- requests

 

- logger

 

- pymongo

 

- ConfigParser

 

- pyjwt

 

- flask

 

- sqlmap

 

工具使用-命令行

 

$ 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

 

 工具使用-Web接口

直接在命令行中运行api.py,然后打开浏览器,通过访问http://127.0.0.1:8094的进入工具Web接口:

 

$ cd API

 

$ python api.py

 

工具运行截图

新建扫描任务:

2.png

生成扫描报告:

3.png4.png

详细报告:

5.png

项目地址

阿斯特拉:【GitHub传送门

参考文档:【传送门

*参考来源:flipkart-incubator

转载至freebuf网站:freebuf

最新回复 (0)
    • Ai云
      2
        立即登录 立即注册
返回