Довольно часто бывает - найдешь уязвимость на сайте, а расковырять ее до победного конца не хватает иногда знаний, иногда опыта, а часто просто терпения. А после случайно встретишь этот сайт и решишь все таки добить его. Так у меня было с climaxflix.vzlom.

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

http://www.climaxflix.vzlom/cart.php?type=cat&cat=2717+union+select+1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33/*

Но так как сразу не разобрался, что вывод идет в html-теги, отвечающие за размер картинок, то просто куда-то записал его урл что бы потом, когда будет время и желание, поработать над ним.

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

Первое, что меня заинтересовало, так это то, что при правильном подборе количества полей не выводились картинки. Это натолкнуло меня на мысль смотреть html-код страницы. Там в тегах, отвечающих за вывод картинок, я увидел заветные цифры – 29, 32 и 33.

<u><i><b><span style="font-size: 29;"> Seoul Sisters</span></b></i></u></a><br>
<u><i><b><span style="font-size: 32;"> и т.д.

Вставив вместо них user() я получил имя текущего пользователя базы cmxuser@localhost. Итак, с выводом проблем уже не было, оставалось подобрать имена полей и столбцов. Доступа к MySQL.user естественно не было, версия скули была четвертой, так что начинался привычный процесс угадывания сначала имен таблиц, а потом и полей.

Так как SQL Injection Tool использовать было нельзя, для автоматизации перебора я решил использовать MySQL inj toolkit by Piflit v 1.2, любезно выложенный администрацией ][ на последнем диске к журналу. Правда, пришлось немного доработать скрипт tables4.php, чтобы он корректно распознавал ошибку MySQL на climaxflix.vzlom.

Это делается довольно просто, находишь фрагмент в скрипте tables4.php:

$re = '#warning.*MySQL|error.*MySQL|doesn\'t exist|No forums found in this category|no such table#i';
/*регулярка для ошибок мускуля*/

и дописываешь свои значения, выданные тебе MySQL. Допустим, при неверном значении скуль отвечает:

Fatal error: Cannot use object of type DB_Error as array in /var/www/vhosts/climaxflix.vzlom/httpdocs/includes/addtocart.php on line 19

тогда добавляешь:

$re = '#warning.*MySQL|error.*MySQL|doesn\'t exist|No forums found in this category|no such table|Fatal error:|DB_Error|Cannot use object of type DB_Error as array in:#i'; /*регулярка для ошибок мускуля*/

и MySQL inj toolkit by Piflit v 1.2 теперь распознает ошибки скули без проблем.

Можно также добавить имена таблиц в файл tables.txt, потому как своя база имен таблиц у и MySQL inj toolkit by Piflit v 1.2 не очень большая.

Ну и последнее: заливаешь весь набор скриптов на ранее похаченный тобой сайт с поддержкой php и пользуешься на здоровье.

Собственно я так и поступил. Одно но: даже существенно дополнив базу имен таблиц я получил имя только одной – orders.

Попробовав руками и головой подобрать имена других таблиц и провозившись в пустую минут двадцать, я решил отложить раскручивание скули и походить по сайту в поисках других ошибок и багов. Еще одну инъекцию я нашел в скрипте, отвечающем за отправку пароля забывчивому пользователю, но кроме стандартного сообщения об ошибке я ничего не получил, хотя надеялся на большее. Тогда я зарегистрировался на сайте и отправился изучать панель управления своими заказами. Зайдя в раздел “Order History” -> “Active Order” я увидел окно добавления номера своего “order”. Так как его у меня не было, я добавил кавычку и опять получил сообщение об ошибке скули. Тогда мне пришла в голову мысль добавить себе все
“Active Order” с помощью конструкции 1’ or 1/*. Через пару минут я наблюдал все “Active Order” магазина с момента его открытия. К сожалению там не было кредиток, поэтому просматривать более 14K записей об оплате у меня не было никакого желания.

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

Но мораль сей истории в другом: «Если не можешь пролезть в дыру в заборе, попробуй зайти в гости и может быть сейф в гостиной откроется булавкой»… Шучу.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии