За последние 24 часа нас посетили 23362 программиста и 1550 роботов. Сейчас ищут 865 программистов ...

require($someImage) - зачем инклудить изображение?

Тема в разделе "PHP для новичков", создана пользователем Сереганек, 19 июл 2017.

  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Начну с предисловия: хочу воссоздать условия, когда при загрузке и отображении изображения выполняется php-код внутри него. Это тест на безопасность. Картинка реальная, внутрь нее дописан php-код. Судя по многочисленным статьям, код может выполняться, но у меня после загрузки на сервак, картинка отображается на сайте как ни в чем не бывало. Что должно быть установлено или выполняться на серваке такое, чтобы выполнился код внутри картинки? В одной из статей я встретил такую запись:

    Код (Text):
    1. require($someImage);
    Зачем вообще может понадобиться инклудить картинки таким образом? И главное, я пробовал, но код внутри все-равно не выполнился.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    require 'image.png' ? o_O
    впервые вижу, если это не обход путем настройки хтаацесс
     
  3. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Вроде как исполнение кода в изображение делается на низкоуровневом яп
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Maputo, easy-phpc, Сереганек и ещё 1-му нравится это.
  6. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    ну насчет хтаацесс не сказано ни в одной из статей. Хотя я понимаю о чем вы. Но тогда сначала злоумышленнику придется добраться до хтаацесс и разрешить исполнение изображений. Думаю, это отдельный случай. Просто, скорее всего изображения как-то по хитрому обрабатываются или выводятся на сайт, что позволяет выполнять код внутри. Может есть идеи? Нужен мозговой штурм ))
    --- Добавлено ---
    сейчас заценю
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    по какому такому хитрому?
    пхп-интерпретатор просто ищет <?php и выполняет код дальше.
    ищет он это в любом файле, каком дашь
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    господа вам делать нех ?
    давать пользователю произвольные манипуляции на сервере сайта, подключить загрузить, выполнить. Может еще и крон, нее... кнопку снести сайт на главной залепить.
     
  9. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Да, это то, что я ищу. Одно только не понятно, зачем это может понадобиться на реальном сайте? Поскольку об этом пишут статьи, значит встречаются и сайты с такими уязвимостями? Не могу придумать ни одного случая где бы это могло применяться на живом сайте.
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    То, что Игорь в своей статье показал - фактически криво сделанный самопальный роутер
    --- Добавлено ---
    PHP:
    1. include $folder . "/" . $_GET['some'];
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это ровно тот же случай что и
    Код (Text):
    1. 'SELECT * FROM `users` WHERE `login` = "' . $_GET['login'] . '"'
    только про файлы
     
  12. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Значит можно и js использовать можно таким методом?
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно
    и используют
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Поразмышляю на тему "зачем ... ?". Первое что в голову приходит - рукожопый программист. Вместо того чтоб отдавать статику сервером - он нагружает этой функцией пхп-машину. Это в целом не преступление, но тут возникает еще и отсутствие мозга у программиста - подключение файла пхп-машиной обязывает пхп-машину произвести разбор этого файла на поиск лексем языка пхп вне зависимости от того пхп это файл или картинка. То есть, отдать статику пхп-машиной менее ресурсоёмко - через ридфайл. Чуть более ресурсоёмко - через какой-нибудь эхо+файл-гет-контентс. Ну и фопен + циклк фридов - заканчивают полку экспонатов инструментов для извращений. Но программист знает только про про инклюд (и только про инклюд и ни слова про реквайр и их однократных аналогов), поэтому делает потенциальную дыру в безопасности. Как-то так.
     
    Васяня нравится это.