CLI 레퍼런스
Dalfox는 네 개의 서브커맨드와 기본 제공 help로 구성되어 있습니다. 기본값(대상만 전달했을 때)은 scan입니다.
dalfox [SUBCOMMAND] [TARGET] [FLAGS]
| 서브커맨드 |
용도 |
scan |
대상에서 XSS를 스캔합니다 (생략 시 기본값) |
server |
REST API 서버를 실행합니다 |
payload |
내장/원격 페이로드를 나열하거나 가져옵니다 |
mcp |
Model Context Protocol stdio 서버를 실행합니다 |
help |
서브커맨드별 도움말을 출력합니다 |
전역 플래그
| 플래그 |
설명 |
--config <FILE> |
설정 파일 경로(TOML이나 JSON). 기본 검색 경로를 덮어씁니다. |
--debug |
디버그 로깅을 활성화합니다. |
-h, --help |
도움말을 출력합니다. |
-V, --version |
버전을 출력합니다. |
종료 코드:
| 코드 |
의미 |
0 |
성공, 탐지 결과 없음 |
1 |
성공, 탐지 결과 보고됨 (티어 무관 — V만 게이트하려면 --only-poc v와 함께) |
2 |
입력 / 설정 / 런타임 오류 |
dalfox scan
대상에서 XSS를 스캔합니다. 서브커맨드를 생략해도 동일합니다.
dalfox scan [TARGETS]... [FLAGS]
입력
| 플래그 |
약칭 |
기본값 |
설명 |
--input-type |
-i |
auto |
auto, url, file, pipe, raw-http, har |
--dedup-urls |
— |
exact |
대상 중복 제거: exact(URL+메서드가 완전히 같은 것만 제거), signature(파라미터 값만 다른 URL도 하나로 병합), off(입력의 모든 줄을 그대로 스캔) |
--state-file |
— |
— |
끝난 대상을 파일에 기록해 두고 같은 스캔을 다시 돌릴 때 건너뜁니다. 중단된 대량 스캔을 처음부터가 아니라 이어서 진행합니다 |
무엇을 건너뛰고 무엇을 다시 시도하는지는 중단된 스캔 이어하기를 참고하세요.
출력
| 플래그 |
약칭 |
기본값 |
설명 |
--format |
-f |
plain |
plain, json, jsonl, markdown, sarif, toml |
--output |
-o |
— |
출력을 파일에 씁니다 |
--include-request |
— |
false |
출력에 HTTP 요청을 포함합니다 |
--include-response |
— |
false |
출력에 응답 본문을 포함합니다 |
--include-all |
— |
false |
두 include 플래그의 축약형 |
--no-color |
— |
false |
ANSI 색상을 비활성화합니다 |
--silence |
-S |
false |
STDOUT에 탐지 결과만 출력합니다 |
--dry-run |
— |
false |
페이로드를 보내지 않고 탐색 및 계획만 수행합니다 |
--stream-findings |
— |
false |
스캔 종료 요약 이후가 아니라 각 탐지 결과가 검증되는 즉시 출력합니다 (plain 형식만; --output, --limit, --only-poc 사용 시 자동 비활성화) |
--poc-type |
— |
plain |
plain, curl, httpie, http-request |
--limit |
— |
— |
표시되는 전체 결과 수를 제한합니다 |
--limit-result-type |
— |
all |
--limit에 집계되는 유형: all, v, r, a, i |
--only-poc |
— |
— |
쉼표로 구분된 필터: v(취약), r(반사됨), a(AST), i(정보성) |
--baseline |
— |
— |
이전 Dalfox JSON/JSONL 리포트와 비교해 그 이후 새로 생긴 건만 보고합니다. 평범한 -f json -o 리포트가 그대로 베이스라인입니다 |
--baseline-mode |
— |
filter |
filter는 알려진 건을 제거하고(카운트와 종료 코드가 신규 기준), annotate는 유지한 채 각각에 new를 표시합니다 |
지문 규칙과 CI 레시피는 베이스라인을 참고하세요.
대상 형태 지정
| 플래그 |
약칭 |
기본값 |
설명 |
--param |
-p |
— |
분석할 파라미터; name:location 형식 지원 (위치: query, body, json, cookie, header) |
--data |
-d |
— |
요청 본문 |
--headers |
-H |
— |
추가 HTTP 헤더 (반복 지정 가능) |
--cookies |
— |
— |
쿠키 (반복 지정 가능) |
--method |
-X |
GET |
HTTP 메서드 재정의 (GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH, QUERY / RFC 10008) |
--user-agent |
— |
— |
사용자 지정 User-Agent |
--cookie-from-raw |
— |
— |
raw HTTP 요청 파일에서 쿠키를 불러옵니다 |
세션
인증 세션이 스캔 도중 만료되어 이후 모든 요청이 로그인 페이지를 받고도 "취약점 0건"으로
정상 종료되는 조용한 실패를 막습니다. 세션 모니터링을 참고하세요.
자격증명이 있으면(--cookies, --cookie-from-raw, 또는 Cookie / Authorization 헤더)
자동으로 켜지고, --session-check 계열 플래그를 직접 지정해도 켜집니다. 그 외에는 꺼져 있으며
추가 요청도 발생하지 않습니다.
| 플래그 |
기본값 |
설명 |
--session-check |
— |
인증된 응답 본문에 계속 매칭되어야 하는 정규식. 지정하면 이 값이 기준이 되며 내장 휴리스틱은 사용하지 않습니다 |
--session-check-url |
— |
세션 재검증 시 스캔 대상 대신 이 URL을 조회합니다 (예: 가벼운 /api/me 엔드포인트) |
--on-session-loss |
abort |
abort는 해당 대상을 중단하고 같은 호스트의 나머지 대상도 건너뛰며, 탐지 결과가 없으면 2로 종료합니다. continue는 스캔을 계속하고 종료 코드를 바꾸지 않습니다. 어느 쪽이든 대상은 clean이 아니라 incomplete / SESSION_LOST로 보고됩니다 |
범위
| 플래그 |
기본값 |
설명 |
--include-url |
— |
포함할 URL의 정규식 패턴 |
--exclude-url |
— |
제외할 URL의 정규식 패턴 |
--ignore-param |
— |
건너뛸 파라미터 이름 |
--out-of-scope |
— |
건너뛸 와일드카드 도메인 패턴 |
--out-of-scope-file |
— |
범위 외 도메인을 나열한 파일 |
탐색
| 플래그 |
기본값 |
설명 |
--only-discovery |
false |
탐색 후 중지하고 XSS 페이로드를 보내지 않습니다 |
--skip-discovery |
false |
모든 탐색을 건너뜁니다 |
--skip-reflection-header |
false |
헤더 기반 반사 검사를 건너뜁니다 |
--skip-reflection-cookie |
false |
쿠키 기반 반사 검사를 건너뜁니다 |
--skip-reflection-path |
false |
경로 기반 반사 검사를 건너뜁니다 |
마이닝
| 플래그 |
약칭 |
기본값 |
설명 |
--mining-dict-word |
-W |
— |
파라미터 워드리스트 파일 |
--remote-wordlists |
— |
— |
원격 소스: burp, assetnote |
--skip-mining |
— |
false |
모든 마이닝을 건너뜁니다 |
--skip-mining-dict |
— |
false |
사전 마이닝을 건너뜁니다 |
--skip-mining-dom |
— |
false |
HTML id/name 속성에서 파라미터 이름 수집을 건너뜁니다 (DOM-XSS 탐지가 아님 — --skip-ast-analysis 참고) |
네트워크
| 플래그 |
약칭 |
기본값 |
설명 |
--timeout |
— |
10 |
요청당 타임아웃(초) (네트워크 한정; 전체 스캔 시간을 제한하지 않음) |
--scan-timeout |
— |
0 |
스캔 단계(프리플라이트 이후)의 대상별 실제 경과 시간 하드 상한(초). 초과 시 해당 대상을 중단합니다. 여러 순차 단계가 부분적으로 멈춘 엔드포인트에 대해 각각 요청당 --timeout 비용을 치를 때 유용합니다. 0은 비활성화합니다. |
--delay |
— |
0 |
요청 간 지연(ms), 워커별 |
--rate-limit |
-r, --rl |
0 |
모든 워커와 대상에 걸쳐 공유되는 전역 아웃바운드 요청 속도를 초당 요청 수로 제한합니다 (0 = 무제한). 하나의 워커만 간격을 두는 --delay와 달리, workers × concurrent targets에서 한꺼번에 나가는 전체 요청량을 제한하므로 공유 IP / 엣지 WAF 임계값에 더 친화적입니다. |
--retries |
— |
0 |
HTTP 5xx 및 일시적 전송 오류(타임아웃, 연결 재설정) 시 실패한 요청을 이 횟수만큼 재시도합니다 (0 = 끔). HTTP 429는 이 값과 무관하게 항상 재시도합니다. |
--retry-delay |
— |
1000 |
--retries 시도 사이의 지수 백오프 기본 지연(ms) (시도마다 두 배로 증가, 내부적으로 상한 적용). 429에서는 서버의 Retry-After 헤더가 우선합니다. |
--proxy |
— |
— |
프록시 URL (http://, socks5://) |
--insecure |
— |
true |
TLS/SSL 인증서 검증을 건너뜁니다 (자체 서명, 만료, 호스트명 불일치 인증서 허용). 스캐너 사용을 위해 기본적으로 켜져 있으며, 인증서 검증을 강제하려면 --insecure=false를 전달합니다. |
--follow-redirects |
-F |
false |
3xx 응답을 따라갑니다 |
--ignore-return |
— |
— |
무시할 HTTP 상태 코드 |
엔진
| 플래그 |
기본값 |
설명 |
--workers |
50 |
대상별 동시 워커 수 |
--max-concurrent-targets |
50 |
전역 동시 대상 수 |
--max-targets-per-host |
100 |
호스트별 상한 |
XSS 스캐닝
| 플래그 |
약칭 |
기본값 |
설명 |
--encoders |
-e |
url,html |
쉼표로 구분된 인코더 |
--remote-payloads |
— |
— |
portswigger, payloadbox |
--custom-blind-xss-payload |
— |
— |
사용자 지정 블라인드 페이로드 템플릿 파일 |
--blind |
-b |
— |
블라인드 XSS 콜백 URL |
--blind-oob[=servers] |
— |
— |
interactsh로 OOB/OAST 블라인드 XSS를 활성화합니다; 선택적으로 쉼표로 구분된 서버 도메인 (기본값: 공용 메시). = 형식이 필요합니다: --blind-oob=oast.fun,oast.me |
--blind-oob-secret |
— |
— |
자체 호스팅 interactsh 서버용 인증 토큰 (register/poll/deregister 시 Authorization으로 전송) |
--blind-oob-wait |
— |
30 |
모든 페이로드 전송 후 OOB 콜백을 계속 폴링할 시간(초) (0 = 스캔 종료 후 추가 대기 없음) |
--custom-payload |
— |
— |
사용자 지정 페이로드 파일 |
--only-custom-payload |
— |
false |
사용자 지정 페이로드만 사용합니다 |
--custom-alert-value |
— |
1 |
alert()/prompt()/confirm() 안에 들어가는 값 |
--custom-alert-type |
— |
none |
none 또는 str |
--inject-marker |
— |
— |
이 토큰을 페이로드로 치환합니다 (예: FUZZ) |
--skip-xss-scanning |
— |
false |
페이로드 주입을 건너뜁니다 |
--deep-scan |
— |
false |
첫 탐지 결과 이후에도 계속 테스트합니다 |
--sxss |
— |
false |
Stored XSS 모드를 활성화합니다 |
--sxss-url |
— |
— |
SXSS용 조회 URL |
--sxss-method |
— |
GET |
조회 메서드 |
--sxss-retries |
— |
3 |
저장된 출력을 가져올 때 조회 URL에 대한 재시도 횟수 |
--max-payloads-per-param |
— |
0 |
파라미터별로 테스트하는 페이로드 수 제한 (0은 --deep-scan이 없으면 세트당 3000개의 내장 안전 상한을 적용) |
--skip-ast-analysis |
— |
false |
AST DOM-XSS([A] 결과를 만드는 source→sink 패스)를 건너뜁니다. --skip-mining-dom이 아니라 이 플래그입니다 |
--analyze-external-js |
— |
false |
동일 출처의 <script src> 번들을 가져와 AST DOM-XSS 분석을 수행합니다 (프리플라이트, 대상별 1회; 최대 16개 파일, 각 512 KiB; --include-url/--exclude-url을 준수) |
--hpp |
— |
false |
HTTP 파라미터 오염 |
--detect-outdated-libs |
— |
false |
오래되었거나 알려진 취약점이 있는 JS 라이브러리도 보고합니다 (정보성, CWE-1104; 추가 요청 0회) |
WAF
| 플래그 |
기본값 |
설명 |
--waf-bypass |
auto |
auto, force, off |
--skip-waf-probe |
false |
능동 WAF 핑거프린팅을 건너뜁니다 |
--force-waf |
— |
--waf-bypass force일 때 사용할 WAF 이름 |
--waf-evasion |
false |
WAF 탐지 시 적응형 회피: 요청 간 무작위 지터 + 차단된 응답이 몰릴 때 점증하는 쿨다운 (기존의 단순한 workers=1/delay=3000 프리셋을 대체). 이 플래그가 없어도 WAF별 페이싱 힌트는 탐지 시 자동으로 적용됩니다. --rate-limit와 함께 쓰면 좋습니다. |
--waf-min-confidence |
0.3 |
이 신뢰도 미만의 핑거프린트를 제거합니다 (0.0–1.0). 기본값 0.3은 Server: Google Frontend(0.15) 같은 약한 매칭을 억제합니다. 약한 신호를 유지하려면 더 낮게 설정하고, 1.0은 완전한 신뢰도를 가진 핑거프린트만 유지합니다. |
dalfox server
REST API 서버를 시작합니다.
dalfox server [FLAGS]
| 플래그 |
약칭 |
기본값 |
설명 |
--port |
-p |
6664 |
수신 포트 |
--host |
-H |
127.0.0.1 |
바인딩 주소 |
--api-key |
— |
— |
필수 X-API-KEY 헤더 값 (또는 DALFOX_API_KEY) |
--log-file |
— |
— |
일반 텍스트 로그 파일 |
--allowed-origins |
— |
— |
CORS 오리진 (쉼표로 구분, * 및 regex: 지원) |
--jsonp |
— |
false |
응답을 JSONP로 감쌉니다 |
--callback-param-name |
— |
callback |
JSONP 콜백 파라미터 |
--cors-allow-methods |
— |
GET,POST,OPTIONS,PUT,PATCH,DELETE |
CORS 메서드 |
--cors-allow-headers |
— |
Content-Type,X-API-KEY,Authorization |
CORS 헤더 |
--rate-limit |
— |
0 |
전역 아웃바운드 요청 속도를 제한합니다 (초당 요청 수, 0 = 무제한) |
--scan-timeout |
— |
0 |
스캔 단계의 대상별 실제 경과 시간 하드 상한(초) |
--max-concurrent-scans |
— |
100 |
동시 스캔 수 제한 (0 = 무제한) |
--max-body-bytes |
— |
1048576 |
POST /scan 및 /preflight가 허용하는 최대 요청 본문 크기(바이트). 초과 시 413 응답 |
엔드포인트는 REST API Server를 참조하세요.
dalfox payload
페이로드 컬렉션을 나열하거나 가져옵니다.
dalfox payload <SELECTOR>
선택자:
| 선택자 |
출력 내용 |
event-handlers |
DOM 이벤트 핸들러 속성 이름 |
useful-tags |
유용한 HTML 태그 |
uri-scheme |
javascript:/data: URL 페이로드 |
special-chars |
컨텍스트 프로빙용 특수 문자(및 인코딩된 변형) |
functions |
필터를 우회하는 변형이 포함된 확인 가능한 싱크(alert, prompt, ...) |
awesome-alert |
스크린샷용으로 다듬어진 alert PoC(alert(document.domain), ...) |
dom-clobbering |
DOM 클로버링 벡터 |
mxss |
Mutation-XSS / 새니타이저 우회 페이로드 |
blind |
Blind-XSS 스켈레톤({} = OOB 콜백 URL) |
portswigger |
원격: PortSwigger XSS 치트시트 |
payloadbox |
원격: PayloadBox XSS 목록 |
dalfox mcp
MCP stdio 서버를 실행합니다.
dalfox mcp
추가 플래그는 없습니다. 도구 정의는 MCP Server를 참조하세요.
함께 보기