
Flaskで構築された軽量なBlind XSS(クロスサイトスクリプティング)コレクター兼ペイロードサーバー
Flask で構築された軽量な Blind XSS (クロスサイトスクリプティング) コレクター兼ペイロードサーバーです。被害者のブラウザデータ (Cookie、localStorage、DOM スニペットなど) を取得し、HTTP Basic 認証で保護された SQLite ベースのダッシュボードへ転送する JavaScript ペイロードを配信します。
/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
Dashboard: 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 でキャプチャされたイベントを確認します。| メソッド | パス | 説明 |
|---|---|---|
| GET | /p.js | XSS ペイロード JavaScript |
| POST | /c | ペイロードから JSON/FormData を受信 |
| GET | /c.gif | ピクセルビーコン(CSP フレンドリー) |
| メソッド | パス | 説明 |
|---|---|---|
| GET | /events | 直近 500 件のイベント |
| GET | /events/<id> | イベント詳細を JSON で表示 |
| GET | /events/<id>/view | イベント詳細を HTML で表示 |
| GET/POST | /payloads | ペイロードジェネレーター + カスタム JS エディター |
| メソッド | パス | 説明 |
|---|---|---|
| GET | /_healthz | ヘルスチェック |
| 変数 | デフォルト | 説明 |
|---|---|---|
ADMIN_USER | admin | ダッシュボードのユーザー名 |
ADMIN_PASSWORD | (必須) | ダッシュボードのパスワード — 未設定の場合、起動に失敗します |
DB_PATH | ./bxss.db | SQLite データベースのパス |
PUBLIC_URL | (空) | 生成されるペイロード用の公開ベース URL(トンネル/リバースプロキシの背後にある場合に使用。未設定時はリクエストホストにフォールバック) |
TRUST_PROXY | (空) | クライアント IP として X-Forwarded-For/CF-Connecting-IP を信頼するには 1 を設定(信頼できるリバースプロキシの背後にある場合のみ。その環境では必須。設定しない場合、レート制限で全クライアントがプロキシ IP を共有することになります) |
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 は決してバージョン管理にコミットしないでください。