Skip to main content

Blood Bank 침투 테스트 결과 보고서

2026년 Blood Bank 침투 테스트
침투 테스트 결과 보고서

대상Blood Bank
취약점 번호CVE-2025-63531
수행 기간2025.12.22 ~ 2025.12.30
소속Red Team
수행 인력조영운

목 차

  1. 침투 테스트 수행 정보

1.1. 개요
1.2. 대상

  1. 침투 테스트 결과

  2. 취약점 상세 내용

3.1. 로그인 페이지 인증 우회 및 정보 탈취
3.1.1. 인증 우회
1. HTML5 이메일 형식 검증 우회
2. SQL Injection을 이용한 로그인 인증 우회
3.1.2. DB 정보 탈취
1. DB 구조 파악
2. 데이터 탈취
3.2. 프로필 업데이트 페이지 정보 탈취
3.2.1. DB 정보 탈취
1. DB 구조 파악
2. 데이터 탈취

  1. 침투 테스트 수행 정보

1.1. 개요
- CVE-2025-63531 Blood Bank Management System 침투 테스트 결과 보고서
- CVE 취약점에 관한 연구를 목적으로 함.
- 재현 환경 URL 및 IP는 bloodbank로 대체함.

1.2. 대상
본 침투 테스트의 대상은 CVE-2025-63531 취약점을 포함하도록 구성된 웹 애플리케이션 및 해당 애플리케이션이 배포된 Kubernetes 기반 재현 환경임.
웹 애플리케이션은 Docker 컨테이너 형태로 패키징되었으며, Kubernetes 클러스터 상에서 서비스 형태로 배포되어 외부 접근이 가능하도록 구성됨.

플랫폼재현 환경URL
WebKuberneteshttps://bloodbank.com
  1. 침투 테스트 결과
    본 침투 테스트는 ‘CVE-2025-63531 Blood Bank Management System 1.0 receiverLogin.php SQL Injection Authentication Bypass Vulnerability’를 재현한 환경에서 취약성 증명 및 연구 목적으로 진행함.
No.경로결과
1/receiverLogin.phpError-Based SQL Injection을 이용한 정보 탈취
2/hospitalLogin.phpError-Based SQL Injection을 이용한 정보 탈취
3/updateprofile.phpError-Based SQL Injection을 이용한 정보 탈취
  1. 취약점 상세 내용
    3.1. 로그인 페이지 인증 우회 및 정보 탈취 (https://bloodbank.com/login.php)
구분설명
URLhttps://bloodbank.com/login.php로그인 페이지
https://bloodbank.com/file/receiverLogin.php유저 로그인 백엔드 php
https://bloodbank.com/file/hospitalLogin.php병원 로그인 백엔드 php
취약점 상세내역로그인 시 호출되는 백엔드 처리 파일 (receiverLogin.php, hospitalLogin.php)에서 Prepared Statement를 사용하지 않아 SQL Injection 취약점 발생. 공격자가 로그인 폼을 통해 악성 SQL 쿼리를 삽입하여 DB 정보 탈취 및 인증 우회 가능.

3.1.1. 인증 우회

  1. HTML5 이메일 형식 검증 우회

    로그인 폼에서 SQL Injection 시도시 아래와 같은 메시지가 출력 됨.

    위 메시지는 HTML5의 기본 이메일 형식 검사임.

    서버 측에서 이루어지는 검증이 아닌 브라우저 즉, 클라이언트 측 검증임.

    개발자 도구를 통해 확인한 HTML 요소

    클라이언트 사이드 검증이므로 console을 이용해 input type 변경을 통해 이메일 형식 검증 우회 가능함.

  2. SQL Injection을 이용한 로그인 인증 우회

    HTML input type 변경 후 SQL Injection을 사용해 로그인 시도함.

    User Login Bypass Payload를 삽입함.

    Hospital Login Bypass Payload를 삽입함.

    User Login Authentication Bypass를 성공함.

    Hospital Login Authentication Bypass를 성공함.

    3.1.2. DB 정보 탈취

  3. DB 구조 파악

    Error-Based SQL Injection을 이용했을 때 출력되는 에러 메세지를 통해

    DB 명, 테이블 명, 컬럼 명 등 DB 구조 확인이 가능함.

    a. DB 명 확인

    DB 명을 출력하는 database()를 포함한 Payload(악성 query)를 삽입함.

    XPATH syntax error라는 메세지와 함께 DB 명인 bloodbank가 출력됨.

    b. Table 명 확인

    Table 명을 출력하는 Payload를 삽입함.

    XPATH syntax error라는 메세지와 함께 첫 번째 Table 명인 blooddinfo가 출력됨.

    Subquery returns more than 1 row 에러 메시지가 출력되기 때문에 limit 0, 1을 사용하여 하나의 행만 출력하도록 함.

    위 작업을 반복하여 모든 Table 명을 출력할 수 있음.

    c. Column 명 확인

    Column 명을 출력하는 Payload를 삽입함.

    XPATH syntax error라는 메세지와 함께 첫 번째 Column 명인 id가 출력됨.

    Subquery returns more than 1 row 에러 메시지가 출력되기 때문에 limit 0, 1을 사용하여 하나의 행만 출력하도록 함.

    위 작업을 반복하여 모든 Column 명을 출력할 수 있음.

    a~c 작업을 통해 DB의 구조를 전부 파악할 수 있음.

  4. 데이터 탈취

    email, password 등 이용자 데이터 뿐만 아니라 서버 민감 정보도 출력 가능함.

    a. 이용자 email, password 탈취

    XPATH syntax error라는 메세지와 함께 이용자의 email과 password가 출력됨.

    b. 서버 민감 정보 탈취

    /etc/passwd

    XPATH syntax error라는 메세지와 함께 /etc/passwd의 내용이 출력됨.

    DB USER 및 VERSION 정보

    XPATH syntax error라는 메세지와 함께 DB의 유저 정보와 버전 정보가 출력됨.

    [위험]

  • DB에 저장된 민감 정보를 포함한 모든 정보 탈취 가능

  • 탈취한 이메일과 비밀번호로 크리덴셜 스터핑 공격 가능

  • 탈취한 서버 정보를 바탕으로 2차 공격 가능

    [보안 권고안]

  • /receiverLogin.php, hospitalLogin.php 등 SQL Query를 처리하는 서버 사이드 php에 Prepared Statement 적용

3.2. 프로필 업데이트 페이지 정보 탈취 (https://bloodbank.com/rprofile.php)

구분설명
URLhttps://bloodbank.com/rprofile.php프로필 업데이트 페이지
https://bloodbank.com/file/updateprofile.php업데이트 백엔드 php
취약점 상세내역프로필 업데이트 시 호출되는 백엔드 처리 파일 (updateprofile.php)에서 Prepared Statement를 사용하지 않아 SQL Injection 취약점 발생. 공격자가 업데이트 폼을 통해 악성 SQL 쿼리를 삽입하여 DB 정보 탈취 가능

3.2.1. DB 정보 탈취

  1. DB 구조 파악

    Error-Based SQL Injection을 이용했을 때 출력되는 에러 메세지를 통해 DB 명, 테이블 명, 컬럼 명 등 DB 구조 확인이 가능함.

    a. DB 명 확인

    DB 명을 출력하는 database()를 포함한 Payload(악성 query)를 삽입함.

    XPATH syntax error라는 메세지와 함께 DB 명인 bloodbank가 출력됨.

    b. Table 명 확인

    Table 명을 출력하는 Payload를 삽입함.

    XPATH syntax error라는 메세지와 함께 Table 명인 receivers가 출력됨.

    Subquery returns more than 1 row 에러 메시지가 출력되기 때문에 limit 5, 1을 사용하여 하나의 행만 출력하도록 함.

    위 작업을 반복하여 모든 Table 명을 출력할 수 있음.

    c. Column 명 확인

    Column 명을 출력하는 Payload를 삽입함.

    XPATH syntax error라는 메세지와 함께 Column 명인 remail이 출력됨.

    Subquery returns more than 1 row 에러 메시지가 출력되기 때문에 limit 2, 1을 사용하여 하나의 행만 출력하도록 함.

    위 작업을 반복하여 모든 Column 명을 출력할 수 있음.

    a~c 작업을 통해 DB의 구조를 전부 파악할 수 있음.

  2. 데이터 탈취

    email, password 등 이용자 데이터 뿐만 아니라 서버 민감 정보도 출력 가능함.

    a. 이용자 email, password 탈취

    XPATH syntax error라는 메세지와 함께 이용자의 email과 password가 출력됨.

    b. 서버 민감 정보 탈취

    /etc/passwd

    XPATH syntax error라는 메세지와 함께 /etc/passwd의 내용이 출력됨.

    같은 방법으로 DB의 유저 정보나 버전 정보 등도 탈취가 가능함.

    [위험]

  • DB에 저장된 민감 정보를 포함한 모든 정보 탈취 가능

  • 탈취한 이메일과 비밀번호로 크리덴셜 스터핑 공격 가능

  • 탈취한 서버 정보를 바탕으로 2차 공격 가능

    [보안 권고안]

  • /updateprofile.php 등 SQL Query를 처리하는 서버 사이드 php에 Prepared Statement 적용