Autenticazione con OWASP ZAP Script

1

Al momento sto lavorando a uno script python che automatizzerà lo zap per me, quindi non devo entrare e spostare manualmente i campi o eseguire la scansione delle pagine. La parte su cui sono bloccato è che attualmente il mio script può solo eseguire la scansione della pagina principale di accesso al web. Come faccio a ottenere il login dal mio script e iniziare a scansionare altre pagine sull'app Web?

Stavo testando lo script di esempio dal repository github 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()
    
posta john_zombie 12.07.2018 - 22:18
fonte

1 risposta

1

Tutto dipende da come gli utenti autenticati dell'applicazione. ZAP può gestire praticamente qualsiasi tipo di autenticazione, ma la sua configurazione può essere non banale. Stiamo lavorando attivamente per migliorare questo. Dai un'occhiata a questo video tutorial .
Se la tua app utilizza un modulo di accesso standard, consulta qui .

Suggerirei di utilizzare prima l'autenticazione con il desktop ZAP (in questo modo è molto più facile eseguire il debug) e una volta che si sta lavorando è possibile tradurre gli stessi passaggi nello script.
Per ulteriore assistenza, chiedi su il Gruppo utenti ZAP .

    
risposta data 13.07.2018 - 09:12
fonte

Leggi altre domande sui tag