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와 XSSMaze가 바뀌면 함께 바뀌므로, 표 아래에 적힌 버전과 같이 읽으세요.