黑客笔记08:超级好用的子域名爆破工具OneForAll,打5分

593 阅读4分钟

OneForAll是一款功能强大的子域收集工具

github.com/shmilylty/O…

pip config set global.index-url http://pypi.douban.com/pypi/simple/
pip config set global.trusted-host pypi.douban.com 

pip install -r .\requirements.txt

用python一定要先切换国内的pip源,可以节约大量时间,而且可以少很多报错。

环境中的python是Python 3.11.5版本,pip是pip 23.2.1 from C:\Users\kali\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip (python 3.11)

执行python .\oneforall.py时出现报错

1707097882126.png

通常sre_parse 是Python标准库 re 的一个内置组件,应该可以在 re 模块中找到。如果 re 模块没有找到 sre_parse,可能是因为你的Python环境有问题,或者是因为 exrex 模块依赖于一个与你的Python版本不兼容的 re 模块版本。

C:\Users\kali\AppData\Local\Programs\Python\Python311\Lib\site-packages\exrex.py,修改组件代码注释掉from re import sre_parse, U

添加import sre_parse即可成功运行。

1707098005139.png

OneForAll的帮助文件,全英文

INFO: Showing help with the command 'oneforall.py -- --help'.

NAME
    oneforall.py - OneForAll help summary page

SYNOPSIS
    oneforall.py COMMAND | <flags>

DESCRIPTION
    OneForAll is a powerful subdomain integration tool

    Example:
        python3 oneforall.py version
        python3 oneforall.py check
        python3 oneforall.py --target example.com run
        python3 oneforall.py --targets ./domains.txt run
        python3 oneforall.py --target example.com --alive False run
        python3 oneforall.py --target example.com --brute False run
        python3 oneforall.py --target example.com --port medium run
        python3 oneforall.py --target example.com --fmt csv run
        python3 oneforall.py --target example.com --dns False run
        python3 oneforall.py --target example.com --req False run
        python3 oneforall.py --target example.com --takeover False run
        python3 oneforall.py --target example.com --show True run

    Note:
        --port   small/medium/large  See details in ./config/setting.py(default small)
        --fmt    csv/json (result format)
        --path   Result path (default None, automatically generated)

FLAGS
    --target=TARGET
        Type: Optional[]
        Default: None
        One domain (target or targets must be provided)
    --targets=TARGETS
        Type: Optional[]
        Default: None
        File path of one domain per line
    --brute=BRUTE
        Type: Optional[]
        Default: None
        Use brute module (default True)
    --dns=DNS
        Type: Optional[]
        Default: None
        Use DNS resolution (default True)
    --req=REQ
        Type: Optional[]
        Default: None
        HTTP request subdomains (default True)
    --port=PORT
        Type: Optional[]
        Default: None
        The port range to request (default small port is 80,443)
    --alive=ALIVE
        Type: Optional[]
        Default: None
        Only export alive subdomains (default False)
    --fmt=FMT
        Type: Optional[]
        Default: None
        Result format (default csv)
    --path=PATH
        Type: Optional[]
        Default: None
        Result path (default None, automatically generated)
    --takeover=TAKEOVER
        Type: Optional[]
        Default: None
        Scan subdomain takeover (default False)

COMMANDS
    COMMAND is one of the following:

     check
       Check if there is a new version and exit

     version
       Print version information and exit

找一个二级域名测试一下看看效果,只输出http存活的域名,速度非常的快

python .\oneforall.py --target leapmoto.com --alive True run
python .\oneforall.py --target leapmoto.com --takeover True run

1707104508045.png

这里说明一下子域名takeover接管。

子域名接管(Subdomain Takeover)是指攻击者发现一个高级别的域名(如 example.com)下的子域名(如 sub.example.com)不再指向原本的设计目标,或者指向的资源不再有效(如服务器已下线),而是能够指向攻击者控制的服务器,从而实现对子域名的非法控制。

子域名接管通常涉及步骤:

发现子域名:攻击者首先通过各种手段(如搜索引擎、子域名探测工具等)找到目标域名的子域名。

确定子域名指向:确认子域名当前指向的服务器或者资源的状态。

分析域名指向的资源:如果指向的服务器已不再有效,或者可以被攻击者控制,那么这个子域名就可能被接管。

接管子域名:通过修改DNS记录(如A记录、CNAME记录等),将子域名指向攻击者控制的服务器。

利用接管的子域名:一旦子域名被成功接管,攻击者就可以利用它进行各种恶意活动,如钓鱼攻击、传播恶意软件、发起DDoS攻击等。

防范子域名接管的办法:

定期检查DNS记录:及时发现并修复不正确的DNS记录。

使用域名注册期的安全措施:如域名注册锁定,防止域名被转移。

使用DNSSEC:为域名启用DNSSEC加密,确保域名解析结果的完整性和真实性。

监控子域名状态:定期检查子域名的指向和服务器状态。

及时更新和修复:对于不再使用的子域名,应及时删除或更新DNS记录;对于指向内部开发环境的子域名,确保开发完成后及时更新记录,避免暴露内部环境。

A记录的其实也存在,一个子域名之前捆绑了一个公网IP,后期公网IP废弃不用,但是DNS解析没有删除,公网IP对应的服务器被攻陷了,那么也会出现域名被接管的问题。