Created
August 5, 2018 22:32
-
-
Save secfigo/62fa3bc8a8c7f593bd5a159cb4aaf34a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import time | |
from pprint import pprint | |
from zapv2 import ZAPv2 as ZAP | |
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
from selenium.webdriver.firefox.options import Options | |
from selenium.webdriver.common.proxy import Proxy, ProxyType | |
#Declarations | |
browser_proxy = "127.0.0.1" | |
browser_proxy_port = 8080 | |
#zap_proxy = | |
target = "http://10.0.1.22:8000" | |
#apikey = 'changeme' | |
print("Started ZAP Scan") | |
#non API | |
zap = ZAP(proxies={'http': 'http://127.0.0.1:8080', 'https':'https://127.0.0.1:8080'}) | |
#enable whtn APIkey is being used. | |
#zap = ZAPv2(apikey=apikey, proxies={'http': 'http://127.0.0.1:8080', 'https':'https://127.0.0.1:8080'}) | |
##Selenium Section Start | |
#arguments for running firefox headless | |
options = Options() | |
options.add_argument("--headless") | |
#configure firefoxproxy through FirefoxProfile, 1 for manual proxy, to redirect selenium traffic | |
# through a zap proxy. | |
profile = webdriver.FirefoxProfile() | |
profile.set_preference('network.proxy.type', 1) | |
profile.set_preference('network.proxy.http', browser_proxy) | |
profile.set_preference('network.proxy.http_port', browser_proxy_port) | |
profile.update_preferences() | |
#invoking firefox driver | |
driver=webdriver.Firefox(firefox_profile=profile, firefox_options=options) | |
#the following selenium script is specifically written for the djangonv.. Please modify it according to your website | |
print("Started Djangonv Selenium Script \n") | |
#signup | |
driver.get(target + '/taskManager/register/') | |
#enter the username, password, firstname,lastname etc. | |
driver.find_element_by_id("id_username").send_keys('user10') | |
driver.find_element_by_id('id_first_name').send_keys('user') | |
driver.find_element_by_id('id_last_name').send_keys('user') | |
driver.find_element_by_id('id_email').send_keys('[email protected]') | |
driver.find_element_by_id("id_password").send_keys('user123') | |
submit=driver.find_element_by_css_selector('.btn.btn-danger').click() | |
#login | |
driver.get(target + '/taskManager/login/') | |
driver.find_element_by_id('username').send_keys('user10') | |
driver.find_element_by_name('password').send_keys('user123') | |
submit=driver.find_element_by_xpath("//button[@type='submit']") | |
submit.click() | |
#spider the URL's | |
driver.get(target + "/taskManager/dashboard/") | |
driver.get(target +"/taskManager/task_list/") | |
driver.get(target + "/taskManager/project_list/") | |
driver.get(target + "/taskManager/search/") | |
#editing some data for better scan results | |
driver.get(target + "/taskManager/profile/") | |
driver.find_element_by_name('first_name').send_keys('firstroot') | |
driver.find_element_by_name('last_name').send_keys('lastroot') | |
driver.find_element_by_xpath("//button[@type='submit']").click() | |
time.sleep(2) | |
driver.close() | |
print("Djangonv Selenium Spidering End") | |
## End of Selenium section | |
print('Accessing the target {}'.format(target)) | |
zap.urlopen(target) | |
time.sleep(2) | |
print('Continuing the ZAP Spidering') | |
scanid = zap.spider.scan(target) | |
time.sleep(2) | |
while(int(zap.spider.status(scanid))<100): | |
print('Spider progress %: {}'.format(zap.spider.status(scanid))) | |
time.sleep(5) | |
print('Active Scanning started on target {}'.format(target)) | |
scanid = zap.ascan.scan(target) | |
while(int(zap.ascan.status(scanid))<100): | |
print(' Active scan is still %: {}'.format(zap.ascan.status(scanid))) | |
time.sleep(10) | |
print ('Active Scan Completed') | |
print ('Hosts Scanned: {}'.format(', '.join(zap.core.hosts))) | |
print ('Writing ZAP Alerts: ') | |
print (zap.core.alerts()) | |
print("ZAP Scan is successfully done.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment