kaleth4/CVE-202515611
GitHub: kaleth4/CVE-202515611
针对 WordPress Popup Box 插件 CSRF 到存储型 XSS 漏洞的概念验证代码与安全分析。
Stars: 0 | Forks: 0
# CVE-2025-15611: CSRF to Stored XSS en Popup Box (WordPress)
WordPress Popup Box 插件中由 Cross-Site Request Forgery (CSRF) 升级为 Stored XSS 的严重漏洞。允许在站点中注入持久性恶意代码。
## 🚨 执行摘要
| 属性 | 值 |
|----------|-------|
| **CVE ID** | CVE-2025-15611 |
| **插件** | Popup Box (Popup Builder) |
| **受影响版本** | < 5.5.0 |
| **漏洞类型** | CSRF (CWE-352) → Stored XSS (CWE-79) |
| **CVSS 评分** | 8.1 (高) |
| **攻击向量** | 网络 (社会工程学) |
| **复杂度** | 低 |
| **影响** | 严重 (任意代码执行) |
| **组件** | 函数 `add_or_edit_popupbox()` |
## 📋 技术细节
### 漏洞描述
Popup Box 插件在 `add_or_edit_popupbox()` 函数中未正确验证 **安全 nonces** (CSRF tokens)。这允许攻击者:
1. **欺骗管理员** 访问恶意页面
2. **将 JavaScript 代码** 注入到 popup 配置中
3. **在站点所有访问者的浏览器中** 执行该代码
### 攻击链
```
Atacante crea página maliciosa
↓
Envía enlace al Administrador del sitio
↓
Admin hace clic (sesión activa en WordPress)
↓
Solicitud CSRF enviada sin validación de nonce
↓
Código JavaScript inyectado en popup
↓
Código se ejecuta en navegadores de TODOS los visitantes
↓
Robo de datos, redirección, malware, etc.
```
### 受影响函数
```
// wp-content/plugins/popup-box/admin/class-popupbox-admin.php
public function add_or_edit_popupbox() {
// ❌ NO verifica $_POST['security'] contra wp_nonce_field()
// ❌ Permite cualquier POST request
if ($_POST['action'] == 'save_popup') {
$popup_content = $_POST['content']; // Input sin sanitizar
update_option('popupbox_' . $_POST['popup_id'], $popup_content);
// El content se guarda con XSS sin filtrar
}
}
```
### 补丁代码 (版本 5.5.0+)
```
// Versión segura
public function add_or_edit_popupbox() {
// ✅ Verifica nonce
if (!isset($_POST['popupbox_nonce']) ||
!wp_verify_nonce($_POST['popupbox_nonce'], 'save_popup')) {
wp_die('Acción no autorizada');
}
// ✅ Sanitiza y escapa output
$popup_content = wp_kses_post($_POST['content']);
update_option('popupbox_' . intval($_POST['popup_id']), $popup_content);
}
```
## 🎯 概念验证
### PoC 1: 手动 CSRF 攻击
**文件: `attack.html` (托管于攻击者的服务器)**
```
Acceso Denegado