最近、お客様の侵入インシデントの追跡を支援した際、ハッカーがサーバーにアクセスする前に Web サイトの「ZIP 解凍機能」を使用して Webshell をアップロードしていたことがわかりました。なぜなら、この漏洩悪用手法は「攻撃ペイロード構造」と「実際の解凍パス」の点で比較的代表的なものであり、業界はまだ「安全でない解凍」の脆弱性に対して十分な注意を払っていないからです。そこで、私たちは業界に利益をもたらすことを願い、侵入追跡と脆弱性発見のプロセスを説明し、セキュリティ開発とセキュリティ製品保護ソリューションの 2 つの側面からいくつかのセキュリティに関する提案を提案するこのレポートを作成しました。
CMS は関連する防御設定を行っていますが、CMS のルート ディレクトリに JSP ファイルを直接書き込んだ場合、そのファイルは実行されず、403 エラーが報告されることに注意してください。攻撃者は、war パッケージの自動展開機能を利用し、「ディレクトリ トラバーサル」のアイデアを使用して、war パッケージを CMS のルート ディレクトリから飛び出させました。
ある企業の運用保守担当者は、深夜の勤務中にシステムの異常を発見しました。可能であれば、お客様は当社に連絡し、海清研究所が介入してトレーサビリティと分析を実施し、その後の廃棄計画を提供しました。
Tomcat のログ ファイル /logs/localhost_access_log.yyyy-MM-dd.txt を確認すると、攻撃者が Web サイトのログイン インターフェイスを一度爆破したことがわかります (「図に示すように、POST /cmscp/ "login.do" インターフェイスはアクセス頻度が高くなります。
注: ブラストが成功した場合の HTTP ステータス コードは 302、ブラストが失敗した場合の HTTP ステータス コードは 303 です。
攻撃者が Web サイトにトロイの木馬をアップロードしたかどうかを判断するには、Website Security Dog の Webshell AI 検出エンジンを使用して Tomcat の webapps ディレクトリをスキャンします。「/admin/login.jsp」という名前のファイルが存在することがわかります。図に示すように、Webshell として認識されます (ハッカーによるこの Webshell の命名はやや混乱を招きます)。
#さらに手動で確認すると、jsp ファイルが実際に Webshell であると判断できます。また、図に示すように、これは admin.war ファイルの自動展開に関連しています。
では、この war パッケージはどのようにしてサーバーにアップロードされるのでしょうか?ログ ファイルの分析を続けます。 分析中は「ファイル アップロード機能である可能性のあるインターフェイス」 に焦点を当てます。図に示すように、ハッカーがこの Web シェルを使用する前に ZIP アップロード 関数と ZIP 解凍 関数を使用したことを事前に判断できます。
サーバー上のファイル解凍インターフェイスによって呼び出された test5.zip ファイルを見つけて分析すると、admin.war が配置されているパスが「test5」であることがわかります。 。ジップ\.. \..\.."。したがって、この ZIP ファイルはハッカーによって慎重に作成された悪意のあるファイルであり、図に示すように、war パッケージの解凍パスがデフォルトの "/uploads/1" ディレクトリではなく、Tomcat の "webapps" ディレクトリになります。
注: この記事の悪意のある zip ファイルの生成方法
(1) 次の Python スクリプトを実行して test5.zip を生成します:
import zipfile if __name__ == "__main__": try:binary = b'<script>alert("helloworld")</script>'zipFile = zipfile.ZipFile("test5.zip", "a", zipfile.ZIP_DEFLATED) info = zipfile.ZipInfo("test5.zip")zipFile.writestr("../../../safedog.html", binary)zipFile.close()except IOError as e: raise e
(2) 図に示すように、Webshell を含む war パッケージを「test5.zip」にドラッグします。
以前の侵入追跡分析を通じて、この攻撃がCMS 解凍インターフェイスの「ZIP」(GET /cmscp/core/web_file_2/unzip.do?ids={ids}&parentId={parentId})は密接に関連しています。このインターフェースは、図に示すように、WebFileUploadsController.java の unzip メソッドに対応します。
unzip メソッドを追跡すると、その特定の実装が WebFileControllerAbstractor.java にあることがわかります。図に示すように、zip ファイルを解凍するときに、AntZipUtil クラスの unzip メソッドが呼び出されていることがわかります。
AntZipUtil クラスの unzip メソッドを追跡すると、このメソッドは ZIP 圧縮パッケージ内のファイル名のパラメータ検証を実行しないことがわかります、ファイル を書き込むだけです。このようなコードを記述すると、図に示すように ディレクトリ トラバーサルの脆弱性 が発生します。
現在、Haiqing Lab はこの脆弱性を CNVD に提出し、メーカーに修正するよう通知しました。
この例を通じて、解凍機能のセキュリティが Web サイトのセキュリティに大きな害を及ぼす可能性があることがわかります (Spring Integration Zip 開発コンポーネントを例にとります)。一例として、「安全でない解凍の脆弱性」CVE-2018-1261 も公開されています。 Web サイトのビジネスに解凍機能が含まれる場合は、セキュリティ開発の側面にさらに注意を払うことをお勧めします。また、Safe Dog は、対応する製品防御ソリューションも提供します。
研究開発担当者は、セキュリティ開発の観点から、解凍アルゴリズムの実装に際し、以下の点から自己検証と制限を行うことを推奨します。
(1) 制限の有無圧縮パッケージ内のファイルの数 拡張子
例: .war、.jsp、jspx、.jsp::$DATA (Windows ホストのみに影響します)
(2) 圧縮パッケージ内のファイル数を制限するかどうか圧縮パッケージ内のファイルの実際の解凍パス
(3) 圧縮パッケージ内のファイルの合計サイズを制限するかどうか (圧縮パッケージによるサービス拒否攻撃を防ぐため**)
(4) Web アプリケーション ディレクトリに適切な権限を付与するかどうか
また、ユーザーには信頼性の高い専門的なセキュリティ製品を選択することをお勧めします。セキュリティインシデントが発生すると、システムからアラームテキストメッセージを自動的に受信するため、より大きなインシデントを回避するためにできるだけ早く介入できます。
「セキュリティドッグ製品防御」に関しては、「Webサイトセキュリティドッグ」や「ゆにゅ」のWebサイトバックグラウンド保護も併せてご利用いただくことをお勧めします。サーバードッグのファイルディレクトリとして Yunyu と Website Security Dog の保護機能、Web ページのバックグラウンドパス保護機能を使用すると、Web サイトのバックグラウンドでのブルートフォース動作から保護できます。
Yunyuの背景保護機能は写真の通りです:
ウェブサイトセキュリティドッグの背景保護機能は写真の通りです:
サーバーフォルダーディレクトリガード機能:
#
以上がトレーサビリティを通じて発見された安全でない解凍 GetShell インスタンスの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。