Мобильный пентестинг. Поиск уязвимостей в современных WAP-сайтахСамая главная особенность сайтов мобильного интернета заключается в том, что практически все они пишутся самостоятельно — никаких тебе опенсорс CMS, как в большом вебе. Отсюда вытекает сложность поиска багов, ведь исходники этих сайтов недоступны пытливому взору хакера. Два года назад ты мог прочитать мою увлекательную историю о нахождении глупейших уязвимостей в крупных самописных порталах, ориентированных на просмотр прямо с экрана твоего мобильника. Настала пора проверить текущий уровень защищенности популярных WAP-проектов. Сперва я вкратце расскажу о некоторых изменениях в мобильном мире, которые произошли за последние пару лет: 1. Повальный переход на технологию WAP 2.0 (цветные xHTML-странички, которые теперь можно просматривать на компьютере не только с помощью Оперы) и, соответственно, уход в небытие WAP 1.1-1.3 с его черно-белыми WML-страницами (хотя в качестве опции он еще остался на многих сайтах); 2. Развитие социальных функций: знакомства, чаты, форумы — все, как в большом вебе; 3. Тотально возросший трафик (у кого сейчас нет мобилки с gprs/edge/3g/wifi/wimax/evdo и дешевыми тарифами?); 4. Загнивающий рынок продаж мобильного контента (в противовес этому вырос рынок мобильной рекламы, ты даже не представляешь, какие деньги там сейчас крутятся); 5. Огромнейшее количество халявного контента; 6. Приход в WAP специалистов разработчиков из большого веба, соответственно, повышенный уровень качества и безопасности скриптов. Благодаря последнему пункту мое исследование получилось не таким легким, как я ожидал :). Итак, для проведения пентестинга было выбрано наугад и жестоко изнасиловано разными хитрыми параметрами несколько топовых сайтов из популярных рейтингов waplog.net и top.wab.ru. У ВиталикаОдним из лидеров по количеству посетителей (5.5-6.5k уникальных хостов в сутки и стабильное 6-7 место в рейтинге top.wab.ru) является сайт vitalik.biz (не удивляйся такому странному домену — в вапе это в порядке вещей). Несмотря на явно отечественное название, сайт ориентирован на англоговорящих пользователей. Здесь присутствуют все необходимые атрибуты современных мобильных порталов: халявные загрузки, форум, чат, знакомства. Зная, что олдскульные сайты (а vitalik.biz работает с 2004 года) писались новичками в php, я сразу принялся за раскопки. Самым уязвимым местом оказался форум: при запросе После недолгих попыток подобрать количество столбцов и таблицу с юзерами у меня это получилось так: (Здесь %23 — это символ решетки в urlencode) Цифра «3» выводилась прямо в теле поста. Теперь нужно было подобрать колонки с именем и паролем пользователя. Ими, как это ни странно, оказались «name» и «pass» :). Итоговый запрос для вывода всех пользователей форума (а их было около 1500) выглядел следующим образом:
Результат работы запроса ты можешь увидеть на скриншоте. Единственным огорчением от найденной баги было то, что она не позволяла работать с файлами. Но улов в полторы тысячи пользователей тоже был не такой плохой наградой. От себя добавлю, что подобного рода ошибки даже в большом вебе встречаются очень редко, так что с сайтом мне сильно повезло. Первые осложненияБольше таких багов, как у Виталика, мне не попадалось, так что к поиску новых дырок на других сайтах пришлось приложить некоторые усилия. Следующей жертвой оказался портал vipfon.ru с посещаемостью 8-9k уникальных посетителей в день по рейтингу ваплога. Здесь уязвимым оказался скрипт К сожалению, на сервере была установлена какая-то ids, которая успешно резала любое присутствие ключевого слова union в запросе, так что легкого взлома не получилось. Итого, мы имеем слепую скуль-инъекцию, для начала работы с которой следовало подобрать true и false значения. Ими оказались следующие запросы:
Теперь мне необходим софт для работы с blind sql. Таковым послужил перловый скрипт Электа «Antichat SQL-tools for one_simvol_brut_columns v.1.1.1», описание и ссылку на который ты можешь найти в сносках. Единственным косяком являлось то, что софт позволяет выбрать формат комментария, но не позволяет выбрать его отсутствие (с комментариями запрос выдавал ошибку). Так что пришлось вносить кое-какие изменения в код скрипта: было, линия 190: стало, линии 190-191
Все готово для моих тестов :). Первым делом я узнал версию mysql: 5.1.32:
-c — наш формат комментария Затем я попытался вывести первые 150 символов файла / etc/passwd:
-s — подзапрос, в данном случае загружаем файл /etc/passwd На удивление, содержимое первых 150 символов файла успешно сбрутилось :).
Теперь следовало бы изучить исходники сайта на предмет более крупных багов, но это дело я оставляю тебе, ибо мне пора двигаться дальше. P.S. Также на этом портале обнаружился намек на выполнение произвольного кода:
Первые разочарованияДалее в топ-50 рейтингов waplog.net и top.wab.ru нашлись лишь sql-инъекции, которые по каким-либо причинам мне не удалось раскрутить: 1. Vtakt.Ru (13k уникальных посетителей в день) — Здесь кавычка заменяется на две кавычки — довольно необычная, но глупая защита от инъекций. Тем не менее, мне удалось составить верный запрос, исходя из этого формата: Скорее всего, это был INSERT-запрос, так что в итоге вторая часть инсерта выглядела следующим образом:
Странным оказалось то, что при верно составленном запросе сайт не только не выводил на экран данные, но и ненадолго уходил в даун (профит из баги все-таки есть — это банальный отказ в обслуживании). 2. Prezika.Net (очередное классное название домена и почти 20k уников в день) —
Тут засада была в том, что скуля находилась в последнем параметре INSERT-запроса, а также версия мускула не позволяла провернуть фишку с «on duplicate key update»:
Новая жизнь старых баговНастало время для небольшого, но очень важного отступления. Как ты уже знаешь, основная масса мобильных порталов давно перешла на технологию WAP 2.0, и, как оказалось, с приходом xHTML в мобильном интернете крайне остро проявилась проблема банального XSS! Внимательный читатель скажет: «но ведь спецификация WAP 2.0 не поддерживает JavaScript?». Это утверждение было бы верным, если бы не два больших «но»: 1. Браузеры современных мобильных телефонов (особенно смартфонов, а также мобильная Опера) вполне успешно поддерживают javascript в теле xHTMLдокумента, не выдавая никакой ошибки. 2. Все больше обычных веб-юзеров посещают сайты мобильного интернета с домашнего компьютера (в том числе и админы вап-сайтов — наша основная цель). Принимая во внимание эти факты, можно смело писать массовые эксплойты под обилие уязвимостей кросс-сайт скриптинга на мобильных порталах, создатели которых и не подозревали о проявлении такого рода багов в WAP :). Смотри сам. 1. Spaces.Ru (450k уников): 2. Smartu.Net (10k уников): 3. Sever.Ru (70k уников): 4. Waprik.Ru (23k уников): 5. Glammy.Ru (20k уников): 6. Vtakt.Ru (уже знакомый тебе сайт буквально кишит XSS): 7. Wse.Su (9k уников): И это далеко не все, так что запомни: xssуязвимостям в вапе быть! ЗЛОКЛЮЧЕНИЕВ наше время создатели мобильных порталов стали настоящими специалистами в сайтостроении и уже более ответственно относятся как к себе, так и к своим пользователям. Это видно по тому, какие типы уязвимостей остались в мобильном интернете спустя несколько лет: lfi и rfi исчезли как класс, скуль-инъекции остались, но тихо вырождаются, чтение произвольных файлов есть, но крайне труднодоступно для обнаружения. Зато все эти печальные факты с лихвой компенсируются зарождением мобильного кросс-сайт скриптинга! Здесь открывается совершенно новая стезя для пытливого вап-хакера, так что дерзай, и твои старания окупятся сторицей. Links• forum.antichat.ru/showpost.php?p=236186&postcount=2 — Antichat SQLtools for one_simvol_brut_columns v.1.1.1. |