![見出し画像](https://assets.st-note.com/production/uploads/images/161242876/rectangle_large_type_2_38cb57bb8ec124856a9cfcaabc21ab15.png?width=1200)
セキュリティ学習5日目
セキュリティ学習5日目。
つまり5週間が経った。
ネットワークから始まり、現在はwebの脆弱性に入ったタイミング。
内容は基礎というだけあって、基本をやっているのだが、いざCTFとなると難しい問題ではないはずなのに解けない。
やはり、セキュリティはそもそもが難しいのか…と心折れそうになりながらなんとかまだ頑張っている。
PHPのライブラリを使ってファイルの加工
php://filter/resource を使いfileパラメータの前につけたりすると、ファイルの読み込み時に、加工を行うことができる。
例えば、フルカラーの画像を読み込む時、モノクロで出すようなこともできる。
PHPの処理を間に挟むことを楽にするような手法。
php://filter のようなライブラリを挟むということができるが、その種類については自分で調べる。
クロスサイトスクリプティング
XSS(Cross Site Scripting)と略される。
スクリプティングとは
利用者のブラウザ上でブラウジングしている時に、開発者が意図しないスクリプトを実行させる。
スクリプトをクエリとして送信することで、サーバからのresponseに追加した状態で返ってくるような形になっている。
リクエストを受けとってレスポンスを返すことを反射という。
ここから、反射型XSSなどと言うこともある。
2種類の攻撃
攻撃は二つに分けられる。
1. サーバーを攻撃
DoSSなど、破壊を目的とした攻撃。
2. クライアントを攻撃
ユーザーの持つ情報を抜くなどを目的とする。(Cookieの情報など)
政治的なプロパガンダなどを表示するなど。
XSSなどはこちらに部類される。
サニタイズされていないサイトについては
JavaScriptが動く可能性がある。
そのため、&や<や>、", ' などがエスケープされているかを確認するのが早い。
注意する点はいくつかある。
反射させる位置
">
などを入れることで、inputタグを抜け出したスクリプトの埋め込みが可能になる。
<input type="text" value=" "><script></script>">
この場合、valueを閉じ、さらにinputも閉じた状態でscriptを埋め込むことができる。
以下のようにもして、イベントハンドラを設定することができる。
<input type="text" value=" " onmouseover="alert() ">
こうすると、valueを閉じた上でさらにそこにイベントハンドラを設定することができる。
HTMLはゴミのタグは無視される。
つまり
<div></div>/>
といったコードでは、 /> は切り捨てられる。
JavaScriptスキーム
&# で始まる、JavaScriptスキームを使うと、alert() などの文字列を書かなくても、同じ挙動をしてくれる。
サニタイズを利用する
alert が置換され、サニタイズされてるようなものであれば
aalertlertなどにすると、alertが消されたら、alertになるような文字を作ることもできる。
チートシートを見る
XSSのチートシートを見ると、いろんな手法を見ることができる。
参考:
セッションハイジャック
なりすましを行うような攻撃の行為。
webページのセッションを乗っ取ること。
Cookie情報などを奪うことでなりすますことができる。
よくある方法として
推測できるセッションIDによって乗っ取る
日付や連番によるセッションIDの生成など
セッション固定化
URLにセッションIDを固定させている
などがある。
詰まった部分
HTMLは全部、`"` を使っている訳ではない。
`'` の場合、XSSができなかった。
ちゃんとレスポンスのHTMLを見ておこう。