これは、ホワイトハッカー勉強会の資料をまとめたものです。
個人的に理解するためにまとめたものですが、役立つかもと思ってQiitaに出します!
間違っていたら教えてください!
目次
- 脆弱性を発見する
- 脆弱性を検証する
- 脆弱性を報告する
順番に見ていこう!
脆弱性を発見する
1.どうやって攻撃できるか発想する
例えば、家に不正に侵入したいとすると・・・
- このドア、正式な鍵じゃなくても入れそうだな?
- どこかの窓は開いていないかな?
- AIスピーカーをハックしてドアを開けるコマンドを覚えされられないかな?
- 隠し扉がどこかにないかな?
などが思いつく(かも)。これを言い換えると
- 鍵が無くても侵入できる
認証回避(SQLインジェクションとか) - 窓が開いていたから侵入した
アクセス制限不備
アクセスの制限が適切にされていない事で、本来のページではないページにアクセスし(管理者ページなど)
攻撃者が情報を抜き取ったりすること。徳丸本p507辺りだと思われる。 - 家の中のマイクに呼びかけると開く
コマンドインジェクション
https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_2.html
OSコマンド(シェル系)を不正に実行し、情報を抜き取ったりすること - 隠し扉がある
バックドア
https://cybersecurity-jp.com/column/23148
攻撃者が侵入口を作って不正侵入し、遠隔操作などで好き勝手やったりすること。
また、侵入口をずっと開けておいて、いつでも侵入できるケースもある
という感じに。
あらかじめ攻撃者がどんな攻撃が出来るか学ぶことで、防ぐ方法が分かってくる。
2. 攻撃場所・方法を考える
家に侵入する場合、
窓から?ドアに細工?AIスピーカーをハック?
→どこに?を探す
窓をたたき壊す?細い糸で鍵を開ける?AIスピーカーに窓を開ける指示を頼む?
→どうやって?を探す
ハッキングの世界も、どこ
に脆弱性があり、それをどうやって
発見するかが求められている!
(*'▽')< なるほど!じゃあサイトにどんどん試していけばいいね!
('Д')< いけないわ!法律違反になるかもしれない!
(´;ω;`)< じゃあ、どうしたらいいのさ・・・?
(^^)/< ハッキングするための準備が必要よ!
3. ハッキングする環境を作る
①VirtualBoxなどの仮想環境構築ツールをインストール!
私は徳丸本の通りにインストールしました。
②kali linuxなどの仮想環境を構築
③OWAZAPなどの検証ツールをインストール
これも徳丸本の通りに行いました
4. ハッキングをしていい場所を探す
- localhostで自分のサイトや誰かのサイトを試す
- hackme
- ksnctf
詳しくは前回の記事にハッキングをしていい場所や方法を載せています
https://qiita.com/yukirisayu/items/d668fd58fe7e11857ade
(^^)/< これで発見の項目は終わり!次は検証の項目に入っていくわ!
脆弱性を検証する
※この章は大きく内容を変えています。気になる方は公式資料をお読みください。
1. 脆弱性について知る
脆弱性の知識を付けることで、攻撃方法の知識が増え、攻撃の幅が増える
-
徳丸本などの本で攻撃方法を知る
-
JNVで過去の脆弱性レポートを見る
http://jvn.jp/nav/jvnhelp.html -
セキュリストのTwitterをフォローして各企業のお詫びページを見る
どんな攻撃手法が主に用いられているかの参考にする
2. 攻撃する思考、違和感を感じ取る
サイトフォームか・・・SQLインジェクションいけるかな・・・
あれ?URLに不要な記述があるぞ・・・?これはこうやって攻撃できそうか・・・?
○○のアップデートで△△の脆弱性が出たな・・・自分のサイトは大丈夫だろうか
あれ?これそのまま表示されるパターンか?ということはコマンドがそのまま反映されるか?
数をこなすことで、攻撃する思考、脆弱性っぽいところを見つけていく
(それが出来たら苦労しないよー!とも思っている)
3. 実際に攻撃する
-
脆弱性のあるコードをcloneしてきて(くれぐれも本番環境でやってはダメ!)検証する
-
本に載っているコードで攻撃を試す
-
CTFのサイトなどでFLAGを獲得する
仮説→検証→結果というルートでもいいし、自動検証ツールなどで結果を出す→検証してみる→数をこなして覚える
などで覚えていくしかないな~と思いました。
(*'▽')< ねえねえ!脆弱性を見つけたよ!そのままにしていいのかな?
(^^)/< そういうときは、悪用せずに適切に報告しましょう!
脆弱性を報告する
※ここも大きく変えてあります。公式資料をみることをオススメします。
1. 正しい評価をする
- CVSS値を用いて評価をしていく
CVSSとは?
一般的な脆弱性評価システムのこと。
- 基本評価基準
- 現状評価基準
- 環境評価基準
で評価する
jvnで出しているものが分かりやすい
https://jvn.jp/nav/jvnhelp.html
基本評価基準
脆弱性そのものの特性を評価する基準で、時間の経過や環境の差異で変化しない。
例えばSQLインジェクション・XSS攻撃・CORSなど、それぞれごとの戦闘能力
みたいな感じで付いている基準(?)
現状評価基準
脆弱性の現在の深刻度を評価する基準。
時間経過で変化するもので、攻撃コードが出てくるか、対策情報が利用できるかなどを基準にする。
現状どのくらいキケンかを表す基準(?)
環境評価基準
最終的な脆弱性の深刻度を評価する基準。
攻撃の2次被害の大きさ、その製品の使われ度合いも評価する為、
脆弱性の脅威と製品利用者毎に変化する。
値の算出方法
https://www.ipa.go.jp/security/vuln/CVSS.html
ここに詳しくは載っています
基本値=((0.6 × 影響度)+(0.4 × 攻撃容易性)-1.5)×f(影響度)
現状値=基本値×現状評価基準値
環境値=(再計算後現状値+(10-再計算後現状値)×環境評価基準のCD) ×環境評価基準のTD
みたいな感じ(変わるかも)。
2. IPAに報告する
脆弱性を発見したら
- CVSS評価をする(さっきの項目)
- 検証、対策の為に必要な情報をまとめる
- まとめた情報を確認し、報告する
(*'▽')< IPAさーん!脆弱性みつけたよー!じゃダメなの?
('ω')ノ< IPAが情報を基に検証をするから、どうやって見つけたかとかも詳しく書く必要があるよ
(^^)/< では、その報告フォームの書き方を見ていくわね
報告の仕方
IPAに届け出のフォームがあるので、これに従っていく
https://isec-vul-form.ipa.go.jp/ipa-vul-main/index.html
内容はこんな感じ(もっと項目あるよ!)
- どこでその脆弱性情報を手に入れたの?
- いつ分かった?名称は?バージョンは?パッチレベルは?言語は?
- サイトの詳細を教えて?
- どんな脆弱性だった?
- CWEと関連性ある?
- 何をしたらどうなった?誰でも出来る?どのくらい再現性がある?
- これによってどういう影響をみんなが受けそう?
- 対策はある?
- ログや検証ツール、検証コードを見せて!
- 脆弱性の画面キャプチャを見せて!
- CVSS基本値スコアは?
(*'▽')< 見つけて終わりという訳では無いんだねーー!
(^^)/< みんなの安全を守るためにも、分かりやすい報告を心掛けましょー!
最後に
これは個人的にまとめたものですので、公式も参照することをオススメします。
また、間違いがあったら教えてください!