dudu88485n-ctrl/Typecho-GetText-eval-RCE-PoC
GitHub: dudu88485n-ctrl/Typecho-GetText-eval-RCE-PoC
该项目是 Typecho GetText Plural-Forms eval() 远程代码执行漏洞(CWE-95)的概念验证与安全公告,包含漏洞分析、PoC 脚本及修复方案。
Stars: 0 | Forks: 0
# Typecho GetText Plural-Forms eval() 远程代码执行
## 概述
Typecho v1.3.0 及更早版本中存在一个代码注入漏洞 (CWE-95)。GetText 国际化模块使用 PHP 的 `eval()` 来动态执行从 MO 翻译文件中提取的 Plural-Forms 表达式,且未进行任何过滤处理。
**CVSS 3.1**: 7.2 高危 — `AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H`
## 受影响的代码
- **文件**: `var/Typecho/I18n/GetText.php`
- **函数**: `selectString()` (第 371 行) — `eval("$string")`
- **函数**: `getPluralForms()` (第 396 行) — 未经过滤的正则提取
## 快速开始
### 验证 (PHP)
```
php verify_eval_injection.php
```
### 构建恶意 MO 文件
```
python3 build_malicious_mo.py
```
## 漏洞链
```
_n() → I18n::ngettext() → GetTextMulti::ngettext()
→ GetText::ngettext() → selectString()
→ getPluralForms() [extracts Plural-Forms header from MO file]
→ str_replace() [variable substitution]
→ eval("$string") [ATTACKER CODE EXECUTED]
```
## 修复方案
使用安全的表达式解析器替换 `eval()`,或对 Plural-Forms 表达式实施严格的白名单验证。
## 披露时间线
| 日期 | 事件 |
|------|-------|
| 2026-05-28 | 发现漏洞 |
| 2026-05-28 | PoC 验证通过 |
| 待定 | 分配 CVE |
| 待定 | 通知厂商 |
## 许可证
本仓库仅供安全研究目的使用。
标签:CISA项目, Go语言工具, Maven, OpenVAS, PHP, RCE, Typecho, 漏洞验证, 逆向工具