Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
exploit-CVE-2016-9920 — Roundcube 1.0.0 <= 1.2.2 원격 코드 실행 익스플로잇 및 취약한 컨테이너 | Kitploit
도구/GitHubGitHub/t0kx/exploit-cve-2016-9920
Container SecurityVulnerability AnalysisExploitationWeb Application ExploitationLearning & EducationLabs & Practice
GitHubt0kx/exploit-cve-2016-9920

exploit-CVE-2016-9920

Roundcube 1.0.0 <= 1.2.2 원격 코드 실행 익스플로잇 및 취약한 컨테이너

저장소 보기
482152년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Roundcube 1.0.0 <= 1.2.2 원격 코드 실행

Roundcube는 전 세계 많은 조직과 기업에서 사용하는 널리 보급된 오픈소스 웹메일 소프트웨어입니다. 예를 들어 SourceForge의 미러는 지난 12개월 동안 260,000건 이상의 다운로드를 기록했으며, 이는 실제 사용자 수의 극히 일부에 불과합니다. Roundcube가 서버에 설치되면 인증된 사용자가 웹 브라우저로 이메일을 주고받을 수 있는 웹 인터페이스를 제공합니다.

Roundcube 1.2.2 및 이전 버전에서는 사용자 제어 입력이 검증되지 않은 채 PHP의 내장 함수 mail() 호출의 다섯 번째 인수로 흘러 들어가며, 이는 보안상 중요하다고 문서화되어 있습니다. 문제는 mail() 함수를 호출하면 PHP가 sendmail 프로그램을 실행하게 된다는 것입니다. 다섯 번째 인수는 이 실행에 인수를 전달할 수 있게 해주므로 sendmail을 구성할 수 있습니다. sendmail은 모든 메일 트래픽을 파일에 기록하는 -X 옵션을 제공하므로, 공격자는 이 옵션을 악용하여 공격 대상 서버의 웹루트 디렉터리에 악성 PHP 파일을 생성할 수 있습니다. 다음 코드 줄이 취약점을 트리거합니다.

요구 사항

이 취약점을 악용하려면 다음 요구 사항이 필요합니다:

  • Roundcube가 PHP의 mail() 함수를 사용하도록 구성되어 있어야 합니다 (기본적으로 SMTP가 지정되지 않은 경우 [1])
  • PHP의 mail() 함수가 sendmail을 사용하도록 구성되어 있어야 합니다 (기본값, sendmail_path 참조 [2])
  • PHP가 safe_mode를 끈 상태로 구성되어 있어야 합니다 (기본값, safe_mode 참조 [3])
  • 공격자는 웹루트의 절대 경로를 알고 있거나 추측할 수 있어야 합니다

이러한 요구 사항은 특별히 까다롭지 않으며, 이는 실제 환경에 취약한 시스템이 많았음을 의미합니다.

취약한 환경

테스트를 위해 취약한 환경을 구축하려면 Docker가 설치되어 있어야 하며, 다음 명령을 실행하기만 하면 됩니다:

root@kitploit:~
docker build -t vuln/cve-2016-9920 .
docker run --rm -it -p 80:80 vuln/cve-2016-9920

그러면 호스트의 80 포트에 취약한 웹 애플리케이션이 실행됩니다.

취약한 코드

Roundcube 1.2.2 및 이전 버전에서는 사용자 제어 입력이 검증되지 않은 채 PHP의 내장 함수 mail() 호출의 다섯 번째 인수로 흘러 들어가며, 이는 보안 측면에서 중요하다고 문서화되어 있습니다. 문제는 mail() 함수를 호출하면 PHP가 sendmail 프로그램을 실행하게 된다는 것입니다. 다섯 번째 인수는 이 실행에 추가 매개변수를 전달할 수 있게 해주므로 sendmail을 구성할 수 있습니다. sendmail은 모든 메일 트래픽을 파일에 기록하는 -X 옵션을 제공하므로, 공격자는 이 옵션을 악용하여 공격 대상 서버의 웹루트 디렉터리에 악성 PHP 파일을 생성할 수 있습니다. 이 취약점은 드물고 널리 알려지지 않았지만, RIPS는 몇 초 만에 이를 탐지했습니다. [4]

익스플로잇

이 대상을 익스플로잇하려면 다음을 실행하기만 하면 됩니다:

root@kitploit:~
./exploit.py --host HOST --user USERNAME --pwd PASSWORD --path PATH --www_path WEB_DIRECTORY

이 취약한 이미지를 사용 중이라면 다음을 실행하면 됩니다:

root@kitploit:~
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"

익스플로잇이 완료되면 backdoor.php라는 파일이 웹 디렉터리의 루트 폴더에 저장됩니다. 그리고 익스플로잇은 백도어에 명령을 보낼 수 있는 셸을 제공합니다:

root@kitploit:~
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
[+] CVE-2016-9920 exploit by t0kx
[+] Exploiting 127.0.0.1
[+] Target exploited, acessing shell at http://127.0.0.1/roundcube/backdoor.php
[+] Running whoami: www-data
[+] Done

크레딧

이 결함은 Robin Peraglie가 발견했습니다 [4]. 이 교육 자료의 본문과 아이디어는 opsxcq가 만들었습니다.

면책 조항

이 프로그램 및 이전 프로그램은 교육 목적으로만 제공됩니다. 허가 없이 사용하지 마십시오. 일반적인 면책 조항이 적용되며, 특히 저(t0kx)는 이러한 프로그램이 제공하는 정보나 기능을 직간접적으로 사용하여 발생하는 어떠한 손해에 대해서도 책임을 지지 않습니다. 작성자 또는 인터넷 서비스 제공업체는 이러한 프로그램 또는 그 파생물의 콘텐츠나 오용에 대해 어떠한 책임도 지지 않습니다. 이러한 프로그램을 사용함으로써 귀하는 이 프로그램 사용으로 인해 발생하는 모든 손해(데이터 손실, 시스템 충돌, 시스템 침해 등)가 t0kx의 책임이 아니라는 사실에 동의하게 됩니다.

링크

  • [1] https://github.com/roundcube/roundcubemail/wiki/Configuration#sending-messages-via-smtp
  • [2] http://php.net/manual/en/mail.configuration.php
  • [3] http://php.net/manual/en/ini.sect.safe-mode.php
  • [4] https://blog.ripstech.com/2016/roundcube-command-execution-via-email/
도구 다운로드