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