AWS Elastic Beanstalk で Puppeteer を動かす
CTF の Web 問題で XSS を出題するときに必要となる Admin クローラーを AWS Elastic Beanstalk 上で作成するときにつまずいたときのメモ
Admin クローラーとは
XSS の exploit コードが含まれたページを(問題提供側が用意する仮想の)攻撃対象に読み込ませ秘匿情報を引き出すことができるかジャッジするクローラー
つまずく点
puppeteer (中身は chromium) を動かすためにいくつかの依存パッケージが必要となり .ebextensions で設定する必要がある
(Elastic Beanstalk は Amazon Linux で動いているため yum パッケージとなる)
手順
AWS CodeStar で Express.js on AWS Elastic Beanstalk プロジェクトの作成
レポジトリをクローンし,gitignore editorconfig などを用意
package.json で各パッケージを最新バージョンに書き換え, npm install
puppeteer をインストール npm install puppeteer
server.js で puppeteer を読み込み,クロールのコードを記述
puppeteer = require("puppeteer");
...
.ebextensions に chromiumpackages.config を作成
packages:
yum:
cups-libs: []
dbus-glib: []
libXrandr: []
libXcursor: []
libXinerama: []
cairo: []
cairo-gobject: []
pango: []
commands:
atk:
command: rpm -ivh --nodeps --replacepkgs http://mirror.centos.org/centos/7/os/x86_64/Packages/atk-2.28.1-1.el7.x86_64.rpm
at-spi2-atk:
command: rpm -ivh --nodeps --replacepkgs http://mirror.centos.org/centos/7/os/x86_64/Packages/at-spi2-atk-2.26.2-1.el7.x86_64.rpm
at-spi2-core:
command: rpm -ivh --nodeps --replacepkgs http://mirror.centos.org/centos/7/os/x86_64/Packages/at-spi2-core-2.28.0-1.el7.x86_64.rpm
GConf2:
command: rpm -ivh --nodeps --replacepkgs http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/g/GConf2-3.2.6-7.fc20.x86_64.rpm
libXScrnSaver:
command: rpm -ivh --nodeps --replacepkgs http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libXScrnSaver-1.2.2-6.fc20.x86_64.rpm
libxkbcommon:
command: rpm -ivh --nodeps --replacepkgs http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libxkbcommon-0.3.1-1.fc20.x86_64.rpm
libwayland-client:
command: rpm -ivh --nodeps --replacepkgs http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libwayland-client-1.2.0-3.fc20.x86_64.rpm
libwayland-cursor:
command: rpm -ivh --nodeps --replacepkgs http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libwayland-cursor-1.2.0-3.fc20.x86_64.rpm
gtk3:
command: rpm -ivh --nodeps --replacepkgs http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/g/gtk3-3.10.4-1.fc20.x86_64.rpm
gdk-pixbuf2:
command: rpm -ivh --nodeps --replacepkgs http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/16/Fedora/x86_64/os/Packages/gdk-pixbuf2-2.24.0-1.fc16.x86_64.rpm
git push しデプロイする