xss の脆弱性に関するいくつかの考え
早速、これら 2 つの実際的なケースを見てみましょう:
XSS ケース 1:
1. 以下に示すように、特定のシステムには問題フィードバック機能があります:
2. もちろん、ここでファイルのアップロードをテストできますが、今日のトピックは XSS です。スキップして、最初にランダムに入力し、クリックして表示すると、送信された質問が表示されます。
3. Burp を起動し、テスト用にパケットをキャプチャします。
データ パッケージの分析: 現時点で制御可能な主なパラメーターは 3 つあり、説明はフィードバックの内容を表し、連絡先は電話番号を表し、URL はアップロードされた画像の場所を表します。
4. テスト後、説明と連絡先の両方が具体化され、出力されます。したがって、URL パラメーターに移動して、ソース コード分析を表示することしかできません。
5. データが URL に直接配置されているのは明らかなので<img src="">
、最終データをこのテストに結合しました。<img src="1" onerror="alert(1)">
payload:
1" οnerrοr="alert(666)
6. ファンタジーのポップアップ ウィンドウを表示しようと興奮してクリックしたとき、アクシデントが発生しました。ポップアップは表示されず、ソース コードにも情報がありませんでした: 7. そこで、表示するソース コードを探しに戻りました:
8
。ここで、次のようなラベルが表示されました。
<a href="javascript:void(0)" data-url="url=1" onerror="alert(666)" data-replycontent="null" data-description="test" data-moduleame="我的反馈" data-submittime="2022-07-14 19:30:41" data-replytime="null" class="feedback-detail">查看</a>
9. ジャンプが機能しないため、a タグ内でジャンプを直接閉じて XSS ステートメントを構築できます。前のペイロードの後の
重要なスプライシング ポイント
は次のようになります。
data-url="url=1" onerror="alert(666)"
復元後は次のようになります。
data-url=""
再構築後の理想的な状態は次のとおりです。
data-url=""><img src="1" onerror="alert(1)"></a>
ペイロード:
"><img src="1" οnerrοr="alert(1)"></a>
表示用に送信、成功したポップアップ ウィンドウ、保存された XSS
10. 位置を変更してソース コードを表示します:
xss ケース 2:
1. 特定のシステムには自己評価コンテンツがあり、ペイロード テストがここに直接出力されます:
2. Return結果を表示すると、以下が削除されていることがわかります</script>
:
3. 表示サイズに制限があると思われます。html を確認すると、最大 25 個まで取得できます:
4. 次に、img を使用してテストします。
payload:
<img src="1" onerror="alert(1)">
5. img タグが正常に実行されていることがわかりますが、ここの等号は Thinking としてエンコードされています: ここのコードは、正規表現やその他の方法で = に最初に一致する可能性があります。一致した場合は、次のような=
ものに置き換えられます。=
次の:
<?php
$str = '=';
$str2 = '<img src="1" οnerrοr="alert(1)">';
//$str2 = '<img src="1" onerror = "alert(1)">';
$res = str_replace($str,"=",$str2);
echo($res);
?>
6. 試してみると、= を [space]=[space] に変更すると、元のルールが妨げられ、= と一致することができなくなり、次のものがバイパスされる可能性があります
。
<img src="1" onerror = "alert(1)">
ソース コードを次のように表示します。
7. 感想:
上記の方法を使用してコードに実装し、規則性、文字列置換、その他の方法をテストしてみましたが、すべて失敗しました。= が置換されます。誰かが私にアドバイスをくれることを願っています!