CMSでの「XSS to RCE」
を触ってみた
Adachi Tomohiro
オワスプナイトカンサイ 2021.11 〜少し早めの忘年会〜
• 本資料は攻撃を推奨するものではなく、攻撃側の視点からでき
ることを⾒ることで、防御に必要な知識を得ていただくことを
⽬的に作成しています。
• ⾃⾝の管理外の環境に対して本資料内の⼿法を実⾏した場合、
法律で罰せられる可能性がありますので、絶対に実⾏しないで
ください。
⾃⼰紹介
• Adachi Tomohiro(@att0att0)
• 普段は主にWebアプリの脆弱性診断をしてます
• 最近Twitter始めました
SNS続かないマン頑張ります😫 😫 😫
なぜこの話をしようと思ったか︖
先週開催されたHardeningに参加
準備どうしよ︖
体験記で⾒かける
「Webアプリの管
理画⾯」ってこと
はCMS︖
トレンド・今年
あった事例ベース
の攻撃シナリオと
かあるかも
そういえば・・・
EC-CUBEで⼤きめの脆弱性があった
参考︓https://jvn.jp/jp/JVN97554111/
JPCERT/CCで公開されている情報
参考︓https://blogs.jpcert.or.jp/ja/2021/07/water_pamola.html
「XSSからWebShellの配置」ってどういうこと︖
参考︓https://blogs.jpcert.or.jp/ja/2021/07/water_pamola.html
1つの⽅法として
CMSでの「XSS to RCE」
というものがあることを知りました
CSMでの「XSS to RCE」について
• XSSの脆弱性を利⽤して、悪意のあるスクリプトを読み込んだ
ユーザの実⾏権限で不正なリクエストを送信する
• RCEを⾏う⽅法(機能の脆弱性を狙う・WebShellを置く...等)
CSMでの「XSS to RCE」について
• XSSの脆弱性を利⽤して、悪意のあるスクリプトを読み込んだ
ユーザの実⾏権限で不正なリクエストを送信する
• RCEを⾏う⽅法( WebShellを置く )
ブラウザを介してWebサーバー上でのコマンド実
⾏ができるようになるプログラム(アプリ)のこ
と。
そのプログラムが置かれているサーバ上でのコマ
ンド実⾏・バックドアとして機能する。
WebShellとは
そもそも、CMSでできることってなんだっけ︖
EC-CUBEを例にみていきます
管理画⾯がある
管理画⾯からはコンテンツを操作できる
コンテンツの中ではPHPが書けたり
(関数が呼び出せたり)する
もちろん悪意ある内容のコンテンツを追加
すれば、それもサイト上に反映される
もちろん悪意ある内容のコンテンツを追加
すれば、それもサイト上に反映される
ここがWebShellを置かれる経路の⼀つになりそう
攻撃の視点から⾒た時にどうやって
悪意あるコンテンツを追加する︖
管理画⾯への直接アクセス
⾊々な設定で管理画⾯へのアクセス制御で防ぐ
(管理画⾯の設定、.htaccess、セキュリティルール等)
コンテンツ追加って必ず攻撃者⾃⾝が
実⾏する必要があるのか︖
権限のあるセッションを使って、コンテンツ追加
の機能を実⾏(リクエストを送信)できること
コンテンツ追加
のリクエスト
管理者権限でログイン中のユーザ
このリクエスト送信の処理を書いた
JSを対象のユーザに読み込ませる
ここでXSSが使われる
コンテンツ追加
のリクエスト
管理者権限でログイン中のユーザ
このリクエスト送信の処理を書いた
JSを対象のユーザに読み込ませる
この3つをやってみる
参考︓https://blogs.jpcert.or.jp/ja/2021/07/water_pamola.html
サイト上でXSSの脆弱性があるという想定で、
悪意のあるscriptタグを設定したページを⽤意
読み込ませるスクリプト(⼀部抜粋)
管理者権限でログインした状態でこのスクリ
プトを読み込むページにアクセスする
新しいコンテンツが追加されている
追加したコンテンツの内容
追加したコンテンツによって任意のコード実⾏ができてしまう
これってEC-CUBEだけで
起こるとは限らない
対策
WordPressの場合
Drupalの場合
モジュールが有効なとき、
コンテンツのフォーマット
でPHPの指定ができる
「CMSが危険、CMSだから起こる問題」
ではなく、「そのサイト上でできること」
をXSS経由で悪⽤されると、他の問題につ
ながっていく可能性があるという話
感じたこと
(普通のサイトでも、例えば管理者権限などから公開領域にファイルのアップロー
ドができるような機能があれば、似たようなことが起こるかもしれない)
対策
•サイト上のコンテンツでのXSS対策(エスケープ処理)
•CMSのアップデート
•使⽤しているプラグイン、モジュールのアップデート
• wp-config.php
• src/Eccube/Twig/Extension/EccubeExtension.php
管理画⾯から、エディター
への操作が無効になる
Twig内でphp関数を
使える「php_」の
拡張が無効になる
運⽤を考えるとこれは⽀障が出る可能性あるかも・・・
余談
サイト上から⾊々できるのは便利︕
...な反⾯、悪⽤できてしまうと、攻撃側にとっても
「⾊々できること」が便利に働いてしまう可能性がある
終

CMSでのXSS to RCEを触ってみた