[10.05.2005] SQL-инъекция и межсайтовый скриптинг

Уязвимость позволяет удаленному пользователю произвести XSS нападение и выполнить произвольные SQL команды в базе данных приложения.

SQL-инъекция существует из-за недостаточной обработки данных в сценарии 'sources/login.php'. Удаленный пользователь может с помощью специально сформированного файла куки выполнить произвольные SQL команды в базе данных приложения при выключенных Magic_quotes_gpc в конфигурационном файле php.

Отсутствует проверка входных данных при отображении результатов поиска в параметре 'highlite' сценария 'sources/post.php'. Удаленный пользователь может с помощью специально сформированного файла куки выполнить произвольный HTML сценарий в браузере жертвы в контексте безопасности уязвимого сайта.

Пример/Эксплоит: Эксплоит

Исправление:

Открыть файл ./sources/post.php, найти:

//-----------------------------------------
// Add to mail queue
//-----------------------------------------
 
$DB->do_insert( 'mail_queue', array( 'mail_to' => $r['email'], 'mail_date' => time(), 'mail_subject' => $ibforums->lang['tt_subject'], 'mail_content' => $this->email->message ) );

Заменить на:

//-----------------------------------------
// Add to mail queue
//-----------------------------------------
 
$DB->do_insert( 'mail_queue', array( 'mail_to' => $r['email'], 'mail_date' => time(), 'mail_subject' => $ibforums->lang['tt_subject'], 'mail_content' => $std->txt_safeslashes($this->email->message) ) );

Открыть файл ./sources/post.php, найти:

$DB->do_insert( 'mail_queue', array( 'mail_to' => $r['email'], 'mail_date' => time(), 'mail_subject' => $ibforums->lang['ft_subject'], 'mail_content' => $this->email->message ) );

Заменить на:

$DB->do_insert( 'mail_queue', array( 'mail_to' => $r['email'], 'mail_date' => time(), 'mail_subject' => $ibforums->lang['ft_subject'], 'mail_content' => $std->txt_safeslashes($this->email->message) ) );

Открыть файл ./sources/lib/usercp_functions.php, найти:

//-----------------------------------------
// Check to make sure we don't just have
// http:// in the URL box..
//-----------------------------------------
 
if ( preg_match( "/^http:\/\/$/i", $ibforums->input['url_avatar'] ) )
{
$ibforums->input['url_avatar'] = "";
}
 
if ( empty($ibforums->input['url_avatar']) )

Заменить на:

//-----------------------------------------
// Check to make sure we don't just have
// http:// in the URL box..
//-----------------------------------------
 
if ( preg_match( "/^http:\/\/$/i", $ibforums->input['url_avatar'] ) )
{
$ibforums->input['url_avatar'] = "";
}
 
if ( preg_match( "#javascript:#is", $ibforums->input['url_avatar'] ) )
{
$ibforums->input['url_avatar'] = "";
}
 
if ( empty($ibforums->input['url_avatar']) )

Открыть файл ./sources/login.php, найти:

$pid = $std->my_getcookie('pass_hash');

Заменить на:

$pid = (preg_match('/^([0-9A-Za-z]){32}$/', $std->my_getcookie('pass_hash')))?$std->my_getcookie('pass_hash'):"";
 

security/2.0.x/medium/10.05.2005.txt · Последние изменения: 2007/08/14 12:01 (внешнее изменение)

Работает на DokuWiki
© 2002—2006 ibresource
e-mail: wikiteam@iblink.ru