oneforall安装和使用教程(包含安装、使用过程中的问题解决)

一:Oneforall简介
OneForAll,是 shmilylty 在 Github 上开源的子域收集工具。其功能特点有:
1.收集能力强大。
①利用证书透明度收集子域(目前有6个模块:censys_api、certspotter、crtsh、entrust、google、spyse_api)
②常规检查收集子域(目前有4个模块:域传送漏洞利用axfr、检查跨域策略文件cdx、检查HTTPS证书cert、检查内容安全策略csp、检查robots文件robots、检查sitemap文件sitemap、利用NSEC记录遍历DNS域dnssec、NSEC3记录等模块)
③利用网上爬虫档案收集子域(目前有2个模块:archivecrawl、commoncrawl)
④利用DNS数据集收集子域(目前有23个模块:binaryedge_api、 bufferover,、cebaidu、 chinaz、 chinaz_api、 circl_api、dnsdb_api,、dnsdumpster, hackertarget、 ip138、ipv4info_api、netcraft、passivedns_api、 ptrarchive、qianxun、rapiddns、riddler, robtex、 securitytrails_api、 sitedossier、 threatcrowd、wzpc、ximcx)
⑤利用DNS查询收集子域(目前有5个模块:通过枚举常见的SRV记录并做查询来收集子域srv、以及通过查询域名的DNS记录中的MX、NS、SOA、TXT记录来收集子域)
⑥利用威胁情报平台数据收集子域(目前有6个模块:alienvault、riskiq_api、threatbook_api、threatminer、virustotal、virustotal_api)
⑦利用搜索引擎发现子域(目前有18个模块:ask、 baidu、 bing、 bing_api、 duckduckgo、 exalead、 fofa_api、 gitee、github、 github_api、 google、 google_api、 shodan_api、 so、 sogou、 yahoo、 yandex、 zoomeye_api),在搜索模块中除特殊搜索引擎,通用的搜索引擎都支持自动排除搜索、全量搜索、递归搜索。
2.支持子域爆破,该模块有常规的字典爆破,也有自定义的fuzz模式,支持批量爆破和递归爆破,自动判断泛解析并处理。
3.支持子域验证,默认开启子域验证,自动解析子域DNS,自动请求子域获取title和banner,并综合判断子域存活情况。
4.支持子域接管,默认开启子域接管风险检查,支持子域自动接管(目前只有Github,有待完善),支持批量检查。
5.处理功能强大,发现的子域结果支持自动去除,自动DNS解析,HTTP请求探测,自动筛选出有效子域,拓展子域的Banner信息,最终支持的导出格式有rst、 csv,、 tsv、 json、 yaml、 html、 xls、 xlsx、 dbf、 latex、 ods。
6.速度极快,收集某块使用多线程调用,爆破模块使用massdns,默认配置下速度最少能达到10000pps,子域验证中DNS解析和HTTP请求使用异步多协程,多线程检查子域接管风险。
7.体验良好,各模块都有进度条,异步保存各模块结果。

二:下载安装与使用
(1) 安装环境
A:python 3.8以上版本(更建议装低本python,这样不会出现后面笔者所写在使用中遇到的问题)。
查看python版本命令: python -V / python --version
B:pip3 pip 是 Python 包管理工具,该工具提供了对 Python 包的查找、下载、安装、卸载的功能 (注意:自从Python 3.4版本开始,pip已经被内置在Python中,所以无需再次安装)。 查看pip版本命令 pip3 -V / pip3 --version
oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第1张图片
pip相关命令:
①下载工具包: pip install package_name
②卸载工具包: pip uninstall package_name
③查看已经安装的工具包: pip list
④更新pip: pip install pip -U -I 镜像源RUL
⑤更换镜像源(永久):pip config set global.index-url 镜像源RUL
(2)oneforall的安装与使用
第一步:下载Oneforall文件,将文件部署在本地。(注意:如果你的Python3.x安装在系统Program Files目录下,如:C:\Program Files\Python3.7,运行oneforall时需要以管理员身份运行命令提示符CMD执行操作命令)
第二步:打开CMD命名窗口,将执行文件切换到oneforall程序所在路径,如 cd D:\Oneforall\OneForAll-master。(若嫌切换路径麻烦,可将oneforall文件的路径添加至系统环境变量)
oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第2张图片

第三步:运行oneforall程序。 输入命名:python oneforall.py
(3)使用oneforall收集子域
(1) 单个目标子域收集
命令: python oneforall.py –-target 域名 run
如:python oneforall.py –target baidu.com run (部分截图)
oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第3张图片
(2) 批量目标子域收集
命令: python oneforall.py –-targets 域名文件 run
(既先将需要进行子域名收集的站点统一写于一个文件中)

注意:扫描结果将存放于oneforall\results文件下。

三:使用过程中出现的问题
1.使用命令:python oneforall.py进入程序时,显示:ImportError: cannot import name ‘sre_parse’ from ‘re’。(如图)
oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第4张图片
问题成因:高版本的python中re模块中没有了sre_parse模块。
解决方案:
(1)使用相对较低版本的python。
(2)从报错信息入手,找到python文件下的Lib\site-packages\exrex.py文件,对其代码进行更改。
oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第5张图片
(注意:python\Lib\site-packages文件下没有exrex.py文件,或该文件为乱码或文件内容并没有上图中内容,则需在python文件中找到另一个exrex.py文件,并将其复制到python\Lib\site-packages文件下,并按上图更改内容即可。此情况为笔者所遇见的特殊情况)

2.使用命令:python oneforall.py进入程序时,显示:ModuleNotFoundError: No module named ‘fire’ 或 ModuleNotFoundError: No module named ‘tenacity’ 或 ModuleNotFoundError: No module named ‘requests’
oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第6张图片 oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第7张图片
解决方案: 报错信息提示缺少哪个模块就下载哪个模块, 使用命令 pip install 模块名称 (如: pip install fire)
异常情况:使用(pip install 模块名称)命令下载模块出现不一样的报错:ERROR: Could not find a version that satisfies the requirement dns (from versions: none)
ERROR: No matching distribution found for dns。
oneforall安装和使用教程(包含安装、使用过程中的问题解决)_第8张图片

解决方案: 使用 pip install opencv-python命令 (若一次使用该命令没有成功,则多试几次)
一山放过一山拦:有的同学在在使用了 pip install opencv-python命令之后依然是报错,那可能是网络和python默认的下载源在国外下载第三方包比较慢的问题,解决方案是更换下载源。
暂时切换镜像源命令: pip install 需下载的包名 -i https://pypi.tuna.tsinghua.edu.cn/simple/
永久切换镜像源命令: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ ,然后再使用命令 pip install 模块名。
国内知名的镜像源:
豆瓣:http://pypi.douban.com/simple/
中科大:https://pypi.mirrors.ustc.edu.cn/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
当然,使用命令切换镜像源仅有高版本的python可行,低版本的python可以在C盘的用户目录下找到当前账户目录,在当前账户目录下新建一个 pip 文件夹,再在pip文件夹下新建pip.ini文件(如:c:\users\admin\pip\pip.ini),pip.ini文件内容为:
[global]
index-url = 镜像站点URL
注意:尽管有很多镜像源站点,但是有的镜像源里的库并不是很全,导致无法映射,进而无法安装。因此笔者更加的推荐使用清华镜像源站点。因为更新频率大,而且站点内的包是目前国内所有的数据源镜像中比较全的。
道高一尺,魔高一丈:有同学反馈在上面所有操作之后,安装dns包时依然报错:ERROR: Could not find a version that satisfies the requirement dns (from versions: none)
ERROR: No matching distribution found for dns
在这里插入图片描述
此时,需要将命令做小小的调整,既输入: pip install dnspython即可完成安装dns包。
在这里插入图片描述
3:运行oneforall对某个站点进行子域收集之后,运行结果文件为空。
解决方案:产生这个问题的原因有两个:一是目标站点没有子域名。 二是由于OneForAll默认会自动验证子域,在导出时只会导出有效子域,所以存在导出时没有有效子域的情况。可以在运行OneForAll时使用 --valid=None 指定导出所有发现的子域,也可以使用 --verify=False 指定不验证子域的有效性。

四:Oneforall下载地址:
(1) https://gitee.com/shmilylty/OneForAll.git
(2) 自带python3.9 https://pan.baidu.com/s/1xx3Di4ZcgzIP6-J3BNig0Q?pwd=8888

你可能感兴趣的:(#,web安全,测试工具)