リバースプロキシの背後にあるオリジンホストを発見するためのツール。WAFやその他のリバースプロキシをバイパスするのに便利です。
このツールはまず、指定されたホスト名/URLにHTTPリクエストを送信し、そのレスポンスを保存します。その後、指定されたすべてのIPアドレスに対して、デフォルトではHTTP(80)およびHTTPS(443)でリクエストを送信します(オプションでポートを追加可能)。その際、Hostヘッダーには元のホスト(:ポート)が設定されます。各レスポンスは元のレスポンスと比較され、Levenshteinアルゴリズムを使用して類似度が判定されます。レスポンスが類似している場合、一致とみなされます。
IPアドレスのリストを標準入力で提供し、元のホスト名を-hオプションで指定します。例:
prips 93.184.216.0/24 | hakoriginfinder -h https://example.com:443/foo
Levenshtein距離の閾値は-lで設定できます。数値が低いほど、一致とみなすための類似度が高くなります。デフォルトは5です。
スレッド数は-tで設定可能です。デフォルトは32です。
ホスト名は-hで設定します。デフォルトはありません。
標準入力で提供されたIPアドレスに対して使用するポートは-pで設定します。デフォルトは80,443です。
出力は3列で、スペースで区切られます。1列目は、"MATCH" または "NOMATCH" で、Levenshtein閾値に達したかどうかを示します。2列目はテスト対象のURL、3列目はLevenshteinスコアです。
$ prips 1.1.1.0/24 | hakoriginfinder -h http://one.one.one.one:80/index.html -p 80,443,8080,8443
Redirect 301 to: https://one.one.one.one/index.html
Redirect 308 to: https://one.one.one.one/
NOMATCH http://1.1.1.31:443/ 56290
NOMATCH http://1.1.1.17:443/ 56290
NOMATCH http://1.1.1.4:443/ 56290
NOMATCH http://1.1.1.0:443/ 56290
NOMATCH http://1.1.1.27:443/ 56290
NOMATCH http://1.1.1.1:443/ 56290
NOMATCH http://1.1.1.11:443/ 56290
NOMATCH http://1.1.1.3:443/ 56290
NOMATCH http://1.1.1.25:443/ 56290
NOMATCH http://1.1.1.5:443/ 56290
NOMATCH http://1.1.1.24:443/ 56290
... 簡略化 ...
NOMATCH http://1.1.1.185:8443/ 56290
NOMATCH http://1.1.1.183:8443/ 56290
MATCH https://1.1.1.1:443/ 0
... 簡略化 ...
NOMATCH http://1.1.1.253:8443/ 56290
NOMATCH http://1.1.1.252:8443/ 56290
MATCH https://1.1.1.1:8443/ 0
Goをインストールした後、以下を実行します:
go install github.com/hakluke/hakoriginfinder@latest