ZendF: переопределение базовых прав для директ доступа к шелу

Discussion in 'Песочница' started by Cennarios, 16 May 2012.

  1. Cennarios

    Cennarios Elder - Старейшина

    Joined:
    13 Jul 2008
    Messages:
    359
    Likes Received:
    178
    Reputations:
    108
    Добрый! Недавно от QAZ имел место вопрос о том, как обратиться к файлу залитого шела через INTO+OUTFILE напрямую в случае если сайт построен на Zend Framework. Ситуация такова, что человек, заливая INTO+OUTFILE+'/abspath/file.php' физически размещает файл на ФС сервера. но при обращении http://site/dir/shell.php получает ошибку. Тогда как к примеру обращение в файлам иных расширений, к примеру .txt происходит без затруднений. Все дело в том, что тут обращение к .php файлу в данной директории переопределяется через .htaccess файл в корне сайта. Собственно ZendF правила определяются именно htaccess файлом в корне. И обращение к .php файлу воспринимается как обращение к контроллеру на уровне фреймворка. Это и есть причина ошибки, которую выдает сервер.

    Рассмотрим htaccess:

    Вот классический пример файла для cms построенной на zendf:


    RewriteEngine On
    RewriteBase /
    DirectoryIndex /index.php


    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^jquery.js$ /app/core/Jquery/jquery.js
    RewriteRule !.(js)$ /index.php
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_value error_reporting E_NONE
    php_value display_errors 0


    Вот это строка:RewriteRule RewriteRule !.(js)$ /index.php определяет правила доступа к файлам типа .js или other. Те если файл .js - то его прелинкует на далее определенное правило. Как-то: ^jquery.js$ /app/core/Jquery/jquery.js
    Ежели расширение , к примеру .php, то запрос уйдет в /index.php

    STRUCT:
    /index.php
    /.htaccess(вышеописанный)
    /sub/shell.php

    В таком случае при обращении http://site/sub/shel.php сервер отдаст ошибку.

    Но! Ежели залить в директорию sub файл .htaccess следующего содержания:
    RewriteEngine On
    Тогда, если базовая конфигурация apache в httpd.conf или виртхостах позволяет (необходимо разрешение переопределения правил дочерними htaccess правилами), прелинковка запросав index.php нивелируется и становится возможным direct access к файлу shell.php
     
    2 people like this.
  2. Га-Ноцри

    Га-Ноцри Elder - Старейшина

    Joined:
    16 Oct 2011
    Messages:
    326
    Likes Received:
    177
    Reputations:
    76
    Cennarios как всегда на высоте. И хотя, по моему скромному мнению, проблема не такая уж часто встречающаяся, при заливке, но в любом случае стоит взять это на заметку и записать в блокнотик. Спасибо за труды по написанию этого небольшого мануала.

    Пишите еще и почаще :)
     
  3. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    sh.php5.ololo не прокатит?
     
    _________________________
  4. Cennarios

    Cennarios Elder - Старейшина

    Joined:
    13 Jul 2008
    Messages:
    359
    Likes Received:
    178
    Reputations:
    108
    Всмысле ) Строку произвольного содержания что-ти в htaccess имеется ввиду?)
     
  5. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    не, я имею ввиду старую тему что если несколько расширений у файла и он последний из них не прописан в mime-type у апача, то он юзает предыдущий. и если он делает rewrite по маске а-ля .php$ то конструкция sh.php5.ololo по-идее должно прокатить. ну это если по твоим словам к .txt прямой доступ например.
     
    _________________________
  6. Cennarios

    Cennarios Elder - Старейшина

    Joined:
    13 Jul 2008
    Messages:
    359
    Likes Received:
    178
    Reputations:
    108
    Вот тут воистину уж ХЗ, что говорится. Я , собственно всей этой писаниной хотел указать лишт то, что наличие в .htaccess директивы Rewriteengine On перебивает вышеопределенные правила. Конечно в большинстве случаев то что ты говоришь сработать должно. Но тоже зависит от туевой хучи факторов - фронтенд-бэкенд комплексы, всякие nginx+phpFPM и прочее. Тот же нгикс на фронте воспримет sh.php5.ololo скорее всего как статический файл и выдаст еррор. Уж больно мало человек информации привел - было сказано просто, что зенд ошибку вываливает и все. Собственно и идео обхода получилась ввиду этого символической )


    P.S. Да, тупанул, сам по себе вариант конечно-же проще ))
     
    #6 Cennarios, 18 May 2012
    Last edited: 18 May 2012