Jump to content
¯\_( ツ)_/¯
  • TAD GROUP are currently hiring penetration testers. Please read the topic in Career Central subforum.
  • Sponsored Ad
chapoblan

Unyson WordPress full path disclosure уязвимост

Recommended Posts

undefined

За Unyson

Unyson е безплатен, мултифункционален фреймуърк с множество вграден разширения за лесно и бързо създаване на теми за известната система WordPress. Считано от средата на 2018, плъгинът има над 100,000 активни инсталации и намира широко приложение.

Уязвимостта

Както повече плъгини, модули и други части от даден софтуер, Unyson не позволява директния достъп, от страна на трети лица, до неговите компоненти (в частност файловете). Това е често срещана практика, тъй като улеснява процеса по осигуряването на защита на приложението.

Въпреки това, съществува т.нар. FPD (Full Path Disclosure) уязвимост, която в случая е съвсем елементарна. Unyson позволява свалянето на последните шрифтове посредством файла load-latest-fonts.php, който се намира в директорията framework/bin/. Различното в случая е, че тук не се прави проверка дали файлът бива извикван от извън система или не и по-конкретно:

<?php if ( ! defined( 'FW' ) ) {
    die( 'Forbidden' );
}

Следователно позволява трети лица да достъпват отдалечено файлът директно посредством пълния му път в съответната WordPress инсталация: ../wp-content/plugins/unyson/framework/bin/load-latest-fonts.php

Това е постигнато посредством функцията download_file() , която връща стойността на променливата $destination (съдържаща пълния път на акаунта):

function download_file($url, $destination) {
    echo 'downloading ' . $destination . "\n";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt( $ch, CURLOPT_ENCODING, "UTF-8" );

    $data = curl_exec ($ch);
    $error = curl_error($ch);

    curl_close ($ch);

    $file = fopen($destination, "w+");
    fputs($file, $data);
    fclose($file);
}

Което връща сходна, на по-долу изложения пример, информация:

#!/usr/bin/env php
downloading /var/www/html/site/wp-content/plugins/unyson/framework/bin/../static/libs/entypo/css/entypo.css
downloading /var/www/html/site/wp-content/plugins/unyson/framework/bin/../static/libs/entypo/fonts/entypo.eot

Издавайки пълния път на акаунта.

Уязвимостта засяга версии 2.5.7 до 2.7.18 (включително).

Отстраняване на уязвимостта

За потребителите, които използват Unyson има добри новини. Разработчиците на Unyson вече са публикували нова версия (2.7.19), която отстранява описаната уязвимост. При това положение, всеки потребител може просто да обнови своята версия на плъгина до най-новата.

Технически, защитата се изразява в добавянето на допълнително условие с което се проверява дали файлът се извиква посредством CLI среда:

if ( php_sapi_name() != 'cli' ) {
    die();
}

За справка може да се разгледа и съдържанието на файла в официалното GitHub хранилищи на ThemeFuse.

Препоръчва се потребители на WordPress, използващи плъгина Unyson, да обновят неговата версия до 2.7.19, за да не бъдат обект на атака експлоатираща посочената уязвимост.

https://www.tadgroup.com

  • Thanks 1

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

То това да е нахакан worddepress-ки пРъгин е по-скоро норма, отколкото изключение :D

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

Създайте нов акаунт или се впишете, за да коментирате

За да коментирате, трябва да имате регистрация

Създайте акаунт

Присъединете се към нашата общност. Регистрацията става бързо!

Регистрация на нов акаунт

Вход

Имате акаунт? Впишете се оттук.

Вписване

  • Потребители разглеждащи страницата   0 потребители

    No registered users viewing this page.

×

Important Information

За да посещавате този уебсайт е необходимо да се съгласите с Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.