Exemple #1
0
def do_host_status(records=[], query=None, asset_group=None, hosts=[]):
    """
    Runs through the t_hosts table and updates the *_count entries.
    Can also run through a specific list of record IDs instead.
    """
    from skaldship.general import do_host_status
    do_host_status(records=records, query=query, asset_group=asset_group, hosts=hosts)
    return True
Exemple #2
0
def update_dynamic_fields():
    """
    Executes the following functions that update dynamic field entries:

       skaldship.general.do_host_status
       skaldship.exploits.connect_exploits
    """
    response.title = "%s :: Update Dynamic Fields" % (settings.title)

    users = db(db.auth_user).select()
    userlist = []
    for user in users:
        userlist.append([user.id, user.username])

    ag = db(db.t_hosts).select(db.t_hosts.f_asset_group, distinct=True).as_list()
    asset_groups = map((lambda x: x["f_asset_group"]), ag)

    form = SQLFORM.factory(
        Field("f_exploit_link", type="boolean", default=True, label=T("Exploit linking")),
        Field("f_host_status", type="boolean", default=True, label=T("Host Service/Vuln counts")),
        Field(
            "f_asset_group",
            type="list:string",
            label=T("Asset Group"),
            requires=IS_EMPTY_OR(IS_IN_SET(asset_groups, multiple=False)),
        ),
        Field("f_taskit", type="boolean", default=auth.user.f_scheduler_tasks, label=T("Run in background task")),
    )

    from skaldship.general import do_host_status
    from skaldship.exploits import connect_exploits

    if form.accepts(request.vars, session):
        if form.vars.f_exploit_link:
            connect_exploits()
        if form.vars.f_host_status:
            if form.vars.f_taskit:
                task = scheduler.queue_task(
                    do_host_status,
                    pvars=dict(asset_group=form.vars.f_asset_group),
                    group_name=settings.scheduler_group_name,
                    sync_output=5,
                    timeout=300,  # 5 minutes
                )
                if task.id:
                    redirect(URL("tasks", "status", args=task.id))
                else:
                    resp_text = "Error submitting job: %s" % (task.errors)
            else:
                do_host_status(asset_group=form.vars.f_asset_group)
        response.flash = "Task completed!"

    elif form.errors:
        response.flash = "Error in form"

    return dict(form=form, err404=get_oreally_404(request.folder))
Exemple #3
0
            task = msf_api.pro_import_data(
                msf_settings.get("workspace"),
                "".join(scan_data),
                {
                    #'preserve_hosts': form.vars.preserve_hosts,
                    "blacklist_hosts": "\n".join(ip_ignore_list)
                },
            )

            msf_workspace_num = session.msf_workspace_num or "unknown"
            msfurl = os.path.join(msf_settings.get("url"), "workspaces", msf_workspace_num, "tasks", task["task_id"])
            log(" [*] Added file to MSF Pro: %s" % msfurl)

    # any new nexpose vulns need to be checked against exploits table and connected
    log(" [*] Connecting exploits to vulns and performing do_host_status")
    do_host_status(asset_group=asset_group)

    log(" [*] Import complete: hosts: %s added, %s skipped" % (hoststats["added"], hoststats["skipped"]))


##-------------------------------------------------------------------------


def run_scan(blacklist=None, target_list=None, scan_options=None):
    """
    Executes nmap scan
    """
    from zenmapCore_Kvasir.NmapCommand import NmapCommand
    from zenmapCore_Kvasir.NmapOptions import NmapOptions
    from time import sleep
Exemple #4
0
                    # new account record
                    acct_data = dict(
                        f_services_id=svc_id,
                        f_username=user,
                        f_password=f_password,
                        f_source=f_source,
                        f_compromised=True
                    )
                    acct_id = db.t_accounts.insert(**acct_data)
                    db.commit()
                    stats['accounts_added'] += 1
                    didwhat = "Added"

            print(" [-] Account %s: (%s) %s" % (didwhat, ipaddr, user))

    do_host_status()

    msg = " [*] Import complete: hosts: (%s/A, %s/U, %s/S) - services: (%s/A, %s/U), creds: (%s/A, %s/U)"\
        % (
            stats['hosts_added'],
            stats['hosts_updated'],
            stats['hosts_skipped'],
            stats['services_added'],
            stats['services_updated'],
            stats['accounts_added'],
            stats['accounts_updated']
        )

    print(msg)
    return msg