Arhar Опубликовано 5 Октября 2007 Автор Жалоба Поделиться Опубликовано 5 Октября 2007 ну смотрив файле./forum/journal.phpпосле$ibforums->input = $std->parse_incoming();вставляем большой кусок кода с прегреплейсами, в которых будет не$ipsclass->а$std->xss_html_cleanа в файл functions.php тогда саму функцию из сообщенияhttp://www.ibresource.ru/forums/index.php?...st&p=285171 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 5 Октября 2007 Жалоба Поделиться Опубликовано 5 Октября 2007 Все ок, допер, туплю. Просмотрел аттач. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
kolorom Опубликовано 6 Октября 2007 Жалоба Поделиться Опубликовано 6 Октября 2007 версия 1.5 тоже уязвима? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 6 Октября 2007 Жалоба Поделиться Опубликовано 6 Октября 2007 версия 1.5 тоже уязвима? Вы о чем? mJournal 2.0 Public Beta 7Последняя доступная версия для IP.Board 2.0—2.1.Дата обновления дистрибутива: 19.07.2007. mJournal 1.05Последняя доступная версия для IP.Board 1.2—1.3.Дата обновления дистрибутива: 10.03.2004. Может быть 1.05? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
kolorom Опубликовано 6 Октября 2007 Жалоба Поделиться Опубликовано 6 Октября 2007 1.05 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 7 Октября 2007 Жалоба Поделиться Опубликовано 7 Октября 2007 (изменено) Arhar, что-то я не нахожу в ./journal.php$ibforums->input = $std->parse_incoming();ты имел ввиду:Для форума 2.1 и старше после: $ipsclass->parse_incoming(); Итак, на сколько я понял, для закрытия дырки (журнал 2.0pb7, форум 2.1.х):редактируем ./journal.php (в корне форума)строка 102 $ipsclass->parse_incoming();ниже добавляем$_SERVER['REQUEST_URI'] = preg_replace( "#w(\s+?)?i(\s+?)?n(\s+?)?d(\s+?)?o(\s+?)?w#is" , "vzlom" , $_SERVER['REQUEST_URI'] ); $_SERVER['REQUEST_URI'] = preg_replace( "#c(\s+?)?o(\s+?)?o(\s+?)?k(\s+?)?i(\s+?)?e#is" , "vzlom" , $_SERVER['REQUEST_URI'] ); $_SERVER['REQUEST_URI'] = preg_replace( "#%63(\s+?)?%6F(\s+?)?%6F(\s+?)?%6B(\s+?)?%69(\s+?)?%65#is" , "vzlom" , $_SERVER['REQUEST_URI'] ); $_SERVER['REQUEST_URI'] = xss_html_clean($_SERVER['REQUEST_URI']); $_SERVER['QUERY_STRING'] = preg_replace( "#w(\s+?)?i(\s+?)?n(\s+?)?d(\s+?)?o(\s+?)?w#is" , "vzlom" , $_SERVER['QUERY_STRING'] ); $_SERVER['QUERY_STRING'] = preg_replace( "#c(\s+?)?o(\s+?)?o(\s+?)?k(\s+?)?i(\s+?)?e#is" , "vzlom" , $_SERVER['QUERY_STRING'] ); $_SERVER['QUERY_STRING'] = preg_replace( "#%63(\s+?)?%6F(\s+?)?%6F(\s+?)?%6B(\s+?)?%69(\s+?)?%65#is" , "vzlom" , $_SERVER['QUERY_STRING'] ); $_SERVER['QUERY_STRING'] = xss_html_clean($_SERVER['QUERY_STRING']);и в конец файла вставляем функцию: /*-------------------------------------------------------------------------*/ // XSS Clean: Nasty HTML /*-------------------------------------------------------------------------*/ /** * Remove script tags from HTML (well, best shot anyway) * * @param string Input HTML * @return string Cleaned HTML * @since 2.1.0 */ function xss_html_clean( $html ) { //----------------------------------------- // Opening script tags... // Check for spaces and new lines... //----------------------------------------- $html = preg_replace( "#<(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is" , "<script" , $html ); $html = preg_replace( "#<(\s+?)?/(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is", "</script", $html ); //----------------------------------------- // Basics... //----------------------------------------- $html = preg_replace( "/javascript/i" , "javascript", $html ); $html = preg_replace( "/alert/i" , "alert" , $html ); $html = preg_replace( "/about:/i" , "about:" , $html ); $html = preg_replace( "/onmouseover/i", "onmouseover" , $html ); $html = preg_replace( "/onclick/i" , "onclick" , $html ); $html = preg_replace( "/onload/i" , "onload" , $html ); $html = preg_replace( "/onsubmit/i" , "onsubmit" , $html ); $html = preg_replace( "/<body/i" , "<body" , $html ); $html = preg_replace( "/<html/i" , "<html" , $html ); $html = preg_replace( "/document\./i" , "document." , $html ); return $html; } Поправьте, если я что-то упустил. Изменено 7 Октября 2007 пользователем Еve Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 7 Октября 2007 Автор Жалоба Поделиться Опубликовано 7 Октября 2007 все неверно сейчас сделаю мануал Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 7 Октября 2007 Жалоба Поделиться Опубликовано 7 Октября 2007 Надо просто в skin_global.php вот это<a href="{$_SERVER['REQUEST_URI']}" onclick="set_mod_cookie('{$check}');"><b>{$text}</b></a>заменить на это<a href="" onclick="java script:set_mod_cookie('{$check}');window.location.reload()"><b>{$text}</b></a>Чуть корректнее:<a href="javascript:;" onclick="javascript:set_mod_cookie('{$check}');window.location.reload()"><b>{$text}</b></a> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 7 Октября 2007 Автор Жалоба Поделиться Опубликовано 7 Октября 2007 mjournalxss.txt Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 7 Октября 2007 Жалоба Поделиться Опубликовано 7 Октября 2007 если не найдено, найти/***************************************************/ } // end class ?> /***************************************************/добавить после/***************************************************/Добавить перед. Не лучше ли будет занести все реплейсы в xss_html_clean? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 7 Октября 2007 Жалоба Поделиться Опубликовано 7 Октября 2007 все неверносейчас сделаю мануалArhar, ты меня насмешил Хоть бы код почитал ей богу. Отличие от твоего мануала лишь в том, что ты функцию в ipsclass всунул, а в моём примере она напрямую в журналах была, но от этого её работоспособность ничуть не страдает. =Р Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 8 Октября 2007 Автор Жалоба Поделиться Опубликовано 8 Октября 2007 повторять, что эту функцию я использую не только в дневниках, а в 2.2.х и выше это стандартная функция, я десять раз не будуне нравится - делай сам Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.