盘点自带POC的漏洞扫描工具

admin 2024年10月13日15:44:54评论26 views字数 5352阅读17分50秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,未经授权,严禁转载,如需转载,联系洪椒攻防实验室公众号。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

前言

  • 目前各种存在各种各样的工具,其中有一类大家比较喜欢用的工具为带POC漏洞验证的工具。
  • 下面介绍一些比较有名的工具,例如有Goby、Xray、Fscan、ARL以及有一个新出的Xpoc。
  • 提一句绿盟内部工具EZ(http://docs.ezreal.cool),不过好像不对外开放。

工具介绍

ARL

  • 先介绍这个吧,名称为资产侦察灯塔系统(https://tophanttechnology.github.io/ARL-doc/)。主要功能为资产收集+监控,附带有一些POC漏洞验证的扫描功能。

  • 但据我使用体验来说,可能因为没有Fofa会员没添加fofa搜索的功能。收集的资产信息差点意思。

盘点自带POC的漏洞扫描工具
  • 类似于资产测绘工具,能收集一些组件信息、网页截图、子域名、IP端口开放情况。并且定时执行,起到监控收集和监控的效果。但是并没有新增资产提示的功能,不过运行时间久了能发现资产数量会增加。

  • 工具自带有一些POC,不过因为服务器IP固定,在开启漏洞验证的情况下,扫几次IP可能就被标记为恶意IP了,所以我仅开启了资产监控的功能,做资产收集。

盘点自带POC的漏洞扫描工具

Xray

  • 由长亭开源的一款工具,通常用的是免费版(https://github.com/chaitin/xray)

  • 这个是我觉得比较好用的工具,亮点是被动扫描功能,可以将Burp流量转发到Xray扫描。还有一点是POC更新的比较勤快,可以去看看它的更新记录,会发现有一些近期的新漏洞也会及时更新POC。

  • 运行方式有多种,可以主动或被动扫描,如果是验证通用系统应用或者组件漏洞的话,可以对链接进行主动扫描。

    .xray_windows_amd64.exe webscan --basic-crawler http://testphp.vulnweb.com/ --html-output xray-crawler-testphp.html
  • 发现可能存在的漏洞可以尝试被动扫描,本地运行程序,然后在Burp中设置上级代理。这时Xray会对Burp流量中的一些参数进行扫描。

    .xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output xray-testphp.html
盘点自带POC的漏洞扫描工具
  • 有一个缺点是,可能会对访问速度等造成影响,因为毕竟访问流量多了一层处理。

Xpoc

  • 是长亭新出的一款工具(https://github.com/chaitin/xpoc)。目前使用的效果并不是很好,不如Xray。

  • 使用作为一款主动扫描器,输入IP/域名/Url。但是不知道为什么,经常访问出错,明明浏览器是可以正常访问的。不过目前版本仅到0.0.7,可以等待一手。

盘点自带POC的漏洞扫描工具
  • 优点是每次运行时会自动同步云端POC进行更新。可以及时更新POC。而且我看那些POC也比较新。
盘点自带POC的漏洞扫描工具

Goby

  • 不必多说,一款集成度比较高的工具,可以通过各种插件来强化功能。是大家比较喜欢用的工具(https://gobysec.net/)

  • 可以收集组件信息、Web指纹等比较有用的信息。

  • 不过缺点也很明显,速度非常慢,经常会卡进度。

  • 提一句,因为Goby免费版POC很少,可以在GitHub上找一找别人写的POC导入,例如佩奇文库。

盘点自带POC的漏洞扫描工具

Fscan

  • 最常见的内网扫描工具,但实际上扫描外网也可以用,同样带有一些POC。(https://github.com/shadow1ng/fscan)
  • 主打的就是一个速度快。使用时,加上-np禁ping参数可能会发现更多的资产,因为有一些服务器访问策略不允许ICMP协议访问。
  • 其中有一个对SSH、Mysql等爆破的功能,可以自定义密码本。如果你发现这个单位密码命名喜欢用单位名称@年份这种,那就可以自己定义一个密码本,例如abc@2019、abc@2020、abc@123这些可能性更高的密码,说不定就会发现更多的弱口令漏洞。

工具联动思路

1、ARL+AWVS+XRay

  • 思路为ARL收集资产,然后拿到AWVS扫通用漏洞,再用XRay进行一些事件漏洞的验证。

  • ARL收集的资产可以导出资产链接,然后AWVS也可以批量导入,

盘点自带POC的漏洞扫描工具
盘点自带POC的漏洞扫描工具
  • 然后设置代理为Xray的监听端口,这时AWVS的扫描流量全部经过Xray进行被动扫描。
盘点自带POC的漏洞扫描工具

2、Burp+Xray

  • 最简单的联动,只需要如上面写的配置Burp上级代理。

3、Goby+AWVS

  • 直接有现成的插件,但是只支持AWVS13,目前应该是到了15.2的版本了。经过我的测试新版应该是不行。
盘点自带POC的漏洞扫描工具
  • 不过我测试发现,网上能找到14.x版本api利用的文章,也适用于15.2版本。
盘点自带POC的漏洞扫描工具
盘点自带POC的漏洞扫描工具
  • 参考源码,修改tarurlapikey就可以使用。

    import json
    import time
    from datetime import datetime

    import requests

    from requests.packages.urllib3.exceptions import InsecureRequestWarning

    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

    tarurl = "https://localhost:3443"
    apikey = "1986ad8c0a5b3df4d7028d5f3c06e936c1fc7e549ff144a089c34a12b23d572fa"
    headers = {"X-Auth": apikey, "Content-type""application/json;charset=utf8"}


    # 查看所有目标结果
    def targets():
        api_url = tarurl + '/api/v1/targets'
        r = requests.get(url=api_url, headers=headers, verify=False)
        print(r.json())


    # 添加targets目标,获取target_id
    def post_targets(url):
        api_url = tarurl + '/api/v1/targets'
        data = {
            "address": url,
            "description""wyt_target",
            "criticality""10"
        }
        data_json = json.dumps(data)
        r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)
        target_id = r.json().get("target_id")
        print('target_id:', target_id)
        return target_id


    # 添加scans
    def scans(url):
        api_url = tarurl + '/api/v1/scans'
        data = {
            "target_id": url,
            "profile_id""11111111-1111-1111-1111-111111111112",
            "schedule":
                {"disable": False,
                 "start_date": None,
                 "time_sensitive": False
                 }
        }
        data_json = json.dumps(data)
        r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)
        # target_id = r.json().get("target_id")
        # print(r.json)


    # 获取scan_id,通过start_date可知,最新生成的为第一个
    def scan_id():
        api_url = tarurl + '/api/v1/scans'
        # print(api_url)
        r = requests.get(url=api_url, headers=headers, verify=False)
        scan_id = r.json().get("scans")[0].get("scan_id")
        print('scan_id:', scan_id)
        return scan_id


    # 添加generate,并获取generate_id
    def generate(url):
        api_url = tarurl + '/api/v1/reports'
        data = {
            "template_id""11111111-1111-1111-1111-111111111115",
            "source": {
                "list_type""scans",
                "id_list"

            }
        }
        data_json = json.dumps(data)
        r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)
        # print(r.json)


    # 生成扫描报告,每次新生成的都在第一个
    def html():
        api_url = tarurl + '/api/v1/reports'
        # print(api_url)
        r = requests.get(url=api_url, headers=headers, verify=False)
        html = r.json().get("reports")[0].get("download")[0]

        url_html = tarurl + html
        print('报告地址:', url_html)
        r_html = requests.get(url=url_html, headers=headers, verify=False)

        time_now = datetime.now().strftime('%Y-%m-%d %H%M%S')
        with open("report-" + time_now + ".html""wb") as code:
            code.write(r_html.content)
            code.close()


    def pdf():
        api_url = tarurl + '/api/v1/reports'
        # print(api_url)
        r = requests.get(url=api_url, headers=headers, verify=False)
        pdf = r.json().get("reports")[0].get("download")[1]

        url_pdf = tarurl + pdf
        print('报告地址:', url_pdf)
        r_html = requests.get(url=url_pdf, headers=headers, verify=False)

        time_now = datetime.now().strftime('%Y-%m-%d %H%M%S')
        with open("report-" + time_now + ".pdf""wb") as code:
            code.write(r_html.content)
            code.close()


    if __name__ == '__main__':
        # targets()
        # 添加到targets队列
        target_id = post_targets("http://8.8.8.8/")
        time.sleep(5)

        # 添加到scans队列
        scans(target_id)
        time.sleep(5)

        # 获取scan_id,并生成generate
        scan_id = scan_id()
        generate(scan_id)
        time.sleep(5)

        # 生成扫描报告
        # pdf()
        html()

原文始发于微信公众号(洪椒攻防实验室):盘点自带POC的漏洞扫描工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月13日15:44:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   盘点自带POC的漏洞扫描工具https://cn-sec.com/archives/1903337.html

发表评论

匿名网友 填写信息