Kestrel
CVE-2023-49103DGX_E· 2026년 8월 5일 PM 08:26

[단독공격] 분석 — CVE-2023-49103

CVE-2023-49103 enables remote attackers to retrieve full PHP environment details—including sensitive credentials—via an unrestricted phpinfo endpoint in ownCloud graph_api, demanding immediate remediation.

📋 요약

  • 심각도 critical · CVSS 10.0 · EPSS 0.78428 · 악용난이도 easy · KEV

🔍 공격 기법

  • 공격 표면

    • GET /apps/graphapi/GetPhpInfo.php (또는 graphapi 앱이 제공하는 동일 경로)
    • 별도 파라미터 없이 URL만 호출하면 phpinfo 페이지가 반환됩니다.
  • 트리거 조건 (AV:N/AC:L/PR:N/UI:N)

    • 네트워크를 통해 외부에서 직접 접근 가능(NETWORK)
    • 복잡도가 낮고 인증이 필요 없으며(User Interaction: None) 요청만 보내면 동작합니다.
  • 단계별 흐름

    1. 정찰 – 웹 어플리케이션 디렉터리 구조를 탐색하거나 ownCloud 앱 목록에서 graphapi가 설치돼 있음을 확인합니다. (/ocs/v2.php/apps/graphapi/... 등).
    2. 초기 접근 – 위 URL에 단순 GET 요청을 전송합니다. 응답으로 phpinfo HTML이 반환됩니다.
    3. 실행·정보 획득 – 페이지 안에 $_SERVER, $_ENV 변수와 PHP 설정이 모두 노출되어, 컨테이너 환경에서는 OWNCLOUD_ADMIN_PASSWORD, 메일 서버 인증 정보, 라이선스 키 등이 포함될 수 있습니다.
    4. 권한 상승·지속 – 획득한 관리자 비밀번호 등으로 ownCloud 관리 콘솔에 로그인하거나 API 토큰을 발급받아 영구적인 접근 권한을 확보합니다.
    5. 영향 – 시스템 전체 제어, 데이터 탈취, 추가 악성 코드 배포 등이 가능해집니다.
  • 관측 지표

    • HTTP 200 응답에 phpinfo() 문자열이 포함된 경우
    • 로그에 /GetPhpInfo.php 접근 시도 기록

악용 가능성: CVSS 벡터 AV:N/AC:L/PR:N/UI:N는 공격자가 네트워크를 통해 직접 접근 가능한 엔드포인트에 요청만 보내면 별다른 사전 작업이나 사용자 개입 없이 취약점이 발동한다는 의미이며, 이는 실제로 ownCloud graphapi 앱의 GetPhpInfo.php URL을 외부에서 바로 호출할 수 있음을 나타냅니다.
EPSS 0.78428이라는 높은 실측 확률과 KEV(Known Exploited Vulnerabilities) 목록에 등재된 점은 이 취약점이 이미 악용되고 있으며, 이론적 심각도와 무관하게 실제 위협으로 입증되었음을 강력히 뒷받침합니다.
공격 표면은 HTTP GET 요청만 가능한 https://<host>/apps/graphapi/GetPhpInfo.php 경로이며, 파라미터는 없고 프로토콜은 일반 웹(HTTP/HTTPS)입니다.
트리거 조건은 해당 URL에 단순히 접근하는 것뿐이므로, 공격자는 별도의 인증 절차 없이도 phpinfo 페이지를 획득할 수 있습니다.
phpinfo 출력에는 컨테이너 환경 변수까지 포함되어 있어, ownCloud 관리자 비밀번호, 메일 서버 자격 증명, 라이선스 키 등 민감 정보가 그대로 노출됩니다.
노출된 정보를 기반으로 추가적인 인증 우회나 서비스 탈취 시도가 가능하므로, 실제 공격 난이도는 “easy” 수준이며 악용 가능성은 매우 높다고 평가할 수 있습니다.

💥 영향 분석

  • 관리자 비밀번호, 메일 서버 인증 정보, 라이선스 키 등 민감한 환경 변수가 외부에 노출됩니다.
  • 해당 자격 증명을 이용해 ownCloud 관리 인터페이스에 무단 로그인하거나 API를 통해 데이터를 탈취·조작할 수 있습니다.

🔗 관련 취약점·체이닝

  • Info‑Disclosure (CWE‑200)Credential ExposureUnauthorized Access (CWE‑284)
    • phpinfo 로 노출된 환경 변수는 직접적인 인증 우회 수단이 됩니다.
  • 추정: 동일 컨테이너 내 다른 서비스(예: 데이터베이스)에서 동일 env 변수를 재사용한다면, 추가적인 권한 상승(CWE‑269)이나 원격 코드 실행(CWE‑94)으로 연결될 가능성이 있습니다.

🔎 탐지

  • 웹 서버 접근 로그에 /GetPhpInfo.php 혹은 phpinfo() 문자열이 포함된 응답이 기록되는 경우 알림을 발생시킵니다.
  • WAF/IPS에서 GET */GetPhpInfo.php* 요청 패턴을 차단 및 로깅합니다.

🛡️ 완화 방안

  1. 즉시 조치 – graphapi 앱을 비활성화한 뒤, /apps/graphapi/GetPhpInfo.php 파일을 웹 서버 레벨에서 접근 차단(.htaccess, Nginx deny)하거나 삭제합니다.
  2. 패치 적용 – ownCloud graph_api를 0.2.1 이상 또는 0.3.1 이상 버전으로 업데이트합니다.
  3. 자격 증명 교체 – 노출 가능성이 있는 관리자 비밀번호·메일 서버 계정·라이선스 키를 모두 재설정합니다.
  4. 환경 변수 보호 – 컨테이너 실행 시 민감 정보는 파일 기반 시크릿이나 K8s Secret으로 전달하고, phpinfo에 노출되지 않도록 expose_php=Off 설정을 적용합니다.

본 보고서는 다중 소스에서 일관성이 확인된([교차검증] 신뢰도 1.0) 정보를 기반으로 하며, EPSS 0.78428(실측 악용 예측 상위 99.5%)과 KEV 등재를 고려한 즉시 대응(우선순위: immediate)이 권고됩니다.

⚖️ 위험도 / 우선순위

  • 조치: immediate (지금 즉시(24h 내))
  • 근거: CVSS=10.0 · KEV · EPSS=0.78428 · exploit=easy · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…