viernes, 31 de enero de 2020

ASTRA: REST API penetration testing



by @raulrenales

Como ya sabéis, llevamos un tiempo profundizando en el análisis de APIs desde el punto de vista del pentesting y la auditoria. Iniciamos el camino con un post en el que resumíamos herramientas interesantes para esta tarea, poco a poco vamos haciendo review de las mismas. Hoy le toca el turno a ASTRA REST API Tool.

Primero de todo, podéis descargar ASTRA desde su github:

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

ASTRA es una herramienta bastante completa y que es una de las fijas en el análisis de APIs, la herramienta cubre las siguientes vulnerabilidades:

  • SQL injection
  • Cross site scripting
  • Information Leakage
  • Broken Authentication and session management
  • CSRF (including Blind CSRF)
  • Rate limit
  • CORS misconfiguration (including CORS bypass techniques)
  • JWT attack
  • CRLF detection
  • Blind XXE injection
Como podéis ver es bastante completa, vamos a ver un poco su funcionamiento e instalación.

Instalación:


La herramienta requiere el uso de un sistema operativo Linux o MacOS, dicho sistema debe estar provisto de Python 2.7 y MongoDB. Instalarlo es tan sencillo, a priori,  como seguir los siguientes comandos:

$ git clone https://github.com/flipkart-incubator/Astra
$ cd Astra
$ sudo pip install -r requirements.txt

En la pagina de proyecto de ASTRA se puede obtener información sobre como instalar en Docker la herramienta.

Una vez instalado arrancamos MongoDB y probamos que esta corriendo antes de lanzar el comando de ASTRA.


Si tu distribución no dispone de MongoDB, te recomendamos que sigas este enlace para instalarlo.

Con MongoDB listo, vamos a lanzar el cliente en modo ayuda, para ver que todo esta ok y pasar a lanzar el user interface web.

En nuestro caso, sufrimos algunos contratiempos con el archivo ASTRA.PY. Concretamente en la linea 38 nos daba un error en el que nos indicaba que no podia lanzar la funcion Main. Despues de un rato decidimos comentar la linea para evitar el error y ver que sucedia. Inicialmente funciono.



Este cambio nos produjo que dbupdate sufriera un problema de identación y decidimos sacarla de la función, para meter la linea por encima del "IF os.getcwd" dado que esta variable es necesaria para que los escaneos puedan escribir en la base de datos. Nuestra ñapa quedo así:



Uso de la herramienta

Después de tanta chapuza en el archivo ASTRA.PY, llega el momento de lanzar la Interfaz web, para ello nos vamos a la carpeta de API y allí ejecutamos el comando que pone a la escucha la aplicación.

$ cd API
$ python api.py

Parece que todo funciona, pues vamos a testear que todo esta listo en la dirección:

http://127.0.0.1:8094


Como vemos la interfaz web esta lista para hacer nuestro primer escaneo. Es tan sencillo como asignarle un nombre al escaneo (Product Name) e indicarle la URL de la api, así como el metodo.


Una vez que tenemos todo listo, pulsamos en el botón de submit y veremos que si todo ha ido bien aparecerá una ventana emergente con el código asignado al análisis.


Si os fijáis en la parte inferior aparecerá un reporte que en la ultima columna indicara el estado del mismo, por lo general tarda un poco en terminar e indicar que el informe esta completo y listo para ser revisado.

Una vez completado podréis ver el resultado pulsando en la columna URL en el informe que querais revisar. Mas o menos veréis este detalle de las vulnerabilidades:


Pulsando en cada una de las vulnerabilidades veremos el detalle:


Y hasta aquí nuestra revisión de la herramienta ASTRA REST API Tool. En el futuro queremos ampliar este contenido incluyendo algunos casos de uso especiales que de vez en cuando nos encontramos.


No hay comentarios:

Publicar un comentario