
Flask로 구축된 경량 Blind XSS(Cross-Site Scripting) 수집기 및 페이로드 서버
Flask로 구축된 경량 Blind XSS(Cross-Site Scripting) 수집기 및 페이로드 서버입니다. 피해자 브라우저 데이터(쿠키, localStorage, DOM 스니펫 등)를 캡처하여 HTTP Basic Auth로 보호되는 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
대시보드: http://127.0.0.1:8089/events (브라우저가 Basic Auth를 요청합니다)
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관리자 페이지를 통해 편집 및 저장되며 (SQLitesettings테이블에 영속화됨),/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는 버전 관리에 절대 커밋해서는 안 됩니다.