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

IT

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

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

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

Webを知る

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

クライアントを知る

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

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

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


それらがブラウザと呼ばれる。

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

サーバを知る

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

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

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

HTTPを知る

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

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

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


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


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

<おまけ>
パケットキャプチャツールであるwiresharkでHTTPを見てみた。


URL

これ。

HTTPだと、このあたり

リクエスト、レスポンス

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

基本的に、「ヘッダ」が大半を占める。
内容をもらったり、表示する際の設定など。


セキュリティに関するものはだいたい ヘッダで設定されている。

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

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

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

「HTTPリクエスト」と「HTTPレスポンス」

HTTPリクエスト、HTTPレスポンスの具体的内容

パラメータ

これ。

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

URLパラメータ 【URL parameter】 リクエストパラメータ / request parameter

セッション、Cookie

これ。

セッションは状態を保存するもの。
HTTPでは状態を保存できないので、サーバに保存しておく必要がある。


その際、どれがどれだかわかんなくなるのでセッションで判別できるようにする。

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

6.4.1 セッション管理

Cookieとセッションをちゃんと理解する

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

開発者じゃないので、細かいところはないけど許してね。
ボリュームがすごいので、気になるものだけみてWebの仕組みを理解するのを推奨。 ### HTML
基本はこれ。他のプログラムとかも最終的にはこれを出力している。

HTMLとは?

HTML: HyperText Markup Language

JavaScript

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

JavaScript チュートリアル

Node.js® とは

CSS

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

CSSとは?

CSS の基本

PHP

PHP (プログラミング言語)

PHP: PHP とはなんでしょう? – Manual

Java

JSPやservletを使う。

JavaによるWebアプリケーションの仕組みをざっくり説明

etc…

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

https://www.webbygiants.com/8-top-programming-languages-web-development-2019/ www.webbygiants.com

<補足>マインド編

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

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

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

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

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

終わりに

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

コメント

タイトルとURLをコピーしました