Autenticación con script OWASP ZAP

1

Actualmente estoy trabajando en una secuencia de comandos de Python que automatizará el zap para mí, por lo que no tengo que ingresar y borrar manualmente los campos o las páginas de rastreo. La parte en la que estoy atascado es que actualmente mi script solo puede rastrear la página principal de inicio de sesión web. ¿Cómo hago para iniciar sesión desde mi script y comenzar a rastrear otras páginas en la aplicación web?

Estaba probando el script de ejemplo del repositorio github de OWASP:

#!/usr/bin/env python3


import time
from pprint import pprint
from zapv2 import ZAPv2

target = 'http://127.0.0.1' # Replace this with your target URL or IP
# Change to match the API key set in ZAP under tools menu, options, API tab. or use None if the API key is disabled.
apikey = 'Place your API KEY HERE'


class OwaspZap(object):

    def Api_Connect(self):
        zap = ZAPv2(apikey=apikey)
        print('[+]Accessing target {}'.format(target))
        zap.urlopen(target)
        time.sleep(2)

    def Spider_Crawl(self):
        zap = ZAPv2(apikey=apikey)
        print('Spidering target {}'.format(target))
        scanid = zap.spider.scan(target)
        # Give the Spider a chance to start
        time.sleep(2)
        while(int(zap.spider.status(scanid)) < 100):
            #This will loop until the spider has finished
            print('Spider progress %: {}'.format(zap.spider.status(scanid)))
            time.sleep(2)
        print('Spider crawl completed')

    def Passive_Scan(self):
        zap = ZAPv2(apikey=apikey)
        while(int(zap.pscan.records_to_scan) > 0):
            print('Records to passive scan : {}'.format(zap.pscan.records_to_scan))
            time.sleep(2)
        print('Passive Scan completed')

    def Active_Scan(self):
        zap = ZAPv2(apikey=apikey)
        print('Active Scanning target {}'.format(target))
        scanid = zap.ascan.scan(target)
        while(int(zap.ascan.status(scanid)) < 100):
                # Loop until the scanner has finished
            print('Scan progress %: {}'.format(zap.ascan.status(scanid)))
            time.sleep(5)
        print('Active Scan completed')

    def Show_Results(self):
        zap = ZAPv2(apikey=apikey)
        # Reports the results
        print('Hosts: {}'.format(', '.join(zap.core.hosts)))
        print('Alerts: ')
        pprint(zap.core.alerts())


zapp = OwaspZap()
zapp.Api_Connect()
zapp.Spider_Crawl()
zapp.Passive_Scan()
zapp.Active_Scan()
zapp.Show_Results()
    
pregunta john_zombie 12.07.2018 - 22:18
fuente

1 respuesta

1

Todo depende de cómo su aplicación autentique a los usuarios. ZAP puede manejar prácticamente cualquier tipo de autenticación, pero configurarlo puede no ser trivial. Estamos trabajando activamente para mejorar esto. Echa un vistazo a este video tutorial .
Si su aplicación utiliza un formulario de inicio de sesión estándar, consulte aquí .

Recomendaría que la autenticación funcione primero con el escritorio ZAP (ya que esto hace que la depuración sea mucho más fácil) y, una vez que esté funcionando, se traducen los mismos pasos a su script. Para obtener más ayuda, consulte el grupo de usuarios de ZAP .

    
respondido por el Simon Bennetts 13.07.2018 - 09:12
fuente

Lea otras preguntas en las etiquetas