Cyber Security Enthusiast

Bermula Dari Adminer Hingga Mendapat Akses Root

B

Description

Beberapa waktu lalu disaat yang senggang, secara tidak sengaja saya menemukan halaman adminer.php di salah satu website, sebut saja website mawar. Secara framework saya tidak tahu framework apa yang dipakai, hanya saja the power of iseng dan penasaran maka saya kjashdkasasdjanhrz… Kuy aja dah, jadi begini ceritanya~

Affected Endpoint

  • http://www.[redacted].id/adminer.php
  • http://www.[redacted].id/info.php
  • http://www.[redacted].id:8080

Vulnerability Details

  • Title: Adminer 4.3.1 up to 4.6.2 File Disclosure Vulnerability (Linux).
  • Impact: Attackers can abuse this flaw to fetch sensitive files of the target system.
  • CVSS Score: 7.5
  • CVSS Vector: AV:N/AC:L/Au:N/C:P/I:P/A:P
  • Source: securityspace.com

Steps to Reproduce

  • Diketahui versi adminer pada website target adalah 4.3.1, sedangkan yang terbaru saat ini adalah versi 4.8.0.
Adminer 4.3.1
  • Setelah memahami cara kera celah keamanan ini adalah saya tidak perlu login menggunakan kredensial milik website tersebut, karena yang dilakukan adalah saya melakukan remote akses database (MySQL) pada server saya di adminer tersebut.
  • Setelah saya lakukan konfigurasi dengan membuat database dummy dan enable remote access pada mysql server saya, saya lakukan login pada adminer website target.
Berhasil login melalui adminer website target
  • Langkah selanjutnya adalah menggunakan fitur SQL Command untuk melihat file apa saja yang terdapat dalam website target, menggunakan query berikut lalu execute.
load data local infile '/etc/passwd' into table dmp fields terminated by "\n";
  • Dari query diatas saya memberi perintah pada sql untuk membaca file dalam /etc/passwd lalu memasukkan setiap baris kode kedalam tabel dmp yang sudah saya siapkan.
Isi Query yang akan dijalankan
Query berhasil dijalankan
  • Setelah query dijalankan maka saya cek isi dalam tabel dmp, hasilnya seperti berikut.
Isi file dalam /etc/passwd berhasil dibuka
  • Oke gooooood! sekarang tinggal mencari hal-hal apa saja yang bisa saya telusuri, mungkin seperti akses database, hardcoded password, kesalahan konfigurasi, or whatever lah pokoknya gass keun~
  • Tantangan yang dialami oleh celah ini adalah sulitnya melakukan directory listing sehingga target pembacaan file perlu dilakukan bruteforce, guessing, atau memanfaatkan misconfiguration yang ada, salah satunya penanganan error handle yang tidak semestinya (biasanya menampilkan path lokasi file, yang mengalami error pada kode), contohnya sebagai berikut.
Improper Error Handler pada salah satu halaman website target
  • Dari misconfiguration ini didapat informasi bahwa letak direktori website di server berada dalam /var/www/html/_core, awalnya saya mengira bahwa website target menggunakan framework CodeIgniter dan ternyata bukan, hingga saya berinisiatif untuk melakukan bruteforce agar nama direktori selanjutnya dapat ditemukan.
  • Munculah pertanyaan selanjutnya, “bagaimana cara saya melakukan bruteforce, sedangkan saya tidak tau patokan seperti apa yang bisa ditemukan kalau direktori hasil bruteforce tersebut valid atau memang benar ada?”.
  • Dan ternyata setelah sedikit mencoba eksperimen pada pengiriman sql query didapatlah kesimpulan bahwa jika hasil error menunjukan “Errcode: 2” maka not found, sedangkan “Errcode: 21” maka forbidden (artinya direktori tersebut ada, hanya tidak bisa diakses karena perlu nama endpoint file yang tepat agar query berstatus sukses).
Errcode: 2 (not found)
Errcode: 21 (forbidden)
  • Nice one! tinggal lakukan konfigurasi pada burp suite maka list direktori yang ada akan berhasil didapatkan.
Hasil bruteforce list direktori
  • Terdapat beberapa list direktori yang seperti application, config, lib, system dan template.
  • Penasaran dengan isi dalam direktori config maka saya lakukan bruteforce kembali untuk menemukan nama file yang ada pada direktori tersebut, namun sambil melakukan bruteforce saya coba menebak-nebak karena biasanya kalau konfigurasi database ada dalam file dengan nama seperti db.php atau database.php.
  • Dan yak benar ternyata terdapat file db.php dimana berisi konfigurasi akses kedalam database.
Akses database didapatkan
  • Nghokey, seperti biasa saya mencoba beberapa password yang saya temukan untuk login kedalam ssh dan jeng jeng jeng ternyata salah satu password database sama dengan yang digunakan oleh akun root 🙂
Akun root berhasil diakses
  • Sekarang apa ? entahlah… kayanya udah deh, di report pun bakal percuma karena ini salah satu target milik kjashdkasasdjanhrz hahaha 😀

Miscellaneous

Dari perjalanan bagaimana saya mencari akses root ini terlihat sangat “berjalan dengan lancar” bukan? tentu saja tidak semudah apa yang saya sampaikan tuan, sebenarnya saya sempat stuck dengan step sister mencari cara exploit yang tepat, bruteforce nama direktori, dan mencoba kombinasi password yang saya temukan dengan akun user yang ada.

Cara melakukan exploit dengan adminer ini adalah salah satu contoh “real case” dari salah satu mesin yang ada di hack the box yaitu bernama Admirer, bisa juga teman-teman baca walkthrough dari salah satu pemain yaitu pada link https://atsika.info/htb-admirer/.

Tapi memang rasanya asik aja kalau sudah berjuang dan hasil akhirnya berhasil dicapai 🙂 oke deh itu aja, tengkiu.

Add comment

Cyber Security Enthusiast