LoginSignup
1
1

More than 3 years have passed since last update.

任意サイトのサブドメインを列挙する

Last updated at Posted at 2021-03-25

何?

あるサイトのサブドメインを探して列挙したい。
例えばexample.comならftp.example.comws3.example.comなどがサブドメインに当たる。
調べたところいくつかツールがヒットした。その中でもsublist3rがシンプルで良かったので紹介する。

sublist3r

aboul3la/Sublist3rは、各検索エンジンのクローラが拾ったレコードからサブドメインを検索し列挙するコマンド。(メンテされてるか微妙だが2020-03-25現在使用できた。)

インストールは:

Terminal
# pypiには第三者がアップロードしているので本家repoから
$ git clone https://github.com/aboul3la/Sublist3r && cd Sublist3r
$ pip install -r requirements.txt
$ pip install -e .
$ sublist3r --help
Help
usage: sublist3r [-h] -d DOMAIN [-b [BRUTEFORCE]] [-p PORTS] [-v [VERBOSE]] [-t THREADS]
                 [-e ENGINES] [-o OUTPUT] [-n]

OPTIONS:
  -h, --help            show this help message and exit
  -d DOMAIN, --domain DOMAIN
                        Domain name to enumerate it's subdomains
  -b [BRUTEFORCE], --bruteforce [BRUTEFORCE]
                        Enable the subbrute bruteforce module
  -p PORTS, --ports PORTS
                        Scan the found subdomains against specified tcp ports
  -v [VERBOSE], --verbose [VERBOSE]
                        Enable Verbosity and display results in realtime
  -t THREADS, --threads THREADS
                        Number of threads to use for subbrute bruteforce
  -e ENGINES, --engines ENGINES
                        Specify a comma-separated list of search engines
  -o OUTPUT, --output OUTPUT
                        Save the results to text file
  -n, --no-color        Output without color

Example: python /home/eggplants/.local/bin/sublist3r -d google.com

実際に列挙

sublist3r -d <domain>で実行できる。プレーンテキストで保存するには-o <filename>を使う。

今回は筑波大学のドメインtsukuba.ac.jpで試してみる。

Terminal
$ LANG=C date
Thu Mar 25 11:25:01 JST 2021 
$ sublist3r -d tsukuba.ac.jp -o subdomains.txt
...()...
$ wc -l subdomains.txt
13876

結果はこちら

応用

Terminal
# 自己責任で
$ (echo 'url,res_code,content_type,res_time'
  cat subdomains.txt | xargs -n 1 -P 5 -I@ \
  curl "@" -m 2 -s -o /dev/null \
       -w "@,%{http_code},%{content_type},%{time_starttransfer}s\n" | sort) > res.csv
# httpでなにか配信されているものの列挙
$ (sed 1\!d res.csv;grep -v ,, res.csv | grep ,200,) > res_200.csv
$ echo $[`wc -l<res_200.csv`-1]
279
# httpsとかへの転送(301)
$ (sed 1\!d res.csv;grep -v ,, res.csv | grep ,301,) > res_301.csv
$ echo $[`wc -l<res_301.csv`-1]
180

結果はこちら
またこれらの処理をまとめたスクリプトを書いた。

結論

お手軽。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1