試運転ブログ

コーラは一日一本まで

Bug Fix Backend を攻撃してみた

ADF2015のBug Fix Backendで利用したアプリケーションのバグを修正するのではなく、攻撃するという私が勝手にやりたかったコンテンツである。

ADF2015などについては、otameshi61.hatenablog.com

この記事では、2日目の夜にLT会の「Bug Fix Backendを攻撃してみた」において、話すつもりであったトピックに幾つか触れてみる。ちなみに、私のLTは2日目の最後であり諸々のスケジュールが押したため省略された。悲しい。

対象とするアプリケーションはBug Fix Backendで利用したもので、以下で公開している。画像などは少し変更している。また、いくつかのバグの修正と機能を加えている。

github.com

BadStore2015

BadStore2015はPHPで実装された簡易ショピングサイトである。

扱うセキュリティ上の問題

今回扱うセキュリティ上の問題は、主に3点

  • XSS
  • SQL Injection
  • Passwordの保持の仕方について

本文を書いてたら長くなったので、それぞれ別の記事にする。

  • XSS編
  • SQL Injection編(近日公開予定)
  • Passwordの保持の仕方について編(近日公開予定)

近日公開予定と書いたが、記事を書かない気しかしない。

はじめに

攻撃をしながらセキュリティ上の問題を眺めてみることが本記事の目的である。

最近では便利なフレームワークがたくさんあり、フレームワークの規約にしたがっている限りはセキュリティ上の問題は発生しにくい。それはそれで良いのだが、有名なサイトでもクラックされている現状を見る限り、どこかに問題が入り込む可能性は捨てきれない。

ここで紹介するのはPHPだから起こる問題ではない。Web アプリケーションであれば、これらのセキュリティ上の問題が起こる可能性を内在している。大抵の場合、フレームワークがいつの間にかに問題が起きないようにうまく処理してくれている。

セキュリティ上の問題を身近に感じてもらいたいと思いこの記事を書いている。この記事が多少なりとでも、セキュリティ意識の向上につながれば嬉しい。

当然だが、このブログは上記アプリケーションを検査するためだけのものであり、一般に公開されているサイトに対して行ってはならない。また、本ブログで紹介する方法で被害が生じたとしても本ブログは一切責任をもたないものとする。これらを了承できない場合、これ以上読み進めるのは避けていただきたい。

なお、全体的に説明不足であり、網羅性に欠けている。さらにWebのセキュリティについて詳しく知りたい方は「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践」(通称、徳丸本)をぜひ読んで欲しい。

また、IPAからも安全なウェブサイトの作り方という資料がある。www.ipa.go.jp

本文中に間違いがあればぜひ知らせて欲しい。可能な限り早く対応する。

ツール

今回の記事で利用する予定のツールを一覧で紹介しておく。
VirtualBoxにKali Linuxを入れれば以下のすべてのツールが使える。どれもOS Xで動くためKali Linuxを入れる必要はない。それぞれのツールの利用法を検索した際にホストOSとしてKali Linuxが利用されていることが多いため紹介だけしておく。

ここで紹介するツールは非常に多機能なものが多く、すべての機能を説明することは不可能である。興味がわいたら各自調べて欲しい。

Kali Linux

https://www.kali.org/
侵入テストに特化したディストリビューション。侵入テストに有名なツールはすべて入ってる。

OWASP ZAP

https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
Web アプリケーションのスキャンツール。稼働しているサービスのURLを与えれば、勝手にスキャンしてくれる。スキャンといってもデフォルトの設定でも不正なパラメータを大量に送りつけるため注意すること。

BeEF

http://beefproject.com/
Browser Exploitation Framework のひとつ。XSSが成立した後にブラウザを攻撃していくためのframework。

sqlmap

http://sqlmap.org/
SQL Injectionを自動でスキャンから攻撃まで行ってくれる。これも、デフォルトの設定では不正なパラメータを大量に送りつけるため注意すること。

OWASP ZAP

OWASP ZAPでBadstore2015を調査する。自分のサービスを指定して"Attack"を押すと調査を始めてくれる。アプリケーションのページを巡回し、Formなどのパラメータで脆弱な箇所はないかを調べてくれる。問題を起こすようなパラメータを勝手に送りつけたりするため、注意が必要である。

Badstore2015に対して行った時の結果を以下に示す。

f:id:otameshi61:20150404151126p:plain

XSSが3件、SQL Injection が3件報告されており、それぞれ、どのページの、どのパラメータが攻撃可能かも知らせてくれる。その他の報告についてはここでは触れないが興味があれば見てみてほしい。

XSSSQL Injectionについて以下で見ていく。

  • XSS編
  • SQL Injection編(近日公開予定)
  • Passwordの保持の仕方について編(近日公開予定)