
common-user-management는 사용자 접근을 동적으로 제어하도록 설계된 사용자 관리 서비스를 갖춘 강력한 Spring Boot 애플리케이션입니다. 애플리케이션 엔드포인트 /api/v1/customer/profile-picture에 심각한 보안 취약점이 존재합니다. 이 엔드포인트는 적절한 검증이나 제한 없이 파일 업로드를 허용하여 (RCE)로 이어집니다.
나는 사용자 접근을 동적으로 제어하도록 설계된 사용자 관리 서비스를 갖춘 강력한 Spring Boot 애플리케이션인 common-user-management에서 심각한 보안 취약점을 발견했습니다. 이 취약점은 /api/v1/customer/profile-picture 엔드포인트에 영향을 미치며, 공격자가 적절한 검증 없이 파일을 업로드할 수 있게 하여 **원격 코드 실행(RCE)**으로 이어질 수 있습니다.
다음 Python 스크립트를 사용하여 이 취약점을 악용할 수 있습니다.
python exploit.py -u "customer_user" -p "your_password" -f "malicious.jsp" -url "https://target.com"
-u: Username
-p: Password
-f: Malicious file to upload
-url: Target URL
/api/v1/customer/profile-picture 엔드포인트에 심각한 보안 취약점이 있습니다. 이 엔드포인트는 적절한 검증이나 제한 없이 파일 업로드를 허용하여, 공격자가 원격 코드 실행(RCE)으로 이어질 수 있는 악성 파일을 업로드할 수 있게 합니다. 취약점 설명
이 문제는 파일 확장자 및 Content-Type 헤더에 대한 검증 부족에서 비롯됩니다. 그 결과, 애플리케이션은 다음을 포함한 임의의 파일 업로드를 허용합니다:
HTML 파일(테스트됨) 서버 사이드 스크립트 파일(예: JSP, PHP, ASP 등)
이러한 파일은 웹 서버에 의해 실행될 수 있어, 공격자가 서버에서 임의의 코드를 실행하고 잠재적으로 전체 시스템을 손상시킬 수 있습니다.
악성 파일 업로드: 역할 26,17이 추가된 customer 계정을 사용하여 악성 파일 페이로드(예: .jsp, .php, .html)와 함께 /api/v1/customer/profile-picture에 PUT 요청을 보냅니다.
파일 위치 확인: /api/v1/customer/my-profile에 GET 요청을 보내고 응답에서 프로필 링크와 함께 파일 위치를 확인합니다.
업로드된 파일 실행: 응답에서 반환된 URL을 통해 파일 이름을 사용하여 파일에 직접 접근합니다. 서버가 업로드된 파일 형식을 지원하면 파일이 실행되어 원격 코드 실행으로 이어집니다.