Wednesday Challenge : Publicly Accessible GIT Directory

Istilah "bug bounty" saat ini sedang ramai dibicarakan, bahkan sudah bisa dikatakan sedang hype dikalangan orang-orang yang suka bergumul dengan security. Sementara saya sendiri bukan orang yang aktif sebagai bug bounty hunter, namun suka sekali membaca setiap write up yang ditulis yang berhubungan dengan bug bounty ataupun security. Ketika memiliki waktu luang, saya akan mengisi waktu tersebut dengan untuk mengikuti beberapa program di Bugcrowd dan juga Hackerone. Indonesia sendiri memiliki banyak bug bounty hunter yang cukup handal, mereka bisa menghasilkan puluhan ribu setiap bulannya.

Ketika sedang merasa cukup bosan, ada 2 hal yang seringkali saya lakukan. Pertama, mengerjakan projek iseng untuk saya pribadi dan yang kedua adalah mengikuti program bug bounty. Namun yang lebih sering saya lakukan adalah opsi yang pertama. Cukup membantu sebagai terapi jika kamu merasa jenuh dengan sesuatu yang sudah sering kamu lakukan, contohnya adalah bekerja.

Senin kemarin tiba-tiba terpikirkan di kepala saya untuk membuat sebuah challenge yang cukup ringan, namun erat kaitannya dengan bug bounty. Tujuannya agar dapat membuat banyak orang untuk mencari tau dan juga belajar bersama. Akhirnya challenge tersebut dapat dieksekusi dengan hadiah yang tidak terlalu wah, karena tujuannya emang hanya untuk "bermain" dan mengisi waktu luang.

Sekilas tentang Wednesday Challenge

Challenge ini dibuat berdasarkan kejadian sebenarnya yang seringkali terjadi dan juga berhubungan dengan aktivitas bug bounty, bahkan sering terjadi di beberapa company yang cukup besar. Akibat dari server misconfiguration, suatu aplikasi dengan mudah compromised.

Selasa malam saya selesai merampungkan ide untuk challenge ringan ini. Setelah itu dilanjutkan untuk menyiapkan sebuah server dan semua materi yang dibutuhkan. Rabu malam, challenge tersebut sudah saya publish menggunakan akun Facebook pribadi.

Proof of Concept

Diberikan sebuah challenge dengan target https://login.teguh.co dan diberikan sebuah note untuk tidak menghabiskan waktu dengan bruteforce. Source : https://www.facebook.com/photo.php?fbid=2762947363752735

Ketika diakses maka tampilannya adalah sebuah form login. Setelah itu kita coba login menggunakan email admin@teguh.co dan password admin untuk melihat pesan error yang ditampilkan. Maka hasilnya sebagai berikut :

Karena sebelumnya sudah diberikan pesan untuk tidak menghabiskan waktu dengan bruteforce, maka sebaiknya itu tidak dilakukan. Setelah itu kita coba view-source, namun tidak ada sesuatu yang menarik. Selanjutnya kita lanjutkan dengan information gathering. Salah satu opsi yang bisa digunakan adalah menggunakan nmap untuk melihat services yang berjalan di server target. Hasilnya sebagai berikut :

Dari sekian banyak services yang berjalan di server target, mysql adalah service yang cukup menarik. Port 3306 dibuka dan bisa diakses oleh publik dan remote access diizinkan. Setelah itu dilanjutkan dengan melakukan scanning untuk mencari clue lainnya, salah satu yang bisa dilakukan adalah scanning directories. Salah satu tools yang bisa digunakan adalah https://github.com/maurosoria/dirsearch.

python3 dirsearch.py -u https://login.teguh.co/ -e php

Hasilnya ditemukan banyak directory dengan http code 200, yang paling menarik adalah directory .git. Ketika diakses, directory listing untuk setiap dir ternyata dalam kondisi aktif.

Setelah itu kita coba dump dan juga extract .git directory di server target untuk menemukan clue lainnya.

Untuk melanjutkan ini, tools yang bisa digunakan adalah GIT Dumper dan juga GIT Extractor. Tersedia dan bisa di download melalui https://github.com/internetwache/GitTools.

bash gitdumper.sh https://login.teguh.co/.git/ teguh

Hasilnya sebagai berikut :

Setelah itu kita lanjutkan untuk meng-extract .git directory yang sudah di dump.

bash extractor.sh /Users/teguh/tools/dumper/yoman/Dumper/teguh /Users/teguh/tools/dumper/yoman/Extractor/teguh

Hasilnya ditemukan 3 object directory dari directory .git tersebut. Pada object 0-08a88d1c4748e189b15683600e245c4b393d5159 terdapat sebuah directory config yang berisi sebuah file PHP yakni database.php.

File tersebut berisi koneksi ke sebuah database diantaranya adalah host, user, database name dan juga password.

Selanjutnya dilanjutkan dengan mencoba koneksi ke IP 167.99.77.196 pada port 3306 menggunakan telnet.

telnet 167.99.77.196 3306

Koneksi berhasil dilakukan dan kita bisa melanjutkan dengan remote login ke database h4cktivity.

mysql -u challenge -h 167.99.77.196 -p

Setelah koneksi berhasil dilakukan, selanjutnya memeriksa tables di dalam database tersebut.

Ditemukan table flag dan juga login. Table flag berisi sebuah flag. Sementara table login berisi informasi sebuah akun berikut dengan passwordnya.

Password tersebut menggunakan hash md5, selanjutnya kita coba mencari tau hash tersebut. Tool yang bisa digunakan adalah https://tools.hack.co.id/md5

Hasil dari hash 8a9a97b600ae9167792c9216a04aa03c adalah youfoundme.

Setelah itu kita lanjutkan untuk login ke https://login.teguh.co menggunakan email h4cktivity@teguh.co dan password youfoundme.

Login berhasil dan kita langsung diarahkan ke https://login.teguh.co/dashboard untuk melanjutkan submit flag yang sudah didapatkan tadi. Setelah mengisi data dan juga flag, lanjutkan dengan submit dan kemudian mendapatkan sebuah pesan seperti ini di halaman https://login.teguh.co/completed.

Hall of Fame

Challenge ini berhasil diselesaikan oleh nama-nama berikut ini :

Kesalahan

Challenge ini dibuat berdasarkan server misconfiguration, diantaranya adalah :

  • Directory Listing dalam kondisi aktif
  • GIT directory dapat diakses oleh publik
  • Opsi remote access mysql diaktifkan dan mengizinkan semua IP untuk melakukan koneksi

Dalam kasus ini, server target menggunakan webserver nginx yang sebenarnya secara default fungsi directory listing sudah di-disable. Namun karena fungsi autoindex di set on maka fungsi directory listing akan berubah kembali menjadi aktif. Untuk directory .git sendiri apabila bisa diakses oleh publik, ini sangat berakibat fatal. Karena siapapun dengan mudah mendapatkan source code dari directory git tersebut.

Terima kasih dan semoga bermanfaat. Sampai jumpa di Wednesday Challenge berikutnya.