Beispiel #1
0
    def post(self, request):
        setting_id = uuid.uuid4()
        save_openvas_setting = save_settings.SaveSettings(api_data, )
        if request.POST.get("openvas_enabled") == "on":
            openvas_enabled = True
        else:
            openvas_enabled = False
        openvas_host = request.POST.get("openvas_host")
        openvas_port = request.POST.get("openvas_port")
        openvas_user = request.POST.get("openvas_user")
        openvas_password = request.POST.get("openvas_password")

        save_openvas_setting.openvas_settings(
            openvas_host=openvas_host,
            openvas_port=openvas_port,
            openvas_enabled=openvas_enabled,
            openvas_user=openvas_user,
            openvas_password=openvas_password,
            setting_id=setting_id,
        )

        save_settings_data = SettingsDb(setting_id=setting_id,
                                        setting_scanner="Openvas")
        save_settings_data.save()

        sel_profile = ""

        openvas = OpenVAS_Plugin(
            openvas_host,
            setting_id,
            sel_profile,
        )
        try:
            openvas.connect()
            openvas_info = True
            SettingsDb.objects.filter(setting_id=setting_id).update(
                setting_status=openvas_info)
        except:
            openvas_info = False
            SettingsDb.objects.filter(setting_id=setting_id).update(
                setting_status=openvas_info)

        return HttpResponseRedirect(reverse("archerysettings:settings"))
Beispiel #2
0
def openvas_scanner(scan_ip, project_id, sel_profile, user):
    """
    The function is launch the OpenVAS scans.
    :param scan_ip:
    :param project_id:
    :param sel_profile:
    :return:
    """
    openvas = OpenVAS_Plugin(scan_ip, project_id, sel_profile)
    try:
        scanner = openvas.connect()
    except Exception as e:

        notify.send(user, recipient=user, verb='OpenVAS Setting not configured')
        subject = 'Archery Tool Notification'
        message = 'OpenVAS Scanner failed due to setting not found '

        email_notify(user=user, subject=subject, message=message)
        return

    notify.send(user, recipient=user, verb='OpenVAS Scan Started')
    subject = 'Archery Tool Notification'
    message = 'OpenVAS Scan Started'

    email_notify(user=user, subject=subject, message=message)
    scan_id, target_id = openvas.scan_launch(scanner)
    date_time = datetime.now()
    save_all = scan_save_db(scan_id=str(scan_id),
                            project_id=str(project_id),
                            scan_ip=scan_ip,
                            target_id=str(target_id),
                            date_time=date_time,
                            scan_status=0.0)
    save_all.save()
    openvas.scan_status(scanner=scanner, scan_id=scan_id)
    time.sleep(5)
    vuln_an_id(scan_id=scan_id, project_id=project_id)

    notify.send(user, recipient=user, verb='OpenVAS Scan Completed')

    all_openvas = scan_save_db.objects.all()
    all_vuln = ''
    total_high = ''
    total_medium = ''
    total_low = ''
    for openvas in all_openvas:
        all_vuln = openvas.total_vul
        total_high = openvas.high_total
        total_medium = openvas.medium_total
        total_low = openvas.low_total

    subject = 'Archery Tool Notification'
    message = 'OpenVAS Scan Completed  <br>' \
              'Total: %s  <br>Total High: %s <br>' \
              'Total Medium: %s  <br>Total Low %s' % (all_vuln, total_high, total_medium, total_low)

    email_notify(user=user, subject=subject, message=message)

    return HttpResponse(status=201)
Beispiel #3
0
def openvas_scanner(scan_ip, project_id, sel_profile):
    """
    The function is launch the OpenVAS scans.
    :param scan_ip:
    :param project_id:
    :param sel_profile:
    :return:
    """
    openvas = OpenVAS_Plugin(scan_ip, project_id, sel_profile)
    scanner = openvas.connect()
    scan_id, target_id = openvas.scan_launch(scanner)
    date_time = datetime.now()
    save_all = scan_save_db(scan_id=str(scan_id),
                            project_id=str(project_id),
                            scan_ip=scan_ip,
                            target_id=str(target_id),
                            date_time=date_time)
    save_all.save()
    openvas.scan_status(scanner=scanner, scan_id=scan_id)
    time.sleep(5)
    vuln_an_id(scan_id=scan_id)

    return HttpResponse(status=201)
Beispiel #4
0
def openvas_scanner(scan_ip, project_id, sel_profile):
    """
    The function is launch the OpenVAS scans.
    :param scan_ip:
    :param project_id:
    :param sel_profile:
    :return:
    """
    openvas = OpenVAS_Plugin(scan_ip, project_id, sel_profile)
    scanner = openvas.connect()
    scan_id, target_id = openvas.scan_launch(scanner)
    date_time = datetime.now()
    save_all = scan_save_db(scan_id=str(scan_id),
                            project_id=str(project_id),
                            scan_ip=scan_ip,
                            target_id=str(target_id),
                            date_time=date_time)
    save_all.save()
    openvas.scan_status(scanner=scanner, scan_id=scan_id)
    time.sleep(5)
    vuln_an_id(scan_id=scan_id)

    return HttpResponse(status=201)
Beispiel #5
0
def openvas_scanner(scan_ip, project_id, sel_profile, user):
    """
    The function is launch the OpenVAS scans.
    :param scan_ip:
    :param project_id:
    :param sel_profile:
    :return:
    """
    openvas = OpenVAS_Plugin(
        scan_ip,
        project_id,
        sel_profile,
    )
    try:
        scanner = openvas.connect()
    except Exception as e:

        notify.send(user,
                    recipient=user,
                    verb="OpenVAS Setting not configured")
        subject = "Archery Tool Notification"
        message = "OpenVAS Scanner failed due to setting not found "

        email_notify(user=user, subject=subject, message=message)
        return

    notify.send(user, recipient=user, verb="OpenVAS Scan Started")
    subject = "Archery Tool Notification"
    message = "OpenVAS Scan Started"

    email_notify(user=user, subject=subject, message=message)
    scan_id, target_id = openvas.scan_launch(scanner)
    date_time = datetime.now()
    save_all = NetworkScanDb(
        scan_id=str(scan_id),
        project_id=str(project_id),
        ip=scan_ip,
        date_time=date_time,
        scan_status=0.0,
        scanner="Openvas",
    )
    save_all.save()
    openvas.scan_status(scanner=scanner, scan_id=scan_id)
    time.sleep(5)
    vuln_an_id(
        scan_id=scan_id,
        project_id=project_id,
    )

    notify.send(user, recipient=user, verb="OpenVAS Scan Completed")

    all_openvas = NetworkScanDb.objects.filter()
    all_vuln = ""
    total_high = ""
    total_medium = ""
    total_low = ""
    for openvas in all_openvas:
        all_vuln = openvas.total_vul
        total_high = openvas.high_vul
        total_medium = openvas.medium_vul
        total_low = openvas.low_vul

    subject = "Archery Tool Notification"
    message = ("OpenVAS Scan Completed  <br>"
               "Total: %s  <br>Total High: %s <br>"
               "Total Medium: %s  <br>Total Low %s" %
               (all_vuln, total_high, total_medium, total_low))

    email_notify(user=user, subject=subject, message=message)

    return HttpResponse(status=201)
Beispiel #6
0
def setting(request):
    """
    The function calling setting page.
    :param request:
    :return:
    """
    all_notify = Notification.objects.unread()

    jira_url = None
    j_username = None
    password = None
    # Loading settings

    username = request.user.username

    settings = load_settings.ArcherySettings(setting_file, username=username)

    lod_ov_user = settings.openvas_username()
    lod_ov_pass = settings.openvas_pass()
    lod_ov_host = settings.openvas_host()
    lod_ov_port = settings.openvas_port()
    lod_ov_enabled = settings.openvas_enabled()

    # Loading ZAP Settings
    zap_api_key = ''
    zap_hosts = ''
    zap_ports = ''
    zap_enable = False

    all_zap = zap_settings_db.objects.filter(username=username)
    for zap in all_zap:
        zap_api_key = zap.zap_api
        zap_hosts = zap.zap_url
        zap_ports = zap.zap_port
        zap_enable = zap.enabled

    lod_apikey = zap_api_key
    zap_host = zap_hosts
    zap_port = zap_ports

    # Loading Arachni Settings
    arachni_hosts = ''
    arachni_ports = ''

    all_arachni = arachni_settings_db.objects.filter(username=username)
    for arachni in all_arachni:
        arachni_hosts = arachni.arachni_url
        arachni_ports = arachni.arachni_port

    arachni_hosts = arachni_hosts
    arachni_ports = arachni_ports

    # Loading NMAP Vulners Settings
    nv_enabled = False
    nv_online = False
    nv_version = False
    nv_timing = 0

    all_nv = nmap_vulners_setting_db.objects.filter(username=username)
    for nv in all_nv:
        nv_enabled = bool(nv.enabled)
        nv_online = bool(nv.online)
        nv_version = bool(nv.version)
        nv_timing = int(nv.timing)

    # Loading Burp Settings

    burp_host = settings.burp_host()
    burp_port = settings.burp_port()
    burp_api_key = settings.burp_api_key()

    # Loading Email Settings

    all_email = email_db.objects.filter(username=username)

    # Load JIRA Setting
    jira_setting = jirasetting.objects.filter(username=username)

    for jira in jira_setting:
        jira_url = jira.jira_server
        j_username = jira.jira_username
        password = jira.jira_password
    jira_server = jira_url
    if j_username is None:
        jira_username = None
    else:
        jira_username = signing.loads(j_username)

    if password is None:
        jira_password = None
    else:
        jira_password = signing.loads(password)

    username = request.user.username
    zap_enabled = False
    random_port = '8091'
    target_url = 'https://archerysec.com'
    zap_info = ''
    burp_info = ''
    openvas_info = ''
    arachni_info = ''
    jira_info = ''

    if request.method == 'POST':
        setting_of = request.POST.get('setting_of')
        if setting_of == 'zap':
            all_zap = zap_settings_db.objects.filter(username=username)
            for zap in all_zap:
                zap_enabled = zap.enabled

            if zap_enabled is False:
                zap_info = 'Disabled'
                try:
                    random_port = zap_plugin.zap_local()
                except:
                    return render(request, 'setting.html',
                                  {'zap_info': zap_info})

                for i in range(0, 100):
                    while True:
                        try:
                            # Connection Test
                            zap_connect = zap_plugin.zap_connect(
                                random_port, username=username)
                            zap_connect.spider.scan(url=target_url)
                        except Exception as e:
                            print(
                                "ZAP Connection Not Found, re-try after 5 sec")
                            time.sleep(5)
                            continue
                        break
            else:
                try:
                    zap_connect = zap_plugin.zap_connect(random_port,
                                                         username=username)
                    zap_connect.spider.scan(url=target_url)
                    zap_info = True
                except:
                    zap_info = False
        if setting_of == 'burp':
            host = 'http://' + burp_host + ':' + burp_port + '/'

            bi = burpscanner.BurpApi(host, burp_api_key)

            issue_list = bi.issue_definitions()
            if issue_list.data is None:
                burp_info = False
            else:
                burp_info = True

        if setting_of == 'openvas':
            sel_profile = ''

            openvas = OpenVAS_Plugin(scan_ip,
                                     project_id,
                                     sel_profile,
                                     username=username)
            try:
                openvas.connect()
                openvas_info = True
            except:
                openvas_info = False

        if setting_of == 'arachni':
            global scan_run_id, scan_status
            arachni_hosts = None
            arachni_ports = None
            all_arachni = arachni_settings_db.objects.filter(username=username)
            for arachni in all_arachni:
                arachni_hosts = arachni.arachni_url
                arachni_ports = arachni.arachni_port

            arachni = PyArachniapi.arachniAPI(arachni_hosts, arachni_ports)

            check = []
            data = {
                "url": 'https://archerysec.com',
                "checks": check,
                "audit": {}
            }
            d = json.dumps(data)

            scan_launch = arachni.scan_launch(d)
            time.sleep(3)

            try:
                scan_data = scan_launch.data

                for key, value in scan_data.items():
                    if key == 'id':
                        scan_run_id = value
                arachni_info = True
            except Exception:
                arachni_info = False

        if setting_of == 'jira':
            global jira_projects, jira_ser
            jira_setting = jirasetting.objects.filter(username=username)

            for jira in jira_setting:
                jira_url = jira.jira_server
                username = jira.jira_username
                password = jira.jira_password
            jira_server = jira_url
            jira_username = signing.loads(username)
            jira_password = signing.loads(password)

            options = {'server': jira_server}
            try:

                jira_ser = JIRA(options,
                                basic_auth=(jira_username, jira_password),
                                timeout=5)
                jira_projects = jira_ser.projects()
                print(len(jira_projects))
                jira_info = True
            except Exception as e:
                print(e)
                jira_info = False

    return render(
        request, 'setting.html', {
            'apikey': lod_apikey,
            'zapath': zap_host,
            'zap_port': zap_port,
            'zap_enable': zap_enable,
            'arachni_hosts': arachni_hosts,
            'arachni_ports': arachni_ports,
            'lod_ov_user': lod_ov_user,
            'lod_ov_pass': lod_ov_pass,
            'lod_ov_host': lod_ov_host,
            'lod_ov_enabled': lod_ov_enabled,
            'lod_ov_port': lod_ov_port,
            'burp_path': burp_host,
            'burp_port': burp_port,
            'burp_api_key': burp_api_key,
            'all_email': all_email,
            'jira_server': jira_server,
            'jira_username': jira_username,
            'jira_password': jira_password,
            'nv_enabled': nv_enabled,
            'nv_version': nv_version,
            'nv_online': nv_online,
            'nv_timing': nv_timing,
            'message': all_notify,
            'zap_info': zap_info,
            'burp_info': burp_info,
            'openvas_info': openvas_info,
            'arachni_info': arachni_info,
            'jira_info': jira_info
        })
Beispiel #7
0
    def post(self, request):
        all_notify = Notification.objects.unread()

        jira_url = None
        j_username = None
        password = None
        # Loading settings

        all_settings_data = SettingsDb.objects.filter()

        # Loading ZAP Settings
        zap_api_key = ""
        zap_hosts = ""
        zap_ports = ""
        zap_enable = False

        all_zap = ZapSettingsDb.objects.filter()
        for zap in all_zap:
            zap_api_key = zap.zap_api
            zap_hosts = zap.zap_url
            zap_ports = zap.zap_port
            zap_enable = zap.enabled

        lod_apikey = zap_api_key
        zap_host = zap_hosts
        zap_port = zap_ports

        # Loading Arachni Settings
        arachni_hosts = ""
        arachni_ports = ""
        arachni_user = ""
        arachni_pass = ""

        all_arachni = ArachniSettingsDb.objects.filter()
        for arachni in all_arachni:
            arachni_hosts = arachni.arachni_url
            arachni_ports = arachni.arachni_port
            arachni_user = arachni.arachni_user
            arachni_pass = arachni.arachni_pass

        burp_host = ""
        burp_port = ""
        burp_api_key = ""
        all_burp_setting = BurpSettingDb.objects.all()
        for data in all_burp_setting:
            burp_host = data.burp_url
            burp_port = data.burp_port
            burp_api_key = data.burp_api_key

        jira_setting = jirasetting.objects.all()

        for jira in jira_setting:
            jira_url = jira.jira_server
            j_username = jira.jira_username
            password = jira.jira_password
        jira_server = jira_url
        if j_username is None:
            jira_username = None
        else:
            jira_username = signing.loads(j_username)

        if password is None:
            jira_password = None
        else:
            jira_password = signing.loads(password)

        zap_enabled = False
        random_port = "8091"
        target_url = "https://archerysec.com"

        setting_of = request.POST.get("setting_of")
        setting_id = request.POST.get("setting_id")
        if setting_of == "zap":
            all_zap = ZapSettingsDb.objects.filter()
            for zap in all_zap:
                zap_enabled = zap.enabled

            if zap_enabled is False:
                zap_info = "Disabled"
                try:
                    random_port = zap_plugin.zap_local()
                except:
                    return render(
                        request, "setting/settings_page.html", {"zap_info": zap_info}
                    )

                for i in range(0, 100):
                    while True:
                        try:
                            # Connection Test
                            zap_connect = zap_plugin.zap_connect(random_port)
                            zap_connect.spider.scan(url=target_url)
                        except Exception as e:
                            print("ZAP Connection Not Found, re-try after 5 sec")
                            time.sleep(5)
                            continue
                        break
            else:
                try:
                    zap_connect = zap_plugin.zap_connect(random_port)
                    zap_connect.spider.scan(url=target_url)
                    zap_info = True
                    SettingsDb.objects.filter(setting_id=setting_id).update(
                        setting_status=zap_info
                    )
                except:
                    zap_info = False
                    SettingsDb.objects.filter(setting_id=setting_id).update(
                        setting_status=zap_info
                    )
        if setting_of == "burp":
            host = "http://" + burp_host + ":" + burp_port + "/"

            try:
                bi = burpscanner.BurpApi(host, burp_api_key)
            except:
                burp_info = False
                return burp_info

            issue_list = bi.issue_definitions()
            if issue_list.data is None:
                burp_info = False
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=burp_info
                )
            else:
                burp_info = True
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=burp_info
                )

        if setting_of == "openvas":
            sel_profile = ""
            scan_ip = ""
            project_id = ""

            openvas = OpenVAS_Plugin(scan_ip, project_id, sel_profile)
            try:
                openvas.connect()
                openvas_info = True
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=openvas_info
                )
            except:
                openvas_info = False
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=openvas_info
                )

        if setting_of == "arachni":
            global scan_run_id, scan_status
            arachni_hosts = None
            arachni_ports = None
            arachni_user = None
            arachni_pass = None
            all_arachni = ArachniSettingsDb.objects.filter()
            for arachni in all_arachni:
                arachni_hosts = arachni.arachni_url
                arachni_ports = arachni.arachni_port
                arachni_user = arachni.arachni_user
                arachni_pass = arachni.arachni_pass

            arachni = PyArachniapi.arachniAPI(
                arachni_hosts, arachni_ports, arachni_user, arachni_pass
            )

            check = []
            data = {"url": "https://archerysec.com", "checks": check, "audit": {}}
            d = json.dumps(data)

            scan_launch = arachni.scan_launch(d)
            time.sleep(3)

            try:
                scan_data = scan_launch.data

                for key, value in scan_data.items():
                    if key == "id":
                        scan_run_id = value
                arachni_info = True
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=arachni_info
                )
            except Exception:
                arachni_info = False
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=arachni_info
                )

        if setting_of == "jira":
            global jira_projects, jira_ser
            jira_setting = jirasetting.objects.filter()

            for jira in jira_setting:
                jira_url = jira.jira_server
                username = jira.jira_username
                password = jira.jira_password

                if jira_url is None:
                    print("No jira url found")

            try:

                jira_server = jira_url
                jira_username = signing.loads(username)
                jira_password = signing.loads(password)
            except:
                jira_info = False

            options = {"server": jira_server}
            try:

                jira_ser = JIRA(
                    options, basic_auth=(jira_username, jira_password), timeout=5
                )
                jira_projects = jira_ser.projects()
                print(len(jira_projects))
                jira_info = True
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=jira_info
                )
            except Exception as e:
                print(e)
                jira_info = False
                SettingsDb.objects.filter(setting_id=setting_id).update(
                    setting_status=jira_info
                )

        return render(
            request,
            "setting/settings_page.html",
            {"all_settings_data": all_settings_data, "all_notify": all_notify},
        )