HackTheBox – Başlangıç Noktası Aşaması – Seviye 1/

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

YAZARCyberAlp0
YAYINLANMA TARİHİ4 Temmuz 2026
OKUMA SÜRESİ05 DK
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
Hedef makinede açık olan port 3306’dır.
Hedef makinede açık olan port 3306’dır.

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 username
Anahtarları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.67

Bu, 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 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. Bağlantı için SSL’i devre dışı bırakmanız gerekir.
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. 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
MariaDB’ye bağlanma ve hedef sunucu tarafından desteklenmediği için SSL kimlik doğrulamasını atlama.
MariaDB’ye bağlanma ve hedef sunucu tarafından desteklenmediği için SSL kimlik doğrulamasını atlama.

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;
“HTB” veritabanına geçiş yapma.
“HTB” veritabanına geçiş yapma.

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;
HTB veritabanının içindeki tabloları gösterme.
HTB veritabanının içindeki tabloları gösterme.

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;
“users” tablosunun tüm içeriğini gösterme.
“users” tablosunun tüm içeriğini gösterme.
“config” tablosunun tüm içeriğini gösterme.
“config” tablosunun tüm içeriğini gösterme.

Ö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 Databases

Yapı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!.

[ #Kali Linux ][ #sql injection ][ #sql server ][ #cyberskii ][ #cyberalp0 ][ #mariadb ][ #Web Application Penetration Testing ][ #Web Application Security ][ #bug bounty ]