Advertisement
Ribang

Ataacker vs depeloper 2 (part 1)

Nov 19th, 2017
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Attacker vs depeloper 2 (part 1)
  2.  
  3. Cerita ini di awali oleh sang attacker yang mencari celah sebuah website yang di buat oleh si Developer
  4. setelah mengecek website tersebut sang attacker mnemukan celah ( bug ) yang amat fatal pada website yang di buat developer
  5. sang attacker menemukan celah SQL Injecton pada website si developer
  6.  
  7. celah SQL Injection ini teramat fatal karena sang attacker mampu memsukan sebuah injeksi untuk melihat isi dari database website tersebut. celah SQL Injection itu sendiri terjadi ketika sebuah request di website yang langsung masuk ke dalam query SQL website tersebut sehingga sang attacker mampu memanipulasi injeksi guna melihat data-data sensitif pada database semisal username dan password  si database tersebut.
  8.  
  9. cerita kembali kepada sang Attacker yang menemukan celah SQL Injection tersebut pada detail berita pada web si developer
  10.  
  11.  berita.php?id=1
  12.  
  13. si attacker mengetahui bahwa url itu bug dengan cara menambahkan tanda ' pada akhir atau awal dari nilai id
  14.  
  15.  berita.php?id=1'
  16.  
  17. ketika di masukan tanda itu website pun meresponnya dengan mengeluarkan error dan itu bisa di katakan vuln
  18. setelah mengetahui bahwa itu vuln maka sang Attacker pun melanjutkan aksinya dengan menambahkan perintah order by yang berfungsi untuk mencari jumlah kolom
  19.  
  20.  berita.php?id=1 order by 1-- true
  21.  berita.php?id=1 order by 7-- true
  22.  berita.php?id=1 order by 10-- true
  23.  
  24. sampai pada angka yang mengeluarkan error
  25.  
  26. sang attacker sengaja meloncat-locat angkanya di kakrenakan untuk mempersingkat waktu
  27.  
  28.  berita.php?id=1 order by 11-- eror
  29.  
  30. jadi attacker berkesimpulan bahwa ada 10 kolom yang di gunakan untuk menampilkan sebuah artikel
  31.  
  32. sekarang sang attackker melanjutkan untuk melihat kolom mana yang di gunakan untuk mengeluarkan data pada website tersebut dengan cara menyisipkan union select dan di ikuti jumlah kolom
  33.  
  34.  berita.php?id=1 union select 1,2,3,4,5,6,7,8,9,10--
  35.  
  36. sehingga web otomatis merespon dengan mengeluarkan angka yang si sebutkan karena angka tersebut mewakili tap kolom pada tabel yang di gunakan dan pada kasus ini web si developer mengeluarkan angka 4
  37. kenapa kok bisa muncul 4
  38. seperti yang saya katakan tadi tiap nomor mewakili tiap kolom pada tabel tersebut
  39. sesungguhnya urutan kolom pada tabel tersebut adalah
  40.  
  41. id,user_id,kategori_id,content,tag,dan seterusnya
  42. 1,2,3,4,5, dan seterusnya
  43.  
  44. nah di website si developer untuk mengeluarkan isi dari artikel tersebut kan dengan script
  45.  
  46. <?php
  47.  
  48. echo $artikel['content'];
  49.  
  50. ?>
  51.  
  52. dan content terwakili oleh angka 4
  53. setelah menemukan kolommana yang di gunakan kemudian sang attacker menambahkan perintah version() digunakan untuk melihat versi dari mysql yang di pakai developer. mengapa ini di lakukan ?
  54. karena jika mysql versinya di bawah 5 maka langkah selanjutnya akan berbeda. apa perbedaannya ?
  55. perbedaannya ialah setelah menemukan kolom mana yang di gunakan ketika mysql versi di bawah 5 maka sang attacker di haruskan menebak nama-nama tabelnya di karenakan perintah information_schema di masukan kedalam mysql pada versi selanjutnya ( mysql version 5.0 keatas ) namun kalau setelah memasukan perintah version() dan keluar versi 5 maka sang attacker hanya memasukan perintah seperti di bawah ini
  56.  
  57.  berita.php?id=1 union select 1,2,3,group_concat(table_name),5,6,7,8,9,10 from information_schema.tables where table_schema=database()--
  58.  
  59. setelah itu website merespon dengan mengeluarkan semua nama tabel yang berada di database tersebut
  60. user,artikel,kategori, dan lain lain
  61.  
  62. setelah mendapatkan nama tabel, dan menentukan mana tabel yang ingin di lihat datanya sang attacker pun melanjutkan aksinya dengan melihat nama kolom pada tabel yang di incar, pada kasus ini sang attacker mengincar tabe user, dan sang attacker pun memasukan query seperti berikut ini
  63.  
  64.  berita.php?id=1 union slelect 1,2,3,group_concat(column_name),5,6,7,8,9,10 from information_schema.columns where table_name=0x75736572--
  65.  
  66. 75736572 adalah hexa dari user, selain memakai hexa terkadang sang attacker juga memakai mysqlchar atau hanya dengan menambahkan 'user'
  67.  
  68. setelah memasukan perintah tersebut website pun meresponnya dengan mengeluarkan nama kolom pada tabel user
  69.  
  70.   id,nama,username,password,email,akses,trash
  71.  
  72. nah pada kasus ini sang attacker hanya ingin melihat isi dari username dan password untuk melihat isi dari username dan password sang attacker pun menyisipkan query sebagai berikut
  73.  
  74.   berita.php?id=1 union slelect 1,2,3,group_concat(username,0x3a,password,0x3a,email),5,6,7,8,9,10 from user--
  75.  
  76. 0x3a adalah hexa dari : yang di gunakan sang attacker untuk memisahkan data mana yang username dan mana yang password
  77.  
  78. setelah itu website pun merespon perintah itu dengan mengeluarkan data username dan password serta email website tersebut
  79.  
  80. keesokan harinya si developer pun memulai kesehariannya dengan kebiasaan paginya yaitu mengecek web, betapa terkejutnya si developer melihat log pada webnya bahwa malam kemarin ada seseorang yang berhasil masuk ke webnya dan si developer pun langsung mengetahui celah webnya dengan melihat error log pada website tersebut
  81.  
  82. bug tersebut memang murni dari kelalaian sang developer yang tak memfilter request yang masuk pada webistenya velah tersebut terletak pada scirpt berikut
  83.  
  84. <?php
  85.  
  86. include('db.php');
  87. $id = $_GET['id'];
  88. $query = "SELECT * FROM artikel where id=$id";
  89. $result = mysql_query($query);
  90. $artikel = mysql_fetch_array($result);
  91. echo $artikel['content'];
  92. ?>
  93.  
  94. untuk mengakalinya sang developer pun berinisiatif untuk mengelabuhi sang attacker dengan cara menghilangkan error pada halaman tersebut yaitu dengan cara mengubah script menjadi
  95.  
  96. <?php
  97. @ini_set('display_errors',0);
  98. include('db.php');
  99. $id = $_GET['id'];
  100. $query = "SELECT * FROM artikel where id='$id'";
  101. $result = mysql_query($query);
  102. $artikel = mysql_fetch_array($result);
  103. echo $artikel['content'];
  104. ?>
  105.  
  106. @ini_set('display_errors',0);
  107. script ini berfungsi untuk menghilangkan error pada halaman tersebut kemudian sang developer juga menambahkan '' pada
  108.  
  109. where id='$id' guna untuk mengelabuhi sang attacker agar tak menemukan jumlah kolom pada tabel tersebut sehingga ketika sang attacker menyisipkan perintah order by maka nilai yang di hasilkan tak berujung meskipun order by tersebut nilainya 100000
  110.  
  111. panjang ceritanya ini lanjut nanti ke part 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement