
このスクリプトは、Apache Struts 2の脆弱性(CVE-2017-5638)、別名Struts-Shockを検証することを目的としています。
このスクリプトは、Apache Struts 2 の脆弱性 (CVE-2017-5638)、別名 Struts-Shock を検証するためのものです。悪意のあるペイロードを注入するわけではなく、脆弱性があるかどうかを検証できるように 'STRUTS2-VALIDATION' という名前の HTTP ヘッダーを注入するだけなので、完全に無害です。
マルチスレッド機能により、世界中に展開されている 2,500 以上のアプリケーションを 10 分以内に実行できます。そのため、大規模なエンタープライズアプリケーションの検証に非常に便利です。
cve-2017-5638 の脆弱性サイトのサンプル
このプロジェクトは、教育目的で CVE-2017-5638 の悪用を実演することを目的としています。 詳細については、https://cwiki.apache.org/confluence/display/WW/S2-045 を参照してください。
このプロジェクトは、教育および倫理的なテスト目的のみで作成されています。事前の相互同意なしにターゲットを攻撃することは違法です。適用されるすべての地域、州、連邦の法律を遵守する責任はエンドユーザーにあります。開発者は一切の責任を負わず、このプログラムによって引き起こされた誤用や損害について責任を負いません。
docker run -d -p 8080:8080 jrrdev/cve-2017-5638:latest
攻撃マシンにエクスプロイトスクリプトをダウンロードします ここ
攻撃マシンから Python エクスプロイトスクリプトを実行します :
python exploit.py http://<DOCKER_HOST>:8080/hello "ls -l"
このスクリプトの実行方法は 2 つあり、スレッドを使用する方法と使用しない方法です。違いは実行時間のみです。スレッド機能を有効にするには、thread パラメータを渡すだけです。
最初のパラメータは、対象となるすべての URL を 1 行に 1 つずつ含む TXT ファイルである必要があります。これらの URL は完全なものである必要があることに注意してください。例: https://target.com/admin/myStrutsPage.action
スレッドを使用しない使用例:
struts-shock-validation.py target_urls.txt
スレッド機能を使用する場合:
struts-shock-validation.py target_urls.txt thread
http://struts.apache.org/docs/s2-016.html https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017
Apache Struts Content-Type エクスプロイト用の Metasploit Framework エクスプロイトモジュール Windows サーバーではテストしていませんが、generic/shell_bind_tcp ペイロードを使用して Linux サーバーではテスト済みです
CVE-2017-5638 の PoC コード例 | Apache Struts エクスプロイト | DORK: ext:action
使用方法: python struts.py https://victim.site dir
公開された最初の Python スクリプトは Content-Type ヘッダーを正しくフォーマットしていませんでした。 Content-Type:%20{Exploit} を正しくフォーマットするように Content-Type ヘッダーを再コード化しました。 また、ロギングと Requests を追加し、オブジェクトのプロパティを stdout にダンプしました。
サンプル出力
XSS.Cx による CVE-2017-5638 のチェック
ドライブ D のボリュームにはラベルがありません。 ボリューム シリアル番号は 2A7B-A245 です。 d:\Program Files\Apache Software Foundation\Tomcat 9.0 のディレクトリ
このプロジェクトは、Apache Struts の脆弱性の概念実証です。 目的は、上記の脆弱性についてランダムな IP を生成してテストできるソフトウェアを作成することでした。
このプロジェクトは自己責任で使用し、教育目的のみに使用してください。
cURL
Nmap
ランダムな IP を生成し、テキストファイルに保存します。
./get_ip.sh [Number of hosts to scan] [What port to scan] [Filename to write output]
./get_ip.sh 10000 80 output.txt
特定の IP アドレスの脆弱性を確認します。
./struts_check.sh [ip address] [port]
./struts_check.sh 127.0.0.1 80
IP アドレスのリストの脆弱性を確認します。
./main.sh [Text file containing IP adresses] [Port]
./main.sh output.txt 443
Apache Struts の脆弱性パッチが適用されていないサーバーでコマンドを実行します。
./struts_attack.sh [IP Adres] [Command]
./struts_attack.sh https://127.0.0.1 whoami
# CVE-2017-5638 PoC コード (Python) | DORK: ext:action
CVE-2017-5638 の PoC コード例 | Apache Struts エクスプロイト | DORK: ext:action
使用方法: python struts.py https://victim.site dir
公開された最初の Python スクリプトは Content-Type ヘッダーを正しくフォーマットしていませんでした。
Content-Type:%20{Exploit} を正しくフォーマットするように Content-Type ヘッダーを再コード化しました。
また、ロギングと Requests を追加し、オブジェクトのプロパティを stdout にダンプしました。
サンプル出力
XSS.Cx による CVE-2017-5638 のチェック
ドライブ D のボリュームにはラベルがありません。
ボリューム シリアル番号は 2A7B-A245 です。
d:\Program Files\Apache Software Foundation\Tomcat 9.0 のディレクトリ
## 結果
results という名前のフォルダが自動的に作成され、実行のたびに実行結果を含む日付付きのフォルダが作成されます。スレッドが有効な場合、スレッドごとに thread_<番号> という名前のファイルが作成されますが、完了するとすべてのスレッドの結果が、実行フォルダと同じ名前 (日付/タイムスタンプ) の単一の TXT ファイルに統合されるため、無視して構いません。