![]() |
Недостаточная фильтрация GBK в addslashes().
Недостаточная фильтрация GBK в addslashes(). [B] Оригинал Автор : [ cash ] Дата : 08.12.2007 Продукт: php + mysql Копирайты : ]Источник [Intro] Статья для общего развития. В первые о данной уязвимости заговорили в 2006, обсуждение шло о недостаточной фильтрации в функции addslashes() ставшей так популярной для быстро закрытия SQL иньекций. Как всегда сначало общественность не достойно отреагировала на появление данной уязвимости за что и была наказана. Многие достачно крупные и очень крупные серверы подверженны данной уязвимости. Уязвимость присутствует в версиях MySQL: Код:
4.1.х -> 4.1.20[Description] И так функция addslashes() некорректно обрабатывает 3 различные кодировки SJIS, BIG5 (болле известную как CP950), и GBK(CP936). Все эти кодировки основаны на двоичной системе. Первый адвизори вышел для GBK поэтому сегодня мы будем рассматривать именно данную кодировку. В GBK символы интерпритируются по 1. 0xbf27 состоит из 2 символов в 2 системе именно этот символ будет некорректно отфильтрован, 0xbf5c будет так не корректно отфильтрован и вызовет ошибку так как будет недопустимый символ (\). Рассмотрим теперь эти данные обработанные функцией addslashes(). Первый вариант 0xbf27 будет интерпритирован как одиночные символы 0xbf при переводе будет (¿), а затем 0x27 ('), и второй вариант 0xbf5c, 0xbf при переводе будет (¿), а затем 0x5c (\). Теперь рассмотрим саму функию зачем и для чего она нужна. Функция addslashes(string str) возвращает сроку str, в которой перед каждым спецсимволом добавлен обратный слэш (\), например для последующего использования этой строки в запросе к базе данных. Экранируются одиночная кавычка ('), двойная кавычка ("), обратный слэш (\) и NUL (байт NULL). Таким образом данный фильтр может пропустить некорректные символы символы к базе данных, а именно ('). После чего станет возможно составления запроса к базе данных. Рассмотрим группу запросов: Имея синтаксис бд. Код:
CREATE TABLE tables (PHP код:
PHP код:
PHP код:
PHP код:
[Exploiting and Secure] И немного о защите, так как данные виды кодировок мало распространены самая простая защита не использовать данные кодировки в базах даных. В некоторых случаях если мы можем как было изменить кодировку в базе данных (например востановить или же отбекапить данные изменив кодировку, или же сделать намеренно это оставив тем самым дорк или же брешь в системе для последуешего взлома). [ cash ] Hack-Shop.Org.Ru (c) |
Цитата:
mysql_escape_string используется чаще... Или ты про 2006 год? |
| Время: 19:53 |