홈으로 돌아가기

CVE-2024-51378 CyberPanel: RCE 취약점

CyberPanel 2.3.7 버전 이하에서 getresetstatus 엔드포인트를 통해 RCE 취약점 CVE-2024-51378이 발견되었습니다. 기사에서는 테스트 환경 설정, PoC 악용, 서버 침해 방지를 위한 패칭 권장 사항을 다룹니다.

CyberPanel RCE: 인증 우회 및 루트 액세스 CVE-2024-51378
Advertisement 728x90

CyberPanel의 명령어 주입 취약점 CVE-2024-51378: 분석 및 악용

CyberPanel 2.3.7 이하 버전에서 명령어 주입 취약점(CVE-2024-51378)이 발견되었습니다. 이 취약점은 /dns/getresetstatus/ftp/getresetstatus 엔드포인트를 통해 공격자가 인증을 우회하고 임의의 명령어를 실행할 수 있게 합니다. 문제의 원인은 dns/views.pyftp/views.py 파일에 있습니다. 이를 통해 공격자는 어떠한 권한 검증 없이 서버를 완전히 장악할 수 있습니다.

CyberPanel: 목적과 구조

CyberPanel은 OpenLiteSpeed를 기반으로 한 오픈소스 웹 호스팅 제어판입니다. 도메인, 데이터베이스, FTP, 이메일, DNS 등을 8090 포트의 웹 인터페이스를 통해 관리합니다. 최신 기술 스택과의 원활한 통합으로 호스팅 제공업체와 개발자들 사이에서 인기가 많습니다.

이 취약점은 패널이 설치된 Ubuntu/Debian 서버에 영향을 미칩니다. 공격자는 루트 액세스를 획득해 모든 호스팅 서비스를 위험에 빠뜨릴 수 있습니다.

Google AdInline article slot

테스트 환경 설정

취약점을 확인하려면 Ubuntu가 설치된 VPS를 띄우고 취약한 버전의 CyberPanel을 설치하세요:

  • 패키지 업데이트:
apt-get update
  • wget 설치 및 설치 프로그램 다운로드:
apt install wget
cd /opt
wget -O installer.sh https://cyberpanel.net/install.sh
  • 설치 실행:
chmod +x installer.sh
sh installer.sh

재부팅 후 https://<IP>:8090을 열어 설정하세요. 이렇게 하면 취약한 엔드포인트가 포함된 테스트 환경이 생성됩니다.

취약점 기술 분석

RCE는 /dns/getresetstatus/ftp/getresetstatus 핸들러의 입력 검증 부족에서 비롯됩니다. 쿼리 매개변수가 제대로 이스케이핑되지 않고 쉘 명령어에 직접 전달되어 주입이 가능합니다.

Google AdInline article slot

공개 PoC를 사용한 악용 예시:

git clone https://github.com/refr4g/CVE-2024-51378.git
cd CVE-2024-51378
python3 CVE-2024-51378.py http://target.com:8090 /ftp/getresetstatus

이 스크립트는 서버에서 페이로드를 실행하는 조작된 요청을 보냅니다. 결과는 리버스 쉘 또는 루트 수준 명령어 실행입니다. 테스트 환경에서 플래그 추출이나 지속성을 구현할 수 있습니다.

주요 공격 벡터:

Google AdInline article slot
  • 자격 증명 없이 인증 우회.
  • 사용자 제어 입력으로 os.system() 실행.
  • 패널 컨텍스트로 인한 루트 권한 상승.

영향 지표 및 탐지

이 취약점은 CVSS 9.8(치명적) 점수를 받았으며 2.3.7 패치 이전 모든 설치본에 영향을 미칩니다. 탐지하려면 /home/cyberpanel/logs/의 로그를 확인해 의심스러운 /getresetstatus 요청을 찾거나 8090 포트 트래픽을 모니터링하세요.

확인 단계:

  • 버전 확인: cyberpanel version.
  • curl로 엔드포인트 테스트: curl 'http://target:8090/ftp/getresetstatus?param=;id'. uid=0(root)가 반환되면 취약점이 존재합니다.
  • CVE-2024-51378 템플릿이 포함된 Nuclei 같은 스캐너 사용.

수정 조치

  • 패치가 적용된 2.3.7+ 버전으로 업데이트: 패널 또는 CLI 지침 따르기.
  • 액세스 제한: 방화벽으로 8090 포트 차단(예: ufw allow from IP-range) 또는 VPN 사용.
  • ModSecurity 같은 WAF 배포해 주입 차단.
  • 감사: /usr/local/CyberCP/에서 grep -r 'getresetstatus' /usr/local/CyberCP/로 사용자 지정 수정 확인.

정기 업데이트와 최소 권한 원칙으로 위험을 최소화하세요.

주요 요점

  • ≤2.3.7 버전의 /dns/getresetstatus/ftp/getresetstatus를 통해 인증 없이 RCE 가능.
  • 패치 제공; 프로덕션 환경에서 즉시 업데이트 필수.
  • 패치 전에 PoC로 환경 테스트해 오탐지 피하기.
  • 8090 포트와 로그에서 명령어 주입 패턴 모니터링.
  • 방화벽/VPN으로 외부 패널 액세스 제한.

— Editorial Team

Advertisement 728x90

다음 읽기