CVE-2021-46080
익스플로잇 제목: Vehicle Service Management System - '다중' 사이트 간 요청 위조(CSRF)로 인한 저장형 사이트 간 스크립팅(XSS)
CVE: CVE-2021-46080
CVSS: 4.8 중간(MEDIUM)
참조:
설명:
Vehicle Service Management System 1.0에 사이트 간 요청 위조(CSRF) 취약점이 존재합니다. 성공적인 CSRF 공격은 저장형 사이트 간 스크립팅(XSS) 취약점으로 이어집니다.
1. Vehicle Service Management System - '정비사 목록(Mechanic List)' (/admin/?page=mechanics)
익스플로잇:
- 관리자 패널에 접속합니다: http://localhost/vehicle_service/admin
- 관리자 계정 두 개를 생성합니다.
- 브라우저 A(Chrome)에서 Admin-1 계정으로 로그인합니다.
- 브라우저 B(Firefox)에서 Admin-2 계정으로 로그인합니다.
- Admin-1 계정(Chrome)에서 정비사 목록(Mechanic List) 섹션으로 이동하여 Create New 버튼을 클릭합니다.
- Full Name(전체 이름) 입력 필드에 아래 페이로드를 주입합니다.
페이로드:
"><script>alert(document.cookie)</script>
- Save 버튼을 클릭합니다.
- burpsuite에서 요청을 캡처하고 CSRF HTML 파일을 생성합니다.
- CSRF HTML 파일을 저장합니다(예: CSRF.html).
- 브라우저 B(Firefox)에서 CSRF.html 파일을 엽니다.
- 브라우저 B(Firefox)에서 정비사 목록(Mechanic List) 섹션으로 이동합니다.
- 악성 JavaScript 코드가 실행됩니다.
2. Vehicle Service Management System - '서비스 요청(Service Requests)' (/admin/?page=service_requests)
익스플로잇:
- 관리자 패널에 접속합니다: http://localhost/vehicle_service/admin
- 관리자 계정 두 개를 생성합니다.
- 브라우저 A(Chrome)에서 Admin-1 계정으로 로그인합니다.
- 브라우저 B(Firefox)에서 Admin-2 계정으로 로그인합니다.
- Admin-1 계정(Chrome)에서 서비스 요청(Service Requests) 섹션으로 이동하여 Create New 버튼을 클릭합니다.
- Owner Contact(소유자 연락처) 입력 필드에 아래 페이로드를 주입합니다.
페이로드:
"><script>alert(document.cookie)</script>
- Save Request(요청 저장) 버튼을 클릭합니다.
- burpsuite에서 요청을 캡처하고 CSRF HTML 파일을 생성합니다.
- CSRF HTML 파일을 저장합니다(예: CSRF.html).
- 브라우저 B(Firefox)에서 CSRF.html 파일을 엽니다.
- 브라우저 B(Firefox)에서 서비스 요청(Service Requests) 섹션으로 이동합니다.
- 새로 생성된 서비스 요청(Service Requests)을 선택하고 View 아래의 Action을 클릭합니다.
- 악성 JavaScript 코드가 실행됩니다.
3. Vehicle Service Management System - '카테고리 목록(Category List)' (/admin/?page=maintenance/category)
익스플로잇:
- 관리자 패널에 접속합니다: http://localhost/vehicle_service/admin
- 관리자 계정 두 개를 생성합니다.
- 브라우저 A(Chrome)에서 Admin-1 계정으로 로그인합니다.
- 브라우저 B(Firefox)에서 Admin-2 계정으로 로그인합니다.
- Admin-1 계정(Chrome)에서 카테고리 목록(Category List) 섹션으로 이동하여 Create New 버튼을 클릭합니다.
- Category Name(카테고리 이름) 입력 필드에 아래 페이로드를 주입합니다.
페이로드:
"><script>alert(document.cookie)</script>
- Save 버튼을 클릭합니다.
- burpsuite에서 요청을 캡처하고 CSRF HTML 파일을 생성합니다.
- CSRF HTML 파일을 저장합니다(예: CSRF.html).
- 브라우저 B(Firefox)에서 CSRF.html 파일을 엽니다.
- 브라우저 B(Firefox)에서 카테고리 목록(Category List) 섹션으로 이동합니다.
- 악성 JavaScript 코드가 실행됩니다.
4. Vehicle Service Management System - '서비스 목록(Service List)' (/admin/?page=maintenance/services)
익스플로잇:
- 관리자 패널에 접속합니다: http://localhost/vehicle_service/admin
- 관리자 계정 두 개를 생성합니다.
- 브라우저 A(Chrome)에서 Admin-1 계정으로 로그인합니다.
- 브라우저 B(Firefox)에서 Admin-2 계정으로 로그인합니다.
- Admin-1 계정(Chrome)에서 서비스 목록(Service List) 섹션으로 이동하여 Create New 버튼을 클릭합니다.
- Service Name(서비스 이름) 입력 필드에 아래 페이로드를 주입합니다.
페이로드:
"><script>alert(document.cookie)</script>
- Save 버튼을 클릭합니다.
- burpsuite에서 요청을 캡처하고 CSRF HTML 파일을 생성합니다.
- CSRF HTML 파일을 저장합니다(예: CSRF.html).
- 브라우저 B(Firefox)에서 CSRF.html 파일을 엽니다.
- 브라우저 B(Firefox)에서 서비스 목록(Service List) 섹션으로 이동합니다.
- 악성 JavaScript 코드가 실행됩니다.
5. Vehicle Service Management System - '사용자 목록(User List)' (/admin/?page=user/list)
익스플로잇:
- 관리자 패널에 접속합니다: http://localhost/vehicle_service/admin
- 관리자 계정 두 개를 생성합니다.
- 브라우저 A(Chrome)에서 Admin-1 계정으로 로그인합니다.
- 브라우저 B(Firefox)에서 Admin-2 계정으로 로그인합니다.
- Admin-1 계정(Chrome)에서 사용자 목록(User List) 섹션으로 이동하여 Create New 버튼을 클릭합니다.
- First Name(이름) 입력 필드에 아래 페이로드를 주입합니다.
페이로드:
"><script>alert(document.cookie)</script>
- Save 버튼을 클릭합니다.
- burpsuite에서 요청을 캡처하고 CSRF HTML 파일을 생성합니다.
- CSRF HTML 파일을 저장합니다(예: CSRF.html).
- 브라우저 B(Firefox)에서 CSRF.html 파일을 엽니다.
- 브라우저 B(Firefox)에서 사용자 목록(User List) 섹션으로 이동합니다.
- 악성 JavaScript 코드가 실행됩니다.
6. Vehicle Service Management System - '설정(Settings)' (/admin/?page=system_info)
익스플로잇:
- 관리자 패널에 접속합니다: http://localhost/vehicle_service/admin
- 관리자 계정 두 개를 생성합니다.
- 브라우저 A(Chrome)에서 Admin-1 계정으로 로그인합니다.
- 브라우저 B(Firefox)에서 Admin-2 계정으로 로그인합니다.
- Admin-1 계정(Chrome)에서 설정(Settings) 섹션으로 이동합니다.
- System Name(시스템 이름) 입력 필드에 아래 페이로드를 주입합니다.
페이로드:
"><script>alert(document.cookie)</script>
- Update 버튼을 클릭합니다.
- burpsuite에서 요청을 캡처하고 CSRF HTML 파일을 생성합니다.
- CSRF HTML 파일을 저장합니다(예: CSRF.html).
- 브라우저 B(Firefox)에서 CSRF.html 파일을 엽니다.
- 브라우저 B(Firefox)에서 설정(Settings) 섹션으로 이동합니다.
- 악성 JavaScript 코드가 실행됩니다.
영향:
여러 엔드포인트에 사이트 간 요청 위조(CSRF) 취약점이 존재하며, 이는 저장형 사이트 간 스크립팅(XSS) 취약점으로 이어집니다.
완화 조치:
다음 사항을 구현할 것을 권장합니다:
- 일반적인 세션 토큰과 마찬가지로 예측 불가능하고 높은 엔트로피를 가져야 합니다.
- 사용자 세션에 바인딩되어야 합니다.
- 관련 작업이 실행되기 전에 모든 경우에 대해 엄격히 검증되어야 합니다.