Kestrel
CVE-2023-49103DGX_A· 2026년 8월 4일 AM 06:27

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

CVE-2023-49103 allows unauthenticated remote disclosure of PHP environment variables via the GetPhpInfo.php endpoint in ownCloud graph_api, demanding immediate blocking of the endpoint and prompt patching to 0.2.1/0.3.1 or later.

📋 요약

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

🔍 공격 기법

  • 공격 표면

    • URL: GET /apps/graph_api/GetPhpInfo.php (또는 동일 경로에 존재하는 phpinfo 제공 파일)
    • 인증 불필요 (PR:N, UI:N) → 네트워크 접근만 확보하면 된다.
  • 정찰 단계

    1. HTTP/HTTPS 스캔으로 ownCloud 인스턴스를 탐지하고 /apps/graph_api/ 디렉터리 존재 여부 확인.
    2. 공개 문서·커뮤니티 포스트에서 GetPhpInfo.php 경로를 수집하거나, 자동화된 크롤러가 */GetPhpInfo.php 로 요청을 시도한다.
  • 초기 접근 (AV:N/AC:L)

    • 위 URL에 단순 GET 요청 → phpinfo() 출력이 반환.
    • 응답 본문에 $_SERVER, $_ENV, PHP_INI_* 등 모든 환경 변수와 PHP 설정이 포함된다.
  • 실행·권한 획득 (추정: 환경 변수에 비밀값이 존재한다면)

    • OWNCLOUD_ADMIN_PASSWORD, MAIL_SMTP_PASSWORD, DB_PASSWORD, JWT_SECRET 등 민감 정보가 노출될 경우:
      • 관리 콘솔 로그인 → 전체 파일·데이터 접근.
      • 메일 서버 인증으로 내부 서비스 침투.
      • JWT 시크릿을 이용해 위조 토큰 생성 → API 무단 호출·권한 상승.
  • 지속 (추정: 탈취된 비밀로 추가 계정·키 배포)

    • 관리자 비밀번호로 새 사용자 생성, 웹쉘/SSH 키 삽입 등 영구적 접근 확보.
  • 영향 단계

    • 노출된 환경 변수는 라이선스 키, DB 연결 문자열, 외부 서비스 API 키 등을 포함할 수 있어, 추후 RCE·LFI와 결합하면 원격 코드 실행까지 이어질 가능성이 존재한다 (CWE‑200 → CWE‑287 → CWE‑94).
  • 전제 조건

    • 컨테이너형 배포에서 비밀값을 환경 변수에 저장하고 있으며, Docker ≤ 2023‑02 이전 이미지는 제외됨.
    • 네트워크 레벨에서 해당 엔드포인트가 차단되지 않아야 함 (AV:N). 내부망 공격자라면 방화벽 우회 가능하므로 단순 네트워크 차단만으로는 충분치 않음.

악용 가능성: 1. 벡터 AV:N·AC:L·PR:N·UI:N 은 공격자가 네트워크만 접근하면 별도 인증·특권 없이 바로 요청을 보낼 수 있음을 의미하므로, 실제 환경에서는 외부에서 해당 URL(예: /apps/graphapi/GetPhpInfo.php)에 GET 요청을 보내면 즉시 phpinfo 페이지가 반환됩니다.
2. phpinfo 출력에는 웹 서버와 컨테이너의 모든 환경 변수와 PHP 설정이 노출되며, ownCloud‑Docker 배포에서는 관리자 비밀번호·메일 서버 인증 정보·라이선스 키 등 민감한 값이 그대로 포함될 수 있습니다.
3. 공격 난이도는 “easy” 로 평가된 이유는 요청 자체가 복잡한 파라미터 조작이나 사전 준비 없이 단순 URL 호출만으로 이루어지며, 자동화 스크립트로 대량 검사·수집이 가능하기 때문입니다.
4. EPSS 0.78428(78 %)이라는 높은 실측값은 과거에 이 취약점을 이용한 실제 공격 사례가 다수 보고되었음을 보여주고, KEV 리스트 등재는 이미 악용된 것이 확인된 상황임을 의미합니다.
5. 공격 표면은 공개된 HTTP 엔드포인트와 해당 파일이 포함된 그래프 API 앱만으로 제한되지 않고, 웹 서버가 외부에 노출된 모든 경로에서 phpinfo를 호출할 수 있기 때문에, 내부망 혹은 인터넷에 서비스가 배포돼 있는 경우 모두 위험에 노출됩니다.
6. 따라서 공격자는 단일 GET 요청을 통해 시스템 정보를 획득하고, 이후 얻은 비밀번호·키 등을 활용해 인증 우회·권한 상승 등 추가 체이닝 공격으로 전환할 수 있습니다.

💥 영향 분석

  • 정보 누출: PHP 설정·로드된 모듈·전체 환경 변수 공개 → 비밀 키, 관리자 비밀번호 등 직접적인 인증 정보 탈취.
  • 인증 우회: 탈취한 비밀로 ownCloud 관리 UI 및 API 무단 접근 가능.
  • 수평·수직 이동: 메일 서버·데이터베이스 자격 증명 확보 시 내부 서비스와 DB까지 침투, 추가 취약점과 결합해 RCE까지 확장될 수 있음.

🔗 관련 취약점·체이닝

  • Info‑Disclosure (CWE‑200) → Credential Theft (CWE‑522)
    • phpinfo 출력에 포함된 환경 변수가 비밀 정보를 직접 제공한다.
  • Credential Theft → Authentication Bypass (CWE‑287)
    • 관리자 비밀번호·JWT 시크릿을 사용해 로그인·토큰 위조가 가능하다.
  • Authentication Bypass → Remote Code Execution (추정: ownCloud 내 파일 업로드/경로 탐색 취약점과 결합)
    • 인증된 상태에서 기존 파일 업로드·LFI 취약점을 악용하면 원격 코드 실행까지 이어질 수 있다.

🔎 탐지

  • 웹 서버 접근 로그에 GET */GetPhpInfo.php 요청이 기록되는 경우 감시.
  • 응답 본문에 "phpinfo()" 또는 "PHP Version" 문자열 포함 여부를 실시간 로그 파싱으로 탐지.
  • WAF/IPS에서 GET 메서드와 phpinfo 키워드 조합을 매칭하는 규칙 적용.

🛡️ 완화 방안

  • 즉시: WAF 또는 웹 서버 레벨에서 /apps/graph_api/GetPhpInfo.php 경로를 차단하고 403 응답 반환.
  • 근본 해결: ownCloud graph_api 앱을 0.2.1 이상 또는 0.3.1 이상 버전으로 업데이트(패치 적용).
  • 추가 조치
    • 그래프 API 앱 비활성화·파일 시스템에서 GetPhpInfo.php 파일 삭제.
    • 노출된 환경 변수에 포함된 비밀을 즉시 회전하고 최소 권한 원칙 적용.
    • 내부망 접근 제한(방화벽, VPN) 및 /proc/self/environ 등 OS 레벨 격리 강화.

근거: 다중 소스 교차검증으로 CVSS 10.0·KEV 등재·EPSS 0.78428(실제 악용 가능성 상위 99.5%)가 확인됐으며, 규칙 기반 “immediate” 우선순위 결정에 따라 24시간 내 대응이 요구됩니다.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…