Resiko serangan dalam web application (injection)
Menurut OWASP (Open Web Application Security Project) ada sepuluh macam serangan yang sering terjadi pada web application. OWASP adalah sebuah non profit komuniti yang bertujuan untuk mengembangkan metodologi, program program, dokumentasi dan sebagainya yang berhubungan dengan keamanan web application. Data dari OWASP menunjukkan bahwa dalam lima tahun terakhir teknik serangan tidak berubah seperti yang dapat dilihat pada table dibawah ini:
Pada table diatas terlihat bahwa teknik serangan dari top 1 sampai dengan top 6 pada tahun 2010 adalah sama dengan teknik serangan pada tahun 2013. Oleh karena itu sangatlah penting bagi pengembang web application untuk mengetahui lebih detail ke lima teknik serangan tersebut, yaitu: Injection, Broken authentication and session management, Cross site scripting (XSS), In secure direct object references, dan Security misconfiguration.
Dari table diatas, serangan yang paling sering terjadi adalah injection. Oleh karena itu dalam tulisan ini saya akan membahas tentang injection dengan memberi contoh menggunakan SQL injection. Semua orang dapat mempelajari dan melakukan SQL injection dengan mudah melalui website dan video youtube. Dibawah ini adalah diagram tentang injection dari website OWASP.
Pada diagram diatas dikatakan bahwa yang dimaksud orang yang melakukan serangan injection adalah setiap orang yang mengirimkan data yang tidak benar ke server melalui web application, baik itu ekternal maupun internal user. Data tidak benar ini dapat berupa text yang sederhana maupun yang rumit.
Adapun contoh yang paling sederhana adalah SQL injection dengan menginject beberapa karakter pada web application, terutama pada halaman login nya, seperti gambar dibawah ini:
Apabila web application ini tidak dibuat dengan benar maka kita dapat login dengan memasukkan beberapa karakter pada kolom ID dan Password nya dengan menuliskan ‘ or 1=1 –
ID: ‘ or 1=1 —
Password: ‘ or 1=1 —
Pada umumnya koding untuk mendapatkan ID dan password adalah sebagai berikut:
<h2>GETform</h2>
<form method=”get” action=”get2.php”>
text:<input type=”text” size =40 id=”id”>
<input type=”password” size=40 password=”password”
<input type=submit value=”Submit Get” >
</form>
Dalam hal ini setelah user menekan tombol login atau submit maka karakter yang ada di bok id dan password akan diverifikasi oleh sebuah file, yang dalam contoh ini adalah file dengan nama get2.php.
Di dalam file get2.php ada beberapa line code yang penting untuk memverifikasi id dan password ini, yang pada umumnya adalah seperti berikut:
SELECT fieldlist
FROM table
WHERE field = ‘idnumber’
Tetapi ketika user memasukkan ‘ or 1=1, maka akan menjadi
WHERE field = ‘ ‘ or 1 = 1
Oleh karena itu, apabila pengembang web application tidak memperhatikan kelemahan ini, maka kita dapat login dengan memasukkan karakter tersebut diatas pada kolom ID dan password. Sebab setelah command WHERE , statement 1 = 1 akan di proses terakhir jadi apapun parameter sebelum 1 = 1 tidak akan berpengaruh. 1 = 1 artinya match atau true. Oleh karena itu user dapat login ke web tersebut.