95 lines
3.8 KiB
Python
95 lines
3.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
# @Author : jeffzhang
|
|
# @Time : 18-5-22
|
|
# @File : acunetix_scanner.py
|
|
# @Desc : ""
|
|
|
|
import time
|
|
from bson import ObjectId
|
|
from flask import Blueprint, render_template, request, jsonify
|
|
from fuxi.views.lib.parse_target import parse_target
|
|
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
|
|
from fuxi.views.authenticate import login_check
|
|
from fuxi.views.modules.acunetix_scanner.awvs_api import AcunetixScanner
|
|
|
|
acunetix_scanner = Blueprint('acunetix_scanner', __name__)
|
|
acunetix_db = db_name_conf()['acunetix_db']
|
|
|
|
|
|
@acunetix_scanner.route('/acunetix-scanner', methods=['GET', 'POST'])
|
|
@login_check
|
|
def acunetix_view():
|
|
# scanner view
|
|
if request.method == "GET":
|
|
acunetix_task = connectiondb(acunetix_db).find()
|
|
return render_template('acunetix-scanner.html', acunetix_task=acunetix_task)
|
|
else:
|
|
if request.form.get('source') == "new_scan":
|
|
target_id = []
|
|
task_name = request.form.get('task_name')
|
|
target_list = request.form.get('target_addr').split("\n")
|
|
scan_type = request.form.get('scan_type')
|
|
description_val = request.form.get('description_val')
|
|
for target in parse_target(target_list):
|
|
target_id.append(AcunetixScanner().start_task(target, description_val, scan_type)['target_id'])
|
|
task_data = {
|
|
"task_name": task_name,
|
|
"target_list": target_list,
|
|
"scan_type": scan_type,
|
|
"description": description_val,
|
|
"status": "",
|
|
"target_id": target_id,
|
|
"date": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
|
|
}
|
|
connectiondb(acunetix_db).insert(task_data)
|
|
# print(new_scan)
|
|
return "success"
|
|
elif request.form.get('source') == "delete_task":
|
|
task_id = request.form.get('delete')
|
|
target_id = connectiondb(acunetix_db).find_one({"_id": ObjectId(task_id)})['target_id']
|
|
if connectiondb(acunetix_db).remove({"_id": ObjectId(task_id)}):
|
|
for t_id in target_id:
|
|
AcunetixScanner().delete_target(t_id)
|
|
return "success"
|
|
else:
|
|
return "warning"
|
|
elif request.form.get('source') == "download_report":
|
|
task_id = request.form.get('task_id')
|
|
target_id = connectiondb(acunetix_db).find_one({"_id": ObjectId(task_id)})['target_id']
|
|
task_name = connectiondb(acunetix_db).find_one({"_id": ObjectId(task_id)})['task_name']
|
|
report_url = AcunetixScanner().reports(target_id, 'targets', task_name)
|
|
if report_url:
|
|
return jsonify({"html_url": report_url[0], "pdf_url": report_url[1]})
|
|
else:
|
|
return "warning"
|
|
|
|
|
|
@acunetix_scanner.route('/acunetix-tasks', methods=['GET', 'POST'])
|
|
@login_check
|
|
def acunetix_tasks():
|
|
# scanner view
|
|
if request.method == "GET":
|
|
try:
|
|
tasks_info = AcunetixScanner().get_all()
|
|
except Exception as e:
|
|
print(e)
|
|
tasks_info = ''
|
|
return render_template('acunetix-tasks.html', tasks_info=tasks_info)
|
|
else:
|
|
if request.form.get('source') == "delete_scan":
|
|
scan_id = request.form.get('delete')
|
|
result = AcunetixScanner().delete_scan(scan_id)
|
|
if result:
|
|
return "success"
|
|
else:
|
|
return "warning"
|
|
elif request.form.get('source') == "report":
|
|
# scan_id type is list
|
|
scan_id = [request.form.get('scan_id')]
|
|
report_url = AcunetixScanner().reports(scan_id, 'scans', scan_id)
|
|
if report_url:
|
|
return jsonify({"html_url": report_url[0], "pdf_url": report_url[1]})
|
|
else:
|
|
return "warning"
|