HTB Labs — Tier 1 — “Sequel” Makinesi Adım Adım Çözümü | Yazan: CyberAlp0

Merhaba dostlar, ben CyberAlp0. HTB tarafından sunulan, Tier 1 seviyesindeki “Sequel” adlı yeni bir adım adım çözüme hoş geldiniz. Sequel makinesi, bir MariaDB örneğinin parola doğrulaması olmadan root erişimine izin verdiği ve hassas yapılandırma bayrakları dahil tüm saklanan verileri açığa çıkardığı kritik bir veritabanı güvenlik zafiyetini gösterir.
Sequel makinesi, 3306 portunda bir MariaDB 10.3.27 servisini, root kullanıcısının parola sağlamadan kimlik doğrulaması yapmasına izin veren kritik bir yanlış yapılandırmayla açığa çıkarır. Bu, veritabanı yönetiminde temel bir güvenlik açığını temsil eder.
Yönetici Özeti
İzleyeceğimiz adımların yönetici özeti aşağıdadır:
Aşama I: Tarama
Açık portları ve arka planda çalışan servisleri ortaya çıkarmak için Nmap kullanacağız. Yalnızca tek bir açık port olacak; bu da 3306 portu ve MariaDB adlı bir servistir.
Nmap taraması sonucunda şu bilgileri bulacağız:
- İşletim Sistemi: Linux (Debian 10)
- Veritabanı Servisi: MariaDB 10.3.27–0+deb10u1
- Açık Port: 3306/TCP (MySQL/MariaDB)
Aşama II: Numaralandırma
MariaDB servisi 3306 portunda açığa çıkmıştı ve kritik biçimde yanlış yapılandırılmıştı. MySQL istemcisini “-u” bayrağıyla kullanıp “— skip-ssl” ile SSL’i devre dışı bırakarak, root hesabı parolasız olarak kimlik doğruladı ve tam yönetici erişimi sağladı. İçeri girdikten sonra “SHOW DATABASES;” komutunu çalıştırmak, standart sistem veritabanlarının yanı sıra HTB adlı benzersiz bir veritabanını ortaya çıkardı; bu da hosta özel özel veriler olduğunu gösteriyordu. Yapısını “SHOW TABLES;” ile numaralandırmak iki tablo belirledi—users ve config—ve bunları “SELECT *” ile sorgulamak, config tablosundaki düz metin root bayrağı dahil tüm saklanan kayıtları açığa çıkardı. Bu aşama, hatalı kimlik doğrulama denetimleri nedeniyle kısıtlamasız veritabanı erişimini ve tam veri ifşasını doğruladı.
Aşama III: İstismar
Standart MySQL/MariaDB istemci araçlarını root kullanıcı adıyla kullanarak, tüm kimlik doğrulama denetimlerini atlayarak veritabanı servisine doğrudan bağlanabileceğiz. Son olarak, “HTB” veritabanının tablolarından birinin içinde root bayrağını bulacağız.
Giriş kısmında daha fazla vakit kaybetmeyelim ve ayrıntılı bir şekilde hacklemeye başlayalım!
Adım 1: Starting Point Laboratuvar Sunucularına Bağlanma.
Hedef makineye saldırmak için aynı ağda olmanız gerekir. Hedef makineye bağlanma konusunda size adım adım rehberlik edecek blog yazımı okuyabilirsiniz.
Adım 2: Makineyi Başlatma ve Görevleri Çözmeye Başlama.
Görev 1: Taramamız sırasında MySQL’i hangi portta çalışırken buluyoruz?
Cevap: 3306
Adım Adım Çözüm:
Hedef makinede çalışan portları belirlemek için ağı taramak amacıyla Nmap kullanacağız. Ya Nmap’in çalıştırmasını istediğimiz bayrakları belirttiğimiz geleneksel yöntemi kullanabilir ya da belirtilen tarama türleriyle birlikte Nmap’i çalıştıran otomatik bir araç kullanabiliriz.
Bu otomatik araç “Nmap Automator” olarak adlandırılır. Aşağıdaki bağlantı üzerinden indirebilirsiniz.
Bu aracı hedefin IP’sinde tam bir tarama çalıştırmak için kullanacağım. Araç, nihai tarama sonuçlarına ulaşmak için Nmap tarafından önceden tanımlanmış tüm olası seçenek ve bayrakları kullanacaktır.
Aracın kullanımı çok kolaydır ve GitHub’daki açıklama bölümünden onun hakkında daha fazla bilgi edinebilirsiniz. Tam bir tarama gerçekleştirmek için aşağıdaki komutu yazın:
bash nmapAutomator.sh --host 10.129.116.14 --type all
Bu nmap taraması, 3306 portunda çalışan MariaDB veritabanı servisi hakkında değerli bilgiler ortaya çıkarır.
Görev 2: Hedef, topluluk tarafından geliştirilen hangi MySQL sürümünü çalıştırıyor?
Cevap: MariaDB
Adım Adım Çözüm:
nmap tarama sonuçlarına göre Debian 10, aynı zamanda MariaDB 10.3.27 sürümünü barındırıyor. Oracle, MySQL’i satın aldıktan sonra, MySQL’in özgün geliştiricileri tarafından geliştirilen, topluluk tarafından bakımı yapılan bir çatal (fork) olan MariaDB ile değiştirildi. MariaDB, ek geliştirmeler eklerken MySQL uyumluluğunu korur. Görüldüğü gibi MariaDB, Debian dahil çeşitli Linux dağıtımlarında MySQL’in yerini almıştır.
Görev 3: MySQL komut satırı istemcisini kullanırken, bir giriş kullanıcı adı belirtmek için hangi anahtarı (switch) kullanmamız gerekir?
Cevap: -u
Adım Adım Çözüm:
MySQL komut satırı istemcisini kullanırken bir giriş kullanıcı adı belirtmek için “-u” anahtarını kullanırsınız.
Söz dizimi şu şekilde olacaktır:
mysql -u usernameAnahtarların uzun biçimini de kullanabileceğinizi unutmayın. -u yazmak yerine “— username=” yazacağız.
Anahtarlar ve nasıl kullanıldıkları hakkında daha fazla bilgi için “mysql -?” veya “mysql — help” yazarak MySQL aracının yardımına bakabilirsiniz.
Kullanılabilecek başka birçok anahtar da vardır, örneğin:
- -h: Bu anahtar, hedef IP’yi belirtmek için kullanılır.
- -p: Bu anahtar, MySQL veritabanına giriş yapmak için kullanılacak kullanıcı adının parolasını istemek için kullanılır.
mysql -u username -p -h "target_ip"“-p” anahtarını yazdığınızda, kullanıcı adının parolasını girmenizin isteneceğini unutmayın. Bizim durumumuzda, “root” kullanıcı adıyla giriş yapacağımız için parola ile kimlik doğrulaması yapmayacağız.
Görev 4: Hangi kullanıcı adı, parola sağlamadan bu MariaDB örneğine giriş yapmamıza izin verir?
Cevap: root
Adım Adım Çözüm:
MariaDB’de, parolayı sağlamadan veritabanına giriş yapmak için “root” kullanıcı adını kullanabilirsiniz. Öte yandan, MySQL veritabanına parola sağlamadan giriş yapmak için kullanılan kullanıcı adı “anonymous” olarak adlandırılır.
Görev 5: SQL’de, bir tablonun içindeki her şeyi görüntülemek istediğimizi sorgu içinde belirtmek için hangi sembolü kullanabiliriz?
Cevap: *
Adım Adım Çözüm:
SQL’de, bir tablodaki her şeyi görüntülemek istediğinizi belirtmek için yıldız (*) sembolünü kullanabilirsiniz. Bunun söz dizimi şöyledir:
SELECT * FROM table_name;“table_name” ifadesini sorgulamak istediğiniz tablonun adıyla değiştirin. Bu, o tablodaki tüm sütunları ve tüm satırları döndürür.
Görev 6: SQL’de, her sorguyu hangi sembolle bitirmemiz gerekir?
Cevap: ;
Adım Adım Çözüm:
SQL’de her sorgu genellikle bir noktalı virgülle (;) bitirilir. Bu, ifadenin sonunu belirtir. Örneğin:
SELECT * FROM table_name;Noktalı virgül, tek bir toplu işlemde birden fazla sorgu çalıştırırken özellikle önemlidir.
Görev 7: Bu MySQL örneğinde, tüm MySQL örneklerinde ortak olan üç veritabanı vardır. Bu hosta özgü olan dördüncüsünün adı nedir?
Cevap: htb
Adım Adım Çözüm:
Hedef sunucudaki tüm veritabanlarını belirlemek ve göstermek için aşağıdaki komutu çalıştıracağız:
mysql -u root -h 10.129.101.67Bu, root adlı bir kullanıcı adıyla hedef sunucuya giriş yapmamızı sağlayacaktır. Ayrıca parola sağlamadan giriş yapmamıza da izin verecektir.
“TLS/SSL error: SSL is required, but the server does not support it” şeklinde bir sorunla karşılaşacağınızı unutmayın. Bu hata, MySQL istemcinizin güvenli bir SSL/TLS bağlantısı kurmaya çalıştığını, ancak hedef MariaDB sunucusunun SSL’i desteklemediğini gösterir. Bu nedenle, bağlantı için SSL’i devre dışı bırakmanız gerekir.

Bu sorunu çözmek için, aşağıdaki ekran görüntüsünde gösterildiği gibi “— skip-ssl” adlı belirli bir anahtar eklemeniz gerekecek. “— skip-ssl” anahtarı, MySQL istemcisine bir SSL bağlantısı denememesini söyler.
mysql -u root -h 10.129.101.67 --skip-ssl
Hedef sunucuya bağlandıktan sonra, tüm veritabanlarını göstermek için aşağıdaki komutu yazın:
show database;Önceki ekran görüntüsüne göre, dördüncü veritabanının “HTB” olarak adlandırıldığını fark edeceksiniz.
Görev 8: root bayrağını gönderin
Cevap: 7b4bec00d1a39e3dd4e021ec3d915da8
Adım Adım Çözüm:
MariaDB’ye başarıyla giriş yapıp tüm veritabanlarını listeledikten sonra, “HTB” veritabanına bağlanacağız ve aşağıdaki komutları sırasıyla çalıştırarak root bayrağını çıkaracağız:
İlk olarak: Bağlantı kurmak istediğimiz veritabanını seçme
use htb;
Bu, “HTB” veritabanıyla bir bağlantı kuracaktır. Veritabanının adının “None” iken “HTB” olarak değiştiğini görebildiğiniz için “HTB” veritabanına geçişin başarılı olduğunu görebilirsiniz.
İkinci olarak: “HTB” veritabanının içindeki tabloları gösterme.
show tables;
2 tablo olduğunu fark edeceksiniz. Biri “config”, diğeri “users” olarak adlandırılmıştır. Aşağıdaki komutu çalıştırarak her tablonun içeriğine gidip görebilirsiniz:
select * from users;
select * from config;

Önceki ekran görüntüsünde gösterildiği gibi, bayrağın “config” tablosunun altında olduğunu göreceksiniz. Sequel Makinesinin root bayrağı: “7b4bec00d1a39e3dd4e021ec3d915da8”
Ek Notlar
MySQL Veritabanı Hiyerarşisi
MySQL Server Instance
├── Database 1
│ ├── Table 1
│ │ ├── Column 1 (Field)
│ │ ├── Column 2 (Field)
│ │ └── Rows (Records)
│ └── Table 2
├── Database 2
└── System DatabasesYapıyı Keşfetmek için Yaygın Komutlar
→ Tüm veritabanlarını göstermek ve kullanmak için:
SHOW DATABASES;
use database_name;→ Geçerli veritabanındaki tabloları göstermek için
SHOW TABLES;→ Sütunları görüntülemek için
#### To Show all columns in a table:
DESCRIBE table_name;
or
SHOW COLUMNS FROM table_name;
#### To Show specific columns
SELECT column1, column2 FROM table_name;
#### To Show detailed column info
SHOW FULL COLUMNS FROM table_name;
#### To Show column info from specific database
SHOW COLUMNS FROM database_name.table_name;→ Satırları görüntülemek için
#### To show all the rows
SELECT * FROM table_name;
#### To show rows with conditions
SELECT * FROM table_name WHERE column_name = 'value';
#### To show limited numbers of rows
SELECT * FROM table_name LIMIT 10;HTB — Tier 1 — Starting Point Aşaması’ndan Sequel makinesini çözme hakkındaki blogumu okumaktan keyif aldığınızı umuyorum.
Başka bir write-up’ta görüşmek üzere!.


