
간단한 CORS 오설정 스캐너
James Kettle의 연구를 기반으로 함 (James Kettle)
CORStest는 CORS(Cross-Origin Resource Sharing, CORS) 설정 오류를 찾기 위한 빠르고 간단한 Python 3 도구입니다. 도메인 이름 또는 URL 목록이 포함된 텍스트 파일을 입력으로 받습니다. 현재, 특정 Origin 요청 헤더를 보내고 Access-Control-Allow-Origin 응답 헤더를 확인하여 다음과 같은 잠재적 취약점을 탐지합니다:
null 출처를 강제하여 모든 사이트가 접근할 수 있음이러한 취약점/설정 오류는 상황에 따라 달라집니다. 대부분의 시나리오에서 공격자가 악용하려면 Access-Control-Allow-Credentials 헤더가 존재해야 합니다 (-q 플래그 참조).
usage: corstest.py [arguments] infile
positional arguments:
infile File with domain or URL list
optional arguments:
-h, --help show this help message and exit
-c name=value Send cookie with all requests
-p processes multiprocessing (default: 32)
-s always force ssl/tls requests
-q quiet, allow-credentials only
-v produce a more verbose output
Alexa 상위 750개 사이트에 대해 CORStest로 설정 오류 탐지 (Access-Control-Allow-Credentials 포함):

Alexa 상위 100만 사이트에 대해 CORStest를 실행한 결과는 다음과 같습니다:

절대적인 숫자는 상당히 낮습니다. 테스트된 1,000,000개 웹사이트 중 단 3%만이 메인 페이지에서 CORS를 활성화하여 설정 오류를 분석할 수 있었기 때문입니다. 이 테스트는 적절한 DSL 회선에서 약 14시간이 걸렸습니다. 인터넷 연결이 빠르다면 병렬 프로세스 수를 -p50 이상으로 늘려보세요.
CORS 설정 오류에 대한 기술적 배경은 이 훌륭한 블로그 포스트에서 더 읽거나 이 강연을 확인하세요. CORStest를 사용한 CORS 설정 오류의 대규모 평가는 여기에 문서화되어 있습니다.