ハイ!どうも皆さん、おはよう!こんにちは!こんばんは!
この季節がやってまいりましたね、シーエー・アドバンス Advent Calendar 2019
17日目を担当します、@ihahajimeです。宜しくお願いします!!
シーエーアドバンスに入社しセキュリティのお仕事を始めて1年と2か月くらい、まだまだ修行中です。
はじめに
今回は、自分の経験から**ブラックボックス視点で脆弱性をチェックしてみよう!**という内容となっています。
前職でブラックボックスのソフトウェアテスト1をしていた経験と、今やっている脆弱性診断の経験を掛け合わせて、もっと簡単に脆弱性診断を紹介できればな!と思っています。
フランクな感じでサクッと読んでいただければ幸いです。Take it easy!
そもそも脆弱性診断とは
皆さん**脆弱性診断(ゼイジャクセイシンダン)**ってご存じでしょうか?
だじゃくせい?きょじゃくせい?何それおいしいの?って方も、
剛腕セキュリティエンジニアの方も、
天下無双のWebアプリケーションエンジニアの方も、
様々いらっしゃるかと思いますので、簡単に説明しますと...
Webアプリケーションやスマートフォンアプリに対し、攻撃者の視点から様々な疑似攻撃を考察・試行することで、潜在的な脆弱性を発見し、安全性を調査する。
ということですね!つまりセキュリティ的にヤバい箇所がないかチェックするという感じです
今回は、そんな脆弱性診断を、ツールとかも特に使わずに確認してみましょう!
この値を入力して結果こうなりました、こういう結果が返ってきてます。だけでも確認できれば問題ないです!
さっそく見ていきましょう!
世の中に脆弱性の種類はたくさんあるので、今回は有名どころで説明がしやすいものを紹介させていただきます。
その1 SQLインジェクション(SQLi)
最初はSQLインジェクションです。SQLiと略されたりしますね。
下のようなログイン画面があります。
まず試しに''
シングルクォートを2つ入力してログインしてみてください。
上のように、よく見るInvalid email or password.
のメッセージが出てますね
続いてシングルクォートを一つ消して、'
シングルクォート1つでログインしてみます。
すると...
Invalid email or password.
と出るかと思いきや、[object Object]
というなんかよくわからないメッセージが...
これはおそらく、**シングルクォートの数でログイン時のSQL構文が壊れてしまい、なんかよくわからんメッセージが表示されている。**ということがわかります。
アウトですね
その2 クロスサイトスクリプティング(XSS)
続いては、クロスサイトスクリプティングです、XSSとも略されたりしますね。
上の画像が、正常にApple
と検索を行った状態です。
画像のように、"'>
とHTMLのsタグ
をつけて、検索してみましょう。
すると...
検索ワードのApple
の部分でHTMLタグが有効になって表示されていますね。
HTMLタグが効いている状態となっていますので、HTMLタグを色々利用して悪用される恐れがあります。
アウトですね
上記2つの脆弱性に関しての詳細な説明は、参考情報欄にリンクを貼っておきますので、よければ参考にしてください。
他にもCSRFやOSコマンドインジェクションなど色々な脆弱性があります
環境
今回はOWASP Juice Shopという環境で確認しました
OWASP Juice Shopはdockerで気軽に用意できる脆弱性が確認できる環境となっていますので、皆さんぜひ試してみてくださいね!
(もちろん自分で作ったサイトとかでも全然OKです!※自己責任でお願いします)
dockerを起動し下記コマンドを実行。
docker pull bkimminich/juice-shop
docker run --rm -p 3000:3000 bkimminich/juice-shop
あとはhttp://{自分のIP}:3000/
にアクセスすればOKです。
OWASP Juice Shop
で検索すれば導入方法でてきます。たくさんあります。
幅広い難易度で課題等も用意されているので、挑戦してみてはどうでしょうか
参考情報
OWASP TOP 10 2017
OWASP Juice Shop
SQLインジェクション(SQLi)とは
https://www.nic.ad.jp/ja/basics/terms/sql-injection.html
クロスサイトスクリプティング(XSS)とは
https://www.nic.ad.jp/ja/basics/terms/xss.html
まとめ
記事を書く経験がほとんど無いので、至らない箇所あれば容赦なく指摘していただければ嬉しいです。
まだまだ脆弱性はたくさんありますので、内容がまとまり次第また記事を書いていけたらと思います。
脆弱性の確認って意外と簡単にできちゃうもんなんですよ!
最後までありがとうございました。
それでは次の記事でまた!良いお年を!→See you next time→
-
余談ですが、「テストを実行する」ことは、ソフトウェアに存在する欠陥に起因する故障を見つけることで、「デバッグ」は、故障の基となる欠陥を見つけて、解析し、取り除く一連の開発の活動である。よくある「バグを見つけて報告するだけ♪」とかの言い方はデバッグではなくテストになります。JSTQB FLのシラバスにも記載されています。まー例外もありますが... ↩