Возможно ли взломать сайт через $f();

Тема в разделе "Защита и взлом", создана пользователем SocMaster, 17 июн 2014.

Статус темы:
Закрыта.
  1. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Вообщем есть скрипт в начале которого написано
    $f = $_POST["f"];

    $f();
    ну и дальше перечень функций.
    Вопрос безопасно ли это? Возможно ли передать какое то странное названия функции которая навредит сайту?
     
  2. vlad_ir

    vlad_ir Постоялец

    Регистр.:
    13 июл 2007
    Сообщения:
    54
    Симпатии:
    18
    Вы бы привели код полностью, а так сложно сказать что там дальше происходит. В любом случае, все данные, которые приходят от пользователя, нужно безоговорочно проверять.
    В общем случае, алгоритм такой:
    1. Результаты POST очищаем от пробелов на конце с помощью trim()
    2. Если включены магические кавычки, удаляем слэши с помощью stripslashes().
    3. Если есть какие-то условия к поступающим данным, делаем проверку.
    4. Перед сохранением в базу все данные экранируем средствами PDO или mysql_real_escape_string и кавычками

    Соблюдая эти нехитрые правила можно обезопасить свой скрипт от уязвимостей.
     
  3. zaregan

    zaregan Постоялец

    Регистр.:
    12 авг 2009
    Сообщения:
    70
    Симпатии:
    41
    Как минимум можно будет узнать путь к файлу, в котором находится этот вызов. Так же можно будет запустить ЛЮБУЮ существующую функцию. Как она отработает, это уже другой вопрос. В общем, вариант не приемлем. Проверяйте имя функции на вхождение в какую-то область имен.
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.451
    Симпатии:
    1.241
    Заливка php-шелла $' через phpinfo + LFI - http://www.xakep.ru/post/58183/ и это еще не самое плохое, что можно сделать :)
    Ответ однозначный - данный вид исполнения кода не безопасный!
     
  5. ikent_ru

    ikent_ru Писатель

    Регистр.:
    9 июн 2014
    Сообщения:
    4
    Симпатии:
    4
    Не пойму зачем latteo удалил мой предыдущий пост, ведь в данном случае эта уязвимость не будет работать потому что
    В данном же случае можно вызвать безобидный script.php?f=phpinfo, причем любую критичную системную функцию ты никак не вызовешь без параметров, не только инклуд! Тут просто страх, вдруг кто-то че придумает и взломает, а реально как? Тема не раскрыта.
     
Статус темы:
Закрыта.