Wildcard Vulnerability

Pengertian Wildcard

Sebelum kita lebih jauh membahas mengenai vulnerability wildcard, kita perlu tau apa itu wildcard. Wildcard merupakan sebuah karakter yang menjadi placeholder atau tempat penampung yang biasanya terdiri dari satu karakter seperti *, ?, #, dan lainnya. Karakter wildcard tersebut memiliki arti yang berbeda-beda pada setiap karakter. Berikut merupakan beberapa contoh dari karakter wildcard:

  • Tanda bintang atau asterisk (*), digunakan untuk mencocokkan berapapun jumlah karakter. Misalnya kita menggunakan tanda bintang seperti berikut “fil*”, maka hal tersebut akan memunculkan fill, file, files, film, films, filename, fila, dan masih banyak lagi (kalau penasaran bisa cek link berikut untuk menemukan kata apa saja yang akan ditemukan dengan awalan “fil” https://www.thefreedictionary.com/words-that-start-with-fil).
  • Tanda tanya atau question mark (?) digunakan untuk mencocokkan satu karakter dalam posisi tertentu. Misalnya kita menggunakan contoh yang mirip dengan wildcard asterisk “fil?”, maka hal tersebut akan memunculkan fill, file, film, dan fila. Jadi hanya mengisi satu karakter saja. 
  • Tanda pagar atau number sign (#), digunakan untuk mencocokan satu karakter dalam bentuk angka. Misalnya kita menggunakan tanda pagar seperti berikut “202#”, maka hal tersebut akan memunculkan 2020, 2021, 2022, 2023, dan seterusnya hingga 2029. Secara singkat, wildcard digunakan untuk menemukan item tertentu saat kita tidak bisa mengingat persis cara suatu kata atau string dieja maupun ditulis.

Wildcard sendiri biasa digunakan dalam banyak bahasa pemrograman dan tidak terkecuali Linux. Penggunaan wildcard dalam Linux biasanya digabung dengan command yang lain. Misalnya menggunakan tanda bintang (*) yang digabung dengan command rm (command untuk menghapus file dalam Linux) menjadi “rm *”. Dengan command tersebut, maka semua file yang ada dalam folder tersebut akan terhapus.

Exploit

Dari gambar di atas, Kita ketahui bahwa pada folder ~/x terdapat dua buah file yang bernama 1.txt dan –help. Ketika kita melihat isi dari file 1.txt menggunakan perintah cat, isi dari file 1.txt akan terlihat. Sedangkan, ketika kita ingin melihat file –help, program mengira bahwa user ingin menampilkan halaman bantuan.

Kemudian, pada folder yang sama, ketika kita ingin melihat isi semua file dengan menggunakan tanda (*) (asterik), perintah cat akan mengubah tanda (*) menjadi “cat 1.txt –help”. Sehingga, cat mengira bahwa user sedang ingin menampilkan halaman bantuan. Dari sini, kita ketahui bahwa kita bisa menggunakan hal ini untuk kegiatan lain seperti privilege escalation atau mengganti kepemilikan sebuah file.

Dari gambar di atas, dapat kita lihat bahwa file 1.txt, 2.txt, dan 3.txt merupakan file milik user kali dan group kali. Ketika user root ingin mengganti kepemilikan file-file tersebut (menggunakan command chown) menjadi milik user dan group abigail (abigail:abigail) (abigail bisa diganti sesuai user dan group yang terdapat di komputer kalian masing-masing) dengan menggunakan tanda bintang (*), string “abigail:abigail” yang diharapkan menjadi input untuk nama user dan nama grup malah dianggap sebagai sebuah file. Sedangkan “–reference=test.txt” yang merupakan nama file malah dianggap sebagai sebuah perintah untuk menerima input user dan group dari file file.txt. Dengan begitu, dapat kita lihat bahwa kepemilikan semua file berubah sesuai dengan kepemilikan file test.txt (user root dan grup root).

Arjuna Accha Dipa & Erik Hendrawan