fuxi scanner 安装+修复不能扫描域名端口bug

0x00 fuxi scanner 简介

扫描器链接:https://github.com/jeffzh3ng/Fuxi-Scanner
伏羲扫描器是一款开源的网络安全扫描工具,非常适合中小型企业对资产进行管理已经安全检测。
伏羲扫描器通过模块化提供了多种安全检查功能

  1. 基于pocsuite框架poc扫描
  2. 持续化的漏洞管理
  3. 多种协议的弱口令扫描,比如 ssh、mysql、ftp、vnc
  4. 基于爆破的子域名收集
  5. 企业内部资产管理(也可以进行src挖掘资产管理)
    6.端口扫描
    7.AWVS接口调用

Dashboard 展示页面
fuxi scanner 安装+修复不能扫描域名端口bug_第1张图片

0x01 fuxi scanner 安装

  1. 首先需要安装docker,请自行google安装
  2. docker pull jeffzh3ng/fuxi-scanner
  3. 启动 docker run -dit -p 5000:5000 -v /opt/data:/data jeffzh3ng/fuxi-scanner:latest

    0x02 使用手册- 漏洞扫描模块

    可以拖拉式的添加poc插件,插件来源可以是自己编写,也可以从github下载
    可以进行任务用管理,定时每天、每周、每月扫描等
    可以批量查看漏洞详情
    开启一个扫描
    fuxi scanner 安装+修复不能扫描域名端口bug_第2张图片
    添加poc插件
    fuxi scanner 安装+修复不能扫描域名端口bug_第3张图片
    扫描任务管理
    fuxi scanner 安装+修复不能扫描域名端口bug_第4张图片

    0x03 使用手册- 资产管理

    可以添加单个资产,也可以批量添加资产
    资产添加完成,扫描默认端口,将扫描结果保存到service
    添加资产
    fuxi scanner 安装+修复不能扫描域名端口bug_第5张图片
    资产对应的端口
    fuxi scanner 安装+修复不能扫描域名端口bug_第6张图片

    0x04 使用手册- 弱口令扫描

    可以扫描42种类型的弱口令,username password可以手动修改
    允许同时批量扫描多个ip或域名
    创建一个弱口令扫描
    fuxi scanner 安装+修复不能扫描域名端口bug_第7张图片
    弱口令扫描结果查看
    fuxi scanner 安装+修复不能扫描域名端口bug_第8张图片

    0x04 使用手册- 子域名爆破以及awvs接口,端口扫描

    这些功能暂时没有使用

    0x04 fuxi scanner 存在的bug

    默认情况下,添加资产是ip,可以扫描出对应的服务(端口)。但是添加域名及不能扫描出端口

修改bug方法:
查看正在运行的docker docker ps -a
fuxi scanner 安装+修复不能扫描域名端口bug_第9张图片
docker exec -it 3f605984e78e /bin/bash 进入fuxi 的docekr
修改/opt/fuxi/fuxi/views/modules/discovery/asset_discovery.py 中的port_scanner函数
替换成:

def port_scanner(host, port_list):
    result = []
    scanner = nmap.PortScanner()
    arguments = "-sT -sV -sC -A -Pn -p " + ','.join('%s' % port for port in port_list)
    try:
        # port processing
        pscan = scanner.scan(host, arguments=arguments)
        # port 'state' == 'open'
        # print("Scanning: %s" % host)
        scanner = pscan['scan']
        scanner.keys()[0]=host
        for port in scanner[host].all_tcp():
            if scanner[host]['tcp'][port]['state'] == 'open':
                if "script" in scanner[host]['tcp'][port].keys():
                    script = scanner[host]['tcp'][port]['script']
                else:
                    script = ''
                if len(scanner[host]['tcp'][port]['version']) > 0:
                    version = scanner[host]['tcp'][port]['version']
                else:
                    version = 'Unknown'
                if len(scanner[host]['tcp'][port]['product']) > 0:
                    product = scanner[host]['tcp'][port]['product']
                else:
                    product = scanner[host]['tcp'][port]['name']
                data = {
                    "product": product,
                    "version": version,
                    "name": scanner[host]['tcp'][port]['name'],
                    "script": script,
                    "extrainfo": scanner[host]['tcp'][port]['extrainfo'],
                    "cpe": scanner[host]['tcp'][port]['cpe'],
                    "host": host,
                    "port": port,
                }
                result.append(data)
        return result
    except Exception as msg:
        print(msg)
        pass
    return result

然后退出docker,将这个容器保存为镜像,重新启动刚才保存的镜像
将容器保存为
docker commit -m "change port scan domain" -a "fuxi scan" 2c74d574293f xiaohuihui/fuxi-scanner:latest
启动更改后的docker镜像
docker run -dit -p 5000:5000 -v /opt/data:/data xiaohuihui/fuxi-scanner:latest

修改后即可扫描域名的端口了