30.01.2017 @ 14:22 Прохождение test-me.pp.ru — WAF bypass SiXSS, SQL injection, WAF bypass, XSS Добрый день, уважаемый читатель. Представляю твоему вниманию тренировочную площадку http://test-me.pp.ru/ по обходу WAF (WAF bypass) созданную ребятами с Античата. Cостоит она из шести уровней на SQL-инъекции и уязвимости SiXSS (Sql Injection Сross Site Scripting). Данный материал не является разглашением ответов и одобрен командой Античата. Для обхода WAF понадобятся хорошие знания SQL, в т.ч. знание интересных конструкций MySQL. Имеется поле для ввода «User name». Во всех уровнях, кроме последнего, в качестве результата возвращается таблица на сайте. На шестом уровне таблицы нет, есть только корректность запроса. На первом уровне для наглядности показан полный SQL-запрос. На первых двух уровнях WAF отсутствует, там нужно использовать классические вектора для SQLi и SiXSS. Далее количество фильтруемых сочетаний будет увеличиваться. Некоторые мысли на тему прохождения ВНИМАНИЕ, СПОЙЛЕРЫ!!! Далее вы можете посмотреть некоторые подсказки. Итоговые вектора решений раскрываться не будут. Первый уровень комментариев не требует, это классические инъекции без фильтрации. Второй уровень — нужно сделать SiXSS. Результат запроса вовращается на сайт. Благодаря SQL-инъекции на этот результат можно влиять, а значит — можно обнаружить Reflected XSS уязвимость. Начиная с третьего уровня, мы будем натыкаться на фильтры. Подбирая определённые комбинации, можно составить список фильтров. Если фильтруется пробел — мы всегда можем переписать запрос, используя «+» и расставляя скобки. Не забывайте, что существуют функции-синонимы. Например, «@@version» и «version()». В некоторых случаях нам может помочь кодирование. Слово «hello» можно представить с помощью hex-кодов в различных вариантах: «unhex(68656c6c6f)», «0x68656c6c6f», «hello» Если фильтруется запятая, то запрос вида «SELECT 1,2,3,4,5» не проходит. Хорошие знания SQL помогут вам построить аналогичный запрос без запятых. Кроме кодирования — можно преобразовывать строки различными способами. Открываем справочник строковых функций MySQL и ищем что-нибудь подходящее. Особый интерес вызывает последний уровень площадки. Таблица больше не выводится, своеобразный Error-Based. Помимо всего прочего, фильтруется слово «SELECT» с последующими буквами, цифрами или кавычками. Но определить количество столбцов без «SELECT» мы не можем, поэтому ищем что-то ещё, что не отфильтруется. А что касается версии — ищите обходные пути выявления версии без использования подстроки «vers». leksadin 9399 Web security Читать дальше >>