prowebber.ru - Тут есть все для настоящих вебмастеров

Чтение RSS Мы в твиттере
«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Всё для вебмастера » Всё для DataLife Engine » DLE хаки » Доступность файлов в закрытых разделах

Доступность файлов в закрытых разделах


Данный материал предоставлен сайтом ProWebber.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
У нас вы можете скачать бесплатно Доступность файлов в закрытых разделах.


Доступность файлов в закрытых разделах

Есть одна лазейка в DLE, которая позволяет скачивать файлы из новости, даже если эта новость находится в скрытом разделе.

Давайте для начала рассмотрим ту защиту, которая собственно и не дает нам свободно скачать файл по прямой ссылке /engine/download.php?id=123

Преграда №1.
Настройки групп пользователей. Т.е. скачивать файлы могут только те пользователи, которым это разрешено в настройках группы. Остальные получают ошибку "Access denied".

Преграда №2.
Скорее чисто символическая, защита от не продвинутого пользователя. Проверяется реферер, т.е. файл будет доступен только в том случае, если пользователь кликнул по ссылке на сайте. Но нам же ничего не мешает самому подправить код странички и вставить туда ссылок с любым ID.

А теперь вспомним еще о 2х параметрах, которые так же следовало бы учесть:
Параметр №1.
При добавлении новости, в закладке "доступ" можно определенной группе выставить уровень доступа "запретить просмотр". Но если в новости находится ценный файл который доступен только перечисленным группам, то злоумышленник все равно сможет получить доступ к файлу простым перебором.

Параметр №2.
В настройках групп пользователей в параметре "Доступные разделы" можно перечислить список категорий к которым будет открыт доступ. Получается та же ситуация. Простым методом перебора ID файлов можно будет скачать любой файл, даже не имея доступа в закрытый раздел.


Со вступлением разобрались. Теперь, собственно, решение данной проблемы:
Открыть файл engine/download.php
Найти строку:
    $row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE id ='$id'" );

Заменить на (Для DLE 9.6 и старше):
    $row = $db->super_query ( "SELECT name, onserver, access, category FROM " . PREFIX . "_files f LEFT JOIN ".PREFIX."_post_extras e ON e.news_id=f.news_id LEFT JOIN ".PREFIX."_post p ON f.news_id=p.id WHERE f.id ='$id'" );

if($row['access']){
    $row['access'] = explode(",",$row['access']);
    if(!in_array($member_id['user_group'],$row['access'])) die("Access denied");
}
if($user_group[$member_id['user_group']]['allow_cats'] AND $user_group[$member_id['user_group']]['allow_cats']!='all'){
    $allow_cats = explode(",",$user_group[$member_id['user_group']]['allow_cats']);
    $deny = true;
    if(strpos($row['category'],",")!==false){
        $row['category'] = explode(",",$row['category']);
        foreach($row['category'] as $cat) if(in_array($cat,$allow_cats)) $deny = false;
    }else{
        $row['category'] = intval($row['category']);
        if(in_array($row['category'],$allow_cats)) $deny = false;
    }
    if($deny) die("Access denied!");
}

Для младших версий DLE вставить:
    $row = $db->super_query ( "SELECT name, onserver, access, category FROM " . PREFIX . "_files f LEFT JOIN ".PREFIX."_post p ON f.news_id=p.id WHERE f.id ='$id'" );

if($row['access']){
    $row['access'] = explode(",",$row['access']);
    if(!in_array($member_id['user_group'],$row['access'])) die("Access denied");
}
if($user_group[$member_id['user_group']]['allow_cats'] AND $user_group[$member_id['user_group']]['allow_cats']!='all'){
    $allow_cats = explode(",",$user_group[$member_id['user_group']]['allow_cats']);
    $deny = true;
    if(strpos($row['category'],",")!==false){
        $row['category'] = explode(",",$row['category']);
        foreach($row['category'] as $cat) if(in_array($cat,$allow_cats)) $deny = false;
    }else{
        $row['category'] = intval($row['category']);
        if(in_array($row['category'],$allow_cats)) $deny = false;
    }
    if($deny) die("Access denied!");
}


Оф. сайт: sandev.pro

С уважением,
Олег Александрович a.k.a. Sander


+18
Просмотры: 5773 VIP ProWebber | Комментарии (13)
Теги: Sander, Download, Fix
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1kabua111

  • 12 сентября 2013 22:23
  • Регистрация: 5.02.2011
  • ICQ: --
  • Комментариев: 47
  • Выкл.
Оф. ответ разработчика: "Никакой лазейки, здесь нет, потому как кому разрешено скачивать файлы с сервера, а кому нет, настраивается в настройках групп, в настройке которая отвечает именно за скачивание. И разрешение на просмотр новости или ее отсутствие в данном случае роли никакой не играет."

+4

#2Dr. Neo

  • 12 сентября 2013 23:08
  • Регистрация: 3.12.2009
  • ICQ: 370771525
  • Комментариев: 400
  • Выкл.
А ТС всё "проблемы" в воздухе находит. laugh

-1

#3Westr

  • 12 сентября 2013 23:40
  • Регистрация: 1.10.2011
  • ICQ: 600
  • Комментариев: 60
Цитата: Dr. Neo
А ТС всё "проблемы" в воздухе находит


Типичный способ по привлечению бесплатного трафика на свой сайт. Для чего он ссылку оставил.

И мне интересно Оф. сайт Да вот только чего.

--------------------

-1

#4Dr. Neo

  • 12 сентября 2013 23:51
  • Регистрация: 3.12.2009
  • ICQ: 370771525
  • Комментариев: 400
  • Выкл.
Цитата: Westr
Типичный способ по привлечению бесплатного трафика на свой сайт. Для чего он ссылку оставил.

Ну до. Обновил же. Надо засветится.

0

#5Sander

  • 12 сентября 2013 23:53
  • Регистрация: 19.02.2010
  • ICQ: 404037556
  • Комментариев: 324
Да ну?
Ок, рассмотрим ситуацию на примере моего сайта.
Есть у меня группы "Посетители" которым разрешено скачивание с сайта. И есть группа "VIP" которым так же разрешено скачивание.
Но вот есть у меня раздел VIP, в котором я выкладываю модули и хаки, которые могут скачивать только пользователи из группы VIP.
Но как и сказал целсофт:
разрешение на просмотр новости или ее отсутствие в данном случае роли никакой не играет.

Получается, что простым подбором ID файла - любой посетитель может скачать файл из закрытого раздела даже не имея доступа в саму новость.

Никакой лазейки, здесь нет, потому как кому разрешено скачивать файлы с сервера, а кому нет, настраивается в настройках групп, в настройке которая отвечает именно за скачивание

Все правильно. Я об этом и писал в "Преграда №1". Но настройка слишком критична, либо можно все либо ничего.

--------------------

+6

#6Dr. Neo

  • 13 сентября 2013 00:00
  • Регистрация: 3.12.2009
  • ICQ: 370771525
  • Комментариев: 400
  • Выкл.
Цитата: Sander
Получается, что простым подбором ID файла - любой посетитель может скачать файл из закрытого раздела даже не имея доступа в саму новость.

Нэт!

-5

#7Sander

  • 13 сентября 2013 00:03
  • Регистрация: 19.02.2010
  • ICQ: 404037556
  • Комментариев: 324
Цитата: Dr. Neo
Нэт!

И что же этому помешает?

--------------------

+2

#8Dr. Neo

  • 13 сентября 2013 00:11
  • Регистрация: 3.12.2009
  • ICQ: 370771525
  • Комментариев: 400
  • Выкл.
Цитата: Sander
И что же этому помешает?

Как и кто вообще будет перебирать этот ID, который имеет вид
HR0cDovL21pc2hha29uc3RhLnJ1L2xpZ2h0bW9uc2FtcC5yYXI=


И если даже вида
download.php?id=1953

Все равно ничего не выйдет.

З.Ы. И это называется "Я решил замутить приватник" clapping

И да. Еще раз, для "особых". Этого:
Параметр №2.
В настройках групп пользователей в параметре "Доступные разделы" можно перечислить список категорий к которым будет открыт доступ. Получается та же ситуация. Простым методом перебора ID файлов можно будет скачать любой файл, даже не имея доступа в закрытый раздел.

сделать нельзя! Т.к. если раздел недоступен юзеру, то и все файло в нем тоже. И если он все подправит и подчистит то сервер его все равно пошлет.

Лол. Нужно научится шарить даже в примитивных целсофтовских алгоритмах. А не страдать херней.

-5

#9Sander

  • 13 сентября 2013 00:26
  • Регистрация: 19.02.2010
  • ICQ: 404037556
  • Комментариев: 324
Dr. Neo,
HR0cDovL21pc2hha29uc3RhLnJ1L2xpZ2h0bW9uc2FtcC5yYXI=

Это, я так полгаю, кусок от base64encode? Т.е. просто ссылка в leech. Так не о ней речь.

И если даже вида

Не даже, а именно и только такой.

Привожу строку из download.php
$id = intval ( $_REQUEST['id'] );

Т.е. для скачивания файла можно передавать только (!) id файла в числовом виде.

Все равно ничего не выйдет.

Весомый и главное аргументированный ответ. Не поспоришь.

--------------------

+7

#10Dr. Neo

  • 13 сентября 2013 00:28
  • Регистрация: 3.12.2009
  • ICQ: 370771525
  • Комментариев: 400
  • Выкл.
Цитата: Sander
Весомый и главное аргументированный ответ. Не поспоришь.

А и не надо. Надо ставить чистый двиг на поддомен. Раздать права паре юзеров с админки и посмотреть в живую, как это работает и что "псевдопараметр2" никак не прокатит, раз код читать не умеем правильно.

-5

#11Sander

  • 13 сентября 2013 00:48
  • Регистрация: 19.02.2010
  • ICQ: 404037556
  • Комментариев: 324
Вот мне реально понравился комментарий товарища kabua111.
В отличие от некоторых не умничает, а просто спросил у человека который разбирается и просто процитировал его ответ. Ну и делает выводы соответственно полученной информации.

раз код читать не умеем правильно.

И это говорит человек, который абсолютно ничем не может подтвердить свои слова.

--------------------

+6

#12Dr. Neo

  • 13 сентября 2013 00:53
  • Регистрация: 3.12.2009
  • ICQ: 370771525
  • Комментариев: 400
  • Выкл.
Цитата: Sander
И это говорит человек, который абсолютно ничем не может подтвердить свои слова.

А зачем? И обязан ли?
Я доношу принцип работы. А не зацикливаюсь на одном ID и не начинаю раздувать проблему, которой и нет на самом деле.

Раз хочется так считать - считайте. Лишь бы Вам было хорошо. wink

closed.

-5

#13Sander

  • 13 сентября 2013 00:59
  • Регистрация: 19.02.2010
  • ICQ: 404037556
  • Комментариев: 324
А зачем? И обязан ли?
Что вы, абсолютно нет. Не можете, не надо.

Я доношу принцип работы.
Ни в одном комментарии не увидел какого-либо объяснения принципа работы.

Раз вам хочется считать, что это не проблема - считайте. Лишь бы Вам было хорошо.

closed.

--------------------

+11
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.

Max-energy.top - Заработок на электросчетчиках;)

Skripters.info - все для вебмастера. Только эксклюзивный контент.

Создание шаблонов DLE, быстро и недорого! 3wave.com.ua

Бро лей на лучшую партнёрку

Почти бесплатный VDS хостинг!

Поддержи сайт
Скрипты, cms, шаблоны, статьи по раскрутке

Опросы

Как часто вы бываете на сайте?

Захожу 1-2 раза в день
1-2 часа в сутки
Более 2 часов
Почти целый день тут smile

Архив новостей
Ноябрь 2016 (7)
Октябрь 2016 (10)
Сентябрь 2016 (8)
Август 2016 (11)
Июль 2016 (14)
Июнь 2016 (17)

Последние комментарии:

Искать людей

Ваши переписки