Tag: php

  • SQL-инъекции, связанные с мультибайтовыми кодировками и addslashes

    Недавно на milw0rm’е был опубликован эксплоит для популярного форумного движка  Simple  Machines  Forum  версии 1.1.4, являющейся довольно распространенной на просторах интернета. Уязвимость связана с реализацией SQL-инъекции, основанной на особенностях мультибайтовых кодировок, которые позволяют обойти экранирование опасных символов с помощью функции addslashes().

    Итак, уязвимость возможна благодаря тому, что при установке SMF переменная $db_character_set не записываются в конфигурационный файл, если пользователь оставил кодировку соединения с базой данных по умолчанию (в SMF это UTF-8). При включенной опции register_globals злоумышленник может назначить этой переменной любое значение, состоящее из буквенно-цифровых символов. Таким образом, вместо стандартной кодировки можно назначить любую другую, включая определенные мультибайтовые кодировки, позволяющие обойти фильтрацию входящих данных посредством addslashes() на символ одинарной кавычки. К таким кодировкам относятся SJIS, BIG5 и GBK. В чем же заключается ошибка addslashes()? Дело в том, что addslashes() просто добавляет обратный слэш перед одинарными (0x27) и двойными кавычками (0x22), перед бэклсэшем (0x5c) и перед null байтом (0x00), причем эта функция не проверяет какой символ в итоге будет создан. Например, в кодировке GBK мультбайтовый символ 0xbf27 не является допустимым, однако 0xbf5c воспринимается как приемлемый. Точно так же и для BIG5: 0xa327 – неправильный символ, но после того, как addslashes() добавит слэш перед 0x27, у нас получится следующая последоавтельность байтов: 0xa35c27. 0xa35c является корректным мультибайтовым символом для кодировки BIG5, т.е. он будет рассматриваться как один символ, в то время как 0x27 станет самостоятельным и одинарная кавычка останется без экранирования.

    (more…)

  • Используем TOR как источник бесплатных прокси-серверов

    TOR (The Onion Router) известен как средство обеспечения безопасности трафика. С помощью него достигается высокая анонимность благодаря прохождению пакетов в зашифрованном виде через цепочку случайных серверов (или нодов). TOR – уникальное решение для обеспечения анонимности и имеет ряд преимуществ над использованием обычных прокси или цепочки прокси. Самое главное из них – пользователю не нужно постоянно искать списки прокси-серверов. TOR – это сеть множества серверов, организованная таким образом, что пользователю не нужно задумываться о маршруте прохождения пакетов, так как узлы выбираются случайным образом. Именно это обстоятельство позволяет обходить проверку на IP-адрес в различных форумах, чатах и голосованиях, так как почти каждый запрос пользователя посылается через уникальный нод. Эта особенность TOR’а уже давно известна и успешно используется в настоящее время, однако я еще ни разу не встречал в сети методов, описывающих автоматизацию осуществления запросов, например с помощью скрипта. Зачем это нужно? Все очень просто – для накрутки различных головсований и счетчиков. Например, у меня есть предположение, что, если каждый день дергать фид на Feedburner через TOR, тем самым начисляя себе якобы новых читателей, можно существенно поднять тИЦ сайта, так как при включенной опции Awareness API на фидбернере, Яндекс, а также боты различных рейтингов, смогут видеть количество подписчиков. При большом количестве запросов в день через TOR к нашему фиду, можно заставить Яндекс подумать, что у нас целая армия читателей. Но это лишь мои догадки, к тому же это относится больше к SEO, чем к web-безопасности. Тем не менее, я уверен, что можно найти еще множество способов применения автоматизированных средств для работы с TOR. Я написал три варианта PHP-скриптов, реализующих взаимодействие с TOR. (more…)

  • Глобальный поиск уязвимостей в PHP-движках

    Не перестаю удивляться Google; количество, а, главное, качество разнообразных сервисов просто поражает. Одним из самых любимых и часто используемых, помимо поиска, в последнее время для меня стал Google Code Search. Этот сервис предоставляет возможность поиска определенных строк в коде десятков тысяч проектов с открытыми исходниками, причем имеется возможность использования регулярных выражений. Поле применения этого уникального сервиса очень велико, в частности с помощью него можно найти множество уязвимых PHP-скриптов. В этом посте я хотел бы поделиться некоторыми запросами для поиска бажных веб-приложений.

    (more…)

  • Локальный прокси – профессиональный инструмент специалиста по безопасности

    Какие преимущества нам дает использование локального прокси-сервера? Прежде всего это полная свобода действий над входящими и исходящими пакетами, а также над web-контентом. Настроив свой браузер на работу с ним, Вы сможете блокировать баннеры, подозрительный javascript-код и опасные тэги. Другими словам, локальный веб-прокси с правильно настроенными фильтрами осуществляет полный контроль над web-содержимым. Однако поле применения данного средства намного шире, в частности локальные прокси могут быть полезны для обнаружения уязвимостей в web-интерфейсах и проведения тестов на проникновение.

    Мне известны две подобные программы – это Proxomitron и Privoxy. Первая разрабатывалась еще для Windows 95; последняя версия – Naoko 4.5, релиз которой состоялся в 2003 году. К сожалению, в настоящее время программа не обновляется, однако ее возможностей мне вполне хватает и, уверен, хватит еще надолго. Privoxy – кросплатформенный аналог Proxomitron’а. Обычно его используют в связке с TOR’ом – сетью, обеспечивающей безопасность трафика. GUI-интерфейс у программы как таковой отсутствует. Все правила для фильтрации веб-контента необходимо вручную указывать в текстовых конфигурационных файлах. На лицо издержки кроссплатформенности, но если вы поклонник консоли и линукса, то эта программа будет Вам по душе. Я же предпочитаю Proxomitron, именно о нем в этом посте и пойдет речь.

    (more…)

  • Инклуд удаленных файлов в microSSys CMS 1.5

    Обнаружил RFI в microSSys CMS, самой непрофессиональной CMS’ке, которую я когда-либо видел. Помнится был WCPS, который занимал в моем “почетном” рейтинге первое место, но эта CMS еще ужасней во всех отношениях, включая и безопасность. Вот хоронология моих действий:

    1. переписал файлы на локалхост
    2. открыл в браузере скрипт установки
    3. испугался и закрыл
    4. открыл исходный код index.php
    5. снова испугался, но перед тем, как закрыть заметил RFI

    CMS’ка настолько стремная, что str0ke с milw0rm’а отказался принимать уязвимость =) (more…)

  • Удаленное администрирование сайтом

    У многих людей сложилось представление, что администраторская панель сайта всегда имеет только web-интерфейс. На самом деле теоретически возможно реализовать админку в виде обычной программы, которую можно запустить на собственном компьютере. Возможно уже существуют подобные, но я пока их не встречал =) Эта идея мне пришла в голову после работы с WinBinder, о котором я писал не так давно. С точки зрения безопасности админка, релизованная в виде программы, имеет ряд преимуществ. Не секрет, что на многих сайтах админ-панель обычно расположена в таких директориях, как admin/, a/, backend/, administration/, adm/, и т.д., что легко вычисляется злоумышленниками. Если же мы используем удаленную админку, то возможность перебора пароля хакерами исключается. Более того, весь функционал по администрированию сайтом вообще не находится на сервере! Доступ к панели администрирования имеет только тот пользователь, на компьютере которого установлена данная программа.

    (more…)

  • Функция для обработки входящих данных

    Собственно вот и обещанная мной функция для обработки данных, поступающих от пользователя. Для получения одной переменной вызываем так (какие аргументы передавать думаю и так ясно):

    <?php
    $var = import_var('var','G','INT',3);
    ?>

    Для получения одновременно нескольких однотипных переменных вызов функции немного отличается:

    <?php
    extract(import_var(array('var1','var2','var3'),'G','INT',3));
    echo $var1;
    echo $var2;
    echo $var3;
    ?>

    (more…)

  • Как нужно проверять входящие данные

    Фильтрация данных, поступающих со стороны пользователя, с точки зрения безопасности самый важный компонент любого веб-приложения. Сегодня я хотел бы рассказать какие основные составляющие по-моему мнению должна включать правильная обработка входящих данных. Первое и самое главное правило – все, что приходит от пользователя или каким-либо образом может быть им изменено, должно проходить обязательную проверку на стороне сервера. Однако всеми излюбленный метод, при котором ко всем элементам массивов GET, POST и Cookie применяется addslashes(), не является абсолютно безопасным. (more…)

  • WinBinder: новый взгляд на PHP

    Возможностью компилияции PHP-скриптов в standalone-приложения в настоящее время никого не удивишь. Для этой цели существует множество программ, однако они позволяют превратить PHP-сценарий лишь в консольное приложение. GUI-интерфейс для PHP-скриптов можно создать с помощью PHP-GTK, но лично мне больше по душе WinBinder. Разница в визуальном представлении приложений, разработанных с помощью этих двух расширений для PHP, очевидна. Программы с GTK-интерфейсом в Windows выглядят очень некрасиво, ввиду кросплатформенного стандарта, в то время как приложения, созданные с помощью WinBinder, ничем не отличаются от обычных виндовых аналогов, так как имеют стандратные кнопки, прогресс бары, табы и т.д. С точки зрения организации доступа к возможностям PHP-GTK и WinBinder, также можно обнаружить серьезные различия. PHP-GTK предоставляет объектно-ориентированный интерфейс к огромному количеству классов и функций GTK+. Что касается WinBinder, для написания простейшего Hello World необходимо знать всего несколько основных функций.

    (more…)

  • Безопасность загружаемых изображений

    Ни для кого не секрет, что возможность загрузки различных изображений на удаленный сервер всегда вызывала глубочайший интерес хакеров. В частности, под прицел взломщиков попадали форумы с корявой реализацией аплоада аваторов, а также фото-галереи, позволявшие загрузить произвольные файлы. В настоящее время ситуация нисколько не изменилась: сохранились не только старые виды уязвимостей, но и появились новые, связанные с такой технологией как обработка метаданных. Дело в том, что администраторы, контролируя общую безопасность своих сайтов, не уделяют должного внимания проверке содержания загружаемых изображений. Кроме того, некоторые даже умудряются создавать скрипты, абсолютно не следящие за расширениями файлов, что приводит к загрузке чего угодно, вплоть до PHP-шеллов. В данной статье мы рассмотрим способы атак на веб-сайты, связанные с аплоадом графических изображений.

    (more…)