MSA Weekly 5 - “How to Get Sensitive Data Exposure on Web Application”

Cara Mendapatkan Sensitive Data Exposure di Web Application - Sensitive Data Exposure merupakan salah satu common vulnerabilities, atau kerentanan yang umum didalam sebuah web application, maksudnya adalah, terdapat kerentanan pada sebuah web application yang menyebabkan tereksposnya data sensitif yang seharusnya bersifat rahasia, namun bisa diakses oleh attacker secara illegal.

Sensitive data yang dimaksud ini bisa berupa informasi mengenai akun pengguna seperti username, password, PII (Personally Identifiable Information) dan sebagainya. Contoh lainnya adalah file konfig yang terkespos dan masih banyak lagi. Tentu saja kerentanan ini sangat berbahaya, jika informasi sensitif tersebut bisa diperoleh oleh attacker, maka bukan tidak mungkin si attacker bisa mempelajari, memanfaatkan, bahkan menyusup ke dalam sistem secara illegal.

Yang tidak kalah mengerikannya lagi, informasi sensitif ini bisa saja disalahgunakan oleh orang yang tidak bertanggungjawab, misalnya saja dijual di forum-forum underground seperti kasus data breach yang terjadi di salah satu online marketplace terbesar di Indonesia beberapa waktu yang lalu.

How to Get Sensitive Data Exposure on Web Application

Sensitive data exposure ini diklasifikasikan oleh Owasp Top 10 (2017) sebagai A03:2017-Sensitive Data Exposure. Sedangkan di Owasp Top 10 (2021), yaitu versi Owasp terbaru yang saat ini digunakan (Pada saat artikel ini dirilis), sensitive data exposure ini diklasifikasikan kedalam A02:2021-Cryptographic Failures.

Bagaimana Cara Mendapatkan Sensitive Data Pada Web Application?

Baiklah, kita langsung saja masuk ke lab-nya, di artikel kali ini, tutorialjaringan.com akan membahas bagaimana cara seorang threat actor dapat memperoleh sensitive data dengan memanfaatkan kerentanan pada sebuah web application.

Agar tidak perlu repot-repot setup lab dari awal, untuk itu pada tutorial kali ini saya menggunakan lab dari TryHackMe.com, bagi kalian yang ingin mempraktekkannya juga bisa akses room OWASP Top 10 melalui link berikut ini : https://tryhackme.com/room/owasptop10. Saya tidak akan menjelaskan langkah-langkah mengakses mesin lab di TryHackMe, silahkan kalian explore sendiri ya.

Tapi intinya, kita harus punya target, target yang dimaksud tentu saja sebuah web application, entah itu web application yang kalian siapkan sendiri di lab environment maupun website-website yang kalian temukan di internet, bebas.

DISCLAIMER!

Tutorial ini hanya ditujukan untuk pembelajaran semata (educational purpose only), tutorialjaringan.com tidak menyarankan ilmu yang kalian pelajari dari tutorial ini digunakan untuk tindakan illegal yang merugikan orang lain.

Baik, kita lanjut lagi.

#1. Melakukan Reconnaissance

Langkah pertama tentu saja kita melakukan reconnaissance atau information gathering, pada tahap ini kita mengumpulkan informasi mengenai port dan service apa saja yang berjalan di sisi server. Untuk proses ini kita bisa memanfaatkan tools Nmap.

Baca juga : Tutorial Information Gathering Dengan Nmap

Untuk melakukan recon dengan Nmap caranya cukup mudah, silahkan kalian jalankan command berikut di terminal Kali Linux.

$ nmap -sV -Pn -T4 10.10.182.22

Berikut output yang ditampilkan dari hasil scanning menggunakan Nmap.

How to Get Sensitive Data Exposure on Web Application
Dari hasil scanning di atas, ternyata mesin target hanya menjalankan service HTTP Server di port 80 saja, tidak ada service lain yang berjalan.

Oh ya, sebetulnya langkah ini bisa diskip jika kita sudah yakin sebuah website berjalan di port 80 atau 443, tapi kenapa scanning dengan Nmap tetap saya bahas? Karena barangkali ada port lain yang listening di mesin target. Misalnya ada layanan web server yang berjalan di port 8080 ataupun port lainnya.

Next ..

Masih di tahap information gathering, langkah berikutnya yaitu kita melakukan directory enumeration, tujuannya adalah untuk mendapatkan informasi mengenai directory yang ada di web server, untuk melakukan directory enumeration, kita bisa memanfaatkan tools dirsearch.

$ dirsearch -u http://10.10.182.22 -x 403

Command di atas berfungsi untuk melakukan pencarian directory dengan teknik directory brute-force dengan menggunakan wordlist yang sudah dimiliki oleh dirsearch, sedangkan opsi -x 403 tujuannya adalah untuk filtering agar dirsearch tidak menampilkan output dengan HTTP Response Code 403.

How to Get Sensitive Data Exposure on Web Application
Dari output di atas, kita berhasil mendapatkan informasi directory yang accessible, directory yang bisa diakses ini ditandai dengan response code 200. Dari sini kita mendapatkan informasi adanya 2 directory yang bisa kita akses melalui web browser, yaitu :
  • /assets/
  • /login/

Sekarang kita coba akses directory /assets/ melalui URL bar dengan mengetikkan full path seperti ini http://10.10.182.22/assets.

How to Get Sensitive Data Exposure on Web Application
Dari output di atas, kita mendapatkan informasi menarik, yaitu adanya file database dengan nama webapp.db yang terekspos begitu saja.

Tentu saja ini enggak boleh kita lewatkan, jadi kita download dulu file database tersebut.
How to Get Sensitive Data Exposure on Web Application
Silahkan klik tombol Save File untuk mengunduh file webapp.db ke lokal penyimpanan kita.

File yang didownload secara default akan masuk ke dalam folder Downloads di Kali Linux. Kita masuk ke folder tersebut dengan menjalankan command berikut :
$ cd Downloads/
Jika sudah berada di dalam folder Downloads, sekarang kita check dengan command ls.
$ ls -l | grep webapp.db

Kemudian kita check jenis file tersebut dengan command file.

$ file webapp.db

Untuk lebih jelasnya silahkan kalian lihat screenshoot di bawah ini.

How to Get Sensitive Data Exposure on Web Application
Dari sini kita mendapatkan informasi bahwa file webapp.db merupakan file database yang dibuat menggunakan SQLite.

Sekarang kita bedah file webapp.db tersebut, kira-kira di dalamnya ada informasi apa aja sih? Barangkali kita bisa mendapatkan informasi username dan password untuk login ke dalam web application-nya.

Untuk membedah isi database webapp.db, kita gunakan SQLite3, commandnya seperti ini :
$ sqlite3 webapp.db
Setelah masuk ke dalam prompt SQLite, kita ketik command berikut untuk melihat informasi tables yang ada di dalamnya.
sqlite> .tables
Output :
  sessions  users
Ternyata, di dalamnya terdapat satu table yang menarik, yaitu table users yang kemungkinan berisi informasi user akun, sekarang kita coba ekstrak tables users tersebut untuk melihat ada kolom apa aja sih di dalamnya?
sqlite> PRAGMA table_info(users);
Output :
  0|userID|TEXT|1||1
  1|username|TEXT|1||0
  2|password|TEXT|1||0
  3|admin|INT|1||0
Ternyata (lagi), di dalam table users ada kolom userID, username, password, dan admin. Sekarang kita coba bongkar isinya, jalankan command berikut di dalam prompt SQLite.
sqlite> SELECT * FROM users;
Output :
  4413096d9c933359b898b6202288a650|admin|6eea9b7ef19179a06954edd0f6c05ceb|1
  23023b67a32488588db1e28579ced7ec|Bob|ad0234829205b9033196ba818f7a872b|1
  4e8423b514eef575394ff78caed3254d|Alice|268b38ca7b84f44fa0a6cdc86e6301e0|0
Nah lho, kita dapat username dan juga password dalam bentuk hash. Nanti kita akan cari tahu jenis hashnya apa sih? Jika jenis hashnya sudah diketahui, kita akan coba crack dengan teknik rainbow table. Tapi nanti ya ..

Rangkaian query SQL yang kita jalankan di atas lebih jelasnya bisa dilihat pada screenshoot di bawah ini.
How to Get Sensitive Data Exposure on Web Application

#2. Melakukan Password Cracking

Setelah mendapatkan informasi username dan juga password dalam bentuk hash, langkah selanjutnya yaitu kita akan coba melakukan cracking hash password tersebut. Tapi sebelumnya, kita harus mengidentifikasi jenis hash yang digunakan.

Untuk mengidentifikasi jenis hash, kita bisa menggunakan tools hash-identifier yang sudah tersedia di Kali Linux.

Disini kita akan mengcrack hash password dari user admin, untuk itu kita ambil hash passwordnya, yaitu hash password yang ini :

  6eea9b7ef19179a06954edd0f6c05ceb
Kemudian jalankan tools hash-identifier dengan command seperti ini :
$ hash-identifier 6eea9b7ef19179a06954edd0f6c05ceb
Berikut output yang ditampilkan dari command di atas :
  Possible Hashs:
  [+] MD5
  [+] Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username)))
Nice, kita sudah berhasil mengidentifikasi bahwa jenis hash yang digunakan yaitu MD5.

Langkah terakhir yaitu kita crack dengan tools hashcat.

Tapi sebelumnya, kita perlu menyimpan hash tersebut ke dalam file teks (.txt), disini saya simpan ke dalam file dengan nama admin_hash.txt
$ echo "6eea9b7ef19179a06954edd0f6c05ceb" > admin_hash.txt

Jika sudah, langsung saja kita jalankan hashcat dengan command berikut :

$ hashcat -m 0 -a 0 admin_hash.txt /usr/share/wordlists/rockyou.txt

Kita tunggu beberapa saat sampai hashcat berhasil melakukan cracking, jika hashcat sudah menyelesaikan tugasnya dan berhasil melakukan cracking, maka kita akan mendapatkan hasilnya seperti contoh berikut.

How to Get Sensitive Data Exposure on Web Application

#3. Gaining Access

Setelah berhasil mendapatkan informasi username dan password, sekarang kita lanjut ke tahap berikutnya, yaitu Gaining Access.

Gaining Access adalah fase dimana seoarang threat actor akan berupaya untuk mendapatkan akses ke dalam sistem, entah itu masuk ke dalam jaringan yang ingin disusupinya, masuk ke dalam dashboard aplikasi, atau berinteraksi langsung dengan operating system yang menjadi targetnya.

Karena pada lab ini target yang dimaksud adalah sebuah web application, maka kita akan mensimulasikan bagaimana threat actor masuk ke dalam web application dengan memanfaatkan informasi username dan juga password yang sudah berhasil dicrack-nya.

Masih ingat fase recon yang kita lakukan di awal lab? Di fase recon tersebut kita berhasil mendapatkan informasi directory yang accessible, salah satunya yaitu /login/, sekarang silahkan coba kalian akses directory tersebut melalui web browser dengan mengetikkan http://10.10.182.22/login/.

How to Get Sensitive Data Exposure on Web Application
Ternyata ini merupakan login page untuk masuk ke dashboard aplikasi, disini kita bisa coba login dengan username dan juga password yang sebelumnya berhasil dicrack.

Dan ternyata username dan password tersebut valid, kita bisa masuk ke dalam halaman dashboard aplikasi.
How to Get Sensitive Data Exposure on Web Application
Sampai disini kita sudah berhasil gaining access, yaitu mendapatkan akses ke dalam web application menggunakan username dan password yang kita dapatkan dengan cara yang tidak sah, yang mana ini disebabkan karena web application mengekspos informasi sensitive yang seharusnya tidak bisa diakses oleh orang yang tidak memiliki otorisasi.

Conclusion

Dari sini kita bisa menarik kesimpulan bahwa jika suatu web application memiliki celah keamanan yang memungkinkannya untuk mengekspos data sensitif ini bisa sangat berbahaya. Karena informasi sensitif tersebut bisa saja dimanfaatkan oleh threat actor yang memiliki tujuan buruk.

Demikianlah tutorial yang bisa saya sampaikan pada kesempatan kali ini, semoga bermanfaat.

Advertisement
This Newest Prev Post
 

Start typing and press Enter to search