
Teste de Segurança Automatizado para APIs REST

O teste de penetração em APIs REST é complexo devido a mudanças contínuas em APIs existentes e APIs recém-adicionadas. A Astra pode ser utilizada por engenheiros de segurança ou desenvolvedores como parte integrante do seu processo, permitindo detectar e corrigir vulnerabilidades no início do ciclo de desenvolvimento. A Astra pode detectar e testar automaticamente login e logout (API de Autenticação), tornando fácil para qualquer um integrar isso no pipeline CICD. A Astra pode receber uma coleção de APIs como entrada, podendo também ser usada para testar APIs em modo independente.
$ git clone https://github.com/flipkart-incubator/Astra
$ cd Astra
$ sudo pip install -r requirements.txt
$ sudo rabbitmq-server
$ celery -A worker -loglevel=INFO
$ cd API
$ python3 api.py
$ docker pull mongo
$ docker run --name astra-mongo -d mongo
$ 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
$ 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
- celery
$ python astra.py --help
_
/\ | |
/ \ ___| |_ _ __ __ _
/ /\ \ / __| __| '__/ _` |
/ ____ \__ \ |_| | | (_| |
/_/ \_\___/\__|_| \__,_|
uso: astra.py [-h] [-c {Postman,Swagger}] [-n COLLECTION_NAME] [-u URL]
[-headers HEADERS] [-method {GET,POST}] [-b BODY]
[-l LOGINURL] [-H LOGINHEADERS] [-d LOGINDATA]
Framework de Teste de Segurança para APIs REST
argumentos opcionais:
-h, --help mostra esta mensagem de ajuda e sai
-c {Postman,Swagger}, --collection_type {Postman,Swagger}
Tipo de coleção de API
-n COLLECTION_NAME, --collection_name COLLECTION_NAME
Tipo de coleção de API
-u URL, --url URL URL da API alvo
-headers HEADERS, --headers HEADERS
Cabeçalhos personalizados. Exemplo: {"token" : "123"}
-method {GET,POST}, --method {GET,POST}
Método de requisição HTTP
-b BODY, --body BODY Corpo da requisição da API
-l LOGINURL, --loginurl LOGINURL
URL da API de login
-H LOGINHEADERS, --loginheaders LOGINHEADERS
Cabeçalhos no formato de dicionário. Exemplo:
{"accesstoken" : "axzvbqdadf"}
-d LOGINDATA, --logindata LOGINDATA
Dados de login da API
Execute o api.py e acesse a interface web em http://127.0.0.1:8094
$ cd API
$ python api.py
NOTA:
No macOS 10.13+ você deve usar a flag OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES para evitar que processos de varredura sejam encerrados devido à forma como fork() e exec() foram alterados. Veja aqui para mais informações.
$ cd API
$ OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES python api.py



