XSSMaze 점수
XSSMaze는 XSS 탐지 도구를 측정하기 위한, 의도적으로 취약하게 만든 랩입니다. 이 페이지는 Dalfox가 main 이미지(ghcr.io/hahwul/xssmaze:main)를 얼마나 탐지하는지 추적합니다. 아래 수치는 just xssmaze-score가 영문 페이지에 자동 생성한 결과를 그대로 옮긴 것으로, 손으로 매긴 값이 아닙니다.
최신 점수
카테고리별 커버리지
175개 중 161개 카테고리가 모든 엔드포인트를 탐지합니다. 차트는 갭이 있는 14개(가장 심한 것부터)를 강조하며, 전체 분석은 표에 있습니다.
| 카테고리 | 엔드포인트 | 탐지 | 검증 | 비율 |
|---|---|---|---|---|
advanced |
6 | 6 | 6 | 100.0% |
api |
6 | 6 | 6 | 100.0% |
apidom |
6 | 6 | 0 | 100.0% |
ariaattr |
6 | 6 | 6 | 100.0% |
attr |
6 | 6 | 6 | 100.0% |
attrctx |
6 | 6 | 6 | 100.0% |
attrname |
4 | 4 | 3 | 100.0% |
basic |
7 | 7 | 7 | 100.0% |
booleanattr |
6 | 6 | 6 | 100.0% |
browser |
5 | 5 | 5 | 100.0% |
casemanip |
6 | 6 | 6 | 100.0% |
chain |
6 | 6 | 6 | 100.0% |
channel |
4 | 4 | 4 | 100.0% |
charlimit |
6 | 6 | 6 | 100.0% |
clientstate |
6 | 6 | 0 | 100.0% |
clipboard |
4 | 4 | 4 | 100.0% |
cmspattern |
6 | 6 | 6 | 100.0% |
codeexec |
6 | 6 | 4 | 100.0% |
commentinj |
6 | 6 | 6 | 100.0% |
complexpage |
6 | 6 | 6 | 100.0% |
condreflect |
6 | 6 | 6 | 100.0% |
csp |
5 | 5 | 5 | 100.0% |
cspbypass |
6 | 6 | 6 | 100.0% |
css |
6 | 6 | 6 | 100.0% |
csti |
5 | 5 | 5 | 100.0% |
ctxescape |
8 | 8 | 8 | 100.0% |
ctxv2 |
6 | 6 | 6 | 100.0% |
ctype |
6 | 6 | 6 | 100.0% |
customtag |
6 | 6 | 6 | 100.0% |
dashboard |
6 | 6 | 6 | 100.0% |
dataattr |
6 | 6 | 6 | 100.0% |
dataurl |
4 | 4 | 4 | 100.0% |
dblenc |
4 | 4 | 4 | 100.0% |
decode |
4 | 4 | 4 | 100.0% |
dialog |
5 | 5 | 5 | 100.0% |
dom |
38 | 38 | 0 | 100.0% |
domctx |
6 | 6 | 6 | 100.0% |
domsource |
7 | 7 | 0 | 100.0% |
doublereflect |
6 | 6 | 6 | 100.0% |
dragdrop |
4 | 4 | 4 | 100.0% |
ecommerce |
6 | 6 | 6 | 100.0% |
edge |
8 | 8 | 7 | 100.0% |
edgefilter |
6 | 6 | 5 | 100.0% |
email |
6 | 6 | 6 | 100.0% |
embedctx |
6 | 6 | 6 | 100.0% |
encmix |
6 | 6 | 5 | 100.0% |
encoding |
8 | 8 | 7 | 100.0% |
encodingedge |
6 | 6 | 5 | 100.0% |
errhandling |
6 | 6 | 6 | 100.0% |
errpage |
6 | 6 | 6 | 100.0% |
eventhandler |
5 | 5 | 4 | 100.0% |
filterchain |
8 | 8 | 8 | 100.0% |
formaction |
4 | 4 | 4 | 100.0% |
formelement |
6 | 6 | 6 | 100.0% |
fragment |
6 | 6 | 6 | 100.0% |
fwoutput |
6 | 6 | 6 | 100.0% |
globalattr |
6 | 6 | 6 | 100.0% |
header |
4 | 4 | 4 | 100.0% |
headerinj |
6 | 6 | 6 | 100.0% |
headless |
6 | 6 | 6 | 100.0% |
hidden |
9 | 9 | 7 | 100.0% |
history |
2 | 2 | 2 | 100.0% |
hpp |
4 | 4 | 4 | 100.0% |
html5 |
8 | 8 | 8 | 100.0% |
htmlunsafe |
6 | 6 | 1 | 100.0% |
import |
6 | 6 | 6 | 100.0% |
inattr |
6 | 6 | 6 | 100.0% |
inframe |
4 | 4 | 4 | 100.0% |
injs |
6 | 6 | 6 | 100.0% |
inlinestyle |
6 | 6 | 6 | 100.0% |
inputtransform |
6 | 6 | 6 | 100.0% |
jquery |
6 | 6 | 4 | 100.0% |
jsctx |
6 | 6 | 6 | 100.0% |
jsescape |
6 | 6 | 6 | 100.0% |
jsonctx |
6 | 6 | 6 | 100.0% |
latereflect |
6 | 6 | 6 | 100.0% |
linkcontext |
6 | 6 | 6 | 100.0% |
listiteration |
6 | 6 | 6 | 100.0% |
manifest |
1 | 1 | 1 | 100.0% |
markdown |
6 | 6 | 6 | 100.0% |
mathml |
3 | 3 | 3 | 100.0% |
mediacontext |
6 | 6 | 6 | 100.0% |
metarefresh |
4 | 4 | 3 | 100.0% |
microdata |
6 | 6 | 6 | 100.0% |
misc |
6 | 6 | 6 | 100.0% |
mixedmethod |
6 | 6 | 6 | 100.0% |
mobserver |
4 | 4 | 4 | 100.0% |
multicontext |
6 | 6 | 6 | 100.0% |
multiline |
6 | 6 | 6 | 100.0% |
multiparam |
6 | 6 | 6 | 100.0% |
multipart |
4 | 4 | 4 | 100.0% |
multipleoutput |
6 | 6 | 5 | 100.0% |
multireflect |
8 | 8 | 7 | 100.0% |
multivector |
6 | 6 | 6 | 100.0% |
mutfilter |
6 | 6 | 5 | 100.0% |
mxss |
5 | 5 | 5 | 100.0% |
navsink |
6 | 6 | 2 | 100.0% |
nestedctx |
6 | 6 | 6 | 100.0% |
nestedfilter |
6 | 6 | 6 | 100.0% |
nonce |
4 | 4 | 4 | 100.0% |
noscript |
4 | 4 | 3 | 100.0% |
numericcontext |
6 | 6 | 6 | 100.0% |
obfuscation |
6 | 6 | 6 | 100.0% |
opener |
2 | 2 | 2 | 100.0% |
partialencode |
6 | 6 | 5 | 100.0% |
path |
4 | 4 | 4 | 100.0% |
pathxss |
6 | 6 | 6 | 100.0% |
payloadfilt |
6 | 6 | 5 | 100.0% |
pdiff |
6 | 6 | 6 | 100.0% |
polyctx |
6 | 6 | 6 | 100.0% |
polyglot |
3 | 3 | 3 | 100.0% |
popover |
3 | 3 | 3 | 100.0% |
post |
2 | 2 | 2 | 100.0% |
querymethod |
5 | 5 | 0 | 100.0% |
racecon |
4 | 4 | 4 | 100.0% |
realworld_input |
8 | 8 | 7 | 100.0% |
recfilt |
6 | 6 | 6 | 100.0% |
redirect |
4 | 4 | 0 | 100.0% |
redirectxss |
6 | 6 | 6 | 100.0% |
referrer |
2 | 2 | 0 | 100.0% |
regexbypass |
8 | 8 | 8 | 100.0% |
regexfilt |
6 | 6 | 6 | 100.0% |
reparse |
5 | 5 | 0 | 100.0% |
replacementfilter |
6 | 6 | 6 | 100.0% |
respheader |
6 | 6 | 6 | 100.0% |
rsplit |
4 | 4 | 4 | 100.0% |
rwpattern |
6 | 6 | 6 | 100.0% |
scanbounty |
8 | 8 | 8 | 100.0% |
scriptgadget |
6 | 6 | 6 | 100.0% |
semantictag |
6 | 6 | 6 | 100.0% |
seoctx |
6 | 6 | 6 | 100.0% |
service |
2 | 2 | 2 | 100.0% |
shadow |
5 | 5 | 5 | 100.0% |
sink |
8 | 8 | 8 | 100.0% |
slot |
4 | 4 | 4 | 100.0% |
social |
6 | 6 | 6 | 100.0% |
specialchar |
6 | 6 | 6 | 100.0% |
specialtag |
8 | 8 | 8 | 100.0% |
srcdoc |
5 | 5 | 4 | 100.0% |
srcset |
4 | 4 | 4 | 100.0% |
storage |
2 | 2 | 2 | 100.0% |
stream |
3 | 3 | 3 | 100.0% |
svg |
6 | 6 | 6 | 100.0% |
svgctx |
6 | 6 | 6 | 100.0% |
tablecontext |
6 | 6 | 6 | 100.0% |
tagattrmix |
6 | 6 | 6 | 100.0% |
taintflow |
8 | 8 | 0 | 100.0% |
template |
6 | 6 | 6 | 100.0% |
timing |
6 | 6 | 6 | 100.0% |
tplel |
4 | 4 | 4 | 100.0% |
tplinject |
6 | 6 | 6 | 100.0% |
truncation |
6 | 6 | 5 | 100.0% |
trustedtypes |
5 | 5 | 5 | 100.0% |
unicode |
6 | 6 | 5 | 100.0% |
url |
6 | 6 | 6 | 100.0% |
wafv2 |
6 | 6 | 6 | 100.0% |
websocket |
7 | 7 | 7 | 100.0% |
whitespace |
6 | 6 | 6 | 100.0% |
worker |
4 | 4 | 4 | 100.0% |
wrappercontext |
6 | 6 | 6 | 100.0% |
xmlctx |
6 | 6 | 6 | 100.0% |
realworld |
16 | 15 | 12 | 93.8% |
waf |
16 | 15 | 13 | 93.8% |
sanitizer |
12 | 11 | 10 | 91.7% |
bugbounty |
10 | 9 | 9 | 90.0% |
prototype |
10 | 9 | 9 | 90.0% |
domsink |
8 | 7 | 0 | 87.5% |
modern |
32 | 27 | 20 | 84.4% |
postmethod |
6 | 5 | 5 | 83.3% |
storedpat |
6 | 5 | 4 | 83.3% |
callback |
4 | 3 | 3 | 75.0% |
stored |
4 | 3 | 1 | 75.0% |
json |
6 | 4 | 4 | 66.7% |
jf |
1 | 0 | 0 | 0.0% |
xsleak |
5 | 0 | 0 | 0.0% |
| 합계 | 1064 | 1041 | 904 | 97.8% |
Generated 2026-09-13T09:06:30Z · image ghcr.io/hahwul/xssmaze:main (ghcr.io/hahwul/xssmaze@sha256:cf0b894287cb09ab2de38eed42ee616515bcb888a77894f4e43502caccb509e4) · run just xssmaze-score to refresh.
방법론
- 대상: XSSMaze의
/map/json이 반환하는 모든 엔드포인트를, 카탈로그의type(카테고리)별로 그룹화합니다. - 엔드포인트별 스캔: 파라미터 마이닝을 끄고(
--skip-mining)--timeout 7,--scan-timeout 40으로 엔드포인트 URL을 스캔합니다. 카탈로그가 선언한 쿼리 파라미터는 모두 URL에 넣고(빠진 것은 임의 값으로 채웁니다), 헤더 주입 지점은-p <name>:header로 지정하며, POST 본문은-d로 채웁니다(먼저 폼으로 보내고, 폼 패스에서 아무것도 찾지 못한 경우에만 JSON으로 재시도). 탐색과 반사 검사는 켜 두므로 실제 주입 지점은 Dalfox가 직접 찾고(카탈로그의 파라미터 이름은 참고용입니다), 경로 케이스도 잡힙니다. - 탐지됨: Dalfox가 종류에 상관없이(
V,R,A) 탐지 결과를 하나 이상 반환하거나 종료 코드1로 끝나면 엔드포인트가 탐지된 것으로 집계됩니다. - 검증됨: Dalfox가 파싱된 DOM에서 페이로드가 실행 가능한 위치에 도달했음을 확인한 하위 집합(탐지 결과 타입
V). 브라우저 실행 관측이 아닙니다 — 탐지 모델 참고. - 비율: 카테고리별 및 전체의
detected / endpoints.
각 스냅샷은 이를 생성한 Dalfox 버전과 정확한 XSSMaze 이미지 다이제스트에 고정되며, 둘 다 표 아래에 표시됩니다. 원본 데이터는 docs/data/xssmaze-score.json에 있습니다.
수치 읽기
카테고리에서 비율이 높다는 것은 Dalfox가 해당 싱크에 안정적으로 도달하고 확인한다는 의미이며, 비율이 낮으면 다음에 투자할 가치가 있는 컨텍스트임을 나타냅니다. 스캔마다 이미 알고 있는 엔드포인트를 겨냥하고 마이닝을 건너뛰므로, 이는 파라미터 탐색 범위가 아니라 Dalfox의 탐지 및 검증 역량을 측정합니다. 탐색은 기능 테스트 스위트에서 별도로 수행됩니다. 점수는 Dalfox와 XSSMaze가 모두 발전함에 따라 변하므로, 항상 표 아래에 기재된 버전과 함께 읽으세요.