はじめに
当社のインタラクティブな実験(Lab)へようこそ!ここでは、Web アプリケーションにおける一般的で重要な脆弱性であるクロスサイトスクリプティング(Cross-Site Scripting: XSS)に焦点を当て、Web セキュリティの世界に飛び込みます。もし Web サイトが XSS に対して適切に保護されていない場合、攻撃者の楽園になってしまう可能性があります。
でも心配しないでください!私たちはこの問題を理解し、解決する手助けをします。まずは XSS とは何か、なぜ重要なのか、そしてどのように悪用されるのかを解説します。次に、潜在的な XSS 脆弱性を特定するのに役立つ「hackbar」というツールの使い方を案内します。
さらに、様々な「回避技術(bypassing techniques)」についても探っていきます。これらは攻撃者がセキュリティ対策を回避するために使う巧妙な方法であり、これを理解することで、私たちの Web サイトをより良く保護することができます。
覚えておいてください、学ぶ最良の方法は実践です。そのため、この実験(Lab)を通して実践的な実験を行います。この実験(Lab)の終わりには、XSS 脆弱性とその防止方法についてしっかりと理解できるようになるでしょう。始めましょう!
Hackbar のインストールと使用
このモジュールでは、XSS(Cross-Site Scripting)脆弱性を検出する際の主要なツールとなる「hackbar」という便利なツールに慣れ親しんでいきます。
まずは、hackbar のブラウザ拡張機能をインストールしましょう。
- ディレクトリ
/home/labex/projectに移動します。 hackbar-2.3.1-fx.xpiファイルを見つけてダブルクリックし、ポップアップウィンドウで「追加」をクリックして拡張機能をインストールします。下の画像のようになります。
インストールが完了したら、ブラウザの開発者ツールを起動することで hackbar にアクセスできます。通常は F12 キーを押すか、設定 > 開発者 > デバッガーに移動して行います。
ここで、hackbar のいくつかの主要な機能を簡単に見ていきましょう。
- Load URL:この機能は、現在表示しているページの URL を hackbar に取り込みます。
- Split URL:この機能は、URL パラメータを分解して読みやすく理解しやすくします。
- Execute:この機能は、変更した URL をサーバーに送信します。
- Post data:この機能を使うと、POST データをサーバーに送信できます。
さらに、hackbar には SQL インジェクション、XSS、XXE など、さまざまな脆弱性に対応した組み込みペイロードが用意されています。
XSS 脆弱性実験 1
このセグメントでは、基本的な XSS(Cross-Site Scripting)脆弱性について詳しく調べ、hackbar を使ってそれを悪用する方法を学びます。
まず、以下のコマンドを実行して実験(Lab)環境を準備します。
docker run -d -p 82:80 --name pentesterlab-WebforPentest-1 -it jewel591/vulnbox:pentesterlab-WebforPentest-1 /bin/sh -c 'service apache2 start && tail -f /var/log/apache2/error.log'
次に、Web ブラウザを起動し、以下の URL にアクセスします。
http://127.0.0.1:82/xss/example1.php?name=hacker
XSS 脆弱性を悪用する手順は以下の通りです。
- F12 キーを押して hackbar を起動し、「Load URL」をクリックして現在のページの URL を取り込みます。
nameパラメータの値を123に変更してから「Execute」をクリックします。下の画像のように、ページがこの新しい値で更新されるのが確認できるはずです。
- hackbar の組み込み XSS ペイロード(
XSS > XSS Alert)を使用し、「Execute」をクリックします。これにより、下の画像のように XSS アラートがトリガーされるはずです。
XSS 脆弱性実験 2
この部分では、XSS(Cross-Site Scripting)フィルタを回避する基本的な手法を探っていきます。
まず、Web ブラウザで以下の URL にアクセスします。
http://127.0.0.1:82/xss/example2.php?name=hacker
XSS フィルタを回避する手順は以下の通りです。
- hackbar を使って簡単な XSS ペイロード、例えば
<script>alert(1)</script>を注入してみます。下の画像のように、これでは期待される結果が得られないことがわかります。
- ページのソースコードを調べます。下の画像のように、
<script>と</script>タグがフィルタリングされていることに気づくでしょう。
- このフィルタを回避するために、
scriptタグを大文字と小文字を混ぜた形、例えば<ScripT>alert(1)</ScripT>で試してみます。これにより、フィルタを回避して XSS ペイロードを正常に注入できるかもしれません。下の画像のようになります。
XSS 脆弱性実験 3
この段階では、様々な HTML タグと属性を使って XSS(Cross-Site Scripting)攻撃を実行する方法を学びます。
まず、Web ブラウザで以下の URL にアクセスします。
http://127.0.0.1:82/xss/example4.php?name=hacker
XSS フィルタを回避して攻撃を実行する手順は以下の通りです。
- hackbar を使って簡単な XSS ペイロードを注入してみます。しかし、下の画像のように、サーバーが
scriptキーワードを検出してブロックすることがわかります。
- このフィルタを回避するために、
<a>HTML タグとonclick属性を組み合わせて使用します。
<a onclick="alert('xss')">xss</a>
このペイロードは、Web ページ上にクリック可能なリンクを生成します。クリックすると、alert('xss') JavaScript 関数がトリガーされます。
- ページ上の「xss」リンクをクリックします。下の画像のように、XSS アラートが起動するはずです。

XSS 攻撃を行うために組み合わせて使用できる HTML タグと属性はたくさんあります。より高度な XSS ペイロードについては、以下のリポジトリを参照してください。
https://github.com/iSecurity-Club/Pentest-Methodologies/blob/master/web-exploit-exp/xss/payloads.txt
まとめ
この実験(Lab)では、XSS 脆弱性を発見して悪用する基本的な手法を学びました。hackbar ツールを使って XSS 脆弱性をテストする方法を調べ、大文字小文字の操作や異なる HTML タグと属性の使用など、さまざまな回避手法を使いました。実践的な実験を通じて、Web アプリケーションにおける XSS 脆弱性の特定と悪用に関する実践的な経験を積みました。この実験は、より高度な XSS 手法の探求や Web アプリケーションのセキュリティテストをさらに進めるための堅実な基礎を提供しました。



