Перейти к публикации

Рекомендованные сообщения

Сегодня меня взломали благодаря уязвимости в движке + человеческий фактор.

Метод атаки:

1. Через систему личных сообщений пользователю из группы Администраторы присылают письмо (обычно жалоба и тп) в тексте которого есть некая ссылка. Ссылка закодирована якобы антиличем и ссылается на штатный скрипт - /engine/go.php?url=%1D... (к сожалению оригинальный url не сохранился - пока я разбирался с последствиями злоумышленник потер историю сообщений).

2. При переходе по ссылке штатный скрипт /engine/go.php раскодирует следующий javascript код (код на ходу правился для анализа, но вроде я его полностью восстановил в исходный вид):

<code style='display: none;' id='LJKwqoiDHqewE'></code>
<script>
.....
</script>

3. Злоумышленник соответственно создает себе юзера petromadsss с привилегиями Администратора и отправляет себе сигнал о новой жертве. Кстати, ждать он себя не заставил - практически сразу же залогинился в админку и начал править настройки сайта (выявлено по логу последних действий в админпанели).

 

Как дальше собирался воспользоваться хацкер взломанной системой не известно (я заблокировал все сети с которых он входил - вероятно через TOP или подобное, т.к. сетей было около 5, все иностранные хостинги).

deny 185.93.181.0/25;   # M247-LTD-Madrid / ES
deny 217.64.127.0/24;   # M247-LTD-Vienna
deny 37.221.160.0/20;   # RO-VOXILITY
deny 91.229.76.0/22;    # DeltaHost / UA

Также, данный взлом может привести к взлому самого сервера и потере контроля над ним.

 

PS: ни какие файлы движка более не изменялись (проверено вручную через find из консоли и средствами контроля самого движка), данные БД вероятно тоже. Все вышеперечисленные материалы были получены по горячим следам и описаны сразу же, так что извиняюсь за возможные мелкие неточности.

PS2:  по данным Google ящика petromadsss@gmail.com не существует.

Ссылка на сообщение
Поделиться на других сайтах

Да, оригинальный способ заставить админа создать админа :)

Посмотрите бекапы sql, возможно есть копия с перепиской.

Ссылка на сообщение
Поделиться на других сайтах

О таком надо писать в обратную связь и в личные сообщения celsoft. Сейчас понабегут и пойдут ломать сайты )

Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, MSK сказал:

Да, оригинальный способ заставить админа создать админа :)

Посмотрите бекапы sql, возможно есть копия с перепиской.

 

сам текст послания не оригинален и ни чего нового не несет, поэтому и выкладывать не стал, но кому интересно вот копия из мыла, пришедшего по ПМ:

Цитата
Уважаемая администрация веб сайта,
Материалы, принадлежащие нашему клиенту, размещены на Вашем сайте. Клиент разрешения на их публикацию на указанном веб ресурсе не давал. Существуют основания для запрета клиентом к распространению в сети данных файлов, а также основания, в случае отказа удаления, признания соответствующих действий компрометирующими. Просим удалить материалы в течение 3-х рабочих дней со дня получения данного письма. Данное письмо просим считать официальным электронным уведомлением*, которое является зарегистрированным в соответствующей электронной базе t&amp;p, заверено электронной подписью и может быть использовано t&amp;p в качестве аргумента в случае возникновения дополнительных разбирательств.

Ссылка на материал
_________
*зафиксирован t&amp;p как официальное средство уведомления состоянием на 3 марта 2017 года

С уважением, Екатерина Стрельцова
Ведущий специалист t&amp;p
tokarevpartners.ru
Regards, Kate Stleltzova

на тексте "Ссылка на материал" и висел зловред

Ссылка на сообщение
Поделиться на других сайтах

Забыл самое очевидное - ссылка должна быть в истории браузера.

Ну и текст грамотно составлен. Убедительно, для перехода по ссылке.

Ссылка на сообщение
Поделиться на других сайтах

да смысла в ссылке нет - то, что было закодировано в ней (js код) я раскодировал и выложил на обозрение. Выкладывать тот же код в base64 я не вижу смысла

7 минут назад, MSK сказал:

Забыл самое очевидное - ссылка должна быть в истории браузера.

Ну и текст грамотно составлен. Убедительно, для перехода по ссылке.

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

17 минут назад, webair сказал:

О таком надо писать в обратную связь и в личные сообщения celsoft. Сейчас понабегут и пойдут ломать сайты )

ну самому я не писал, а в саппорт скинул одновременно с этой темой. Чем раньше закроют - тем меньше будет жертв.

честно говоря - это мой последний проект на DLE.. все время его ломали, то так, то эдак.. в топку

Ссылка на сообщение
Поделиться на других сайтах

Ну на самом деле подобный "финт" возможен на любой CMS, в которой есть внутренний редирект для ссылок.
Лечится это достаточно просто (ну пока новый не придумают) - проверка ссылки при генерации редиректа.

Спасибо за инфу - о подобных вещах надо узнавать как можно скорее. Предупрежден - значит вооружен.

 

Я бы добавил еще, что подобным способом можно не только Админа создать, но и любые действия выполнить доступные авторизованному пользователю... Т.ч. это касается не только Админов.

Пока нет заплатки - лучше отключить в настройках групп

Автоматическая замена ссылок в тег [leech]
Разрешить использование кликабельных ссылок

Изменено пользователем MSK
Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, MSK сказал:

Ну на самом деле подобный "финт" возможен на любой CMS, в которой есть внутренний редирект для ссылок.
Лечится это достаточно просто (ну пока новый не придумают) - проверка ссылки при генерации редиректа.

Спасибо за инфу - о подобных вещах надо узнавать как можно скорее. Предупрежден - значит вооружен.

 

Я бы добавил еще, что подобным способом можно не только Админа создать, но и любые действия выполнить доступные авторизованному пользователю... Т.ч. это касается не только Админов.

Пока нет заплатки - лучше отключить в настройках групп


Автоматическая замена ссылок в тег [leech]
Разрешить использование кликабельных ссылок

в он ее не тегом [leech] сделал - это вручную было закодировано и всунуто, так что отключение лича не поможет

нужно скипать любой програмный код в /engine/go.php

 

на счет любых действий от имени авторизованных пользователей - согласен, но это не так критично, как под админом

 

кстати, уже немного позже обнаружил, что хацкер включил в движке заливку файлов, так что это, по-видимому, был еще далеко не конец.. видимо просто немного не успел

Изменено пользователем akuba
Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, akuba сказал:

 

честно говоря - это мой последний проект на DLE.. все время его ломали, то так, то эдак.. в топку

А нехер кому попало права админа раздавать, людям которые не смотрят на какие ссылки тыкают. Если ссылка пришла с /engine/go.php, в просьбе удалить какой то материал, то это уже должно насторожить, так как правообладатели дают ссылку на материал который нужно удалить всегда прямую, так как они копируют её из окна браузера.

 

 

Ссылка на сообщение
Поделиться на других сайтах

Спасибо за предоставленную информацию. Опубликован патч http://dle-news.ru/bags/v112/1715-nedostatochnaya-filtraciya-dannyh.html устраняющий данную проблему.

 

7 часов назад, MSK сказал:

Пока нет заплатки - лучше отключить в настройках групп


Автоматическая замена ссылок в тег [leech]

 

Пользователю не прислали ссылку через [leech] ему прислали уже подготовленную ссылку. Здесь нужно иметь запрет на публикацию кликабельных ссылок.

Ссылка на сообщение
Поделиться на других сайтах

А у меня буквы цифрами пишут в коментариях - сайт с кодировкой 1251

в хорошем качестве здесь h&#116;&#116;p&#58;&#47;&#47kinodem&#046;&#114;&#117;

Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, SusaPusa сказал:

А у меня буквы цифрами пишут в коментариях - сайт с кодировкой 1251

в хорошем качестве здесь h&#116;&#116;p&#58;&#47;&#47kinodem&#046;&#114;&#117;

И? Непонятна суть вашей проблемы. Это вам пытаются написать HTML сущности. Что пользователь написал, то скрипт и вывел.На безопасность вашего сайта это никак не влияет.

Ссылка на сообщение
Поделиться на других сайтах

Владимир, небольшое уточнение:

в патче нужно добавить ниже, или заменить на?

если добавить ниже, то получается вот так?

$url = @str_replace ( "&amp;", "&", $url );
$url = htmlspecialchars( $url, ENT_QUOTES, $config['charset'] );
$url = str_replace ( "&amp;", "&", $url );

 

Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, prikindel сказал:

в патче нужно добавить ниже, или заменить на?

Добавить. 

10 минут назад, prikindel сказал:

если добавить ниже, то получается вот так?

Да верно, так и должно быть.

Ссылка на сообщение
Поделиться на других сайтах

Странно что так долго никому в голову не пришло что go.php не фильтрует передаваемые ему данные на html...
А ведь этот код почти не трогался не одну линейку DLE же...

Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, SKYNET74 сказал:

Странно что так долго никому в голову не пришло что go.php не фильтрует передаваемые ему данные на html...

Потому что вектор атаки достаточно сложный, чем может показаться на первый взгляд. И требует достаточно серьезных знаний. Чтобы атака была успешной требуется соблюдение целого ряда условий.

 

1. Должны быть разрешены кликабельные ссылки для обычных пользователей, для комментариев.

2. Ссылку нужно специально подготовить закодировать и только потом отправить, простая вставка кода не сработает.

3. Нужны серьезные знания JS программирования, т.к. код достаточно сложен, просто так нужные данные не получить.

4. Ссылку нужно послать именно администратору и именно на сайт, из вне она уже не сработает.

5. Собственно уговорить кликнуть по ней администратора.

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, celsoft сказал:

Потому что вектор атаки достаточно сложный, чем может показаться на первый взгляд. И требует достаточно серьезных знаний. Чтобы атака была успешной требуется соблюдение целого ряда условий.

 

1. Должны быть разрешены кликабельные ссылки для обычных пользователей, для комментариев.

2. Ссылку нужно специально подготовить закодировать и только потом отправить, простая вставка кода не сработает.

3. Нужны серьезные знания JS программирования, т.к. код достаточно сложен, просто так нужные данные не получить.

4. Ссылку нужно послать именно администратору и именно на сайт, из вне она уже не сработает.

5. Собственно уговорить кликнуть по ней администратора.

Первое правило программиста, не доверять входным данным от пользователей. (с)
И раз go.php ничего не подразумевает к передаче кроме ссылок, нужно было жестко фильтровать $_GET['url'], движок же не будет HTML/JS кодировать в base64...
PS: Ссылки включены практически у всех, через личивание, ибо не дело в 2017 то году усложнять жизнь пользователям в виде вставки ссылки как текста...

Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, SKYNET74 сказал:

Первое правило программиста, не доверять входным данным от пользователей. (с)

Какой смысл писать очевидные вещи? У вас было 10 лет выявить проблему и создать вектор атаки, именно столько существует проблемный код, и до этого никто ее ранее не выявлял, и создать вектор атаки не мог. А постфактум, когда это сделал другой, бросаться избитыми фразами, большого ума не нужно.

 

28 минут назад, SKYNET74 сказал:

PS: Ссылки включены практически у всех, через личивание, ибо не дело в 2017 то году усложнять жизнь пользователям в виде вставки ссылки как текста...

Вообще то речь идет о комментариях, а не просто ссылках как таковых. Если вы считаете нормальным давать прямые ссылки, для лиц, которые не имеют доверия, то я умываю руки. И дело тут совершенно не в go.php и в антиличах, а в том что вам могут понаставить ссылки в комментариях на порно, на вирусы и трояны, которые расположены на других сайтах и т.д. и все это будет стоять прямыми ссылками на вашем сайте и в лучшем случае сайт будет отмечен как небезопасный поисковиками, т.к. отправляет пользователей на сайты с вирусами, поисковики отключают не только сайты где вирусы, но и сайты ссылающиеся на таковые. В худшем услышите много хороших слов про себя от посетителей своего сайта когда они пойдут по таким ссылкам и наловят вирусов. Кликабельные ссылки на сайте должны публиковать доверенные лица, так было и 2000 году, так будет и в 2999 году, если там конечно останется понятие ссылок.

Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, celsoft сказал:

Вообще то речь идет о комментариях, а не просто ссылках как таковых. Если вы считаете нормальным давать прямые ссылки, для лиц, которые не имеют доверия, то я умываю руки. И дело тут совершенно не в go.php и в антиличах, а в том что вам могут понаставить ссылки в комментариях на порно, на вирусы и трояны, которые расположены на других сайтах и т.д. и все это будет стоять прямыми ссылками на вашем сайте и в лучшем случае сайт будет отмечен как небезопасный поисковиками, т.к. отправляет пользователей на сайты с вирусами. В худшем услышите много хороших слов про себя от посетителей своего сайта когда они пойдут по таким ссылкам и наловят вирусов. Кликабельные ссылки на сайте должны публиковать доверенные лица, так было и 2000 году, так будет и в 2999 году, если там конечно останется понятие ссылок.

Ну вы уж совсем в крайности не бросайтесь, естественно комментарии от обычных пользователей модерируются, а так же есть кнопка жалобы, но смысл в том что бы для перехода по ссылке пользователям сайта не надо было копировать её и вставлять (вы о "дубовых" пользователях то подумайте), это всего лишь ссылка, а не попандер или кликандер который без желания пользователя появляется, а вот переходить ли по ссылке или нет, это уже выбор пользователя.

Посмотрите на популярные сайты, были бы они такими популярными, если бы вместо улучшения юзабилити, вставляли бы палки в колёса пользователям?
Вопрос риторический...

PS: А может сделать элементарно ещё один вид личивания, без кодирования в base64?
Пример: /engine/go.php?to=https://site.ru/page/about/
И не индексируется, и сразу видно куда ведёт. А base64 это как неведомое болото...

Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, SKYNET74 сказал:

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

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

 

42 минуты назад, SKYNET74 сказал:

PS: А может сделать элементарно ещё один вид личивания, без кодирования в base64?
Пример: /engine/go.php?to=https://site.ru/page/about/
И не индексируется, и сразу видно куда ведёт. А base64 это как неведомое болото...

Не имеет ни малейшего смысла. За https://site.ru/page/about/ вас также может ждать вирус и в URL об этом написано не будет.

 

P.S. Зачем ставить себе лайки за свои собственные сообщения? Я как администратор это могу увидеть. Только не говорите что вы их не ставите. Ставите и к каждому сообщению, только от другого аккаунта.

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, celsoft сказал:

Не имеет ни малейшего смысла. За https://site.ru/page/about/ вас также может ждать вирус и в URL об этом написано не будет.

Зато видно URL куда тебя отправляют...
И если там неведомые символы, тогда это повод задуматься о цели такой ссылки...

Это как минимум ещё одна степень защиты для внимательного администратора, а если он там видит base64, то что ему делать? Идти декодировать base64 и смотреть ручками куда ведёт ссылка?
Это просто информация к размышлению для вас.

Ссылка на сообщение
Поделиться на других сайтах

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

 

"будучи администраторами, люди бездумно идут по ссылкам" - администраторы тоже люди (даже матерые программеры и прочие животные), со свойственными людям недостатками типа переутомление, какие-либо жизненные неурядицы, привыкание к множеству однотипных и монотонных операций и тп. Так что не стоит поливать грязью бездумных администраторов. Уверен на 120%, что любой из Вас хоть раз в жизни попадался на довольно тупые разводы типа этого - все люди одинаковы и абсолютно непогрешимых не бывает.

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

Изменено пользователем akuba
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, akuba сказал:

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

 

"будучи администраторами, люди бездумно идут по ссылкам" - администраторы тоже люди (даже матерые программеры и прочие животные), со свойственными людям недостатками типа переутомление, какие-либо жизненные неурядицы, привыкание к множеству однотипных и монотонных операций и тп. Так что не стоит поливать грязью бездумных администраторов. Уверен на 120%, что любой из Вас хоть раз в жизни попадался на довольно тупые разводы типа этого - все люди одинаковы и абсолютно непогрешимых не бывает.

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

Ну и всё таки если бы видно было реальную ссылку перенаправления, то как минимум это бросилось бы в глаза, тот же хром, лиса и опера её выводят при наведении.
Может я какой то не такой, но я обычно смотрю куда ведёт ссылка)

Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, akuba сказал:

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

В DLE это просто единые настройки.

 

5 часов назад, akuba сказал:

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

Ни в коем случае никто не сваливает вины на администраторов, в моем сообщении шла речь просто о непонимании того зачем администраторы так делают. Этого не должны делать администраторы сайтов. Я администрирую уже много лет, очень много сайтов, мне без преувеличения каждый день приходят письма, о том что чтобы что нажать, о том что аккаунты блокированы, что то где то украдено, и в 100% случаев в лучшем случае это фишинг, если бы я ходил по каждой такой ссылке, то давно бы уже были украдены все доступы. Вашей вины в том что в скрипте была уязвимость нет, это моя личная вина. Но вот просто так ходить по ссылкам вне изолированной песочницы нельзя, будучи где то администратором, потому как вы мишень на кражу доступов. По ссылке мог быть троян, который бы селился на компьютере и крал доступы к серверу, и это не была бы уже вина DLE в том что он вообще позволяет присылать личные сообщения.

4 часа назад, SKYNET74 сказал:

Может я какой то не такой, но я обычно смотрю куда ведёт ссылка

Вы не понимаете смысла моих сообщений, куда она ведет неважно. Важно то, что вы не знаете что за ней, пока по ней не пройдете.

5 часов назад, akuba сказал:

Уверен на 120%, что любой из Вас хоть раз в жизни попадался на довольно тупые разводы типа этого - все люди одинаковы и абсолютно непогрешимых не бывает.

Безусловно. Кто не попадался это лишь вопрос времени.

Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, celsoft сказал:

Вы не понимаете смысла моих сообщений, куда она ведет неважно. Важно то, что вы не знаете что за ней, пока по ней не пройдете.

В данном случае, если я правильно понял код, не вела на сайт злоумышленника, а выполнила JS прямо на go.php, или я не прав?
И хотите сказать было бы не видна странность при просмотре URL такой ссылки?

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...