Berikut PoC penetration test dengan target www.ayo.club yang merupakan bagian dari event Ayo Melek IT/Ayo Hacking dalam menyambut hari kemerdekaan Republik Indonesia ke-69. Sebagai catatan, PoC ini dilakukan bukan sebagai persiapan jawaban yang sudah ada sebelumnya, melainkan dilakukan secara realtime setelah sesi kedua dinyatakan selesai. Dengan dipublishnya PoC ini, kami panitia sudah melakukan perubahan password di server target.
Target: www.ayo.club
1a. Pengecekan website, didapatkan informasi bahwa website www.ayo.club menggunakan CMS WordPress versi terbaru yaitu 3.9.2
1b. Secara paralel dengan pengecekan lainnya, bisa dilakukan enumerasi user yang ada di website tersebut. Kita bisa menggunakan wpscan:
1c. Selanjutnya kita coba download list password yang paling sering digunakan yaitu password.lst, kita download dari website aslinya:
1d. Lalu kita mulai lakukan brute force password:
Akhirnya kita bisa mendapatkan password untuk login ke wordpress.
2. Pengecekan lokasi / tempat ayo.club hosting, didapatkan informasi bahwa website www.ayo.club menggunakan cloudflare di front end nya. Untuk itu perlu mencari real IP dibelakang cloudflare. Ada beberapa cara untuk mendapatkan real ip tetapi untuk kasus ini, saya akan berikan satu contoh yaitu menggunakan protokol XML yang mana wordpress menggunakan xmlrpc untuk memudahkan remote posting/publishing (ada salah satu tim yang berhasil dengan metode ini). Berikut caranya:
– Membuat sebuah file, misalnya dengan nama ayoclub.txt yang isinya bisa dilihat disini
Perlu diperhatikan bahwa http://www.ayo.club adalah target dan http://128.199.132.155 merupakan wordpress kita sendiri sebagai destinasi. Di IP 128.199.132.155 ini lah kita akan lihat real ip dari www.ayo.club. Intinya kita meminta supaya www.ayo.club melakukan “pingback” ke ip kita sendiri. Kemudian kita lakukan request menggunakan curl:
curl –data @ayoclub.txt http://www.ayo.club/xmlrpc.php
maka hasilnya bisa dilihat pada screenshoot dibawah ini:
Real IP yang kita dapatkan adalah:Β 198.50.149.28
3. Dari bagian nomor #1 tadi, kita coba login ke wordpress untuk mencoba mengupload php shell:
Kita berhasil login tetapi gagal upload file ekstensi .php. Kita bisa saja mencoba melakukan trick upload ekstensi baru lalu upload file .htaccess untuk meminta webserver eksekusi ekstensi baru tersebut sebagai php atau mencoba brute force password admin yang mungkin bisa diijinkan untuk upload file ekstensi .php, atau setidaknya bisa edit konfigurasi untuk mengijinkan upload php. Sementara itu, saya memutuskan menggunakan hints menanyakan tukang pos untuk langsung masuk ke dalam server
4a. Dengan hint menanyakan tukang pos, saya berpikir kalau itu adalah smtp. Untuk memastikan saya coba scan port yang ada:
4b. Saya mulai melakukan verifikasi user yang valid melalui smtp (saya suka melakukan manual dengan informasi yang saya dapat di seputar target, misalnya nama hostname, nama event, nama admin, dll):
Bagi yang suka menggunakan tools otomatis, silahkan (ada tim yang berhasil nebak 2 user di dalam system melalui protokol http, yaitu menggunakan module UserDir, bagus !!!)
Dari informasi diatas, saya menemukan ada user ayochat dan cdc. Selanjutnya saya perhatikan bahwa selain port 80, 3306, 25 ada port yang menarik yaitu port 2014. Saya coba probe port tersebut
Ternyata port tersebut adalah port ssh.
4c. Saya melakukan brute force dengan user ayochat melalui port ssh (2014):
Sukses mendapatkan password, selanjutnya saya coba login melalui ssh:
Berhasil masuk !!!
5. Selanjutnya saya coba cek ke web root direktori www.ayo.club di /var/www/html (setelah melakukan pengecekan di httpd.conf)
ternyata direktorinya dimiliki oleh nobody. Kita coba cek siapakah user yang menjalankan apache (bisa menggunakan ps awux | egrep “apache|httpd”) tetapi untuk bagian ini saya melakukan pengecekan di httpd.conf (/etc/httpd/conf/httpd.conf):
Ternyata usernya adalah apache. Saya coba cari direktori atau file yang bisa diakses oleh user apache:
Tak satupun direktori atau file yang bisa diwrite/upload oleh user apache, sementara web server dijalankan oleh user apache, artinya semua file yang diupload melalui web, maka ownernya adalah apache. Dengan demikian, kita mengupload file melalui wordpress tadi tetap tidak akan bisa, meski bukan ekstensi .php
6. Setelah masuk ke dalam sistem, ada banyak cara untuk melakukan eskalasi akses, dalam hal ini ketika saya ketik command “id apache”, saya melihat bahwa user apache ada di grup wheel, hal ini sangat menarik karena biasanya grup wheel didalamnya adalah root/super user. Dengan demikian, saya berpikiran bahwa apache setidaknya mempunyai priveleges lebih (dan pikiran saya adalah melalui sudo). Tetapi masalahnya bagaimana saya bisa mendapat akses user apache ? sementara untuk upload php shell tidak bisa karena ownernya adalah nobody. Lalu saya kepikiran menggunakan module UserDir. Saya coba cek melalui http://198.50.149.28/~ayochat apakah userdir aktif atau tidak.
ternyata bisa diakses hanya forbidden, hal ini biasanya karena belum ada akses direktori atau ada direktori tetapi tidak ada file home (index) nya. Untuk itu, saya coba cek di httpd.conf apakah nama home direktori untuk website jika UserDir diaktifkan:
Ternyata namanya adalah public_html. Selanjutnya saya create direktori public_html dan buat sebuah file index.html
Selanjutnya saya coba buat phpshell yang sederhana:
Berhasil. Selanjutnya saya lakukan back connect ke server saya yang lain:
Berhasil.
7. setelah saya berhasil melakukan back connect dengan akses user apache, selanjutnya saya coba buktikan dugaan saya bahwa apache mempunyai privileges lebih melalui sudo:
Bingo !!! Totally pawnd π
Akses sudo ke user apache atau user mysql biasanya di gunakan untuk tugas-tugas otomatis (misalnya cron, at, dll) meskipun ini berbahaya dan tidak disarankan. Jika ada pertanyaan silahkan mengirimkan ke panitia.
Terima kasih
nice pak kalpin….. kami dari goverment hanya melakukan kayak yg seperti bilang,,, tapi kami hanya sampai mengetahui http://www.ayo.club/xmlrpc.php dengan melakukan scanning melalui wpscan melalui bugdork xlmrpc… dan melakukan brutoforce password.. untuk mendapatkan login di dalamnya.. tapi ya karena sering kendala dgn pemadaman listrik akhirnya kami cuma sampai dalam brutoforce password… π
untuk itu nice buat jawaban yang di berikan… itu dapat memberikan pelajaran bagi kami…. π
merdeka pak..!!! π
Merdeka !!!
ikuti sesi ketiga ya…semangat
blajar kayak gituw bikin sering re-install komputer