• Главная
  • A hack CTF
  • Заметки
  • [Blind code execution]
    [PHP-инклудинг и allow_url_include]
    [Проблема с WUBI и Ubuntu 10.04]
    [Как был взломан antichat.ru]
    [AntiDDoS в LightHTTPd]
    [Sleep() в слепых SQLi]

  • Bugtraq
  • [Уязвимости языка PHP]
    [Уязвимости разных движков]
    [Уязвимости Joomla]
    [Уязвимости Invision Power Board]
    [Уязвимости GuppY CMS]
    [Уязвимости 1024cms]
    [Уязвимости IceBB]
    [Уязвимости Zeus Botnet]

  • Релизы
  • [Online PHP code analysis]
    [Web-разведка]
    [Сканер уязвимости nginx]
    [Анализ текстов]
    [SSI Web-shell]

  • Услуги
  • [Аудит безопасности]

    Уязвимости типа php-include и директива allow_url_include

    //Старый мой пост, плавал на форумах…

    Многие уязвимости типа php-include остаются нераскрученными из-за директивы allow_url_include=Off в php.ini. Так вот, эта директива распространяется на все обёртки, но было замечено, что это не касается ветки php 5.2.0.
    Таким образом, обойти это ограничение при версии php 5.2.0 не составляет труда: достаточно воспользоваться обёрткой data (пример: data:;base64,PD9waHBpbmZvKCk7Pz4=) или php (пример: в инклуд-параметр прописать php://input, отправить post-запрос с произвольным кодом).

    Наглядно убедить в том, что allow_url_include распространяется не на все обёртки можно в исходниках php (директория /streams/). Вот участок кода из memory.c (php 5.2.0):


    708 php_stream_wrapper php_stream_rfc2397_wrapper = {
    709 &php_stream_rfc2397_wops,
    710 NULL,
    711 0, /* is_url */
    712 };

    А вот тот же участок в 5.2.1:


    745 php_stream_wrapper php_stream_rfc2397_wrapper = {
    746 &php_stream_rfc2397_wops,
    747 NULL,
    748 1, /* is_url */
    749 };

    А теперь смотрим в исходник streams.c (там нижеследующий код одинаков вроде бы во всех версиях):


    1605 if ((wrapperpp && (*wrapperpp)->is_url) && (!PG(allow_url_fopen) || ((options & STREAM_OPEN_FOR_INCLUDE) && !PG(allow_url_include))) ) {
    1606 if (options & REPORT_ERRORS) {
    1607 php_error_docref(NULL TSRMLS_CC, E_WARNING, "URL file-access is disabled in the server configuration");
    1608 }
    1609 return NULL;
    1610 }

    © BECHED