私は現在、pythonスクリプトを使用してザップを自動化しているので、フィールドに行ったり、ページをクロールしたりする必要はありません。私が行き詰まっているのは、私のスクリプトです。現在、Webログインのメインページのみをクロールできます。スクリプトからログインしてWebアプリの他のページのクロールを開始するにはどうすればよいですか?
OWASP githubリポジトリからサンプルスクリプトをテストしていました。
#!/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()
それはすべて、アプリケーションがユーザーを認証した方法に依存します。 ZAPはほぼすべてのタイプの認証を処理できますが、構成は簡単ではありません。この改善に積極的に取り組んでいます。 このチュートリアルビデオ をご覧ください。
アプリで標準のログインフォームを使用している場合は、 こちら を参照してください。
最初にZAPデスクトップで認証を機能させることをお勧めします(これにより、デバッグがはるかに容易になるため)。一度動作すると、同じ手順をスクリプトに変換します。
さらにヘルプが必要な場合は ZAPユーザーグループ に質問してください。