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

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

YAZARCyberAlp0
YAYINLANMA TARİHİ4 Temmuz 2026
OKUMA SÜRESİ07 DK
HTB Labs — Tier 1 — “Three” Makine Adım Adım Çözümü | Yazan: CyberAlp0

Selam dostlar, ben CyberAlp0. HTB tarafından sunulan yeni bir adım adım çözümle yine karşınızdayım: Tier 1, adı “Three”. Bu makine, sonunda flag'i bulup makineyi çözmenize rehberlik edecek bazı görevleri kapsıyor. Bu blog, görevleri tek tek çözmeniz için size yol gösterecek ve her soruyla ilgili biraz daha fazla bilgi ve ipucu verecek. Bu ipuçları deneyiminizi genişletecek ve zihninizi keskinleştirecek.

Laboratuvarın “THREE” olarak adlandırılmasının nedeni, Amazon AWS'nin S3 bucket'larını kapsamasıdır. s3 bucket, “Simple Storage Service”ın kısaltmasıdır. Amazon Web Services (AWS) platformunda kullanılabilen genel (public) bir bulut depolama kaynağıdır.

Yönetici Özeti

İzleyeceğimiz adımların yönetici özeti aşağıdadır:

Aşama I: Tarama

İlk ağ keşfi, hedefin iki TCP portu açığa çıkardığını ortaya koyuyor; bu da minimal bir saldırı yüzeyine işaret ediyor. Bu portlar, web hizmetini ve uygulamayla etkileşim için gereken temel bileşenleri barındırıyor. Bu hafif yapı, makinenin geniş çaplı hizmet istismarından ziyade bulut tabanlı numaralandırmayı test etmek üzere tasarlandığını gösteriyor.

Aşama II: Numaralandırma

Web numaralandırması, uygulamanın kullandığı alan adı yapısını belirleyerek hem birincil alan adını (thetoppers.htb) hem de kritik bir alt alan adını (s3.thetoppers.htb). Bir DNS sunucusu olmadığından, ana bilgisayar adları manuel olarak şu dosya üzerinden çözümlenmelidir: /etc/hosts. Daha ayrıntılı analiz, keşfedilen alt alan adının arka planda Amazon S3 ile desteklendiğini ve makinenin bulut tarzı nesne depolamaya dayandığını ortaya koyuyor.

Aşama III: İstismar

AWS CLI yapılandırıldıktan ve açığa çıkan S3 bucket'ı numaralandırıldıktan sonra, dosya yüklemelerinin doğrudan arka uç (backend) sunucu tarafından çalıştırıldığı anlaşılıyor. Bir PHP ters kabuğu (reverse shell) hazırlanıp bucket'a yüklenerek, sunucu dosyayı işlediğinde saldırgan uzaktan kod çalıştırma (RCE) tetikleme yeteneği kazanır. Bir dinleyici (listener) kurmak, gelen ters kabuğu yakalar ve tam sistem erişimi sağlar. Bu ayrıcalıklı dayanak noktasından sunucuda gezinmek, saldırıyı tamamlayan root flag'ini ortaya çıkarır.

Girişte daha fazla vakit kaybetmeyelim ve hacklemeye başlayalım!

Unutmayın, her şey hakkında bir şeyler öğrenmek, tek bir şey hakkında her şeyi öğrenmekten çok daha önemlidir.

Adım 1: Starting Point Laboratuvar Sunucularına Bağlanma.

Hedef makineye saldırmak için aynı ağda olmanız gerekir. Sizi adım adım hedef makineye bağlanma konusunda yönlendirecek blog yazımı okuyabilirsiniz.

Adım 2: Makineyi Başlatma ve Görevleri Çözmeye Başlama.

Görev 1: Makinede Kaç TCP Portu Açık?

Cevap: TCP Portu Sayısı = 2 Port

Adım Adım Çözüm:

Bu makinede kaç TCP portunun açık olduğunu bulmak için Nmap kullanabiliriz. Aşağıdaki komutu yazarak.

nmap 10.129.253.225
Bu taramayı daha hızlı ve verimli hale getirmek için ekleyebileceğiniz bazı flag'ler olduğunu unutmayın.
Bu taramayı daha hızlı ve verimli hale getirmek için ekleyebileceğiniz bazı flag'ler olduğunu unutmayın.
Explainshell Linux komut satırını açıklamak için harika bir kaynaktır. Nmap'in farklı flag'leri hakkında daha fazla bilgi edinmek için de kullanabilirsiniz.

Görev 2: Web sitesinin “Contact” bölümünde verilen e-posta adresinin alan adı nedir?

Cevap: thetoppers.htb

Adım Adım Çözüm:

Web sitesindeki iletişim (contact) sayfasını ziyaret ederek “mail@thetoppers.htb” e-posta adresini görebilirsiniz. Dolayısıyla e-postanın alan adı “thetoppers.htb”dir.

Hedefin İletişim (Contact) Sayfası.
Hedefin İletişim (Contact) Sayfası.

Görev 3: Bir DNS sunucusunun yokluğunda, ana bilgisayar adlarını IP adreslerine çözümlemek ve bu ana bilgisayar adlarına işaret eden web sitelerine erişebilmek için hangi Linux dosyasını kullanabiliriz?

Cevap: /etc/hosts

Adım Adım Çözüm:

sudo nano /etc/hosts

DNS Sunucusu şundan sorumludur: Domain Name Service. Yani, ziyaret etmek istediğiniz her web sitesinin IP adresini yazmak yerine, sadece web sitesinin alan adını yazarsınız ve DNS, alan adını bir IP'ye çevirme yükünü üstlenerek isteğinizi hedef sunucuya başarıyla iletir.

Sisteminizde iki tür DNS sunucusu yapılandırılabilir. Bir Genel (Public) DNS sunucusu ve bir Yerel (Local) DNS sunucusu vardır. Genel bir DNS sunucusuna örnek olarak Google DNS (8.8.8.8) verilebilir. Bazen, alan adı genel DNS sunucularında kayıtlı olmayan belirli bir web sitesine erişmemize yardımcı olması durumunda yerel bir DNS sunucusu ekleyebiliriz.

Sisteminizdeki tüm yapılandırma dosyalarını bulabileceğimiz tek yol /etc. DNS yapılandırma dosyalarıyla ilgili iki yol vardır. İlki şu yoldadır: /etc/resolv.conf, diğeri ise şu yoldadır: /etc/hosts.

Genel ve Yerel DNS sunucuları hakkında daha fazla bilgi edinmek veya bunları değiştirmek istiyorsanız, bu dosyayı nano ile açmanız yeterlidir (/etc/resolv.conf). Yerel DNS sunucusuna belirli bir IP kaydetmek istiyorsanız, bu dosyayı nano ile açmanız yeterlidir (/etc/hosts).

Unutmayın, dosyalar üzerinde oynama yapabilmek ve değişiklik yapabilmek için Sudo olmanız gerekir.
Erişmek istediğiniz alan adının IP'sini nano ile eklemeyi bitirdikten sonra, değişikliklerinizi kaydetmek için Ctrl + X ve ardından Y tuşlarına basın.
Hedef makinenin IP adresini, /etc/hosts içinde makinenin alan adı olan thetoppers.htb ile çözümleme
Hedef makinenin IP adresini, /etc/hosts içinde makinenin alan adı olan thetoppers.htb ile çözümleme

Görev 4: Daha ileri numaralandırma sırasında hangi alt alan adı keşfedilir?

Cevap: s3.thetoppers.htb

Adım Adım Çözüm:

Alan adı (domain) ile alt alan adı (subdomain) arasında fark vardır. Alan adı, şunu yazdığınızdadır: (https://www.google.com). Buradaki alan adı sadece Google'dır. Alt alan adları, ana alan adı olan Google ile ilgili ve ona bağlı bir hizmet sunmak için oluşturulur, örneğin (https://mail.google.com). Bu durumda, mail ise alt alan adıdır; ait olduğu ana alan adı ise Google'dır.

Yerel IP'nize (bu senaryoda makinenin IP'sine) yansıtılması için /etc/hosts dosyasına istediğiniz kadar başka alan adı ekleyebilirsiniz.

Ana alan adı (the toppers) altındaki alt alan adlarını, şunun gibi birçok araç kullanarak tanımlayabilirsiniz: wfuzz, ffuf ve gobuster.

Bizim durumumuzda, “thetoppers.htb” alan adına bağlı alt alan adlarını numaralandırmak için gobuster kullanacağız. Alt alan adı numaralandırması için kullanabileceğimiz birçok araç vardır, örneğin ffuf ve wfuzz.

Aşağıda, araçların her biri için kullanacağınız komutlar yer alıyor. Ayrıca, alt alan adlarını fuzz'lamak için kullanacağımız alt alan adı listesinin şu araç tarafından sağlandığını unutmayın: seclists

1- Gobuster

gobuster vhost -u "http://thetoppers.htb -w /usr/share/seclists/Discovery/DNS/subdomain/subdomains-top1million-5000.txt --append-domain

2- wfuzz

wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomain/subdomains-top1million-5000.txt -u "http://thetoppers.htb" -H "Host: FUZZ.thetoppers.htb" --hw 1036 -t 5

3- ffuf

ffuf -w /usr/share/seclists/Discovery/DNS/subdomain/subdomains-top1million-5000.txt -H "Host: FUZZ.thetoppers.htb" -u http://thetoppers.htb

Görev 5: Keşfedilen alt alan adında hangi hizmet çalışıyor?

Cevap: Amazon S3

Adım Adım Çözüm:

Amazon Simple Storage Service (S3), veri kullanılabilirliği, güvenliği ve performansı sunan bir depolama hizmetidir. Her ölçekten birçok müşteri, verilerini depolamak ve veri sızıntısı gibi birçok riske karşı korumak için Amazon S3'ü kullanabilir.

Daha Fazla Oku: Amazon S3 nedir?

Görev 6: Keşfedilen alt alan adında çalışan hizmetle etkileşim kurmak için hangi komut satırı aracı kullanılabilir?

Cevap: awscli (açılımı: AWS Command Line Interface)

Adım Adım Çözüm:

Önceki görevde, alt alan adında çalışan hizmetin, esas olarak verileri siber tehditlere karşı korumak ve depolamak için kullanılan Amazon S3 olduğunu öğrendik. Bu alt alan adında (s3.thetoppers.htb) çalışan hizmetle etkileşim kurmak için awscli.

awscli
Daha Fazla Oku: Amazon Command Line Interface nasıl yapılandırılır?.

Görev 7: AWS CLI kurulumunu ayarlamak için hangi komut kullanılır?

Cevap: aws configure

Adım Adım Çözüm:

“aws configure” komutu, AWS CLI kurulumunu ayarlamanın en hızlı yoludur. Öncelikle, awscli'yi kurmanız gerekir.

sudo apt install awscli
awscli bulunamadığı için kurulması
awscli bulunamadığı için kurulması
“aws configure” komutunu yazmadan önce awscli'yi kurmuş olmamız gerekirdi. Şimdi “apt install awscli” komutu kullanılarak indiriliyor. Her sorulduğunda sadece “y” tuşuna basın. Ya da sessiz (stealth) modda kurmak için “apt install awscli -y” komutunu yazabilirdiniz.

awscli'yi kurduktan sonra, aws configure yazın.

aws configure
awscli'nin yapılandırılması. AWS ID, Secret Access Key, Region ve çıktı biçimini herhangi bir şeyle yapılandırabilirsiniz.
awscli'nin yapılandırılması. AWS ID, Secret Access Key, Region ve çıktı biçimini herhangi bir şeyle yapılandırabilirsiniz.

AWS'yi yapılandırdıktan sonra, bir sonraki görevde olduğu gibi tüm bucket'ları listeleyebileceğiz.

Daha fazla bilgi için: AWS CLI Yapılandırma.

Görev 8: Yukarıdaki araç tarafından tüm S3 bucket'larını listelemek için kullanılan komut nedir?

Cevap: aws s3 ls

Adım Adım Çözüm:

Amazon S3 (Simple Storage Service) Bucket'ları, dosyaları (namıdiğer “Nesneler”) depolamak için kullanılır. AWS Cloud'da bu nesnelerin boyutu birkaç bayttan terabaytlara kadar değişir. S3 Bucket'larının başlıca avantajlarından biri ölçeklenebilirliğidir; çünkü s3 bucket'ında sınırsız miktarda veri depolayabilirsiniz.

Amazon S3 (Simple Storage Service) bir balona benzetilebilir. İçine ne kadar hava doldurduğunuza bağlı olarak esner. Amazon S3 de tıpkı bu balon gibi ölçeklenebilir; depolama ihtiyaçlarınızı karşılamak için ölçeklenir. Az miktarda veri depolamaya başlayabilirsiniz ve daha fazla veri depoladıkça depolama alanı artar.

Daha fazla bilgi için bu blogu okumanızı öneririm: AWS s3 Bucket.

Amazon S3 Hizmeti'nin tüm S3 bucket'larını listelemek için, aşağıdaki komutu ( — endpoint=URL) flag'i ile birlikte yazacaksınız. Bu kaynağa göre, bu seçenek tüm S3 bucket'larını listelemenize yardımcı olacaktır.

aws s3 ls --endpoint=http://s3.thetoppers.htb s3://thetoppers.htb

Aşağıdaki yanıtı alacaksınız

“aws s3 ls” komutunda — endpoint seçeneğini kullanarak s3 Bucket'larının listelenmesi
“aws s3 ls” komutunda — endpoint seçeneğini kullanarak s3 Bucket'larının listelenmesi
Not: s3 amazon sunucularına bağlanırken aşağıdaki hatayla karşılaşabilirsiniz.
Amazon s3 Sunucularındaki s3 Bucket'larının listelenmesi
Amazon s3 Sunucularındaki s3 Bucket'larının listelenmesi
Could not connect to the endpoint URL: "http://s3.thetoppers.htb/thetoppers.htb?list-type=2&prefix=&delimiter=%2F&encoding-type=url"

Bağlantı Sorunu: Endpoint URL'sine bağlanılamadı: {Bağlanmaya çalıştığınız URL}.

Çözüm: AWS S3 bucket sunucularına s3.thetoppers.htb üzerinden başarıyla bağlanmak için, s3.thetoppers.htb'yi “THREE” makinesinin IP adresine çözümlemek üzere /etc/hosts dosyasını değiştirmelisiniz

IP adresini makinenin alan adı ve alt alan adına çözümlemek için s3.thetoppers.htb'nin /etc/hosts dosyasına eklenmesi.
IP adresini makinenin alan adı ve alt alan adına çözümlemek için s3.thetoppers.htb'nin /etc/hosts dosyasına eklenmesi.

Görev 9: Bu sunucu, hangi web betik dilinde yazılmış dosyaları çalıştıracak şekilde yapılandırılmıştır?

Cevap: PHP

Görev 10: Makinenin Root Flag'inin Gönderilmesi

Cevap: a980d99281a28d638ac68b9bf9453c2b

Adım Adım Çözüm:

Sunucu, PHP ile yazılmış dosyaları okuyacak şekilde yapılandırıldığından, AWS S3 bucket'larına bağlanarak sunucuya bir PHP shell yüklemeye çalışacağız.

Bu shell'i sunucuya kopyalamak için Kali Linux'taki webshells komutunu kullanacağız.

webshells komutuna gitme. /usr/share konumunda bulunur.
webshells komutuna gitme. /usr/share konumunda bulunur.

Web shell'ler, /usr/share yolundaki bir alt dizinde bulunan çalıştırılabilir bir dosyadır. Birçok PHP webshell vardır; biz yalnızca “php-reverse-shell.php” dosyasını kullanacağız. IP adresini değiştirmek için nano komutunu kullanacağız.

Aşağıdaki Adımları İzleyin:

İlk olarak, HTB VPN'e bağlıyken size verilen IP'yi şunu yazarak öğrenin: ifconfig

VPN'e bağlandığımda kali'ye atanan IP adresi.
VPN'e bağlandığımda kali'ye atanan IP adresi.

İkinci olarak, /etc/hosts dosyasını değiştirin.

Yerel IP adresi “127.0.0.1”i “10.10.14.63” ile değiştirin
Yerel IP adresi “127.0.0.1”i “10.10.14.63” ile değiştirin

Yerel IP adresi “127.0.0.1”i, makinenin VPN'ine bağlanırken bize verilen IP adresiyle değiştireceğiz. Ayrıca Port numarasını da “8888” olarak değiştireceğiz.

Değişikliklerinizi kaydetmek için Ctrl + X ve ardından Y tuşlarına basın.

Şimdi PHP shell'i yapılandırdınız. Tek yapmanız gereken bu shell'i sunucuya yüklemek.

Üçüncü olarak, PHP shell'i sunucuya yükleyin

aws s3 --endpoint=http://s3.thetoppers.htb cp php-reverse-shell.php s3://thetoppers.htb
PHP Shell kullanarak sunucuya ters bağlantı kurmak için PHP shell'in AWS s3 sunucularına yüklenmesi
PHP Shell kullanarak sunucuya ters bağlantı kurmak için PHP shell'in AWS s3 sunucularına yüklenmesi
Not: PHP'nin başarıyla yüklendiğinden emin olmak için “ls” komutunu çalıştırın.
aws s3 ls --endpoint=http://s3.thetoppers.htb s3://thetoppers.htb
PHP shell betiğinin sunucuya başarıyla yüklendiğinden emin olma.
PHP shell betiğinin sunucuya başarıyla yüklendiğinden emin olma.

Dördüncü olarak, PHP shell'den gelen Bağlantıyı dinleme

Yapılandırdığımız yerel IP adresinde ve 8888 portu üzerinden PHP ters kabuğundan gelen tüm bağlantıları dinlemek için Netcat çalıştıracağız.

nc -lnvp 8888
Sunucuya yüklediğimiz PHP shell'de yapılandırılan tüm gelen bağlantıları dinlemek için netcat'in çalıştırılması.
Sunucuya yüklediğimiz PHP shell'de yapılandırılan tüm gelen bağlantıları dinlemek için netcat'in çalıştırılması.
Web shell ile saldırgan makine arasındaki bağlantı
Web shell ile saldırgan makine arasındaki bağlantı

Beşinci olarak: Makinenin flag'ini yakalama

Şimdi, sunucunun içinde açık bir shell'imiz var; bu da sunucuyu kontrol etmemize ve üzerinde komut çalıştırmamıza olanak tanıyor. Sunucuda gezinerek, /var/www yolunda flag.txt dosyasını bulacağız.

flag.txt dosyasını bulmak için dizinlerde gezinme
flag.txt dosyasını bulmak için dizinlerde gezinme

THREE Makinesinin flag'i “a980d99281a28d638ac68b9bf9453c2b”dir.

Umarım HTB — Tier 1 — Starting Point aşamasından Three makinesini çözme hakkındaki blogumu okumaktan keyif almışsınızdır.

Başka bir write-up'ta görüşmek üzere!

[ #Kali Linux ][ #THREE ][ #Web Application Security ][ #cyberalp0 ][ #cyberskii ][ #Penetration Testing ][ #Web Application Penetration Testing ][ #bug bounty ]