
Flaskで構築された軽量なBlind XSS(クロスサイトスクリプティング)コレクター兼ペイロードサーバー
Flaskで構築された軽量なBlind XSS(クロスサイトスクリプティング)コレクター兼ペイロードサーバー。被害者のブラウザデータ(Cookie、localStorage、DOMスニペットなど)を収集するJavaScriptペイロードを配信し、HTTP Basic認証で保護されたSQLiteベースのダッシュボードに転送します。
/p.js が sendBeacon または fetch を使用した自己完結型のJSペイロードを配信/c(JSON/FormData)および GET /c.gif(CSP対応のピクセルビーコン)/events で収集イベントを一覧表示、/events/<id>/view で詳細を表示/payloads で14種類のXSSペイロードバリアントとカスタムJSエディターを提供ADMIN_USER / ADMIN_PASSWORD で保護bxss.db を削除すると新規に再構築Dockerfile と docker-compose.yml を同梱# Set credentials
echo "ADMIN_USER=admin" > .env
echo "ADMIN_PASSWORD=your-admin-password" >> .env
# Build and run
docker compose up -d --build
ダッシュボード: http://127.0.0.1:8089/events(ブラウザがBasic認証を要求します)
pip install -r requirements.txt
export ADMIN_USER="admin"
export ADMIN_PASSWORD="your-admin-password"
gunicorn -b 127.0.0.1:8080 --workers 2 --threads 4 wsgi:app
/payloads にアクセスしてXSSペイロードをコピーします。/events で収集されたイベントを確認します。| Method | Path | Description |
|---|---|---|
| GET | /p.js | XSSペイロードJavaScript |
| POST | /c | ペイロードからJSON/FormDataを受信 |
| GET | /c.gif | ピクセルビーコン(CSP対応) |
| Method | Path | Description |
|---|---|---|
| GET | /events | 直近500件のイベント |
| GET | /events/<id> | イベント詳細(JSON) |
| GET | /events/<id>/view | イベント詳細(HTML) |
| GET/POST | /payloads | ペイロードジェネレーター + カスタムJSエディター |
| Method | Path | Description |
|---|---|---|
| GET | /_healthz | ヘルスチェック |
| Variable | Default | Description |
|---|---|---|
ADMIN_USER | admin | ダッシュボードのユーザー名 |
ADMIN_PASSWORD | changeme | ダッシュボードのパスワード |
DB_PATH | ./bxss.db | SQLiteデータベースのパス |
MAX_BODY | 524288 | コレクターの最大ボディサイズ(バイト) |
RATE_LIMIT_COUNT | 60 | ウィンドウあたりの最大コレクターリクエスト数(IPごと) |
RATE_LIMIT_WINDOW | 60 | レート制限ウィンドウ(秒) |
LOG_LEVEL | INFO | Pythonログレベル |
カスタムJSは
/payloads管理ページで編集・保存され(SQLiteのsettingsテーブルに永続化)、/p.jsに追加されます。ファイルから読み込まれることはなくなりました。
blindxss-lite/
├── wsgi.py # WSGI entry point
├── requirements.txt # Python dependencies
├── Dockerfile # Container image
├── docker-compose.yml # Compose config
├── .env # Credentials (don't commit)
└── app/
├── __init__.py # App factory, CORS, health check
├── config.py # Config + .env loader
├── db.py # SQLite layer
├── collectors.py # /p.js, /c, /c.gif
├── events.py # /events admin
├── payloads.py # /payloads admin
├── utils.py # Helpers + Basic Auth decorator
├── static/
│ └── style.css
└── templates/
├── events.html
├── event.html
└── payloads.html
document.cookieペイロード:

結果:

結果詳細:

.env はバージョン管理にコミットしないでください。