バグバウンティの基礎みたいなところ

f:id:NickShadows:20191117123549j:plain

ほとんど0からの人は何すればいいですか?って聞かれた気がしたので、まとめてみます。


脆弱性とかを知る前に、基礎のところを知らんとわけわからんと思うので、そのあたりです。
細かく各単語や機能を説明するわけではなく、簡単に紹介して詳細は他記事や本を参照する形です。


流れを把握したり、参考として使ってもらえればと思います。

Webを知る

公開型のテキスト共有の仕組み。
「これが見たいよ」って要求を出す側(クライアント)と、要求に答える側(サーバ)がある。

f:id:NickShadows:20191117093942p:plain:w500

Webは仕組みなので、このはてなブログなどその仕組み上で見れるものをサイトという。
リンク

e-words.jp

ja.wikipedia.org

クライアントを知る

クライアントと聞くと難しくなるが、基本的には「ブラウザ」のこと。
別のクライアントもあるが、とりあえずブラウザ。


ブラウザとは何?って方のために。
古くから言い伝えられる、「インターネットを見る際に使うもの」。


普通の人だったら、最初から入っているInternet Explorer、Microsoft Edgeを使っていると思う。
MacなどのApple系はSafariを使われているはず。
それらがブラウザと呼ばれる。


このクライアントは、サーバに対して「見たいよー」って要求を出し、その応答に対して画面を表示する。


サーバを知る

普通の人であれば意識することのないサーバ。


クライアントから来た要求に対し、応答を返す。
このやりとりはHTTPと呼ばれる。


今まで表示されてたのは、何かがものを返していたからなんだな~程度で。


HTTPを知る

ここから用語や機能ではなく、技術について。
ネットサーフィンしているだけならいらないが、バグバウンティをしたりWebセキュリティに関わるなら必要となる。


HTTP(Hypertext Transfer Protocol)とは、クライアントとサーバの通信で使用されるプロトコル。
プロトコルは決まりとかルールとかそんな感じ。


ごちゃごちゃ難しい単語を並べる前に、「F12」キーを押してから「HTTP」と検索してみて欲しい。
私はGoogle Chromeを使用しているのだが、こんな画面になるはず。
f:id:NickShadows:20191117101553p:plain



適当なものをクリックすると、右に画面が表示される。
ここがHTTPでやり取りされているデータだ。
f:id:NickShadows:20191117102132p:plain


細かいところは、次以降で見ていく。


<おまけ>
パケットキャプチャツールであるwiresharkでHTTPを見てみた。
f:id:NickShadows:20191117110837p:plain

f:id:NickShadows:20191117110953p:plain

URL

これ。
f:id:NickShadows:20191117103949p:plain



HTTPだと、このあたり
f:id:NickShadows:20191117104054p:plain



URLはスキーム、ホスト名、パスで構成されている。
詳しい解説などは他の記事を参照したほうがいいだろう。

www.sony.jp

ja.wikipedia.org

リクエスト、レスポンス

これ。
f:id:NickShadows:20191117104623p:plain

基本的に、「ヘッダ」が大半を占める。 内容をもらったり、表示する際の設定など。
セキュリティに関するものはだいたい ヘッダで設定されている。


その他は「Body」がある。
つまり内容のこと。
f:id:NickShadows:20191117105326p:plain

こちらから明示的に送りたい内容(検索ワード)や、それの結果が当てはまる。
Bodyがないと、常にまっさらな画面が表示されることになってしまう。


それぞれの解説をすると頭がふっとぶと思われるので、気になったところから調べていって欲しい。


itsakura.com

qiita.com



パラメータ

これ。
f:id:NickShadows:20191117111822p:plain



可変値を送ったりする場合に使われる。
これがないとAmazonとかは成り立たない。

e-words.jp


セッション、Cookie

これ。
f:id:NickShadows:20191117112149p:plain




セッションは状態を保存するもの。
HTTPでは状態を保存できないので、サーバに保存しておく必要がある。
その際、どれがどれだかわかんなくなるのでセッションで判別できるようにする。


Cookieはここで使われることが多い。
ただ、実態はテキストなので、使おうと思えばなんだって使える。


www.ipa.go.jp

qiita.com

サイトに使われている技術を知る

開発者じゃないんで、細かいところはないけど許してね。
ボリュームがすごいので、気になるものだけみてWebの仕組みを理解するのを推奨。

HTML

基本はこれ。他のプログラムとかも最終的にはこれを出力している。

www.htmq.com

developer.mozilla.org



JavaScript

サイトを動的にしたり、サーバサイドになったり何でもするやつ。
フレームワークが多かったり、トレンド感がある。


developer.mozilla.org

nodejs.org

CSS

レイアウトを整えるやつ。
こいつがいないと、単調な見た目になる。

www.htmq.com

developer.mozilla.org

PHP

ja.wikipedia.org

https://www.php.net/manual/ja/intro-whatis.php

Java

JSPやservletを使う。

qiita.com

Ruby

Ruby on Railsが主流なはず。

rubyonrails.org

railstutorial.jp

ja.wikipedia.org



etc...

pythonやASP.netもあると思うが、詳しくないので紹介できない。

www.webbygiants.com

Next Step

ここまで理解できた場合は、セキュリティ方面に入っていいはず。


モラルとwebセキュリティについて学ぼう。

www.nicksecuritylog.com

www.jitec.ipa.go.jp



www.nicksecuritylog.com



<補足>マインド編

常に自分を高め続けることが大事、なんてことは言うつもりはないが、「常に自分から取りに行く」スタイルは大事。


だれも初心者であるあなたの気持ちなどわからないので、あなたにあった情報なんて提供することはできない。


だから、本当に欲しい情報があるなら自分で取りに行くしかない。


初心者に優しくなっているし、初心者に優しくあるべきだとは思うが、初心者を甘やかすべきではないと思う。


動こう!与えられるだけでは、何も変わらん。


終わりに

Webの基礎のところをまとめました。
正直、実践するのは大変だと思いますが、これで何するのかわからん状態はなくなるはず。


あとは、グループに入って質問してね!


サポートしていただけるとありがたい!

サポートをしていただけると励みになります!
よろしくお願いします!

Paypal
paypal.me



Amazon ギフト
アドレス
f:id:NickShadows:20191117123121p:plain:w400

Amazonギフト券 Eメールタイプ - Amazonベーシック

Amazonギフト券 Eメールタイプ - Amazonベーシック



参考リンク

medium.com

medium.com