Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2019-0232 — Apache Tomcat - CGIServlet enableCmdLineArguments リモートコード実行 (RCE) の脆弱性解析とPoC | Kitploit
ツール/GitHubGitHub/jaiguptanick/cve-2019-0232
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストリモートアクセスツールペイロード開発
GitHubjaiguptanick/cve-2019-0232

CVE-2019-0232

Apache Tomcat - CGIServlet enableCmdLineArguments リモートコード実行 (RCE) の脆弱性解析とPoC

リポジトリを見る
301155年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2019-0232

脆弱性分析とApache Tomcat - CGIServlet enableCmdLineArguments リモートコード実行 (RCE) のPoC

ビデオPoCはこちら: https://www.youtube.com/watch?v=RA7kzuHOWqA

詳細

Apache TomcatはCGIサーブレットに脆弱性があり、リモートコード実行(RCE)を達成するために悪用される可能性があります。これは、Windows上で非デフォルト設定かつバッチファイルと組み合わせて実行されている場合にのみ悪用可能です。 Common Gateway Interface (CGI) は、WebサーバーがWebリクエストを介してコマンドラインプログラムやスクリプトを実行できるようにする標準プロトコルです。このプロトコルでは、URLパラメータを介して実行されるスクリプトやプログラムにコマンドライン引数を渡すことも可能です。プロトコル自体はRFC 3875で定義されています。 enableCmdLineArgumentsが有効な状態でWindows上で実行されている場合、JREがコマンドライン引数をWindowsに渡す方法のバグにより、Apache TomcatのCGIサーブレットはRCEに対して脆弱です。CGIサーブレットはデフォルトで無効になっています。CGIオプションのenableCmdLineArgumentsはTomcat 9.0.xではデフォルトで無効になっており(この脆弱性への対応として、すべてのバージョンでデフォルトで無効になります)。

影響を受けるバージョン

  • Apache Tomcat 9.0.0.M1 から 9.0.17
  • Apache Tomcat 8.5.0 から 8.5.39
  • Apache Tomcat 7.0.0 から 7.0.93

エクスプロイトの手順

ビデオPoCはこちら: https://www.youtube.com/watch?v=RA7kzuHOWqA

  1. Windows PCに上記の脆弱性のあるバージョンのTomcatがインストールされたApacheサーバーが必要です。また、同じマシンにJava JREがインストールされている必要があります。
  2. 私の場合は、XAMPPサーバーにApache Tomcat 9.0.0.M1をインストールしました。
  3. Tomcatのインストール後、設定で以下の変更を行います:

a. conf/context.xml を修正し、<Context privileged="true"> とします。

img

b. /conf/web.xml ファイルの366行目と420行目付近で、それぞれ以下の変更を行います。

img

enableCmdLineArguments は Tomcat 9 を使用しているため、True にする必要があります。

<servlet>
  	<servlet-name>cgi</servlet-name>
  	<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
  	<init-param>
  	  <param-name>cgiPathPrefix</param-name>
  	  <param-value>WEB-INF/cgi</param-value>
  	</init-param>
  	<init-param>
  	  <param-name>executable</param-name>
  	  <param-value></param-value>
  	</init-param>
  	<init-param>
  	  <param-name>enableCmdLineArguments</param-name>
  	  <param-value>true</param-value>
  	</init-param>
  	<load-on-startup>5</load-on-startup>
  </servlet>

img

<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi/*</url-pattern>
</servlet-mapping>
  1. CGIファイル用のフォルダを webapps\ROOT\WEB-INF\cgi に作成し、以下の内容の ism.bat ファイルを追加します:

img

@echo off
echo Content-Type: text/plain
echo .
  1. これですべての準備が整いました。サーバーを起動し、http://localhost:8080/cgi/ism.bat?&dir にアクセスしてサーバーが動作しているか確認します。

img

  1. ここでRCEが確認できました。次に、netcatを使用してリバースシェルを取得するために、攻撃者マシンでnc.exeのあるディレクトリでサーバーを起動し、接続を受け取るためにnetcatリスナーを起動します。
  2. 次に、cve-2019-0232.py を実行し、サーバーのIPとポートを指定します。
  3. 最終的にリバースシェルを取得しました。

img

ビデオPoCへのリンク: https://www.youtube.com/watch?v=RA7kzuHOWqA

緩和策

  • CGIサポートを無効にする(デフォルトで無効です)。
  • ユーザーは、CVE-2019-0232の悪用を防ぐために、CGIサーブレットの初期化パラメータenableCmdLineArgumentsをfalseに設定する必要があります。
  • Apacheは、Windowsシステム上で入力がコマンドとして実行されるのを防ぐために、「regex」パターン [[a-zA-Z0-9\Q-_.\\/:\E]+] を実装しました。

参考文献

  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-0232
  • https://wwws.nightwatchcybersecurity.com/2019/04/30/remote-code-execution-rce-in-cgi-servlet-apache-tomcat-on-windows-cve-2019-0232/
  • https://tomcat.apache.org/tomcat-9.0-doc/cgi-howto.html
  • https://www.trendmicro.com/en_us/research/19/d/uncovering-cve-2019-0232-a-remote-code-execution-vulnerability-in-apache-tomcat.html
  • https://codewhitesec.blogspot.com/2016/02/java-and-command-line-injections-in-windows.html
  • https://github.com/apache/tomcat/commit/4b244d827ade2a36ef3b8734939541207b78f35c?branch=4b244d827ade2a36ef3b8734939541207b78f35c&diff=split
ツールをダウンロード