Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Guest RSS-Bot

Важное с Sysman.Ru: XSS через специальный файл

Recommended Posts

Guest RSS-Bot

Song:

Симптомы:

 

Удаленный пользователь может с помощью специально сформированного изображения или PDF файла, загруженного на форум, выполнить произвольный сценарий в браузере жертвы (подвержены только браузеры Internet Explorer версий 6 и 7).

 

Ручное исправление сложное, поэтому обращаем ваше внимание на внимательность при установке обновления.

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song:

Симптомы:

 

Удаленный пользователь может с помощью специально сформированного изображения или PDF файла, загруженного на форум, выполнить произвольный сценарий в браузере жертвы (подвержены только браузеры Internet Explorer версий 6 и 7).

 

Ниже приведены исправления для форумов версий:

  • 2.1.x (чуть ниже)
  • 2.2.x

Ручное исправление сложное, поэтому обращаем ваше внимание на внимательность при установке обновления.

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song: Исправление для версии 2.1.x:

 

Скачать готовый исправленный файл:

 

 

Ручное исправление:

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [b]if[/b] ( [color=#048284]$this[/color]->make_sc_ript_safe )        {            [b]if[/b] ( preg_match( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)/", [color=#048284]$FILE_NAME[/color] ) )                {                [color=#048284]$FILE_TYPE[/color]                 = 'text/plain';                [color=#048284]$this[/color]->file_extension      = 'txt';

 

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

        [color=#048284]$renamed[/color] = [color=navy]0[/color];

 

Добавить после:

                [color=#048284]$renamed[/color] = [color=navy]1[/color];

 

Найти:

Цитата (ips_kernel/class_upload.php)
        }        [b]else[/b]        {            [color=brown]@[/color]chmod( [color=#048284]$this[/color]->saved_upload_name, [color=navy]0777[/color] );        }

Добавить после:

                                             [color=green]//------------------------------------------------- [/color]        [color=green]// Check XSS inside file [/color]        [color=green]//------------------------------------------------- [/color]                             [b]if[/b]( ![color=#048284]$renamed[/color] )         {             [color=#048284]$this[/color]->check_xss_infile();                                          [b]if[/b]( [color=#048284]$this[/color]->error_no )             {                 [b]return[/b];             }        }

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [color=green]/*-------------------------------------------------------------------------*/[/color]    [color=green]// INTERNAL: Get file extension[/color]    [color=green]/*-------------------------------------------------------------------------*/[/color]        [color=green]/**    * Returns the file extension of the current filename    *    * @param string Filename    */[/color]

 

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

                                      [color=green]/*-------------------------------------------------------------------------*/[/color]             [color=green]// INTERNAL: Check for XSS inside file [/color]            [color=green]/*-------------------------------------------------------------------------*/[/color]                          [color=green]/**             * Checks for XSS inside file.  If found, sets error_no to 5 and returns             *             * @param void             */[/color]                          [b]function[/b] check_xss_infile()             {                     [color=green]// HTML added inside an inline file is not good in IE... [/color]                                         [color=#048284]$fh[/color] = fopen( [color=#048284]$this[/color]->saved_upload_name, 'rb' );                                          [color=#048284]$file_check[/color] = fread( [color=#048284]$fh[/color], [color=navy]512[/color] );                                          fclose( [color=#048284]$fh[/color] );                                          [b]if[/b]( ![color=#048284]$file_check[/color] )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }                                          [color=green]# Thanks to Nicolas Grekas from comments at www.splitbrain.org for helping to identify all vulnerable HTML tags [/color]                                         [b]else[/b] [b]if[/b]( preg_match( "#<sсriрt|<html|<head|<title|<body|<pre|<table|<a\s+href|<img|<plaintext#si", [color=#048284]$file_check[/color] ) )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }            }

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song: Исправление для версии 2.1.x:

 

Скачать готовый исправленный файл:

 

 

Ручное исправление:

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [b]if[/b] ( [color=#048284]$this[/color]->make_script_safe )        {            [b]if[/b] ( preg_match( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)/", [color=#048284]$FILE_NAME[/color] ) )                {                [color=#048284]$FILE_TYPE[/color]                 = 'text/plain';                [color=#048284]$this[/color]->file_extension      = 'txt';

 

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

        [color=#048284]$renamed[/color] = [color=navy]0[/color];

 

Добавить после:

                [color=#048284]$renamed[/color] = [color=navy]1[/color];

 

Найти:

Цитата (ips_kernel/class_upload.php)
        }        [b]else[/b]        {            [color=brown]@[/color]chmod( [color=#048284]$this[/color]->saved_upload_name, [color=navy]0777[/color] );        }

Добавить после:

                                             [color=green]//------------------------------------------------- [/color]        [color=green]// Check XSS inside file [/color]        [color=green]//------------------------------------------------- [/color]                             [b]if[/b]( ![color=#048284]$renamed[/color] )         {             [color=#048284]$this[/color]->check_xss_infile();                                          [b]if[/b]( [color=#048284]$this[/color]->error_no )             {                 [b]return[/b];             }        }

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [color=green]/*-------------------------------------------------------------------------*/[/color]    [color=green]// INTERNAL: Get file extension[/color]    [color=green]/*-------------------------------------------------------------------------*/[/color]        [color=green]/**    * Returns the file extension of the current filename    *    * @param string Filename    */[/color]

 

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

                                      [color=green]/*-------------------------------------------------------------------------*/[/color]             [color=green]// INTERNAL: Check for XSS inside file [/color]            [color=green]/*-------------------------------------------------------------------------*/[/color]                          [color=green]/**             * Checks for XSS inside file.  If found, sets error_no to 5 and returns             *             * @param void             */[/color]                          [b]function[/b] check_xss_infile()             {                     [color=green]// HTML added inside an inline file is not good in IE... [/color]                                         [color=#048284]$fh[/color] = fopen( [color=#048284]$this[/color]->saved_upload_name, 'rb' );                                          [color=#048284]$file_check[/color] = fread( [color=#048284]$fh[/color], [color=navy]512[/color] );                                          fclose( [color=#048284]$fh[/color] );                                          [b]if[/b]( ![color=#048284]$file_check[/color] )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }                                          [color=green]# Thanks to Nicolas Grekas from comments at www.splitbrain.org for helping to identify all vulnerable HTML tags [/color]                                         [b]else[/b] [b]if[/b]( preg_match( "#<sсriрt|<html|<head|<title|<body|<pre|<table|<a\s+href|<img|<plaintext#si", [color=#048284]$file_check[/color] ) )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }            }

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song: Исправление для версии 2.1.x:

 

Скачать готовый исправленный файл:

 

 

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

 

Ручное исправление:

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [b]if[/b] ( [color=#048284]$this[/color]->make_script_safe )        {            [b]if[/b] ( preg_match( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)/", [color=#048284]$FILE_NAME[/color] ) )                {                [color=#048284]$FILE_TYPE[/color]                 = 'text/plain';                [color=#048284]$this[/color]->file_extension      = 'txt';

 

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

        [color=#048284]$renamed[/color] = [color=navy]0[/color];

 

Добавить после:

                [color=#048284]$renamed[/color] = [color=navy]1[/color];

 

Найти:

Цитата (ips_kernel/class_upload.php)
        }        [b]else[/b]        {            [color=brown]@[/color]chmod( [color=#048284]$this[/color]->saved_upload_name, [color=navy]0777[/color] );        }

Добавить после:

                                             [color=green]//------------------------------------------------- [/color]        [color=green]// Check XSS inside file [/color]        [color=green]//------------------------------------------------- [/color]                             [b]if[/b]( ![color=#048284]$renamed[/color] )         {             [color=#048284]$this[/color]->check_xss_infile();                                          [b]if[/b]( [color=#048284]$this[/color]->error_no )             {                 [b]return[/b];             }        }

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [color=green]/*-------------------------------------------------------------------------*/[/color]    [color=green]// INTERNAL: Get file extension[/color]    [color=green]/*-------------------------------------------------------------------------*/[/color]        [color=green]/**    * Returns the file extension of the current filename    *    * @param string Filename    */[/color]

 

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

                                      [color=green]/*-------------------------------------------------------------------------*/[/color]             [color=green]// INTERNAL: Check for XSS inside file [/color]            [color=green]/*-------------------------------------------------------------------------*/[/color]                          [color=green]/**             * Checks for XSS inside file.  If found, sets error_no to 5 and returns             *             * @param void             */[/color]                          [b]function[/b] check_xss_infile()             {                     [color=green]// HTML added inside an inline file is not good in IE... [/color]                                         [color=#048284]$fh[/color] = fopen( [color=#048284]$this[/color]->saved_upload_name, 'rb' );                                          [color=#048284]$file_check[/color] = fread( [color=#048284]$fh[/color], [color=navy]512[/color] );                                          fclose( [color=#048284]$fh[/color] );                                          [b]if[/b]( ![color=#048284]$file_check[/color] )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }                                          [color=green]# Thanks to Nicolas Grekas from comments at www.splitbrain.org for helping to identify all vulnerable HTML tags [/color]                                         [b]else[/b] [b]if[/b]( preg_match( "#<sсriрt|<html|<head|<title|<body|<pre|<table|<a\s+href|<img|<plaintext#si", [color=#048284]$file_check[/color] ) )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }            }

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song: Исправление для версии 2.2.x:

 

Скачать готовый исправленный файл:

 

 

Ручное исправление:

 

Найти:

Цитата (ips_kernel/class_upload.php)
                [b]if[/b] ( [color=#048284]$this[/color]->make_sc_ript_safe )        {            [b]if[/b] ( preg_match( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)$/i", [color=#048284]$FILE_NAME[/color] ) )            {                [color=#048284]$FILE_TYPE[/color]                 = 'text/plain';                [color=#048284]$this[/color]->file_extension      = 'txt';

 

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

        [color=#048284]$renamed[/color] = [color=navy]0[/color];

 

Добавить после:

                [color=#048284]$this[/color]->parsed_file_name    = preg_replace( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)(\.|$)/i", "$2", [color=#048284]$this[/color]->parsed_file_name );                                                  [color=#048284]$renamed[/color] = [color=navy]1[/color];

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [b]else[/b]        {            [color=brown]@[/color]chmod( [color=#048284]$this[/color]->saved_upload_name, [color=navy]0777[/color] );        }

 

Добавить после:

            [b]if[/b]( ![color=#048284]$renamed[/color] )                     {                             [color=#048284]$this[/color]->check_xss_infile();                                                          [b]if[/b]( [color=#048284]$this[/color]->error_no )                             {                                     [b]return[/b];                             }                     }

 

Найти:

Цитата (ips_kernel/class_upload.php)
    [color=green]/*-------------------------------------------------------------------------*/[/color]    [color=green]// INTERNAL: Get file extension[/color]    [color=green]/*-------------------------------------------------------------------------*/[/color]

 

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

            [color=green]/*-------------------------------------------------------------------------*/[/color]             [color=green]// INTERNAL: Check for XSS inside file [/color]            [color=green]/*-------------------------------------------------------------------------*/[/color]                          [color=green]/**             * Checks for XSS inside file.  If found, sets error_no to 5 and returns             *             * @param void             */[/color]                          [b]function[/b] check_xss_infile()             {                     [color=green]// HTML added inside an inline file is not good in IE... [/color]                                         [color=#048284]$fh[/color] = fopen( [color=#048284]$this[/color]->saved_upload_name, 'rb' );                                          [color=#048284]$file_check[/color] = fread( [color=#048284]$fh[/color], [color=navy]512[/color] );                                          fclose( [color=#048284]$fh[/color] );                                          [b]if[/b]( ![color=#048284]$file_check[/color] )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }                                          [color=green]# Thanks to Nicolas Grekas from comments at www.splitbrain.org for helping to identify all vulnerable HTML tags [/color]                                         [b]else[/b] [b]if[/b]( preg_match( "#<sсriрt|<html|<head|<title|<body|<pre|<table|<a\s+href|<img|<plaintext#si", [color=#048284]$file_check[/color] ) )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }             }

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song: Исправление для версии 2.2.x:

 

Скачать готовый исправленный файл:

 

 

Ручное исправление:

 

Найти:

Цитата (ips_kernel/class_upload.php)
                [b]if[/b] ( [color=#048284]$this[/color]->make_script_safe )        {            [b]if[/b] ( preg_match( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)$/i", [color=#048284]$FILE_NAME[/color] ) )            {                [color=#048284]$FILE_TYPE[/color]                 = 'text/plain';                [color=#048284]$this[/color]->file_extension      = 'txt';

 

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

        [color=#048284]$renamed[/color] = [color=navy]0[/color];

 

Добавить после:

                [color=#048284]$this[/color]->parsed_file_name    = preg_replace( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)(\.|$)/i", "$2", [color=#048284]$this[/color]->parsed_file_name );                                                  [color=#048284]$renamed[/color] = [color=navy]1[/color];

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [b]else[/b]        {            [color=brown]@[/color]chmod( [color=#048284]$this[/color]->saved_upload_name, [color=navy]0777[/color] );        }

 

Добавить после:

            [b]if[/b]( ![color=#048284]$renamed[/color] )                     {                             [color=#048284]$this[/color]->check_xss_infile();                                                          [b]if[/b]( [color=#048284]$this[/color]->error_no )                             {                                     [b]return[/b];                             }                     }

 

Найти:

Цитата (ips_kernel/class_upload.php)
    [color=green]/*-------------------------------------------------------------------------*/[/color]    [color=green]// INTERNAL: Get file extension[/color]    [color=green]/*-------------------------------------------------------------------------*/[/color]

 

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

            [color=green]/*-------------------------------------------------------------------------*/[/color]             [color=green]// INTERNAL: Check for XSS inside file [/color]            [color=green]/*-------------------------------------------------------------------------*/[/color]                          [color=green]/**             * Checks for XSS inside file.  If found, sets error_no to 5 and returns             *             * @param void             */[/color]                          [b]function[/b] check_xss_infile()             {                     [color=green]// HTML added inside an inline file is not good in IE... [/color]                                         [color=#048284]$fh[/color] = fopen( [color=#048284]$this[/color]->saved_upload_name, 'rb' );                                          [color=#048284]$file_check[/color] = fread( [color=#048284]$fh[/color], [color=navy]512[/color] );                                          fclose( [color=#048284]$fh[/color] );                                          [b]if[/b]( ![color=#048284]$file_check[/color] )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }                                          [color=green]# Thanks to Nicolas Grekas from comments at www.splitbrain.org for helping to identify all vulnerable HTML tags [/color]                                         [b]else[/b] [b]if[/b]( preg_match( "#<sсriрt|<html|<head|<title|<body|<pre|<table|<a\s+href|<img|<plaintext#si", [color=#048284]$file_check[/color] ) )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }             }

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Share this post


Link to post
Share on other sites
Guest RSS-Bot

Song: Исправление для версии 2.2.x:

 

Скачать готовый исправленный файл:

 

 

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

 

Ручное исправление:

 

Найти:

Цитата (ips_kernel/class_upload.php)
                [b]if[/b] ( [color=#048284]$this[/color]->make_script_safe )        {            [b]if[/b] ( preg_match( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)$/i", [color=#048284]$FILE_NAME[/color] ) )            {                [color=#048284]$FILE_TYPE[/color]                 = 'text/plain';                [color=#048284]$this[/color]->file_extension      = 'txt';

 

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

        [color=#048284]$renamed[/color] = [color=navy]0[/color];

 

Добавить после:

                [color=#048284]$this[/color]->parsed_file_name    = preg_replace( "/\.(cgi|pl|js|asp|php|html|htm|jsp|jar)(\.|$)/i", "$2", [color=#048284]$this[/color]->parsed_file_name );                                                  [color=#048284]$renamed[/color] = [color=navy]1[/color];

 

Найти:

Цитата (ips_kernel/class_upload.php)
        [b]else[/b]        {            [color=brown]@[/color]chmod( [color=#048284]$this[/color]->saved_upload_name, [color=navy]0777[/color] );        }

 

Добавить после:

            [b]if[/b]( ![color=#048284]$renamed[/color] )                     {                             [color=#048284]$this[/color]->check_xss_infile();                                                          [b]if[/b]( [color=#048284]$this[/color]->error_no )                             {                                     [b]return[/b];                             }                     }

 

Найти:

Цитата (ips_kernel/class_upload.php)
    [color=green]/*-------------------------------------------------------------------------*/[/color]    [color=green]// INTERNAL: Get file extension[/color]    [color=green]/*-------------------------------------------------------------------------*/[/color]

 

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

            [color=green]/*-------------------------------------------------------------------------*/[/color]             [color=green]// INTERNAL: Check for XSS inside file [/color]            [color=green]/*-------------------------------------------------------------------------*/[/color]                          [color=green]/**             * Checks for XSS inside file.  If found, sets error_no to 5 and returns             *             * @param void             */[/color]                          [b]function[/b] check_xss_infile()             {                     [color=green]// HTML added inside an inline file is not good in IE... [/color]                                         [color=#048284]$fh[/color] = fopen( [color=#048284]$this[/color]->saved_upload_name, 'rb' );                                          [color=#048284]$file_check[/color] = fread( [color=#048284]$fh[/color], [color=navy]512[/color] );                                          fclose( [color=#048284]$fh[/color] );                                          [b]if[/b]( ![color=#048284]$file_check[/color] )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }                                          [color=green]# Thanks to Nicolas Grekas from comments at www.splitbrain.org for helping to identify all vulnerable HTML tags [/color]                                         [b]else[/b] [b]if[/b]( preg_match( "#<sсriрt|<html|<head|<title|<body|<pre|<table|<a\s+href|<img|<plaintext#si", [color=#048284]$file_check[/color] ) )                     {                             [color=brown]@[/color]unlink( [color=#048284]$this[/color]->saved_upload_name );                             [color=#048284]$this[/color]->error_no = [color=navy]5[/color];                             [b]return[/b];                     }             }

 

Song_Bot: К посту прикреплены вложения, но посмотреть Вы их можете, только открыв статью в Форуме.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...