• 4 июля стартует курс «Python для Пентестера ©» от команды The Codeby

    Понятные и наглядные учебные материалы с информацией для выполнения ДЗ; Проверка ДЗ вручную – наставник поможет улучшить написанный вами код; Помощь преподавателей при выполнении заданий или в изучении теории; Групповой чат в Telegram с другими учениками, проходящими курс; Опытные разработчики – команда Codeby School, лидер по информационной безопасности в RU-сегменте

    Запись на курс до 15 июля. Подробнее ...

  • 11 июля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 20 июля. Подробнее ...

Школа Отзыв на курс «SQL-injection Master»

BearSec

Platinum
20.04.2020
197
234
Всех приветствую!

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

Happy-New-Year-Memes..jpeg
Введение

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

Курс полностью был подготовлен @explorer , и работа была проведена титаническая. Курс состоит из методических материалов (PDF + видео + php-файлы для отработки на локальной машине) и доступа к лаборатории. В методических материалах крайне доступно рассказывается о работе принципах работы СУБД, SQL-запросах, а также - как и почему существуют и работают SQL-инъекции. В некоторых методических материалах есть результаты исследований, проведенных @explorer , которые расширяют вариации применения SQL-инъекций.

Доступ в лабораторную открывается со второго блока методических материалов, и дальнейшие практические задания решаются именно в ней. Система в автоматическом режиме каждые 4 дня предоставляет доступ к новым заданиям, а при наступлении определенного срока предоставляет доступ к экзамену.

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

wat.jpg

Да, ещё один интересный механизм повышения успеваемости и вовлеченности на курсе — это возможность вернуть деньги за обучение. В первом потоке был проведён конкурс и студенты, занявшие первые 5 мест в лаборатории, получали возврат средств, потраченных на обучение.

Подробнее о конкурсе (https://codeby.net/threads/projdi-kurs-sql-injection-master-besplatno.78634/)

На второй поток такая акция тоже действует, так что имейте ввиду, возможно, это послужит стимулом записаться (несколько дней на это есть, если кто опоздал, попробуйте написать администраторам, может, допустят).

Будет ли подобная акции проводиться на следующих потоках - я не знаю.

Я, кстати, смог получить 80% от потраченной суммы, поскольку занял второе место в потоке (на последнем блоке @Lexus обошел меня на 12 минут 🤬 🤣)

1641591200156.png

Темы, разбираемые на курсе
  • Операторы SQL, простые запросы
  • Операторы SQL, сложные запросы
  • Что такое SQL-инъекция? Причины возникновения инъекции, и внедрение произвольных SQL-запросов
Для успешного проведения атак нужно понимать, как работает СУБД и SQL-запросы. А самое лучшее средство понять, как что-то работает, это - прочитать теорию и применить полученные знания на практике. В этом блоке структурировано рассказывалось об основных операторах и порядке выполнения этих операторов в запросах. В тестовых заданиях мы не проводили никаких атак на базы данных, а проверяли свои навыки формирования нужных запросов для получения запрашиваемых результатов из тестовых таблиц. А вариантов получить нужный результат существует не один. Понимание механизмов работы запросов очень сильно помогает обходить WAF на этапе эксплуатации.

1641591298089.png
  • Обход авторизации
Порой нам не нужно вытаскивать из базы логины и пароли, тем более, правило хорошего тона не позволяет хранить пароли в виде простого MD5-хеша без соли, а уж тем более в открытом виде. Однако существуют вариации, как с помощью правильно сформированной SQL-инъекции можно авторизацию обойти, и в этой теме это отрабатывается на практике.
  • UNION BASED injection
Самый сладкий вид инъекции. Что может быть лучше, чем получить данные в удобном и читабельном виде на странице веб-приложения? Лучше может быть только при использовании удобного DIOS, но это тема другого блока.
  • XPATH Error Based injection - Extractvalue, UpdateXML
До этого я никогда не встречался с подобным видом уязвимостей, однако это оказалась интересной и простой техникой. Главное - не забывать об ограничении колличества символов для вывода полезной информации и не запутаться в количестве скобочек при использовании SUBSTRING.
  • ERROR BASED SubQuery injection
Развитие темы с выводом информации через отображение ошибки, но с большим колличеством выводимых символов, в отличие от XPATH. В этом блоке мне сильно помогал вариант отработки практических занятий в локальной консоли mysql.
error.png
  • BLIND BASED injection
  • TIME BLIND BASED injection
Эти темы можно описать так: ничего конкретно не вижу, но по реакциям веб-приложения могу делать какие-то выводы. Эту тему я хорошенько проработал еще на WAPT, и, к моменту начала обучения, у меня уже имелся самописный скрипт для раскрутки такого типа уязвимостей.

В нём я реализовал подбор символов, используя частотный анализ и думал, что он крайне эффективно работает. Но я ошибался, и, за время прохождения этих заданий, я его переписал под бинарный поиск, что позволило сократить кол-во запросов до 6-8 на один символ.

ban.jpg

Вот с таким парнем вы можете познакомиться, если будете слишком навязчивы)
  • DIOS (Dump In One Shot)
DIOS это прекрасная штука, и тут, наверное, подобно тому, как герой в Аватаре Кемерона выбирал себе икрана (и икран выбирал себе хозяина), или Гарри Поттер выбирал себе волшебную палочку, каждый выбирает для себя один единственный и красивый диос и в дальнейшем использует его. (Ну, может, парочку для использования при обходе WAF).
  • Routed injection
Нам нужно копать глубже. Инъекция внутри инъекции, звучит сложно? Звучит сложно, но на самом деле эта техника не на столько сложна, как кажется. Техника мне понравилась, но была освоена довольно быстро и, к сожалению, задания, также были быстро решены. Самое главное - в этой теме не запутаться и помнить про варианты обрамления параметров в запросе.

deeper.jpg
  • SiXSS (Sql Injection Сross Site Scripting)
Интересная методика, но на ней я почему-то тоже просидел дольше, чем должен был. Зато, наконец, разобравшись в одном из заданий, остальные были решены достаточно быстро. Для выполнения одного из заданий вам понадобится либо белый ip-адрес, либо vps/vds. Знаю, что на курсе некоторые ребята использовали Ngrock: если опыта хватает, то можно вполне воспользоваться и им, но у меня был vps, так что я особо не заморачивался.
  • Инъекции в HTTP-заголовках
Казалось бы, всё довольно очевидно: есть HTTP-заголовки, в них тоже бывают инъекции. Но на практике пришлось повозиться.
  • WAF bypass
Одна из важнейших тем, поскольку в современном мире всё реже и реже встречаются веб-серверы без защиты WAF (я не утверждаю, что их нет, но их объективно становится меньше). Для меня было полезно сделать шпаргалку по вариантам замены операторов, которые могут блокировать WAF. На экзамене это выиграло мне много времени.
  • HTTP Parameter Pollution и фрагментированные SQL-инъекции
Наверное, это была одна из самых сложных тем для меня. Общий принцип был понят довольно быстро, но, когда я приступил к выполнению практических задач, у меня случился какой-то затык. Да и не у меня одного. Эта тема, наверное, одна из немногих, которая была решена не в первый день. Я в какой-то момент сделал полноценный стенд, имитирующий задание в лабораторной, и по винтикам начал разбираться, как может работать уязвимость и как может быть реализован механизм в лаборатории.
  • Работа с файлами, заливка шелла через БД
Данный блок заданий включает в себя поиск флага на самой машине, так что имейте ввиду, найдя уязвимость и залив шелл - это только пол пути к завершению задачи)
  • Автоматизация поиска sql-инъекций часть 1
  • Автоматизация поиска sql-инъекций часть 2
  • Как защититься от sql-инъекций
SQLmap - крайне интересный комбайн. Поскольку до этого я проходил сертификацию по OSCP и WAPT, там запрещалось использовать подобные средства автоматизации. В этом же блоке курса SQLIM наоборот – использованию средств автоматизации посвящено аж целых 8 заданий. Честно скажу, я довольно долго с ним разбирался. С основным функционалом я был знаком, но оказалось, что этот мега комбайн по раскрутке инъекций намного сложнее. Больше всего времени я потратил на разбор работы с темперами для обхода WAF. Однако это дало плоды, и к моменту экзамена я вполне мог на примере существующего темпера сделать свой для обхода WAF в одном из экзаменационных заданий.

sqlmap.png

Еще был рассмотрен вариант работы программы JSQL injection, но эта программа какая-то бешенная и мне никак не получалось её ограничить по отправляемым запросам за 1 секунду. Пару раз словив бан, я решил отложить её и вернуться к ней потом. (Да, я в настройках указывал ограничение и задержки на отправку, но они, почему-то, игнорировались).
Агрегат больше похож на инструмент доса, нежели на инструмент для sql инъекций. Хотя выглядит он довольно интересно. Возможно, я смогу с ним когда-нибудь совладать.

Про сдачу экзамена

После завершения последнего блока заданий у вас будет 1 неделя, в течении которой вам нужно сдать экзамен.

После старта экзамена запускается автоматический таймер на 24 часа. Во время сдачи вы вольны сами выбирать темп и порядок выполнения заданий на экзаменационных машинах.
Я советую делать перерывы каждые пару часов и отвлекаться минут на 30.

Экзамен представляет из себя отдельную лабораторию, состоящую из 10 машин.
Они делятся следующим образом:
  • 3 машины легкого уровня
  • 4 машины среднего уровня
  • 3 машины сложного уровня
Для успешной сдачи экзамена необходимо решить 7 машин из 10.
На некоторых машинах можно использовать автоматизированные средства эксплуатации, но на каких именно машинах - можно узнать только эмпирическим путём. Поймав бан, придётся 10 минут покурить или заварить чаёк.

Экзамен я сдал за 10 часов, но, если бы я тупил поменьше в объективно элементарных вещах, то смог бы его сдать часов за 7.
Формат экзамена мне понравился, практически все темы и материалы, изученные в курсе, пришлось использовать при решении экзаменационных задач.
После завершения экзамена вас ждём весёлая пасхалочка и бонусная методичка с полезными функциями mysql, которые могут пригодиться в анализе уязвимостей.

done-with-exam.jpg

Советы по прохождению курса

Первый совет: обязательно ведите записи выполнения заданий. Это - крайне важно и в дальнейшем поможет вам скоротать очень много времени. (Я об этом ещё писал в отзывах о сдаче OSCP и WAPT)
Наиболее часто используемые запросы заводите в отдельный персональный CheatSheet. Да, можно пользоваться сторонним заметками, но на моей практике записи, сделанные самим с нуля, лучше запоминаются, и их проще и удобнее использовать.
Я решил перевести свои записи из CherryTree в Notion и вроде пока всё нравится, хотя переносит вручную все записи было ещё то удовольствие)

notes.png

Второй совет: если вы решили задание в лаборатории одним путём, попробуйте найти ещё один. Очень много заданий можно решить несколькими способами, и поиск альтернативных путей крайне полезен и развивает навыки анализа и обхода препятствий, это пригодится вам, если вы воткнётесь в WAF в следующих заданиях.

Третий совет: обязательно решайте задания, которые рассматриваются в методичке. Зачастую задания, которые есть в лаборатории, очень похожи на методические, но, дабы мы не занимались банальным копипастом готовых строк с инъекциями из методичек, в лабораторные задания внесены небольшие изменения, из-за которых приходится посмотреть на задание под немного другим углом. А, имея под рукой на локалхосте тестовое задание из методички, всегда можно оперативно попробовать определить альтернативный способ решения задачи в лаборатории.

Четвертый совет: не усложняйте свои мысли о задачах в лабораторной и на экзамене и не копайте кроличью нору. Я довольно часто очень сильно углублялся в тупиковый туннель, когда решение задачи было на поверхности, и выбраться из них мне очень часто помогала жена. Обсуждая с ней проверенные векторы и мои мысли по заданиям, она часто вытягивала меня из чащобы сложных мыслей и направляла на довольно очевидные вещи, про которые я забывал. За это и за её терпение во время моего обучения я ей очень благодарен, и она, кстати, очень ждёт курс FEFU Script Kiddie.

Вывод

Как я говорил ранее, моей ахиллесовой пятой были SQL-инъекции. Я не смог решить одно задание с SQL-инъекцией при сдаче OSCP, и эта тема сидела у меня в мыслях как заноза.
Я понимал их принцип, но раскрутить их полноценно сам не мог. После прохождения курса я могу его посоветовать всем, кто имеет такие же проблемы. Курс мне очень понравился, в лаборатории я смог всласть проработать техники ручной и автоматической эксплуатации. Вся необходимая информация для плавного погружения в темы есть в методических материалах, а практические задания отлично помогают их закрепить. Самое главное - не лениться и регулярно руками выполнять практические задания, даже если они кажутся элементарными.
После прохождения курса у меня появилась привычка вставлять кавычки в различные параметры, и иногда это даёт очень интересные результаты)

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

Прочитать подробнее о самом курсе и записаться можно на портале курса по ссылке: «SQL-injection Master»

Для тех, кто уверен в своих силах или просто хочет отточить свои навыки в SQL-инъекциях, появился отдельный доступ к лаборатории, без получения методических материалов и связи с куратором.
Почитать подробнее про лабораторию можно по ссылке: SQLIM лаборатория 90 дней


SQLIM-2509-001-Medvedev-web.jpg

Вот такую красоту выдают после успешного завершения курса
 
Последнее редактирование:

explorer

Platinum
05.08.2018
1 060
2 409
Спасибо за развёрнутый отзыв-обзор! Отмечу что Александр не только закончил курс в ТОП-е, но и попутно выиграл Alfa AWUS036ACH в конкурсе, который я организовал. Нужно было решить очередной блок тасков на скорость, и успеть выполнить все задания в течении 45 минут, а не трёх отведённых на решение дней.

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

hhh

Green Team
08.02.2018
11
11
Описание очень сочное! Спасибо за отзыв, приятно читать. Прям захотелось купить лабы)
 
  • Нравится
Реакции: BearSec и Mogen
Мы в соцсетях: