CVE-2021-46067
Exploit Title: Vehicle Service Management System - 'Multiple' 쿠키 탈취로 인한 전체 계정 탈취
CVE: CVE-2021-46067
CVSS: 9.8 CRITICAL
References:
설명:
Vehicle Service Management System 1.0에서 공격자가 쿠키를 탈취하여 전체 계정 탈취(Full Account Takeover)로 이어질 수 있습니다.
1. Vehicle Service Management System - 'MyAccount' (/admin/?page=user)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- My Account 섹션으로 이동합니다. http://localhost/vehicle_service/admin/?page=user
- Webhook URL을 생성합니다. - https://webhook.site
- Webhook 고유 URL을 복사하여 아래 html 코드에 붙여넣습니다.
페이로드:
<!DOCTYPE html>
<html>
<title>Cookie Stealing</title>
<body>
</body>
</html>
- 위 html 코드를 저장합니다. 예: Cookie Stealing.html
- My Account 섹션에서 필요한 모든 세부 정보를 입력하고 Avatar에서 html 파일을 선택합니다.
- 업데이트(update) 버튼을 클릭합니다.
- 아바타 이미지를 새 탭에서 열고 Webhook 상태를 확인합니다.
- 요청에 PHPSESSID가 포함된 것을 확인했습니다.
- PHPSESSID 값을 복사하고 다른 브라우저를 엽니다.
- 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 쿠키 값을 확인하고 PHPSESSID 값을 복사한 PHPSESSID 값으로 변경합니다.
- 이제 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 계정에 성공적으로 로그인되었습니다. 계정 탈취가 성공했습니다.
2. Vehicle Service Management System - 'User List' (/admin/?page=user/manage_user)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- User List 섹션으로 이동하여 Create New 버튼을 클릭합니다.
- Webhook URL을 생성합니다. - https://webhook.site
- Webhook 고유 URL을 복사하여 아래 html 코드에 붙여넣습니다.
페이로드:
<!DOCTYPE html>
<html>
<title>Cookie Stealing</title>
<body>
</body>
</html>
- 위 html 코드를 저장합니다. 예: Cookie Stealing.html
- Create New User 섹션에서 필요한 모든 세부 정보를 입력하고 Avatar에서 html 파일을 선택합니다.
- 저장(Save) 버튼을 클릭합니다.
- 아바타 이미지를 새 탭에서 열고 Webhook 상태를 확인합니다.
- 요청에 PHPSESSID가 포함된 것을 확인했습니다.
- PHPSESSID 값을 복사하고 다른 브라우저를 엽니다.
- 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 쿠키 값을 확인하고 PHPSESSID 값을 복사한 PHPSESSID 값으로 변경합니다.
- 이제 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 계정에 성공적으로 로그인되었습니다. 계정 탈취가 성공했습니다.
3. Vehicle Service Management System - 'Settings-System Logo' (/admin/?page=system_info)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- Settings 섹션으로 이동합니다. http://localhost/vehicle_service/admin/?page=system_info
- Webhook URL을 생성합니다. - https://webhook.site
- Webhook 고유 URL을 복사하여 아래 html 코드에 붙여넣습니다.
페이로드:
<!DOCTYPE html>
<html>
<title>Cookie Stealing</title>
<body>
</body>
</html>
- 위 html 코드를 저장합니다. 예: Cookie Stealing.html
- Settings 섹션에서 필요한 모든 세부 정보를 입력하고 System Logo에서 html 파일을 선택합니다.
- 업데이트(update) 버튼을 클릭합니다.
- System Logo 이미지를 새 탭에서 열고 Webhook 상태를 확인합니다.
- 요청에 PHPSESSID가 포함된 것을 확인했습니다.
- PHPSESSID 값을 복사하고 다른 브라우저를 엽니다.
- 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 쿠키 값을 확인하고 PHPSESSID 값을 복사한 PHPSESSID 값으로 변경합니다.
- 이제 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 계정에 성공적으로 로그인되었습니다. 계정 탈취가 성공했습니다.
4. Vehicle Service Management System - 'Settings-Website Cover' (/admin/?page=system_info)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- Settings 섹션으로 이동합니다. http://localhost/vehicle_service/admin/?page=system_info
- Webhook URL을 생성합니다. - https://webhook.site
- Webhook 고유 URL을 복사하여 아래 html 코드에 붙여넣습니다.
페이로드:
<!DOCTYPE html>
<html>
<title>Cookie Stealing</title>
<body>
</body>
</html>
- 위 html 코드를 저장합니다. 예: Cookie Stealing.html
- Settings 섹션에서 필요한 모든 세부 정보를 입력하고 Website Cover에서 html 파일을 선택합니다.
- 업데이트(update) 버튼을 클릭합니다.
- Website Cover 이미지를 새 탭에서 열고 Webhook 상태를 확인합니다.
- 요청에 PHPSESSID가 포함된 것을 확인했습니다.
- PHPSESSID 값을 복사하고 다른 브라우저를 엽니다.
- 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 쿠키 값을 확인하고 PHPSESSID 값을 복사한 PHPSESSID 값으로 변경합니다.
- 이제 관리자 패널 http://localhost/vehicle_service/admin 에 접속합니다.
- 계정에 성공적으로 로그인되었습니다. 계정 탈취가 성공했습니다.
영향:
공격자가 악성 html 파일을 업로드하면 제3자 웹사이트로 리디렉션되고 요청에 쿠키가 노출됩니다. 이로 인해 전체 계정 탈취(Full Account Takeover)가 발생할 수 있습니다.
해결 방안:
파일 업로드 기능을 검증하고 세션에서 2차 검사(Secondary Checks)를 수행하는 것이 권장됩니다.