Internet Home Page Bringing True Journalism Without Fake News Kerentanan Keamanan di Plugin WordPress Forum wpForo

Kerentanan Keamanan di Plugin WordPress Forum wpForo

by Hairiman

pengantar

Menurut halaman Plugin Forum wpForo WordPress: “Forum wpForo adalah plugin forum WordPress terbaik. Solusi forum yang lengkap namun mudah dan ringan untuk situs web WordPress Anda. Hadir dengan tata letak dan gaya forum modern dan responsif. Plugin forum WordPress ini membawa semua yang Anda butuhkan untuk menjalankan komunitas yang efisien dan profesional. Forum yang kuat dan indah dengan fitur unik. “

Menurut WordPress, pada saat penulisan Plugin memiliki 10,000+instalasi aktif.

Masalah ini ditambal dalam beberapa jam oleh vendor di versi 1.4.12. CVE ditugaskan sebagai CVE-2018-11709.

Deskripsi

Versi 1.4.11, dan di bawahnya, dari wpForo Forum WordPress Plugin ternyata rentan terhadap Refleksi Lintas Situs (XSS). Kerentanan itu disebabkan oleh Plugin menggunakan $_SERVER['REQUEST_URI']variabel PHP untuk membuat string URL yang kemudian dihasilkan dalam HTML tanpa pengkodean output.

Risiko

Agar berhasil mengeksploitasi kerentanan ini, penyerang perlu membujuk pengguna untuk mengklik tautan yang dibuat khusus. Pengguna harus menggunakan browser web Internet Explorer (IE), dengan, diaktifkan secara default, filter XSS dinonaktifkan, atau penyerang perlu menggunakan bypass payload bypass filter IE XSS IE yang valid.

Perangkat Lunak yang Terkena Dampak

wpForo Forum <= 1.4.11 – https://wordpress.org/plugins/wpforo/

Deskripsi Teknis

The wpforo_get_request_uri()fungsi yang didefinisikan dalam wpf-includes/functions.phpfile yang menggunakan $_SERVER['REQUEST_URI']variabel untuk membangun URL, tanpa validasi atau output encoding. Kode fungsi lengkap ditunjukkan di bawah ini:

function wpforo_get_request_uri($with_port = FALSE, $get_referer_when_ajax = TRUE){
	if( $get_referer_when_ajax && wpforo_is_ajax() ){
		if( isset($_SERVER['HTTP_REFERER']) ){ return $_SERVER['HTTP_REFERER']; }
	}
	$s = is_ssl() ? 's' : '';
    $sp = strtolower($_SERVER["SERVER_PROTOCOL"]);
    $protocol = substr($sp, 0, strpos($sp, "/")) . $s;
    $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
    return $protocol . "://" . $_SERVER['HTTP_HOST'] . ($with_port ? $port : '') . $_SERVER['REQUEST_URI'];
}

Bukti Konsep (PoC)

Klik tautan berikut saat menggunakan peramban web Internet Explorer (IE), dengan filter XSS dinonaktifkan:

http://www.example.com/index.php/community/?%22%3E%3Cscript%3Ealert(/XSS/)%3C/script%3E

Atau, jalankan permintaan CURL berikut dan perhatikan bahwa muatan XSS adalah output dalam HTML, tanpa validasi apa pun, atau pengkodean keluaran:

curl -s 'http://www.example.com/index.php/community/?"><script>alert(/XSS/)</script>' | grep "XSS"

Remediasi

Vendor: Lewati string URL yang dibangun melalui esc_url()fungsi WordPress sebelum mengembalikan string. Sebagai contoh:

$url = $protocol . "://" . $_SERVER['HTTP_HOST'] . ($with_port ? $port : '') . $_SERVER['REQUEST_URI'];
return esc_url($url);

Pengguna: Perbarui ke versi 1.4.12, yang memperbaiki kerentanan.

Referensi

You may also like

Leave a Comment