検索
ホームページ運用・保守安全性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}を指定するとジャンプして計算結果が得られます


Struts2-057 两个版本RCE漏洞实例分析

2.2 ポップアップ計算機

バージョン 2.3.20 の POC は次のとおりです。

Struts2-057 两个版本RCE漏洞实例分析Struts2-057 两个版本RCE漏洞实例分析

##2.3.3 4 バージョン リファレンスPOC は次のとおりです:



Struts2-057 两个版本RCE漏洞实例分析Struts2-057 两个版本RCE漏洞实例分析

2.3 コマンド エコー

どちらのバージョンも com.opensymphony.xwork2.dispatcher を使用します。コマンド実行後にエコー データを出力する HttpServletResponse オブジェクト

バージョン 2.3.20 の POC は次のとおりです:

バージョン 2.3.34 の POC は次のとおりです: Struts2-057 两个版本RCE漏洞实例分析

攻撃後の影響は次のとおりですStruts2-057 两个版本RCE漏洞实例分析

Struts2-057 两个版本RCE漏洞实例分析

脆弱性分析

脆弱性を分析する前に、 struts.xml ファイルを構成する必要があります。このファイルは struts2 のコア構成ファイルです。ほとんどの場合、構成の増減を制御する必要があります。

Struts2-057 两个版本RCE漏洞实例分析 #注意すべき点が 2 つあります。1 つ目は struts.mapper .alwaysSelectFullNamespace = true に設定する必要があります。そうでない場合、脆弱性はトリガーされません。この設定の目的は、最後の前の任意の位置で NameSpace が常に選択されるかどうかを設定することです。スラッシュ; 2 番目の結果タグによって返されるタイプは、「redirectAction またはchain」を選択します。この 2 つだけです。各構成オプションの値は、アクションを転送またはリダイレクトできます。タイプの詳細については、以下の図を参照してください。


Struts2-057 两个版本RCE漏洞实例分析設定が完了したら、動的分析を開始します。この脆弱性は

struts2-core.jar!/org/apache/struts2/dispatcher/ServletActionRedirectResult.class

this.namespace メンバーの値は getNamespace( ) メソッドを呼び出し、getUriFromActionMapping() を通じて URI 文字列を返します。

Struts2-057 两个版本RCE漏洞实例分析#getUriFromActionMapping を通じて取得した値が tmpLocation 変数に割り当てられ、式が setLocation メソッドに入ります

Struts2-057 两个版本RCE漏洞实例分析

ServletActionResult は super.execute メソッドを介して呼び出され、execute メソッド本体で ConditionalParse メソッドが続きます。このメソッドでは、ONGL 実行の主要なメソッド、translateVariables、と呼ばれます。

Struts2-057 两个版本RCE漏洞实例分析

取得した param 値は、translateVariables() メソッドに渡され、最終的に OnglTextPaser での OGNL 式の実行につながります。

Struts2-057 两个版本RCE漏洞实例分析

Struts2-057 两个版本RCE漏洞实例分析電卓をポップアップした後、取得された lastFinalLocation の値は、現在の実行後のハンドルです。この値は、応答ジャンプのアクション アドレスとして使用されます。これは、ポップ後にアドレス バーに表示される URI です。ブラウザで計算機を起動します

Struts2-057 两个版本RCE漏洞实例分析ポップアップ計算機の解析はここで終了です。次に、コマンド実行のエコー結果に基づいた解析を見てみましょう。基本的には、上記と同じです。唯一の違いは、lastFinalLocation によって返される値です。これは NULL です。これは、送信後に 302 ジャンプがないことを意味します。これはまだ現在のアクションであり、戻り値は 200

## です。

Struts2-057 两个版本RCE漏洞实例分析# 原理を知った後、同僚 経験値検出スクリプトは Python で実装されています。このスクリプトは学習と研究専用です。Struts2-057 两个版本RCE漏洞实例分析

Struts2-057 两个版本RCE漏洞实例分析

防御策

1. フレームワークのバージョンを変更する最新の正式バージョンにアップグレードします;

2. Web アプリケーションの場合、コードのセキュリティを確保するように努めます;

3. IDS ルール レベルの場合、数値計算と箇条書き電卓はステータス コードをすべて 302 に返し、ロケーション ジャンプ フィールドには特性ハンドル文字列が含まれます。コマンド echo によって返されるステータス コードが 200 の場合、コマンド結果の出力;

以上がStruts2-057 2 つのバージョンの RCE 脆弱性分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境