Menangkal Serangan Directory Traversal di PHP
Directory Traversal atau biasa disebut Path Traversal merupakan jenis serangan HTTP exploit yang memungkinkan attacker (penyerang) dapat mengakses direktori dan dapat mengeksekusi perintah diluar dari direktori root web server.
Ketika web kita terdapat vulner (kelemahan) terhadap Directory Traversal, maka attacker dapat mengakses file-file pada sistem dengan mudah, bahkan attacker dapat pula menyisipkan perintah-perintah berbahaya untuk mengambil alih server kita.
Salah satu contoh dari serangan ini misalnya kita ingin menampilkan buku dalam format pdf dengan url sebagai berikut:
http://192.168.2.201/perpustakaan/read/?book=owasp.html&view=Read
Pada dasarnya parameter diatas digunakan untuk memanggil file pada web server. Akan tetapi dengan parameter tersebut attacker dapat menyisipkan script untuk mengakses file lain, misalnya:
http://192.168.2.201/perpustakaan/read/?book=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd&view=Read
Dengan parameter diatas, attacker mencoba untuk mengakses file /etc/passwd untuk melihat user pada sistem linux.
Tentunya hal ini berbahaya, sehingga kita perlu melakukan antisipasi agar serangan tersebut tidak terjadi. Salah satu teknik antisipasinya yaitu dengan melakukan perubahan pada script di PHP. Disitu kita tambahkan filter yang tidak memperbolehkan user untuk mengakses direktori lain dengan perintah back (../).
Misalnya script utk menampilkan buku diatas:
$book = $_GET['book']; if (strpos($book, '../') == $book) { echo "ERROR: Sory ya bro!"; } else { include ($book); }
Semoga bermanfaat..:-)