|
|
|
|
|
|
|
|
|
|
Уязвимость позволяет удаленному пользователю произвести XSS нападение и выполнить произвольные SQL команды в базе данных приложения и скомпрометировать уязвимую систему.
1. Уязвимость существует из-за недостаточной обработки входных данных в параметре «lastdate» в сценарии «search.php» перед вызовом функции «preg_replace()». Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный PHP код на целевой системе.
2. Уязвимость существует из-за недостаточной обработки входных данных в параметре «ck» в сценарии «index.php». Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения. Максимальная длина запроса ограничена 32 символами. Административный пользователь может с помощью параметра «name» в сценарии «admin.php» выполнить произвольный PHP сценарий на системе.
3. Уязвимость существует из-за того, что злоумышленник может загрузить злонамеренный JPEG файл с GIF заголовком, содержащим HTML сценарий. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценарий в браузере жертвы в контексте безопасности уязвимого сайта.
Пример/эксплоит: есть
Исправление:
Открыть файл ./ips_kernel/class_upload.php, найти код:
else if ( ! $img_attributes[2] ) { // Unlink the file first @unlink( $this->saved_upload_name ); $this->error_no = 5; return; }
Заменить на:
else if ( ! $img_attributes[2] ) { // Unlink the file first @unlink( $this->saved_upload_name ); $this->error_no = 5; return; } else if ( $img_attributes[2] == 1 AND ( $this->file_extension == 'jpg' OR $this->file_extension == 'jpeg' ) ) { // Potential XSS attack with a fake GIF header in a JPEG @unlink( $this->saved_upload_name ); $this->error_no = 5; return; }
Открыть файл ./sources/action_public/search.php, найти код:
$this->output = preg_replace( "#(value=[\"']{$this->ipsclass->input['lastdate']}[\"'])#i", "\\1 selected='selected'", $this->output );
Заменить на:
$this->output = preg_replace( "#(value=[\"']".intval($this->ipsclass->input['lastdate'])."[\"'])#i", "\\1 selected='selected'", $this->output );
Открыть файл ./sources/action_public/messenger.php, найти код:
$this->msglib->to_by_id = $this->ipsclass->input['from_contact'];
Заменить на:
$this->msglib->to_by_id = intval( $this->ipsclass->input['from_contact'] );
Открыть файл ./sources/lib/func_taskmanager.php, найти код:
$this->cron_key = substr( trim(stripslashes($_REQUEST['ck'])), 0, 32 );
Заменить на:
$this->cron_key = addslashes( substr( trim(stripslashes($this->ipsclass->txt_alphanumerical_clean($_REQUEST['ck']))), 0, 32 ) );
Открыть файл ./sources/search.php, найти код:
$this->output = preg_replace( "#(value=[\"']{$ibforums->input['lastdate']}[\"'])#i", "\\1 selected='selected'", $this->output )
Заменить на:
$this->output = preg_replace( "#(value=[\"']".intval($ibforums->input['lastdate'])."[\"'])#i", "\\1 selected='selected'", $this->output );
Открыть файл ./sources/messenger.php, найти код:
$this->lib->to_by_id = $ibforums->input['from_contact'];
Заменить на:
$this->lib->to_by_id = intval( $ibforums->input['from_contact'] );
Открыть файл /sources/lib/task_functions.php, найти код:
$this->cron_key = substr( trim($ibforums->input['ck']), 0, 32 );
Заменить на:
$this->cron_key = addslashes( substr( trim(stripslashes($_REQUEST['ck'])), 0, 32 ) );
Работает на DokuWiki |