getJSとは
getJSは003randomが開発したJavaScriptファイルを抽出するためのGoで書かれたツールです。
ソースコードはGitHubに公開されています。
https://github.com/003random/getJS
【主な機能】
- HTMLページやJavaScriptファイルから、外部JavaScriptファイルのURLを抽出
- 再帰的にJavaScriptファイルを探索し、依存関係を発見
- Webサイトが使用しているすべてのJavaScriptファイルのリストを作成
- 標準入力からURLリストを受け取って処理可能
インストール
$ go install github.com/003random/getJS/v2@latest
$HOME/go/bin/にインストールされます。
$ ls -l $HOME/go/bin
合計 9084
-rwxrwxr-x 1 kali kali 9299911 5月 14 15:08 getJS
私は/usr/local/binへ移動しました。
$ sudo chown root:root getJS
sudo mv getJS /usr/local/bin/
getJSを利用する
OWASP Juice Shop(=>docker image)を使ってgetJSを試してみます。
–url URLのみ指定する
まずは一番シンプルにURLを指定します。
$ getJS --url http://192.168.119.1/#/
//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
runtime.js
polyfills.js
vendor.js
main.js
–complete 抽出結果を完全なURLで表示する
–completeを指定することにより結果の表示方法が変わります。
$ getJS --complete --url http://192.168.119.1/#/
http://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
http://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
http://192.168.119.1//runtime.js
http://192.168.119.1//polyfills.js
http://192.168.119.1//vendor.js
http://192.168.119.1//main.js
–resolve 再帰的に抽出する
–resolveを指定するとJavaScriptファイルの中で別のJavaScriptファイルを読み込んでいる場合、読み込んでいるJavaScriptも列挙します。
(この例では再帰的に読み込んでも結果は変わりませんでした。)
$ getJS --complete --resolve --url http://192.168.119.1/#/
http://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
http://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
http://192.168.119.1//runtime.js
http://192.168.119.1//polyfills.js
http://192.168.119.1//vendor.js
http://192.168.119.1//main.js
–output 抽出結果をファイル出力する
最後は抽出した結果をファイルで保存するオプションです。
出力されたファイルにはヘッダ等余計な情報は入っていないので出力結果を次工程の入力としても使いやすいと感じました。
$ getJS --complete --resolve --url http://192.168.119.1/ --output js_urls.txt
http://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js

http://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js

http://192.168.119.1//runtime.js

http://192.168.119.1//polyfills.js

http://192.168.119.1//vendor.js

http://192.168.119.1//main.js
$ cat js_urls.txt

http://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js

http://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js

http://192.168.119.1//runtime.js

http://192.168.119.1//polyfills.js

http://192.168.119.1//vendor.js

http://192.168.119.1//main.js
対象URLのソース
対象URLのソースコードを見ると確かに6つのJSファイルを使っていることがわかります。

まとめ
jsファイルの列挙ツールとしてシンプルで使いやすい。