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

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.х и выше это стандартная функция, я десять раз не буду

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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