XSSの攻撃点とは

試しにXXSをやってみたい。

# どうするのか？
* 悪意のコードをサイトに仕込み、閲覧したユーザーが実行させられる
* どうやってサイトに仕込むのか？

>検索のキーワードの表示画面や個人情報登録時の確認画面、掲示板、ウェブのログ統計画面等、利用者からの入力内容やHTTPヘッダの情報を処理し、ウェブページとして出力するものがあります。ここで、`ウェブページへの出力処理に問題がある場合、そのウェブページにスクリプト等を埋め込まれて`しまいます。

https://qiita.com/masatom86650860/items/e3d28d15f9304d09389a#152-html%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E5%85%A5%E5%8A%9B%E3%82%92%E8%A8%B1%E5%8F%AF%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E7%AD%96:~:text=%E6%A4%9C%E7%B4%A2%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AE%E8%A1%A8%E7%A4%BA%E7%94%BB%E9%9D%A2%E3%82%84%E5%80%8B%E4%BA%BA%E6%83%85%E5%A0%B1%E7%99%BB%E9%8C%B2%E6%99%82%E3%81%AE%E7%A2%BA%E8%AA%8D%E7%94%BB%E9%9D%A2%E3%80%81%E6%8E%B2%E7%A4%BA%E6%9D%BF%E3%80%81%E3%82%A6%E3%82%A7%E3%83%96%E3%81%AE%E3%83%AD%E3%82%B0%E7%B5%B1%E8%A8%88%E7%94%BB%E9%9D%A2%E7%AD%89%E3%80%81%E5%88%A9%E7%94%A8%E8%80%85%E3%81%8B%E3%82%89%E3%81%AE%E5%85%A5%E5%8A%9B%E5%86%85%E5%AE%B9%E3%82%84HTTP%E3%83%98%E3%83%83%E3%83%80%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E5%87%A6%E7%90%86%E3%81%97%E3%80%81%E3%82%A6%E3%82%A7%E3%83%96%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%A8%E3%81%97%E3%81%A6%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E3%80%81%E3%82%A6%E3%82%A7%E3%83%96%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%B8%E3%81%AE%E5%87%BA%E5%8A%9B%E5%87%A6%E7%90%86%E3%81%AB%E5%95%8F%E9%A1%8C%E3%81%8C%E3%81%82%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81%E3%81%9D%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E7%AD%89%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

>ユーザーは、攻撃者が罠を準備したWebサイトを閲覧してリンクをクリックするか、攻撃者が送り付けたメールに含まれる不正なリンクなどによって誘導され、標的のWebサイトにアクセスします。このとき、`標的Webサイトへの入力データとして`事前に不正なスクリプトが埋め込まれている`ため、ユーザーのブラウザー上でスクリプトが実行され、攻撃者による被害を受けてしまいます。

https://qiita.com/masatom86650860/items/e3d28d15f9304d09389a#152-html%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E5%85%A5%E5%8A%9B%E3%82%92%E8%A8%B1%E5%8F%AF%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E7%AD%96:~:text=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AF%E3%80%81%E6%94%BB%E6%92%83%E8%80%85%E3%81%8C%E7%BD%A0%E3%82%92%E6%BA%96%E5%82%99%E3%81%97%E3%81%9FWeb%E3%82%B5%E3%82%A4%E3%83%88%E3%82%92%E9%96%B2%E8%A6%A7%E3%81%97%E3%81%A6%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%8B%E3%80%81%E6%94%BB%E6%92%83%E8%80%85%E3%81%8C%E9%80%81%E3%82%8A%E4%BB%98%E3%81%91%E3%81%9F%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AB%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E4%B8%8D%E6%AD%A3%E3%81%AA%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AA%E3%81%A9%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E8%AA%98%E5%B0%8E%E3%81%95%E3%82%8C%E3%80%81%E6%A8%99%E7%9A%84%E3%81%AEWeb%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%AE%E3%81%A8%E3%81%8D%E3%80%81%E6%A8%99%E7%9A%84Web%E3%82%B5%E3%82%A4%E3%83%88%E3%81%B8%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%97%E3%81%A6%E4%BA%8B%E5%89%8D%E3%81%AB%E4%B8%8D%E6%AD%A3%E3%81%AA%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%8C%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%BC%E4%B8%8A%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%80%81%E6%94%BB%E6%92%83%E8%80%85%E3%81%AB%E3%82%88%E3%82%8B%E8%A2%AB%E5%AE%B3%E3%82%92%E5%8F%97%E3%81%91%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

* webサイトにスクリプトを埋め込む方法は？
* どうやってWEBサイトに脆弱性があるかを確かめるのか？

>6.3.1 攻撃点
>攻撃点（entry point）とは、攻撃の対象となる、`脆弱なURLおよびパラメータ`のことです。
攻撃点として最も選ばれやすいのは`メッセージ投稿、ユーザーコメント、ゲストブックですが、プロジェクトタイトル、ドキュメント名、検索結果ページなど、ユーザーがデータを入力可能なあらゆる部分`が攻撃点になる可能性があります。ただし、攻撃者がデータを入力するのはWebサイト上の入力ボックスとは限りません。`URLに含まれているパラメータ、URLに直接含まれていないが利用可能な「隠し」パラメータ、URLに含まれない内部パラメータにも攻撃者がデータを入力する可能性`があります。`攻撃者がすべてのトラフィックを傍受している可能性を常に考慮`に入れる必要があります。`アプリケーションプロキシやクライアント側プロキシを悪用すれば、リクエストを簡単に改ざん`できます。また、`バナー広告を経由して攻撃される可能性`もあります。
>
>XSS攻撃のしくみは次のとおりです。攻撃者が`何らかのコードをWebアプリケーションに注入すると、アプリケーションはそれを保存して標的ユーザーのWebページ上に表示`します。XSS事例の多くは警告ボックスを表示する程度ですが、実際はもっと凶悪なことも可能です。XSSを使うことで、`cookieの盗み出し、セッションのハイジャック、標的ユーザーを偽のWebサイトに誘い込む、攻撃者の利益になるような広告を表示`する、`Webサイトの要素を書き換えてユーザー情報を盗み出す`、あるいは`Webブラウザのセキュリティホールを経由して邪悪なソフトウェアをインストール`することもできます。
>
>2007年後半には、Mozillaブラウザで88件の脆弱性、Safariで22件、IEで18件、Operaで12件の脆弱性が報告されました。「Symantec Global Internet Security threat report」には、2007年後半にブラウザのプラグインで239件の脆弱性が報告されています。Mpackという非常に活発かつ最新の攻撃用フレームワークは、これらの脆弱性を利用しています。犯罪的なハッカーにとって、WebアプリケーションフレームワークのSQLインジェクションの脆弱性につけ込んで、テキストテーブルのカラムに凶悪なコードを注入して回るのはたまらない魅力です。2008年4月には、51万以上のWebサイトがこの方法でハッキングされ、英国政府、国連など多くの有名サイトが被害を受けました。

https://railsguides.jp/security.html#%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%EF%BC%88xss%EF%BC%89:~:text=%E6%94%BB%E6%92%83%E7%82%B9%EF%BC%88entry,%E5%8F%97%E3%81%91%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82

* あらゆる入力する部分が攻撃点になる
* URLに含まれているパラメータ、URLに直接含まれていないが利用可能な「隠し」パラメータ、URLに含まれない内部パラメータにも攻撃者がデータを入力する可能性

# 感想
これに倣ってやってみてもできなかった。
htmlのinputタグに入力すればできると思っていた。

https://www.ipa.go.jp/security/vuln/appgoat/ug65p900000198gm-att/000062612.pdf

>ユーザーからの入力データに含まれる不正なコードを無害化することでXSS攻撃を防止する技術。
Railsでは、
デフォルトのセキュリティ機能であるHTMLエスケープ処理によって、
基本的なサニタイジングが行われる

https://zenn.dev/airiswim/articles/3c1f9ee5d012b1#:~:text=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8B%E3%82%89%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AB%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E4%B8%8D%E6%AD%A3%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E7%84%A1%E5%AE%B3%E5%8C%96%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7XSS%E6%94%BB%E6%92%83%E3%82%92%E9%98%B2%E6%AD%A2%E3%81%99%E3%82%8B%E6%8A%80%E8%A1%93%E3%80%82%0ARails%E3%81%A7%E3%81%AF%E3%80%81%0A%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E6%A9%9F%E8%83%BD%E3%81%A7%E3%81%82%E3%82%8BHTML%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E5%87%A6%E7%90%86%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%80%81%0A%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B5%E3%83%8B%E3%82%BF%E3%82%A4%E3%82%B8%E3%83%B3%E3%82%B0%E3%81%8C%E8%A1%8C%E3%82%8F%E3%82%8C%E3%82%8B