Cennarios
16.05.2012, 17:50
Добрый! Недавно от 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
Рассмотрим 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