예제 #1
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-5-30
# @File    : mysql_plugin.py
# @Desc    : ""

import socket
import MySQLdb
from multiprocessing import Pool
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from instance import config_name

config_db = db_name_conf()['config_db']


class MySQLPlugin:
    def __init__(self, target_list, username_list, password_list):
        self.target_list = target_list
        self.username_list = username_list
        self.password_list = password_list
        self.mysql_target = []
        self.result = []
        self.result_check = []
        self.result_auth = []
        self.processes = connectiondb(config_db).find_one(
            {"config_name": config_name})['auth_tester_thread']

    def mysql_scan(self):
        pool_1 = Pool(processes=self.processes)
        for target in self.target_list:
예제 #2
0
# @Author  : jeffzhang
# @Time    : 18-5-19
# @File    : domain_brute.py
# @Desc    : ""

import dns.resolver
from multiprocessing import Pool, Lock
from datetime import datetime
from random import sample
from string import digits, ascii_lowercase
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.lib.get_title import get_title
from instance import config_name

lock = Lock()
domain_db = db_name_conf()['domain_db']
config_db = db_name_conf()['config_db']
subdomain_db = db_name_conf()['subdomain_db']


def resolution(domain):
    _result = {}
    record_a = []
    record_cname = []
    try:
        respond = dns.resolver.query(domain.strip())
        for record in respond.response.answer:
            for i in record.items:
                if i.rdtype == dns.rdatatype.from_text('A'):
                    record_a.append(str(i))
                    _result[domain] = record_a
예제 #3
0
# -*- 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')
예제 #4
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-5-30
# @File    : asset_discovery.py
# @Desc    : ""

import nmap
import time
from multiprocessing import Pool
from apscheduler.schedulers.blocking import BlockingScheduler
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.lib.parse_target import parse_target
from instance import config_name

config_db = db_name_conf()['config_db']
asset_db = db_name_conf()['asset_db']
server_db = db_name_conf()['server_db']


class AssetDiscovery:
    def __init__(self, asset_id):
        self.asset_id = asset_id
        self.result_tmp = []
        self.result = []
        self.port_list = connectiondb(config_db).find_one(
            {"config_name": config_name})['port_list']
        self.processes = connectiondb(config_db).find_one(
            {"config_name": config_name})['discovery_thread']
        self.asset_name = connectiondb(asset_db).find_one(
            {"_id": self.asset_id})['asset_name']
예제 #5
0
# @File    : poc_scanner.py
# @Desc    : =_=!!

import sched
import time
import datetime
from multiprocessing import Pool, Lock
from threading import RLock
from pocsuite.api.cannon import Cannon
from apscheduler.schedulers.blocking import BlockingScheduler
from bson.objectid import ObjectId
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.lib.parse_target import parse_target
from instance import config_name

config_db = db_name_conf()['config_db']
tasks_db = db_name_conf()['tasks_db']
vul_db = db_name_conf()['vul_db']
plugin_db = db_name_conf()['plugin_db']

schedule = sched.scheduler(time.time, time.sleep)
lock = Lock()
thread_lock = RLock()


def verify_poc(scan_data):
    plugin_name = scan_data['plugin_name']
    plugin_filename = scan_data['plugin_filename']
    target = scan_data['target']
    info = {"pocname": plugin_name,
            "pocstring": open(plugin_filename, 'r').read(),
예제 #6
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-5-30
# @File    : asset_discovery.py
# @Desc    : ""

import nmap
import time
from multiprocessing import Pool
from apscheduler.schedulers.blocking import BlockingScheduler
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.lib.parse_target import parse_target
from instance import config_name

config_db = db_name_conf()['config_db']
asset_db = db_name_conf()['asset_db']
search_db = db_name_conf()['search_db']
server_db = db_name_conf()['server_db']


class AssetDiscovery:
    def __init__(self, asset_id):
        self.asset_id = asset_id
        self.result_tmp = []
        self.result = []
        self.port_list = connectiondb(config_db).find_one({"config_name": config_name})['port_list']
        self.processes = connectiondb(config_db).find_one({"config_name": config_name})['discovery_thread']
        self.asset_name = connectiondb(asset_db).find_one({"_id": self.asset_id})['asset_name']
        self.host_list = parse_target(connectiondb(asset_db).find_one({"_id": self.asset_id})['asset_host'])
예제 #7
0
# @Author  : jeffzhang
# @Time    : 18-6-19
# @File    : auth_scanner.py
# @Desc    : ""

import time
from threading import Thread
from datetime import datetime
from multiprocessing import Pool
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.modules.auth_tester.hydra_plugin import HydraScanner
from fuxi.views.lib.parse_target import parse_target
from apscheduler.schedulers.blocking import BlockingScheduler
from instance import config_name

config_db = db_name_conf()['config_db']
weekpasswd_db = db_name_conf()['weekpasswd_db']
auth_db = db_name_conf()['auth_db']


def hydra_scanner(args):
    start = HydraScanner(args)
    result = start.scanner()
    return result


def host_check(args):
    start = HydraScanner(args)
    result = start.host_check()
    return result
예제 #8
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-7-10
# @File    : dev_drop_db.py
# @Desc    : "Drop all databases"

import os
import sys
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parent_dir)
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf


def drop_database(db_name):
    result = connectiondb(db_name).remove()
    print("[*] Drop database: %s %s" % (db_name, result))


if __name__ == '__main__':
    ask = raw_input('Are you sure you want to delete (yes/no): ')
    if ask == 'yes':
        for key in db_name_conf():
            drop_database(db_name_conf()[key])
        print(
            "[*] Successfully deleted, Please initialize the configuration database (python migration/db_init.py)"
        )
예제 #9
0
# @Time    : 18-5-19
# @File    : domain_brute.py
# @Desc    : ""


import dns.resolver
from multiprocessing import Pool, Lock
from datetime import datetime
from random import sample
from string import digits, ascii_lowercase
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.lib.get_title import get_title
from instance import config_name

lock = Lock()
domain_db = db_name_conf()['domain_db']
config_db = db_name_conf()['config_db']
subdomain_db = db_name_conf()['subdomain_db']


def resolution(domain):
    _result = {}
    record_a = []
    record_cname = []
    try:
        respond = dns.resolver.query(domain.strip())
        for record in respond.response.answer:
            for i in record.items:
                if i.rdtype == dns.rdatatype.from_text('A'):
                    record_a.append(str(i))
                    _result[domain] = record_a
예제 #10
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-5-14
# @File    : parse_plugin.py
# @Desc    : ""

import os
import re
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from flask import Flask

app = Flask(__name__)
plugin_db = db_name_conf()['plugin_db']


def parse_plugin(plugin_filename):
    name_pattern = re.compile(r'name\s*=\s*[\'\"\[](.*)[\'\"\]]')
    author_pattern = re.compile(r'author\s*=\s*[\'\"\[](.*)[\'\"\]]')
    date_pattern = re.compile(r'vulDate\s*=\s*[\'\"\[](.*)[\'\"\]]')
    app_pattern = re.compile(r'appName\s*=\s*[\'\"\[](.*)[\'\"\]]')
    type_pattern = re.compile(r'vulType\s*=\s*[\'\"\[](.*)[\'\"\]]')
    version_pattern = re.compile(r'appVersion\s*=\s*[\'\"\[](.*)[\'\"\]]')
    plugin_data = open(plugin_filename, 'r').read()
    try:
        plugin_name = name_pattern.findall(plugin_data)
        plugin_author = author_pattern.findall(plugin_data)
        plugin_date = date_pattern.findall(plugin_data)
        plugin_app = app_pattern.findall(plugin_data)
        plugin_type = type_pattern.findall(plugin_data)
        plugin_version = version_pattern.findall(plugin_data)
예제 #11
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-5-15
# @File    : db_init.py
# @Desc    : ""

import os
import sys
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parent_dir)
from instance import config_name
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf

tasks_db = db_name_conf()['tasks_db']
asset_db = db_name_conf()['asset_db']
server_db = db_name_conf()['server_db']
subdomain_db = db_name_conf()['subdomain_db']
vul_db = db_name_conf()['vul_db']
plugin_db = db_name_conf()['plugin_db']
config_db = db_name_conf()['config_db']


def config():
    subdomain_dict = []
    subdomain_dict_path = os.getcwd() + '/tests/domain.dict'
    try:
        with open(subdomain_dict_path) as file_read:
            for i in file_read:
                subdomain_dict.append(i.strip())
    except Exception as e:
예제 #12
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-5-17
# @File    : nmap_scanner.py
# @Desc    : ""

import nmap
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf

port_db = db_name_conf()['port_db']


class NmapScanner:
    def __init__(self, target, arguments, scan_id):
        self.target = target
        self.arguments = arguments
        self.scan_id = scan_id
        self.ports = []
        self.result = []

    def scan(self):
        port_scanner = nmap.PortScanner()
        try:
            port_scanner.scan(self.target, arguments=self.arguments)
        except Exception as e:
            print self.target, e
        return port_scanner

    def port_result(self):
        self.result.append(self.scan().command_line())
예제 #13
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : jeffzhang
# @Time    : 18-5-17
# @File    : nmap_scanner.py
# @Desc    : ""

import nmap
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf

port_db = db_name_conf()['port_db']


class NmapScanner:
    def __init__(self, target, arguments, scan_id):
        self.target = target
        self.arguments = arguments
        self.scan_id = scan_id
        self.ports = []
        self.result = []

    def scan(self):
        port_scanner = nmap.PortScanner()
        try:
            port_scanner.scan(self.target, arguments=self.arguments)
        except Exception as e:
            print self.target, e
        return port_scanner

    def port_result(self):
        self.result.append(self.scan().command_line())
예제 #14
0
# @Author  : jeffzhang
# @Time    : 18-6-19
# @File    : auth_scanner.py
# @Desc    : ""

import time
from threading import Thread
from datetime import datetime
from multiprocessing import Pool
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.modules.auth_tester.hydra_plugin import HydraScanner
from fuxi.views.lib.parse_target import parse_target
from apscheduler.schedulers.blocking import BlockingScheduler
from instance import config_name

config_db = db_name_conf()['config_db']
weekpasswd_db = db_name_conf()['weekpasswd_db']
auth_db = db_name_conf()['auth_db']


def hydra_scanner(args):
    start = HydraScanner(args)
    result = start.scanner()
    return result


def host_check(args):
    start = HydraScanner(args)
    result = start.host_check()
    return result
예제 #15
0
# @File    : poc_scanner.py
# @Desc    : =_=!!

import sched
import time
import datetime
from multiprocessing import Pool, Lock
from threading import RLock
from pocsuite.api.cannon import Cannon
from apscheduler.schedulers.blocking import BlockingScheduler
from bson.objectid import ObjectId
from fuxi.views.lib.mongo_db import connectiondb, db_name_conf
from fuxi.views.lib.parse_target import parse_target
from instance import config_name

config_db = db_name_conf()['config_db']
tasks_db = db_name_conf()['tasks_db']
vul_db = db_name_conf()['vul_db']
plugin_db = db_name_conf()['plugin_db']

schedule = sched.scheduler(time.time, time.sleep)
lock = Lock()
thread_lock = RLock()


def verify_poc(scan_data):
    plugin_name = scan_data['plugin_name']
    plugin_filename = scan_data['plugin_filename']
    target = scan_data['target']
    info = {
        "pocname": plugin_name,