u-ryo's blog

various information for coding...

Category: Vulnerability

Tomcat Vulnerability CVE-2017-12617

| Comments

Tomcatの複数の脆弱性(CVE-2017-12617, CVE-2017-12615 , CVE-2017-12616)が、範囲が広がって出てました。 readonly initialization parameterfalseにしてPUTを有効化している時にaffectする(任意のjsp fileを不正にPUTしてから好き放題する)、とのことなので、きょうびはRESTでPUT多用するから影響範囲広いんでしょうか? 否、「default servletのinitialization parameter(具体的にはweb.xmlservlettagのinit-param)でfalseを明示した時(defaultはtrue)なので、殆どのところはそんなことしてないから大丈夫なんじゃないでしょうか。 実際、POCで試してみたところ、うちのsiteは(version的には範囲内ですが)Not Vulnerable to CVE-2017-12617と出ました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ python tomcat-cve-2017-12617.py -u http://localhost:8080



   _______      ________    ___   ___  __ ______     __ ___   __ __ ______ 
  / ____\ \    / /  ____|  |__ \ / _ \/_ |____  |   /_ |__ \ / //_ |____  |
 | |     \ \  / /| |__ ______ ) | | | || |   / /_____| |  ) / /_ | |   / /
 | |      \ \/ / |  __|______/ /| | | || |  / /______| | / / '_ \| |  / /
 | |____   \  /  | |____    / /_| |_| || | / /       | |/ /| (_) | | / /
  \_____|   \/   |______|  |____|\___/ |_|/_/        |_|____\___/|_|/_/


[@intx0x80]


Poc Filename  Poc.jsp
Not Vulnerable to CVE-2017-12617

Vulnerability POC Site

| Comments

各種POCがありました。

特にStruts2については、↓にあります。

Personal Information Leak Incident

| Comments

先日派遣先で、5万数千件にのぼる個人情報漏洩を見付けてしまいました。

その会社ではチンケなECサイトをやってるんですけど、 といっても再販の再販までされてて何百人にも使われちゃってますが、 中身は2000年代前半〜中盤のcode。未だにJSP(一部Java)。 今やもうJavaEEから外れたっていうのに。 OSやlibrary、middlewareもsupport切れで無いものは無いという。 http/https混在、userのpasswordもDBに平文で保存してるくらい、 設計思想からして古いままのものです。WAFも入ってないといいますし。 早晩、こんなことが起こるだろうと傍で見ていて思っていましたが、 現実になり、しかも発見者がぼくだとは。 ぼく一応これ、部外者なんですけど。 同じように派遣されててそっちも手伝っている同僚から、 こんなaccessが沢山来てるってattack patternを見せられて。 不覚にも最初は一般的な定期巡回sql injectionかと思ってました。 Googleで調べると、そういうのが載ってたんです。

(jsql-injection かとも思ったんですが、試してみるとちょっと違うかも。 Havij ProはWindowsだしちょっと怖いので入れてません)

ともあれ、だから単なる下調べ的なattackかと思ってました当初は。 しかし、

  1. IP遮断してもIP変えてやって来るくらいしつこい(IP元はHK,US,JP,CN,UK等々)
  2. しかも同じようだが微妙に違うrequestを大量にする

というところからすぐにピンとくるべきでした。 翌週になって、そういえば見せられたqueryに このサイト固有の名前が入っていたな、 というところから、ちょっと実際に叩いてみたんですね。 そしたら...

あらま。

確かによく見たらqueryの中に「MAIL、PASSWD、TEL」の文字が。 見事に抜かれてました。 各queryの違いは、lImItの数。 これを変えて、順々に取って行ってたんですね。 後でわかったことですが、固有名が無くてもinformation_schemaから table名1個ずつ抜けるんですね。

attackがあったのが木曜、ぼくが気付いたのが翌週月曜、 log解析依頼されて、調べてみるとMAIL AddressとかPASSWDが5万数千件は 抜かれてました。 その他、抜かれてたのはショップ運営者の方のID、MAIL、PASSWDも。 それは6月19日に起きてました。 今までずっと気付いてなかったという。 再販先と連絡取って、すぐサイト全体落としたんですけど、 全体をこれまでのオンプレミスサーバ群からクラウドに移行したということで、 また再開したそうです(WAFは入れると言ってはいましたが) (しかも移行したといってもミスがあるらしくすぐにはうまく行っていないとかで、 自分でやっといて直せないなんてアホの極みだと。 その不具合修正をぼくに求めてくるという。 確かにぼくはJava expertなので、 なんで見当違いのところで騒いでるのかくらいの指摘はしてあげましたけど、 自分の尻くらい自分で拭ったらどうですか?と)。

色々信じられません。

元々彼らの思考には付いていけてなくて。 今自分がやらされているprojectの方でも、 serverのlogic追ってったら「これ認証無いですよ」 って言っても改善せずそのまま、 他人の電話番号とか情報を抜けるPOC作って示しても、 「そのPOC書くのにどのくらい時間かけた?」とか聞いてくる始末。 もう匙投げてました。 っていうか、こんな人もいるんだ、と勉強になりました。 更に言えば、日本のsecurity意識って一般的にはこんなもんなんでしょうか。

本当は、この実態を再販先等に告発した方が社会正義のためだと 思うんですけれども、 西宮冷蔵社長の例を鑑みても告発者が報われない社会なのは明らかなので、 黙っているしか無いのかと悲しい思いをしています。

早くこんなとこから抜け出さないと、イケマセン。