www.morihi-soc.net

誰もが安心して使える、安全なインターネットを目指して

ハニーポット観察記録(35)「Tomcat に対する jsp ファイルを PUT する試み」

どうも。ハニーポッターの森久です。

秋、楽しんでいますか? といいつつ、日に日に寒さがまして冬も近づいていますね。
最近、知ったのですが、「ハニーポット」という名前の競走馬がいるそうです。しかも先日、船橋競馬場でおこなわれた「馬に乗って秋を満喫!」というレースで1着になったとのこと。
ハニーポットすごい。1回は走っているところを見てみたいものですね。

さて今回は、Apache Tomcat でリモートからコードが実行される脆弱性(CVE-2017-12615/CVE-2017-12616/CVE-2017-12617)について取り上げます。

 

攻撃リクエストサンプル

※一部の情報を意図的に伏せています。

まず1行目。PUT メソッドを指定していますね。そのため何らかのデータをサーバへアップロードしていることがわかります。
続いてファイル名が特徴的ですね。ランダムな英字の後に、「.jsp/」と .jsp ファイルの拡張子に加えて / を指定しています。

今回の Tomcat の脆弱性では、PUT メソッドによるファイルのアップロードが受付可能であることが前提条件になっています。そのため極端な話をすると、「Hacked!」と書かれたファイルをアップロードされるだけで Web サイトを改ざんされたとも受け取れます。

しかしながら、上記の攻撃リクエストのようなファイル名を指定すると、最後の/が取り除かれた .jsp ファイルが作成されます。そして作成されたファイルにアクセスすることで、結果的にコード実行が可能になります。

 

攻撃を検証してみる

今回の攻撃リクエストで、PUT のボディ部分に指定されている Java のコードを読むと、文字列(blahblah)を md5 でハッシュ化した結果を表示するだけです。

下記の検証環境で実際に攻撃リクエストを送信し、作成されたファイルにアクセスしてみます。

OS: Ubuntu 16.04 64bit Server
Tomcat: 7.0.79
Java: OpenJDK 1.8.0_151

※ 脆弱性再現のため、Tomcat  の web.xml  で serrvlet のタグ内部に下記の4行を追記しています。この設定をすると PUT を許可するため、どうしても必要で無ければ true にしてください。(デフォルト値は true です)

<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>

ブラウザからアクセスすると、次の画像の通り、表示されました。

Tomcat PUT

たしかに、XjmADhHyRp.jsp という名前の jsp ファイルで、MD5 のハッシュ値のようなものが表示されています。
念のため、ハッシュ値の裏取りをしてみます。検証環境のコンソールから echo コマンドと、md5sum コマンドで簡単に確認することができます。

$ echo -n blahblah | md5sum
42d388f8b1db997faaf7dab487f11290  –

 

うむ。ブラウザで表示されたものとコマンドの実行結果はまったく一緒ですね。

 

攻撃者の狙い

今回の攻撃リクエストは、文字列のハッシュ値を表示する機能だけのコードでした。そのため、脆弱な設定になっている Tomcat の探査する通信だと考えられます。

ただハニーポットのログを眺めていると、この PUT リクエストのあとに、作成した jsp へのアクセスはありませんでした。。。

攻撃だけして満足してしまったのか、それともサーバ(ハニーポット)からの応答を見て攻撃の成否を判断していたのか、詳細は不明です。

 

めっちゃ攻撃きてるよ

今回の攻撃はぼくのハニーポットだと、11月15日から17日に集中して検知していました。

攻撃の傾向として、15日は「diZPqEAuJM.jsp」というファイル名を固定して攻撃していましたが、同日16時ごろ(JST)からランダムなファイル名に変わりました。ファイル名の一部を下記に示します。

  • /ApZIhmuECm.jsp/
  • /BXXEMlhxGC.jsp/
  • /BaFaIJMKhX.jsp/
  • /CgvfPRQbXD.jsp/
  • /CiKwXJOVhS.jsp/
  • /DDUYTkmtqg.jsp/
  • /DPKQmxJUxi.jsp/
  • /DqAVMfCYRc.jsp/
  • /DscxKuSSyc.jsp/
  • /EEQCrjJDZG.jsp/

ファイル名はランダムになっていますが、10文字の英字(大文字小文字含む).jsp というフォーマットは変わりませんでした。

ハニーポッターは、ぜひアクセスログを確認してみてください。Dionaea を使っている人は wwwroot ディレクトリにファイルが存在するかもしれません。

 

まとめ

今回は Apache Tomcat の脆弱性を狙った、jsp ファイルを PUT する試みの攻撃を紹介しました。

なお公開システムのサーバ管理者の方は、webapps  ディレクトリに不審な jsp ファイルが作成されていないかどうか確認することを推奨します。

 

参考情報

Apache Tomcat における脆弱性に関する注意喚起(JPCERT/CC)
https://www.jpcert.or.jp/at/2017/at170038.html

Tomcatの一連のRCEの脆弱性について(CVE-2017-12615, CVE-2017-12617) (Cat.6(ねころっく))
http://xss.hateblo.jp/entry/20170924/1506201487

Tomcatに見つかった3つの脆弱性について(Scutum WAF Tech Blog)
https://www.scutum.jp/information/waf_tech_blog/2017/10/waf-blog-050.html

Written by 森久

11月 19th, 2017 at 6:15 am