웹 사이트의 모든 페이지, 모든 파라미터를 대상으로 XSS 취약점 존재유무 판단이 가능한 프로그램
프로그램 명
Auto_XSS.py
개발언어
python 3.9.5
개발목적
XSS 취약점진단 업무의 반복작업을 자동화하여 이후 업무를 효율적으로 수행하며 그 시간에 더 크리티컬한 취약점을 찾을 수 있는 것을 목적으로 한다.
※혹시나 잘 만들어진다면 국내 보안에 이바지하여 V3의 1/10,000,000 정도의 인지도를 갖는 걸 목적으로 한다. 일단 현재 필자를 제외한 블로그 멤버인 6명이 알테니 만들기만 한다면 소정의 목적은 달성할 수 있을 것이라고 본다.
프로그램 기능정의서
구분
모듈
설명
1
실행
프로그램 실행 시, 실행 옵션으로 타겟 URL과 브라우저의 종류와 로그인 세션 값을 입력하여 사용자의 세션으로 크롤링 및 취약점 테스트를 수행하도록 한다. 예시) autoxss.py -t {URL} -k {브라우저종류} -s {로그인 세션 값}
2
request 크롤링
파이썬에서 제공하는 Selenium을 이용하여 타겟 URL에서 사용자 세션으로 접근 가능한 모든 request에 대한 정보(경로, 헤더, 파라미터)를 수집한다.
3
XSS 테스트
1) requests 모듈을 이용하여 크롤링된 request 파라미터에 특정 문자를 입력 후, response에 해당 문자가 포함된 request를 따로 분류한다. 2) 위 작업에서 확인된 request를 대상으로 기본적인 악성 스크립트를 입력 후, response에 해당 문자가 포함된 line을 따로 분류한다. ※ 예시 - 특정 문자:aaa - 악성 스크립트: "><script>alert(1)</script><"
4
response 크롤링
XSS 테스트 모듈의 1)에서 특정 문자가 삽입된 요청이 DB에 저장되어 있는지 유무를 판단하기 위한 크롤링 수행 > DB에 저장된 경우 확인 후 삭제 과정이 필요
5
결과 출력
결과는 csv 파일 형태로 출력 1) request 크롤링 결과 2) response 크롤링 결과 3) 테스트 결과 - 특정 문자가 삽입된 요청 목록 - 악성 스크립트가 삽입된 요청 목록