OneForAll
(以下简称“OFA”)是一个非常好用的子域收集工具,可以通过一级域名找到旗下的所有层级域名,通过递归的方式我们很容易就能够知道此域名下的所有域名层级结构,对于进一步通过域名推测站点功能起到非常重要的作用。
声明:
- 本文测试的站点为自家站点仅做学习使用,不存在侵犯网络信息安全问题;
- 本文只介绍工具的使用并不鼓吹任何非法活动,请各位看官三思而后行一切后果自负;
- 本文测试中结果虽然是真实的,但涉及的敏感信息都将采用“化名”进行脱敏;
1. 安装 OneForAll
OFA 安装其实非常简单,我们只需到 github(或 gitee)中进行下载即可。
┌──(root💀b8ef6c2abc47)-[/home]
└─# git clone https://github.com/shmilylty/OneForAll.git
由于之前我们已经安装了 kali linux(以下简称“kali”)的 everything 版本,因此 python2 和 python3
都已经安装完成了,此时切换到 OFA 根目录就可以通过 python 命令执行。
注意:OFA 需要使用 python3 来运行。在运行过程中或许会出现“cannot import name ‘sre_parse’ from
‘re’”的错误,这是因为 kali 在安装 everything 的时候直接安装了高版本的 python3 了,在高版本中 sre_parse
模块已经被独立移出了,因此需要修改一下 exrex.py 文件,那这个 exrex.py 文件究竟在哪呢?
从报错信息我们可以找到是在“/usr/local/lib/python3.11/dist-
packages/exrex.py”路径下,那么进去修改即可,如下图:
try:
from future_builtins import map, range
except:
pass
import sre_parse
from re import U
#from re import sre_parse, U
from itertools import tee
from random import choice, randint
from types import GeneratorType
还好要修改的部分还算是比较好找,如上图所示,将“from re import sre_parse, U”给注释掉,然后额外添加“import
sre_parse”和“from re import U”就可以了。
2. 根据域名收集子域
在开始之前我们先找到目标域名,假设域名为“yzhcs.io”。接下来我们有两种方式可以将这个域名提供给 OFA 使用,
2.1 读取文件(适合多域名)
将域名写到一个 txt 文件里面(domain.txt,明名字随便起就可以),如下图:
┌──(root💀b8ef6c2abc47)-[/home/OneForAll]
└─# vim domain.txt
┌──(root💀b8ef6c2abc47)-[/home/OneForAll]
└─# cat domain.txt
yzhcs.io
这里如果要扫描多个域名的情况下,可以在 txt 文档里面分多行来填写,每一行一个域名。接下来使用的时候只需要通过 --targets
参数将文件路径写上即可,如下图:
┌──(root💀b8ef6c2abc47)-[/home/OneForAll]
└─# python oneforall.py --targets domain.txt
2.2 直接提供(适合单域名)
除了文件方式,也可以通过 --target 参数直接将域名提供给 OFA,如下图:
┌──(root💀b8ef6c2abc47)-[/home/OneForAll]
└─# python oneforall.py --target yzhcs.io
2.3 执行扫描
除了提供域名外,我还使用了以下几个参数:
- –port:端口扫描范围,这里采用 large 参数代表大范围的端口扫描
- –alive:是否只导出存活子域
- –ta