Публикации - Уязвимость PHP-include

Уязвимое изображение

Основное предназначение локального инклюда — просмотр локальных файлов. Но его также можно использовать для создания полноценного web-шелла (оболочки для выполнения любых команд на стороне сервера либо доступа к командной строке).

Известно, что команда include() может принимать файлы с любым расширением, и выполнять их как реальные php-скрипты. Т.е. если ресурс позволяет загружать изображения, или любые другие файлы, то нам ничто не мешает, под видом изображения (с расширением .gif, .jpg или любого другого разрешенного расширения), залить на сервер команды php. Если на стороне сервера идет проверка файлов не только на расширение, но и на заголовки (массив Headers), то мы можем открыть блокнотом любое изображение, и дописать к коду изображения php-команды.

Откроем исходный код любого изображения (желательно, не очень большого). Сделать это можно с помощью Nodetadd++. Получим нечто подобное.

В конец исходного кода добавим скрипт php.

Зальем файл на сервер. Выглядеть этот файл будет, как обычное изображение: если в адресной строке наберем: http://127.0.0.1/test/skype.jpg, то не увидим ничего особенного: обычный значок scype.

Однако, если обратимся к нему через найденную ранее уязвимость:

http://127.0.0.1/test/sto.php?page=../skype.jpg%00

получим примерно, следующее.

Значит команда phpinfo() выполнена и мы получили всю необходимую информацию о работе сервера.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться