Bugün wordfence açıkladığı yazıda 1 Nisan 2020 de bu MapPress Maps for WordPress üzerinden buldukları buldukları açık sorasında ertesi gün 2 Nisan 2020 eklentinin sahibi ile iletişime geçmişler ve iki saat içinde bir cevap alıp eklenti sahibi eklentiyi güncellemiş eğer kullandığınız eklenti sürümü 2.54.2 dan aşağıdaysa sizler hala bu açığı sitenizde barındırıyor olabilirsiniz.

Bulunan açıklardan birisi Cross-Site Scripting (XSS) yapılmasını sağlanıyor öteki açık ise pro versionunda bu açık sayesinde Remote Code Execution (RCE) izin veriyor yanı uzaktan kod çalıştırmaya izin veriyor.

Açıklama: Authenticated Map Creation/Deletion Leading to Stored Cross-Site Scripting (XSS)
Etkilenen EklentiMapPress Maps for WordPress
Eklenti Klasor Adı: mappress-google-maps-for-wordpress
Etkilenen Version: <=2.53.8 Free and Pro
CVE ID: CVE-2020-12077
CVSS Score: 6.5(Medium)
CVSS VectorCVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
Çözüm Bulunan Sürüm: 2.53.9

Bu açıkğın oluşmasının başlı nedeni bu kodun sistemde çalışır halde bulunması

static function ajax_delete() {
ob_start();

$mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
$result = Mappress_Map::delete($mapid);

if (!$result)
Mappress::ajax_response("Internal error when deleting map ID '$mapid'!");

do_action('mappress_map_delete', $mapid); // Use for your own developments
Mappress::ajax_response('OK', array('mapid' => $mapid));
}

Bu kod sayesinde saldırgan delete isteğine istediği map id göndererek istediği bir haritayı silebilir bir hale geliyor bu çok büyük zararlar yaratmasa da var olan harita dataları silinebilir.

Açıklama: Authenticated File Upload, Deletion, and Disclosure Leading to RCE or Site Reset
Etkilenen Eklenti: MapPress Maps for WordPress
Eklenti Klasor Adı: mappress-google-maps-for-wordpress
Etkilenen Version:<=2.53.8 Pro
CVE ID: CVE-2020-12077
CVSS Score: 9.9(Critical)
CVSS VectorCVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Çözüm Bulunan Sürüm: 2.53.9

Pro versionunda ise sorun daha büyük ve kesinlikle güncelleme yapmanız gerektiren bir durum bu sürümde haritaların nasıl görüntülendiğini kontrol eden şablonlar oluşturma olanağı sunar. Bu şablonları özel .php dosyaları olarak kaydeder. Ne yazık ki hiç bir denetimleri olmadan aşağıdaki post kayıtlarına bağlı işlemleri çalıştırıyor.

add_action('wp_ajax_mapp_tpl_get', array(__CLASS__, 'ajax_get'));
add_action('wp_ajax_mapp_tpl_save', array(__CLASS__, 'ajax_save'));
add_action('wp_ajax_mapp_tpl_delete', array(__CLASS__, 'ajax_delete'));

 

wp_ajax_mapp_tpl_save fonksiyonunu kullanarak saldırgan isterse kendi .php dosyasını içeri istediği gibi kaydedip çalıştırabilir bunun sonrasında da sitenize zarar verebilir.

Açığı oluşturan fonksiyon,

static function ajax_save() {
    $name = (isset($_POST['name'])) ? $_POST['name'] : null;
    $content = (isset($_POST['content'])) ? stripslashes($_POST['content']) : null;
    $filepath = get_stylesheet_directory() . '/' . $name . '.php';
 
    $result = @file_put_contents($filepath, $content);
    if ($result === false)
        Mappress::ajax_response('Unable to save');
 
    // Return filepath after save
    Mappress::ajax_response('OK', $filepath);
}

 

mapp_tpl_delete fonksiyonu kullanarak saldırgan istediği dosyayı silebilir.Hiç bir kontrol olmadığı için rahat bir şekilde örnek vermek gerekirse wp-config dosyanızı silebilir post olarak name parametresine ../../../wp-config verirse bu şekilde wp-config.php göstermiş olacak fonksiyona bu şekilde de silebilecek sitenizde istediği dosyayı.

Açığı oluşturan fonksiyon,

static function ajax_get() {
    $name = (isset($_GET['name'])) ? $_GET['name'] : null;
 
    $filename = $name . '.php';
    $filepath = get_stylesheet_directory() . '/' . $filename;
 
    $html = @file_get_contents($filepath);
    $standard = @file_get_contents(Mappress::$basedir . "/templates/$filename");
 
    if (!$standard)
        Mappress::ajax_response('Invalid template');
 
    $template = new Mappress_Template(array(
        'name' => $name,
        'content' => ($html) ? $html : $standard,
        'path' => $filepath,
        'standard' => $standard,
        'exists' => ($html) ? true : false
    ));
 
    Mappress::ajax_response('OK', $template);
}

 

Daha ayrıntılı teknik incelmeye buradan ulaşabilirsiniz 

Bu eklenti 2.53.9 sürümden sonra bu açığı kapattı !

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz