Перейти к контенту

XSS в дневниках


Arhar

Рекомендуемые сообщения

ну смотри

в файле

./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

Ссылка на комментарий
Поделиться на других сайтах

версия 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?

Ссылка на комментарий
Поделиться на других сайтах

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;
}

 

Поправьте, если я что-то упустил.

Изменено пользователем Еve
Ссылка на комментарий
Поделиться на других сайтах

Надо просто в 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>

Ссылка на комментарий
Поделиться на других сайтах

если не найдено, найти

/***************************************************/

 

} // end class

 

?>

 

/***************************************************/

добавить после

/***************************************************/

Добавить перед.

 

Не лучше ли будет занести все реплейсы в xss_html_clean?

Ссылка на комментарий
Поделиться на других сайтах

все неверно

сейчас сделаю мануал

Arhar, ты меня насмешил :D Хоть бы код почитал ей богу. Отличие от твоего мануала лишь в том, что ты функцию в ipsclass всунул, а в моём примере она напрямую в журналах была, но от этого её работоспособность ничуть не страдает. =Р

Ссылка на комментарий
Поделиться на других сайтах

повторять, что эту функцию я использую не только в дневниках, а в 2.2.х и выше это стандартная функция, я десять раз не буду

не нравится - делай сам

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.