Category: it

Category was added automatically. Read all entries about "it".

Joomla 3.8.1 zero-day LDAP exploit

Исследуя по долгу службы эксплоит https://blog.ripstech.com/2017/joomla-takeover-in-20-seconds-with-ldap-injection-cve-2017-14596/ нашел ещё один эксплоит - в том же месте, но в свежей Joomla 3.8.1 и работающая немного иначе:

У меня не получилось повторить эксплоит по ссылке, зато я обнаружил офигенное:
0-DAY EXPLOIT!
В свежей версии Джумлы, в том же куске кода

1. Ставим Joomla! 3.8.1 (самая свежая версия)
1.1. Ставим пароль "admin" - что бы он не совпал случайно с паролем LDAP
2. Ставим и настраиваем LDAP-сервер. Пусть это будет http://directory.apache.org/apacheds/ Apache Directory Server под Windows (подтверждено)
3. Логинимся в Joomla! под администратором
4. В админке настраиваем и включаем LDAP Auth (ниже конфигурация под ApacheDS):
4.0. Выбираем пункт меню Extensions->Plugins. В таблице выбираем "Authentication - LDAP"
4.1. Host:
4.2. Post: 10389
- Стандартный для ApacheDS. Для других сервисов - 389
4.3. LDAP V3: Yes
4.4. Authorisation method: Bind and Search (ВАЖНО! Иначе не будет работать эксплоит!)
4.5. Search String: uid=[search]
4.6. Connect Username: uid=admin,ou=system
- Стандартный для ApacheDS
4.7. Connsect password: secret
- Стандартный для ApacheDS
4.8. Status: Enabled
- В правом-верхнем углу страницы
4.9. Save
5. Тестируем, что система настроена верно:
5.1. Вылогиниваемся
5.2. Логинимся под admin/secret - это мы проверяем работу LDAP. Если не получилось - проверяем настройки LDAP/Joomla! и добиваемся работы
6. Применяем эксплоит. Подбираем имя
6.1. Для этого используем любой пароль, а в пишем строке Login следующую конструкцию:
<абсурдноеимя>;uid=<тестируемое имя>
Например:
fjsdkfja;sjfsldkfj;uid=admin
Абсурдное имя нужно для того, что бы его точно не было в БД Джумлы и она передавало имя в LDAP сервер
6.2. Наблюдаем реакцию Джумлы
6.3. Если такого пользователя нет в LDAP - ответ будет
Unable to find user
6.4. Продолжаем варьировать имя пользователя, пока...
6.5. Если такой пользователь будет в LDAP, то ответ будет:
Username and password do not match or you do not have an account yet.
6.6. А теперь подбираем пароль
6.7. ?????
6.8. PROFIT!
6.9. Для облегчения подбора рекомендуется использовать библиотеки логинов и паролей

Критичность: низкая. По статистике самой Джумлы весьма небольшое количество использует LDAP
...А даже если использует - то вряд ли кто-то будет пускать форумных пользователей прямо в общую OU

Как бороться:
1. Вообще, эта вся фигня - двойной брутфорс: сначала брутфорс логина, а затем брутфорс пароля.
2. Соответственно - и методы борьбы, как с брутфорсом: мониторинг и автоматическое отключение.
3. Можно еще пропатчить Джумлу, что бы она дополнительно резала символ ";" из логина - это так, навскидку. А еще лучше, что бы его менял ldap_escape. Патч элементарный

Samsung AllShare, DLNA и все-все-все...

Меня умиляет страсть современной IT-индустрии (и с чмоканьем примкнувшей к ней индустрии бытовой техники) к игнорированию бритвы Оккама. В частности - к плодению... к пложению... короче - к созданию ненужных сущностей.

Возьмем такой простой прибор, как телевизор. Ну, реально - что от него нужно в базовом варианте? Показать подвижную картинку с антенны/кабеля. Возможно - декодировать как-то цифровой сигнал в случае DTV. Но итог один - подвижная картинка. Зачем пользователю вникать - какая картинка из цифры, а какая - аналоговая? Есть номер канала, есть для него картинка - без разницы между источниками. Но вот НАХУЯ делать два отдельных диапазона каналов для цифрового и аналогового телевидения? Почему не сделать сквозную нумерацию каналов? Не, с программистской точки зрения я понимаю - каналы в любой момент могут поменятся... Но в реальной жизни это происходит хорошо, если раз в год! И что самое обидное - два диапазона каналов от такой смены совершенно не спасет! А как мне, извините, объяснить немолодой родительнице, как ей менять диапазоны каналов и почему "Канал 1" в цифре не равен "Каналу 1" в аналоге - если вообще удастся объяснить ей разницу между цифрой и аналогом! Как мне это сделать, если я только раза с третьего методом научного тыка выяснил, как это делать? Потому что инструкция ни к черту не годится - даже для меня, не говоря уже о более взрослых людях. При этом я бы не сказал, что я совсем IT-неграмотен - на порядки более функциональные интерфейсы новых программ я осваиваю быстро и легко без помощи мануалов. Ладно бы - принципиально новый интерфейс телевизора, с которым я не имел дело лет (дай бог памяти) десять! Но ведь и родительница, которая с предыдущими версиями интерфейса живет запросила помощи даже в поиске обычных программ. В итоге возможности весьма навороченного телевизора (а других сейчас в продаже нет) просто не используются! Да, в кабеле есть десятки цифровых каналов - но по итогу используется только аналог в режиме "Ты мне просто скажи - какой канал на какой цифре (в смысле - на каком номере), а я дальше сама найду"...

Это был присказка. Сказка впереди.

Решился я разжится большеэкранным телевизором. Все-таки 20" маловато, когда в комнату набиваются гости. "Гулять - так гулять, стрелять - так стрелять" - решил взять версию со встроенным вайфаем. Телевизор, как таковой, я смотреть не собираюсь и нужен мне он исключительно для просмотра фильмов с удобством. Можно было бы, конечно, взять более простую версию - с проигрыванием фильмов с флешки. Но, помятуя эпопею с DVD-плеером (который вроде как читал всякие DivX), я решил, что проще взять телек, котоый умеет крутить фильмы по сети... О!!! Как я ошибался!!!

Начиналось все вроде бы цивильно - телек радовал диагональю, ударная дрель сократила время монтажа кронштейна под телевизор практически до вычисления координат сверления. Надо было насторожится заранее - когда оказалось, что во-первых телевизор имеет крепления VESA-200, а не VESA-400. Так же надо было не пропустить момент, когда выяснилось, что рекомендованный в магазине кронштейн для крепления ТВ к собственно кронштейну имеет в комплекте болты M4 и М6, тогда как телек хочет не меньше, чем М8. Последняя проблема обошлась в лишний визит в магазин-продавец и кошение лиловым глазом ("Вы мне можете найти продавца, который был в воскресенье? Зачем? Понимаете, я купил у вас телевизор и кронштейн, а в комплекте нет нужных болтов. Да-да, вот тот, с 3д, вайфаем и за невъебенную сумму. Вместе с рекомендованным кронштейном, у которого не оказалось нужного крепежа в комплекте. Вы мне можете помочь или сразу зовем менджера?"), а первая проблема была нивелирована недоверием к знанием продавцов и предварительным тщательным обмером габаритов телека. Иначе получилось бы совсем некрасиво.

Итак, все вроде бы более-менее на мази. Даже с домашней точкой удалось законнектится с первого раза (оставим вне рассмотрения вопрос набивания сложно пароля к WiFi с пульта телевизора). Дальше захотелось использовать для просмотра домашний медиа-сервер. И вот тут поджидала первая засада! Оказывается, телевизор не знает о существании таких "прогрессивных" протоколов как SMB (для тех, кто не знает - протокол многолетней давности для доступа к данным на других компьютерах от Микрософта)! Т.е. даже Линух уже много лет имеет реализацию этого протокола - а для телевизора 2012 года этот протокол - вновинку! Нет, хорошо, конечно, что мне предложили инструкции по настройке ("Зайдите на сайт Самсунга и поищите там прогу для вашей ОС"), но, как бы, десятицентовый компакт решил бы большинство проблем. Забегая вперед, скажу - найти поиском на сайте Самсунга нужную прогу мне не удалось. Пришлось воспользоваться нашим-всем Гуглем, который за пол-секунды локализовал нужный УРЛ на сайте того же Самсунга.

Нет, ну я почти все понимаю. Понимаю мелкое жлобство - при цене флешки на 8гб в розницу вместо флешки на 512 мб (640k fits to all!) вложить 10-центовый компакт... Да, какая-то экономия. Но вот МЕГАжлобства - не вложить даже компакта с ПО я не понимаю! Пусть даже версия будет сто раз устаревшая - она позволит использвоать возможности телека, за которые заплачены деньги, хоть как-то! А учитывая, что без компакта скачивание хоть какой-то версии AllShare требует наличие инета - вообще происходящее становится непонятным! Если требуется наличие инета - то кто отменил автоапдейтеры? Пусть на компакте хоть сто раз устаревшая версия - при наличии инета она может обновится до актуальной!

Ладно, с грехом пополам через Гугль нашел нужный линк и скачал ПО. Обрадовало, что программа, не найдя .Net 4.0, сама предложила его скачать и установить. И что нехарактерно - действительно скачала и установила. А вот дальше началось веселье. При попытке проиндексировать мою коллекцию программа два раза подряд выжирала всю доступную память и падала. С третьего раза (и после двух перезагрузок) процесс, вроде пошел... Ну, мне так казалось! Естественно, я решил первым делом потестить качество телека. Присоединился к серверу AllShare и выбрал фильм из первой десятки проиндексированных.

Тут сделаем отступление. Новые протоколы - это, наверное, круто. Наверное, протокол DLNA на порядок превосходит по функциональности SMB... Только вот почему тогда для индексировании идет со скоростью 1 файл за 5 секунд? Наверное, новый протокол предоставит мне огромные возможности по управлению медиа-файлами?! Ну, там, выбор музыки по типу, выбор видео по жанрам итд... Наверное возможно как-то где-то оно там глубоко заложено... но! Телевизор мне показал тупо ограниченный набор папок! С еще более скудной функциональностью, чем даже эксплорер винды. Тупо папки и превьюшки файлов! Нахуя надо было городить специальный протокол для этого? Чем SMB не устраивал? Не, я видел там разные приколы в сервере типа "передать файл на устройство" или "проиграть файл с устройства" - но не увидел НИЧЕГО, чего нельзя было бы сделать через SMB-протокол! Нет, я понимаю, конечно, что, наверное, есть какие-то особые сценарии использования, где DLNA дает фору стандартной виндовой шаре... Ну так и делали бы именно для этих случаев отдельный протокол! Потому что на бытовых устройствах этих случаев НЕ БУДЕТ! Более того - новый супер-пупер протокол лишил меня возможности перематывать файл вперед-назад - что было бы доступно при работе по SMB (уровень файлового доступа). Нет, не понимаю...

Мы пока говорим о протоколе. Но надо поговорить и о супер-пупер ПО Samsung AllShare. Напоминаю - я, как более-менее нормальный человек решил потестировать новёхонький девайс. Подождал, пока тормозной AllShare проиндексирует десятко файлов, выбрал один, который был согласен посмотреть сейчас и откинулся в предвкушении... Пиздеть не буду - первые десять минут все было ОХУЕННО! Отличное изображение, хороший звук - на все потраченные деньги. Но примерно на 11 минуте телек вдруг меня озадачил сообщением, типа того, что "Связь потеряна" или как-то так. Я слегка прихуел. Потыкал кнопочки на пульте - нет, не выходит каменный цветок! Пришло отрывать жопу от дивана и ползти к компу. А там - сообщение! Типа того, что сервер сбойнул и будет перезапущен. Ну, вот только - так сразу! Вы нажмите кнопочку "ОК" - и все будет чики-пики!

Тут я опять сделаю отступления. Пропущу кучу матюков и перейду к сути. Если ваш сервис ёбнулся - то можно, конечно, вывести сообщение. Но НЕ НУЖНО ждать ввода пользователя - сервис нужно перезапустить как можно быстрее! Это касательно ПО. Теперь о телеке. Если пропала связь с сервером - то, конечно, неплохо вывести соответствующее уведомление. Но при этом надо пытаться восстановить связь с сервером, а не выбрасывать на верхний уровень!

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

В общем, нормального просмотра у меня не получилось. Каждые 10-20 минут телек уведомлял меня о том, что потеряна связь с сервером DLNA. И каждые 10-20 минут мне приходилось с матюками отрывать жопу от дивана, ползти к компу, нажимать там кнопочку "ОК" в окошке, возвращаться назад, вызывать меню SmartTV, выбирать там пункт проигрывания, выбирать последний проигранный файл, позиционировать его примерно на тот отрывок, что я запомнил (при сбое супер-пупер протокол DLNA не сохраняет положение фильма) и пытаться дальше насладиться фильмом.

Итог таков. За 8 часов Samsung AllShare не осилил мою коллекцию фильмов. Я оставлю его на ночь, но что-то мне подсказывает, что прийдется поискать альтернативный DLNA сервер, не столь капризный. А программистам Samsung я посылаю лучи поноса. Обоим департаментам - тем, которые писали ПО для телека, и тем, котрые разродились ПО AllShare.