土日の勉強ノート

AI、機械学習、最適化、Pythonなどについて、技術調査、技術書の理解した内容、ソフトウェア/ツール作成について書いていきます

安全なWebアプリケーションの作り方(徳丸本)の環境構築

これまでは、「ハッキング・ラボのつくりかた 完全版 仮想環境におけるハッカー体験学習」を参考にさせてもらって、理解を進めてきました。今回からは、並行して「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践」(通称:徳丸本)を参考に、勉強を進めていきたいと思います。

この徳丸本とは、脆弱性のある仮想マシンを準備してくれていて(VirtualBox と Docker が準備されている)、その仮想マシンに対して、実際に攻撃を体験することで、脆弱性の理解を深めることができるというものです。

今回は、徳丸本の実習環境の構築を進めていきます。

それでは、やっていきます。

参考文献

はじめに

「セキュリティ」の記事一覧です。良かったら参考にしてください。

セキュリティの記事一覧

それでは、やっていきます。

徳丸本の実習環境の構築の全体像

徳丸本の実習環境についてですが、以下の青紫の背景色の2つのマシンを想定しています。wasbook が脆弱性のある仮想マシンで、実際に攻撃を行うのは Windows を想定しています。

図の DHCP-server は、VirtualBox が用意してくれたもので、192.168.56.x/24 のアドレスを配布しています。ParrotOS は、これまで使ってきた VirtualBox の仮想マシンです。

徳丸本の実習環境
徳丸本の実習環境

攻撃するマシンを Windows10 としているため、いろいろインストールすることになりますが、ちょっと気が進まないので、可能な限り、ParrotOS を攻撃マシンとしたいと思います。以下のようになります。

徳丸本の実習環境から攻撃マシンをParrotOSに変更
徳丸本の実習環境から攻撃マシンをParrotOSに変更

PlantUML は、今まで何回か使っていましたが、ネットワーク図は初めて作りました。なかなかいい感じに作図してくれました。ソースも貼っておきます。

@startuml

title 徳丸本の実習環境

nwdiag {
    network home {
        address = "192.168.11.x/24";
        
        win10 [ address = 192.168.11.13 ];
    }
    network VirtualBox {
        address = "192.168.56.x/24";
        
        win10 [ address = 192.168.56.1 ];
        DHCP-server [ address = 192.168.56.100 ];
        group {
            color = "#aaaaFF";
            wasbook [ address = 192.168.56.101 ];
            ParrotOS [ address = 192.168.56.105 ];
        }
    }
}

@enduml

徳丸本の実習環境の構築は、大きく分けて、脆弱性仮想マシン(wasbook)のセットアップと、攻撃側の ParrotOS の設定になります。

脆弱性仮想マシン(wasbook)のセットアップ

環境構築にあたり、必要なソフトなどは、以下の徳丸本のサポートサイトからダウンロードします。

wasbook.org

脆弱性仮想マシン(wasbook)のインストール

サポートサイトのダウンロードページから、「実習用仮想マシン(VirtualBox用 Ver 1.0.4)」をダウンロードします。

ダウンロードしたファイルは OVAファイルなので、ダブルクリックすると、VirtualBox にインポートできます。

CPU が 1つ、RAM は 512MB、GUI 無し、ということで、軽い仮想マシンのようです。

wasbook仮想マシンのインポート
wasbook仮想マシンのインポート

インポートが完了したら、ネットワークをクリックして、デフォルトの NAT に加えて、ホストオンリーアダプタを追加しておきます。

wasbook仮想マシンの設定
wasbook仮想マシンの設定

では、起動します。

CUI のログイン画面になるので、ユーザ名:wasbook、パスワード:wasbook でログインします。

SSHサーバがデフォルトで起動していたので、TeraTerm で接続できます。

情報収集と、ParrotOS に接続できることを確認します。

$ cat /etc/issue
Debian GNU/Linux 9 \n \l

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 08:00:27:92:63:9e brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:5b:4c:dc brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever

$ ping 192.168.56.105
PING 192.168.56.105 (192.168.56.105) 56(84) bytes of data.
64 bytes from 192.168.56.105: icmp_seq=1 ttl=64 time=2.07 ms
64 bytes from 192.168.56.105: icmp_seq=2 ttl=64 time=1.13 ms
^C
--- 192.168.56.105 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.130/1.601/2.073/0.473 ms

この時点で、ParrotOS から wasbook の Webサーバにアクセスできます。hosts の設定がまだなので、IPアドレスで、http://192.168.56.101 で、wasbook のトップページが表示されます。ここまでで、脆弱性仮想マシン(wasbook)のインストールは完了です。

脆弱性仮想マシン(wasbook)の設定

ここからは、必須ではないですが、wasbook を使いやすくする設定を行います。

visudo

sudo を付けるたびに、毎回パスワードを聞かれるのは面倒なので、visudo でパスワードを入力しないでいいように設定しました。

$ sudo visudo
wasbook ALL=(ALL:ALL) NOPASSWD: ALL
sambaサーバ

ソースコードを編集したりするのに便利なので、sambaサーバをインストールします。

$ sudo apt install samba
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 samba : Depends: python-dnspython but it is not installable
         Depends: python-samba but it is not going to be installed
         Depends: samba-common-bin (= 2:4.5.12+dfsg-2+deb9u2) but it is not going to be installed
         Depends: tdb-tools but it is not installable
         Depends: update-inetd but it is not installable
         Depends: libldb1 (>= 0.9.21) but it is not installable
         Depends: libpython2.7 (>= 2.7) but it is not installable
         Depends: libtalloc2 (>= 2.0.4~git20101213) but it is not installable
         Depends: libtdb1 (>= 1.2.7+git20101214) but it is not installable
         Depends: libtevent0 (>= 0.9.16) but it is not installable
         Depends: samba-libs (= 2:4.5.12+dfsg-2+deb9u2) but it is not going to be installed
         Recommends: attr but it is not installable
         Recommends: samba-dsdb-modules but it is not going to be installed
         Recommends: samba-vfs-modules but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Debian 9 は古いので、うまく入らないです。Docker への移行を考えた方がいいかもしれません。

ParrotOSの設定

ここからは、攻撃側の ParrotOS の設定になります。

ParrotOSのhostsファイルの設定

名前でアクセスできるように、ParrotOS の hosts ファイルに wasbook の IPアドレスと名前を登録します。以下のように、/etc/hosts ファイルに 1行追加します。

ping で確認すると、ちゃんとアクセスできています。

$ sudo nano /etc/hosts
192.168.56.101 example.jp api.example.net trap.example.com

$ sudo ping example.jp
PING example.jp (192.168.56.101) 56(84) bytes of data.
64 bytes from example.jp (192.168.56.101): icmp_seq=1 ttl=64 time=1.04 ms
64 bytes from example.jp (192.168.56.101): icmp_seq=2 ttl=64 time=1.12 ms
^C
--- example.jp ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 1.044/1.079/1.115/0.035 ms

OWASP ZAPのセットアップ

youtube で、海外のサイトで、OWASP ZAP の解説をしているのを聞いたところ、普通に、オワスプザップと呼んでいたような気がします。

ハッキング・ラボのつくりかた 完全版 仮想環境におけるハッカー体験学習」では、HTTP通信のアナライザ?として、Burp Suite を使っていますが、徳丸本では、同種のツールである OWASP ZAP を使うようです。

ParrotOS には、最初から OWASP ZAP がインストールされています。では、起動してみます。

OWASP ZAPの起動
OWASP ZAPの起動

起動完了すると、以下のような画面になります。一番上のタイムスタンプベースを選んで、Start をクリックします。

OWASP ZAPの起動完了
OWASP ZAPの起動完了

その後、アップデートできる画面になりますが、また必要になったらアップデートすることにして、Close をクリックします。OWASP ZAP が起動しました。

続いて、プロキシの設定を行います。OWASP ZAP や、Burp Suite は HTTP のローカルプロキシとして動きます。WebブラウザからWebサーバにアクセスする際、その通信を仲介し、Webブラウザの要求を確認したり、内容を変更したりできます。

Tool → Options... をクリックします。

プロキシの設定を起動
プロキシの設定を起動

たくさん設定項目がありますが、左側の項目から、Network → LocalServers/Proxies を選びます。ポート番号が 8080番になっていますが、他と競合しやすいということで、58888 に変更します。

ローカルプロキシのポート番号を変更
ローカルプロキシのポート番号を変更

OK を押して閉じずに、左側の項目から Breakpoints を選びます。Break Buttons Mode を Separate Request and Response Buttons に変更します。

ブレークポイントの設定を変更
ブレークポイントの設定を変更

※2024/8/11:追記しました

日本語に対応しているので、日本語化します。

同じく、Tool → Options... の Language をクリックして、右上のところから、「日本語」を選択します。日本語化されるには、OWASP ZAP の再起動が必要でした。

日本語化の設定
日本語化の設定

Firefox で、https://example.jp/ にアクセスすると、「警告:潜在的なセキュリティリスクあり」と表示されて、危険を承知で進むと、一応表示されるのですが、目次ページや、そのほかのページも、以下のような感じで、左右に警告が出たままになることがあります。

警告が表示される場合がある
警告が表示される場合がある

これは、OWASP ZAP がアップデートされて、機能追加されたことが原因ということです。以下のように、Tool → Options... の HUD で、Enable when using the ZAP Desktop の項目のチェックを外すと解決します。

HUDの設定
HUDの設定

Firefoxに拡張機能のFoxyProxy-Standardをインストールする

Firefox を起動します。

次の URL にアクセスします。https://addons.mozilla.org/ja/firefox/addon/foxyproxy-standard/

FoxyProxy-Standardの拡張機能をインストール
FoxyProxy-Standardの拡張機能をインストール

いくつか確認画面が出ますが、OK(Okey)をクリックします。

FoxyProxy-Standard の設定を行います。

サポートサイトに、最新?の「Foxyproxyの設定ファイル」があるのでダウンロードします。ファイル名は「foxyproxy7.json」です。おそらく、FoxyProxy-Standard のバージョン 7 用の設定ファイルなんだと思いますが、今回インストールした FoxyProxy は、バージョン 8.9 でした。

Firefox の拡張機能のアイコンをクリックして、FoxyProxy をクリックします。すると、Options があるのでクリックします。Import タブを開き、Import from older versions をクリックします。Import ボタンがあるので、クリックすると、ファイルを開くダイアログが出るので、先ほどダウンロードした「foxyproxy7.json」を開きます。これで設定が読み込まれました。

Proxies タブを開きます。ZAP を開き、下の方に Pattern というのがありますが、ここがうまく動かなかったので修正しました。下図のように設定することで動きました。

  • *example.jp*
  • *api.example.net*
  • *trap.example.com*

FoxyProxyの設定
FoxyProxyの設定

ちょっと分かりにくかったのですが、FoxyProxy を有効にするには、下図のところをクリックして設定しておく必要がありました。

FoxyProxyの設定
FoxyProxyの設定

動作確認してみます。

https://example.jp/ にアクセスしたときは、OWASP ZAP が認識しますが、普通の Webサイト(Googleとか)にアクセスしても OWASP ZAP が認識しなければ正しく設定できているんだと思います。

FoxyProxyの動作確認
FoxyProxyの動作確認

当面の環境構築はこれで完了です。脆弱性仮想マシンは、wasbook の他にも用意されているようなのですが、書籍の後半に出てくるようなので、今回はここまでにしたいと思います。

脆弱性仮想マシン(wasbook)のDocker版のセットアップ

久しぶりに、VirtualBox の wasbook を使おうとしたところ、Debian 9 でした。サポート期間が終了していて、aptコマンドを実行することもできない状態でした。そこで、Docker版を使ってみようと思います。

脆弱性仮想マシン(wasbook)のDocker版の起動

脆弱性仮想マシン(wasbook)の Docker版の導入方法について、徳丸先生が解説してくれている動画があります。こちらを参考に進めていきます。

youtu.be

私の環境は、WSL2(Ubuntu 24.04)で、Docker Desktop は使わず(企業では Docker Desktop が無償で使えないため)、WSL2 の Ubuntu 24.04 に、普通にインストールした Docker を使います。

以下から、脆弱性仮想マシン(wasbook)の Docker版(Ver 1.2.0)の一式をダウンロード(約21MB)する。

wasbook.org

wasbook-docker.zip というファイルがダウンロードできるので、解凍しておきます。README.md が入っているので、読みます。

起動方法が書いてあるので、従います。

実行すると、Dockerビルドが始まります。約1分ほどで終わりました。

$ cd wasbook-docker

$ docker compose up -d
 ✔ wasbook-docker-apache              Built                                                                                                                                           0.0s
 ✔ wasbook-docker-nginx               Built                                                                                                                                           0.0s
 ✔ wasbook-docker-db                  Built                                                                                                                                           0.0s
 ✔ wasbook-docker-mail                Built                                                                                                                                           0.0s
 ✔ wasbook-docker-tomcat              Built                                                                                                                                           0.0s
 ✔ Network wasbook-docker_internal    Created                                                                                                                                         0.3s
 ✔ Container wasbook-docker-mail-1    Started                                                                                                                                         2.4s
 ✔ Container wasbook-docker-apache-1  Started                                                                                                                                         2.4s
 ✔ Container wasbook-docker-db-1      Started                                                                                                                                         1.9s
 ✔ Container wasbook-docker-tomcat-1  Started                                                                                                                                         2.4s
 ✔ Container wasbook-docker-nginx-1   Started          

$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                               NAMES
0bf1f283a661   wasbook-docker-nginx    "/docker-entrypoint.…"   17 seconds ago   Up 14 seconds   80/tcp                              wasbook-docker-nginx-1
af1fdd2d3240   wasbook-docker-apache   "docker-php-entrypoi…"   17 seconds ago   Up 16 seconds   80/tcp, 127.0.0.1:13128->3128/tcp   wasbook-docker-apache-1
ba0d2ff563d4   wasbook-docker-tomcat   "catalina.sh run"        17 seconds ago   Up 16 seconds   8080/tcp                            wasbook-docker-tomcat-1
c011bbfdc908   wasbook-docker-db       "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds   3306/tcp                            wasbook-docker-db-1
0a0231b65cd8   wasbook-docker-mail     "/root/run.sh"           17 seconds ago   Up 16 seconds   1025/tcp, 1080/tcp                  wasbook-docker-mail-1

この時点で、まずブラウザでアクセスしてみます。アクセス先の URL は、http://localhost:13128/ です。以下のようなページが見えたら、正しく動作していると思います。

脆弱性仮想マシン(wasbook)のDocker版のトップページ
脆弱性仮想マシン(wasbook)のDocker版のトップページ

ここまでやって、気が変わったので、環境を VirtualBox の Ubuntu 24.04 に変更します。Windows に Firefox を入れたくなかったためです。

上記と全く同じ手順で、VirtualBox の Ubuntu 24.04上で、脆弱性仮想マシン(wasbook)のDocker版を導入し、脆弱性仮想マシン(wasbook)のDocker版のトップページを確認できました。

Burp Suite Community Editionのインストール

続いて、Burp Suite Community Edition をインストールします。

apt でインストールもできるようですが、以下の公式サイトの手順に従います。

https://burp-resources-ja.webappsec.jp/Documentation/burp/documentation/desktop/index.html

クイックスタートガイドを開き、進んでいくと、ダウンロードページに行けます。そこで、Burp Suite Community Edition の Linux (x64) を選択して、ダウンロードボタンをクリックします。

ダウンロードが完了したので、ハッシュを確認しておきます。ダウンロードページの show checksums をクリックして、一致することを確認します。

$ sha256sum burpsuite_community_linux_v2026_3_2.sh 
0408888e6e4d895ff3a8ba78097527139646300507c4225445c11d71c504c0b3  burpsuite_community_linux_v2026_3_2.sh

インストールを開始します。

$ sh burpsuite_community_linux_v2026_3_2.sh 
Unpacking JRE ...
Starting Installer ...

Next をクリックします。

Burp Suite:Welcome
Burp Suite:Welcome

Next をクリックします。

Burp Suite:Select Destination Directory
Burp Suite:Select Destination Directory

Next をクリックします。

Burp Suite:Select Directory for Symlinks
Burp Suite:Select Directory for Symlinks

インストールが始まります。約1分で完了しました。Finish をクリックします。

Burp Suite:Complete
Burp Suite:Complete

Burp Suite Community Editionの設定

GUI のメニューから Burp Suite を起動します。

ライセンス確認です。I Accept をクリックします。

Burp Suite:ライセンス確認
Burp Suite:ライセンス確認

起動オプションの選択画面です。今回は、Temporary project in memory を選択します(プロジェクトを保存するには、Burp Suite Professional が必要らしいです)。Next をクリックします。

Burp Suite:起動オプションの選択
Burp Suite:起動オプションの選択

コンフィグレーションの選択画面です。今回は、Use Burp defaults を選択します。Start Burp をクリックします。

Burp Suite:コンフィグ選択
Burp Suite:コンフィグ選択

Burp Suite が起動しました。

Burp Suite:起動画面
Burp Suite:起動画面

Proxyタブを開きます。

Burp Suite:Proxyタブ
Burp Suite:Proxyタブ

Proxy settings をクリックします。

Burp Suite:Proxy settings
Burp Suite:Proxy settings

Proxy listeners の 127.0.0.1:8080 となっています。8080番ポートは、よく使われるので、競合しないために別のポート番号に変更しておきます。徳丸先生の動画の通り、58888番ポートに変更します。このリストを選択し、Edit をクリックして、Bind to port を 58888 に設定します。

この設定は、Burp Suite が、プロキシとして受け付けるアドレスとポート番号です。Burp Suite は、ブラウザと Webサーバの間でプロキシとして動作するので、ここで設定したアドレスとポート番号を、ブラウザ(Firefox)のプロキシ設定に反映する必要があります。

Burp Suite:Proxy settings (変更後)
Burp Suite:Proxy settings (変更後)

この画面を閉じて、Burp Suite の画面に戻ります。

Open browser をクリックしても、Burp Suite内蔵のブラウザが起動しませんでした。ネットを調べると、よくある症状のようです。Burp Suite内蔵のブラウザはあきらめて、Firefox を使うことにします。

Firefox のプロキシ設定を先ほど設定した 127.0.0.1:58888 に設定すれば、Firefox は、Burp Suite 経由でアクセスしてくれるようになります。ただし、Firefox の全てのアクセスが Burp Suite を経由することに注意が必要です。徳丸本では、Firefox拡張の FoxyProxy-Standard というツールを使います。このツールは、指定したホスト(http://example.jp など)にのみ、指定したプロキシを適用することができます。つまり、Firefox で wasbook にアクセスするときだけ、Burp Suite等のプロキシを適用することができるということです。FoxyProxy-Standard は後ほど設定したいと思います。

Firefox の設定→ネットワーク設定→手動でプロキシーを設定する、にチェックを入れて、127.0.0.1:58888 を設定します。このプロキシーを HTTPS でも使用する、にもチェックを入れておきます。これで設定は完了です。

Firefox:プロキシ設定
Firefox:プロキシ設定

先ほどのように、http://localhost:13128/ にアクセスしてみます。しかし、Burp Suite のアクセス履歴には、http://detectportal.firefox.com/canonical.html ばかりが並び、wasbook にアクセスできません。試しに、curlコマンドでアクセスしてみます。

curlコマンドでアクセスすると、Burp Suite のアクセス履歴には、http://localhost:13128/ が出現します。

$ curl -x http://127.0.0.1:58888 http://127.0.0.1:13128

curlコマンドでアクセスすると期待した結果となる
curlコマンドでアクセスすると期待した結果となる

Firefox側に問題がありそうなので、ChatGPT に聞いたところ、次の手順が必要とのことでした。

Firefox で URL に about:config を入れてリターンキーを押します。注意して進んでください、というようなメッセージが出ますが、「危険性を承知の上で使用する」をクリックします。network.proxy.allow_hijacking_localhost を入力します。false になっていた場合、true に変更します。これで、Firefox から wasbook にアクセスすると、Burp Suite のアクセス履歴に出るようになりました。

Firefox:network.proxy.allow_hijacking_localhost
Firefox:network.proxy.allow_hijacking_localhost

これで設定は完了です。

1日たって、続きをしようとして、Firefox から wasbook にアクセスすると、503 Service Unavailable のエラーが出るようになっていました。

503 Service Unavailableエラー
503 Service Unavailableエラー

Dockerコンテナを停止($ docker compose down)して、起動し直したり、Ubuntu を再起動したりしましたが、改善しません。

問題の切り分けのため、curlコマンドで wasbook にアクセスします。

問題なさそうです。

$ curl -v http://127.0.0.1:13128
*   Trying 127.0.0.1:13128...
* Connected to 127.0.0.1 (127.0.0.1) port 13128
> GET / HTTP/1.1
> Host: 127.0.0.1:13128
> User-Agent: curl/8.5.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sun, 19 Apr 2026 11:30:41 GMT
< Server: Apache/2.4.54 (Debian)
< X-Powered-By: PHP/5.3.3
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=UTF-8

続いて、curlコマンドで、Burp Suite を経由してアクセスしてみます。

ダメですね、原因は分かりませんが、Burp Suite に問題があるようです。

$ curl -v -x http://127.0.0.1:58888 http://127.0.0.1:13128
*   Trying 127.0.0.1:58888...
* Connected to 127.0.0.1 (127.0.0.1) port 58888
> GET http://127.0.0.1:13128/ HTTP/1.1
> Host: 127.0.0.1:13128
> User-Agent: curl/8.5.0
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 503 Service Unavailable
< Date: Sun, 19 Apr 2026 11:31:01 GMT
< Server: Apache/2.4.54 (Debian)
< Content-Length: 377
< Connection: close
< Content-Type: text/html; charset=iso-8859-1

全然分からないので、ChatGPT に聞いてみることにします。すると、プロキシ経由時のリクエスト形式(absolute URI)が原因ということでした。上の 2つをよく見ると、正しく取得できる場合は、GET / HTTP/1.1 となっている(origin-form方式)のに対して、失敗してる場合は、GET http://127.0.0.1:13128/ HTTP/1.1 となっています(absolute-form方式)。ChatGPT が言うには、サーバ側は、このどちらの方式にも対応できるはずだが、何か問題を抱えているかもしれない、ということでした。徳丸本のメーリングリスト(以下)も見てみましたが、同じ問題を見つけることはできませんでした。

groups.google.com

とりあえず、ChatGPT に対処療法を聞いたので、それで進めます。

Burp Suite の設定で、HTTPアクセス時に、一部を置換する機能があるらしく、それを使って、失敗するケースのアクセスを、成功するケースのアクセスに置き換えると問題を回避できるとのことです。

設定の Tools → Proxy → HTTP match and replace rules に行きます。Add を押して、下図のように設定します。単純な文字列の置換の設定です。

Burp Suite:HTTPアクセスの置換設定
Burp Suite:HTTPアクセスの置換設定

チェックボックスで、ルールを有効にしたり、無効にしたりできます。とりあえず、localhost と、127.0.0.1 の 2通りを設定しておきました。

Burp Suite:HTTPアクセスの置換の設定
Burp Suite:HTTPアクセスの置換の設定

設定が完了したので、curlコマンドで確認します。

Burp Suite を経由しても、エラーにならず、正しく取得できていそうです。この後、Firefox でアクセスしたところ、そちらも問題なく表示されました。

$ curl -v -x http://127.0.0.1:58888 http://127.0.0.1:13128
*   Trying 127.0.0.1:58888...
* Connected to 127.0.0.1 (127.0.0.1) port 58888
> GET http://127.0.0.1:13128/ HTTP/1.1
> Host: 127.0.0.1:13128
> User-Agent: curl/8.5.0
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 503 Service Unavailable
< Date: Sun, 19 Apr 2026 11:31:01 GMT
< Server: Apache/2.4.54 (Debian)
< Content-Length: 377
< Connection: close
< Content-Type: text/html; charset=iso-8859-1

Firefoxに拡張機能のFoxyProxy-Standardをインストールする

以前もやりましたが、現在の環境にも、Firefox拡張の FoxyProxy-Standard をインストールします。

Firefox のプロキシ設定を変更して、Burp Suite を経由しないように、プロキシを使用しないに変更します。

手順は、サポートサイトに従います。

wasbook.org

以下の URL にアクセスします。

https://addons.mozilla.org/ja/firefox/addon/foxyproxy-standard/

「Firefox へ追加」をクリックします。任意の設定として、「プライベートウィンドウで拡張機能の実行を許可する」のチェックがオフになっていますが、オンにして、「追加」をクリックします。

オンにする理由は、もし、オフにして進めると、この後、以下のような警告が出ます。

プライベートブラウジングでの許可設定が必要
プライベートブラウジングでの許可設定が必要

ツールバーに FoxyProxy のアイコンが追加されるので、クリックして、「オプション」を押します。

「拡張機能をツールバーにピン留めする」のチェックをオンにして、「OK」をクリックします。

インストールした FoxyProxy は、バージョン 9.2 のようです。

徳丸本のサポートサイトから FoxyProxy の設定ファイルをダウンロードします。

FoxyProxy のインポート → 以前のバージョンからインポート → インポートをクリックします。ファイル選択のダイアログが出るので、ダウンロードした FoxyProxy の設定ファイルを指定します。正しくインポートできたようなので、「保存」をクリックします。

設定ファイルをインポートできた
設定ファイルをインポートできた

試しに、wasbook にアクセスしてみます。

問題なく、アクセスできましたし、Burp Suite も動作していそうです。FoxyProxy のバージョンが 9 だったので、少し不安でしたが、問題ありませんでした。

FoxyProxy導入後のwasbookへのアクセス
FoxyProxy導入後のwasbookへのアクセス

Burp Suite Community Editionの簡単な使い方

リクエストのインターセプトとリクエストの書き換え
リピーターの使い方

おわりに

今回は、「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践」(通称:徳丸本)の環境構築を行いました。

次回からは、徳丸本に沿って、進めていきたいと思います。

最後になりましたが、エンジニアグループのランキングに参加中です。

気楽にポチッとよろしくお願いいたします🙇

今回は以上です!

最後までお読みいただき、ありがとうございました。