Struts2-057 2 つのバージョンの RCE 脆弱性分析例
はじめに
2018 年 8 月 22 日、Apache Struts2 には、高リスクのリモート コード実行の脆弱性 (S2-057/CVE-2018-11776) が存在する最新のセキュリティ情報がリリースされました。この脆弱性は、Semmle Security Research チームのセキュリティ研究者 Man YueMo によって発見されました。
この脆弱性は、Struts2 開発フレームワークで名前空間関数を使用して XML 構成を定義するときに、名前空間の値が設定されておらず、上位層のアクション構成にも設定されていないことが原因です (アクション設定)、またはワイルドカード名前空間を使用するため、リモートでコードが実行される可能性があります。同様に、URL タグに value と action の値が設定されておらず、上位のアクションが設定されていない場合や、ワイルドカード名前空間が使用されている場合も、リモートでコードが実行される可能性があります。構築された環境では、脆弱性は正常に再現され、コマンド echo を実行できます。この記事の最後には、必要なものが揃っています。!
脆弱性の悪用
作成者が使用した環境それぞれStrust2 2.3.20版とStrust2 2.3.34版であり、この脆弱性を悪用する方法としては、数値計算、ポップアップ計算機、コマンドエコーの大きく3つが考えられます。
2.1 数値計算
数値計算は比較的簡単です。URLに%{100 200}を指定するとジャンプして計算結果が得られます
2.2 ポップアップ計算機
バージョン 2.3.20 の POC は次のとおりです。
バージョン 2.3.34 の POC は次のとおりです:
攻撃後の影響は次のとおりです
#注意すべき点が 2 つあります。1 つ目は struts.mapper .alwaysSelectFullNamespace = true に設定する必要があります。そうでない場合、脆弱性はトリガーされません。この設定の目的は、最後の前の任意の位置で NameSpace が常に選択されるかどうかを設定することです。スラッシュ; 2 番目の結果タグによって返されるタイプは、「redirectAction またはchain」を選択します。この 2 つだけです。各構成オプションの値は、アクションを転送またはリダイレクトできます。タイプの詳細については、以下の図を参照してください。
設定が完了したら、動的分析を開始します。この脆弱性は
this.namespace メンバーの値は getNamespace( ) メソッドを呼び出し、getUriFromActionMapping() を通じて URI 文字列を返します。
#getUriFromActionMapping を通じて取得した値が tmpLocation 変数に割り当てられ、式が setLocation メソッドに入ります
取得した param 値は、translateVariables() メソッドに渡され、最終的に OnglTextPaser での OGNL 式の実行につながります。
電卓をポップアップした後、取得された lastFinalLocation の値は、現在の実行後のハンドルです。この値は、応答ジャンプのアクション アドレスとして使用されます。これは、ポップ後にアドレス バーに表示される URI です。ブラウザで計算機を起動します
ポップアップ計算機の解析はここで終了です。次に、コマンド実行のエコー結果に基づいた解析を見てみましょう。基本的には、上記と同じです。唯一の違いは、lastFinalLocation によって返される値です。これは NULL です。これは、送信後に 302 ジャンプがないことを意味します。これはまだ現在のアクションであり、戻り値は 200
# 原理を知った後、同僚 経験値検出スクリプトは Python で実装されています。このスクリプトは学習と研究専用です。
1. フレームワークのバージョンを変更する最新の正式バージョンにアップグレードします; 2. Web アプリケーションの場合、コードのセキュリティを確保するように努めます; 3. IDS ルール レベルの場合、数値計算と箇条書き電卓はステータス コードをすべて 302 に返し、ロケーション ジャンプ フィールドには特性ハンドル文字列が含まれます。コマンド echo によって返されるステータス コードが 200 の場合、コマンド結果の出力;
以上がStruts2-057 2 つのバージョンの RCE 脆弱性分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1. はじめに Struts2 の脆弱性は古典的な一連の脆弱性であり、根本的な原因は、Struts2 がフレームワークを柔軟かつ動的にするために OGNL 式を導入していることです。フレームワーク全体のパッチ適用が改善されたことにより、Struts2 の新たな脆弱性の発見は以前よりもはるかに困難になりましたが、実際の状況から判断すると、ほとんどのユーザーが過去の高リスク脆弱性を既に修復済みです。現在、侵入テストを行う場合、Struts2 の脆弱性は主に偶然に任せられるか、イントラネットに公開された後でパッチが適用されていないシステムを攻撃する方がより効果的です。オンライン分析記事では、主にこれらの Struts2 の脆弱性を攻撃と悪用の観点から分析しています。新しい H3C の攻守チームとして、ips 製品のルールベースを維持することも仕事の一部であり、今日はこのシステムをレビューします。

Struts2 フレームワークの原理: 1. インターセプターはリクエスト パスを解析します; 2. アクションの完全なクラス名を検索します; 3. Action オブジェクトを作成します; 4. Action メソッドを実行します; 5. 結果を返します; 6. ビュー解析中。その原理は、ビジネス ロジック コントローラーをサーブレット API から完全に分離するインターセプター メカニズムに基づいており、コードの再利用性と保守性が向上します。 Struts2 フレームワークは、リフレクション メカニズムを使用することで、リクエストと応答を処理するための Action オブジェクトを柔軟に作成および管理できます。

はじめに: ApacheSolr で RCE0day 脆弱性が発見されました (脆弱性番号は示されていません)。ここでは、参考までにオブジェクトを再現し、RCE プロセス全体を分析します。脆弱性の再発と再発バージョン: 8.1.1 RCE を実装するには、2 つの手順が必要です。まず、アプリケーションが特定のコアを有効にしていることを確認します (CoreAdmin で表示できます)。インスタンスでは、アプリケーションは mycore を有効にしています。以下をその構成インターフェースに送信します。json data, {"update-queryresponsewriter":{"startup":"lazy","

Vulhub 脆弱性シリーズ: struts2 脆弱性 S2-0011 脆弱性の説明: struts2 脆弱性 S2-001 は、ユーザーがフォーム データを送信して検証が失敗した場合、サーバーは OGNL 式を使用して、ユーザーによって以前に送信されたパラメーター値 %{value} を解析します。対応するフォームデータを補充します。たとえば、登録ページやログインページなどです。送信が失敗した場合、サーバーは通常、デフォルトで以前に送信されたデータを返します。サーバーは %{value} を使用して送信されたデータに対して OGNL 式解析を実行するため、サーバーはペイロードを直接送信してコマンドを実行できます。 2. Vulhubの脆弱性悪用:vulhubを利用して脆弱性を再現すると、環境構築の手間が省け大変便利です。ヴ

0x00 はじめに Struts2 は、Apache ソフトウェア組織によって開発された非常に強力な JavaWeb オープン ソース フレームワークであり、本質的にはサーブレットと同等です。 Struts2 は MVC アーキテクチャに基づいており、明確なフレームワーク構造を持っています。通常、モデルとビュー間のデータ対話を確立するコントローラーとして使用され、エンタープライズ レベルの Java Web アプリケーションを作成するために使用されます。JavaServletAPI を利用および拡張し、開発者に MVC アーキテクチャの採用を奨励します。 Struts2 は、WebWork の優れた設計アイデアをコアとして採用し、Struts フレームワークのいくつかの利点を吸収し、MVC 設計パターンで実装されたより整った Web アプリケーション フレームワークを提供します。 0x01 脆弱性

はじめに 2018 年 8 月 22 日に、Apache Struts2 には、高リスクのリモート コード実行の脆弱性 (S2-057/CVE-2018-11776) が存在し、最新のセキュリティ情報が公開されました。この脆弱性は、米国のセキュリティ研究者 ManYueMo によって発見されました。 SemmleSecurityResearchチーム。この脆弱性は、Struts2 開発フレームワークで名前空間関数を使用して XML 構成を定義するときに、名前空間の値が設定されておらず、上位層のアクション構成 (ActionConfiguration) にも設定されていないか、またはワイルドカード名前空間が使用されているという事実に起因します。これにより、リモートでコードが実行される可能性があります。同じように、あなたも

0x00 はじめに Struts2 フレームワークは、JavaEE Web アプリケーションを開発するためのオープンソース Web アプリケーション アーキテクチャです。 JavaServletAPI を利用および拡張し、開発者が MVC アーキテクチャを採用することを奨励します。 Struts2 は、WebWork の優れた設計アイデアをコアとして採用し、Struts フレームワークの利点の一部を吸収し、MVC 設計パターンで実装されたより整った Web アプリケーション フレームワークを提供します。 0x01 脆弱性の概要 ApacheStruts22.3.x シリーズでは struts2-struts1-plugin プラグインが有効になっており、struts2-showcase ディレクトリが存在する場合に脆弱性が発生します。

1. 概要 Struts は、Apache Software Foundation (ASF) がスポンサーとなっているオープンソース プロジェクトです。これはジャカルタ プロジェクト内のサブプロジェクトとして始まり、後に ASF のトップレベル プロジェクトになりました。 JavaServlet/JSP技術を利用し、JavaEE WebアプリケーションのModel-View-Controller[MVC]設計パターンに基づいたアプリケーションフレームワーク[WebFramework]を実装した、MVCクラシック設計パターンの代表的な製品です。 JavaEE Web アプリケーション開発の初期には、サーブレット テクノロジの使用に加えて、JavaServerPages (JSP) のソース コードで HTM が一般的に使用されていました。
