あと、ローカルホストに行くとDrupalのインストーラが起動します。データベースはMySQLのコンテナが同時に立ちます。パラメータは以下になっているので、入力してインストールします。データベース名:drupalデータベースのユーザ名:drupalデータベースのパスワード:passwordデータベースのホスト:drupal-dbデータベースホストのポート:3306インストールが終わったら、NetBeansの設定です。新規プロジェクトを作ります。PHPの既存のソースを選択します。ソースのフォルダにはDrupalのコンテンツがマウントしてある「/root/project/drupal」を指定します。ローカルのWebサイトとして、プロジェクトURLは対象となるDrupalのホスト(ここでは「http://drupal-vuln/」)とします。設定が終わったらデバッグを開始します。メニューバーの一番右にあるデバッグ開始のボタンを押します。リクエストを待ち受けているので、この状態で、攻撃コードを打てば、デバッグが開始されます。その前にブレークポイントを設定しましょう。検証レポートによると、「includes/common.inc」の「#post_render」を処理する箇所でコード実行が行われるようなので、ここにブレークポイントを設定します。7系への攻撃ではリクエストは2回あり、1回目でキャッシュに実行するコマンドを仕込み、2回目で実行します。これで実行すると、1回目のリクエストでは何度もこの関数を通るのですが、そのうちの1回でパラメータで指定した値が変数に入っている処理があります。2回目のリクエストで1回目のリクエストでキャッシュされた値が取り出され、コード実行が行われることが確認できます。2回目のリクエストで呼び出されている変数ここまでやってあれですが、結構処理が分かりにくい上に、リクエストが2つに分かれているので、初心者の勉強にはあまりいい例ではないのかな......と。任意のコードが実行される個所は分かりました。8系でもやってみました。思ったらXdebugのインストールパスがかわっていました、、、DrupalのDockerfileのphp.iniの値も書き換える必要があります。7のコンテンツで上書きされます。先に作ったボリュームは削除しておきましょう。