PDA

Просмотр полной версии : mysql + .htaccess


Pirotexnik
07.04.2012, 22:03
Добрый день.

Я вобщем, как обычно

Суть такая:

Есть root доступ к MySql на сервере с сайтом.

Могу писать, читать и тд.

Проблемма вот в чем.

1) Все диры кроме /uploads - Error 13 (не хватает прав)

2) В дире /uploads много подпапок.

3) Из них нельзя запускать *.php (и подобные)

4) Пытаюсь создать .htaccess


AddHandler application/x-httpd-php .php .htm .html


5) такой .htaccess не помог.

6) другое содержание



AddType application/x-httpd-php .gif



Почему-то записалось так



\
AddType application/x-httpd-php .gif
\



Есть идеи?

Спасибо.

Га-Ноцри
07.04.2012, 22:52
Меня иногда выручала подобная конструкция:


PHP:
php_flag engine on(либо php engine on)

AddType application/x-httpd-php.phtml.jpg.html

AddHandler application/x-httpd-php.phtml.jpg.html

А, ну и еще можно использовать PHP включения в .html файлах при помощи такого .htaccess


PHP:
RemoveHandler.html.htm

AddType application/x-httpd-php.php.htm.html.phtml

Pirotexnik
07.04.2012, 23:04
При записе НЕСКОЛЬКИХ строк появляются слэши.

Нужно что-то, что будет работать в 1 строку. Либо как решить эту проблемму.

Га-Ноцри
07.04.2012, 23:06
Pirotexnik said:
При записе НЕСКОЛЬКИХ строк появляются слэши.
Нужно что-то, что будет работать в 1 строку. Либо как решить эту проблемму.


Записать в одну строку


PHP:
php_flag engine on

и попробовать выполнить .php или .phtml

Pirotexnik
08.04.2012, 01:17
php


403 Forbidden


shtml

Открывается, но не выполняется.

Га-Ноцри
08.04.2012, 01:59
Pirotexnik said:
php
shtml
Открывается, но не выполняется.


Ты будешь смеяться, но у меня буквально пару часов назад, один в один, была подобная ситуация - только вместо невозможности написать .htaccess в несколько строк, у меня просто выскакивала 500 ошибка при попытке записать php engine on. Боюсь, все дело в грамотно настроенном httpd.conf и/или корневом .htaccess. В итоге я плюнул на это дело и пошел за пивом.

Так что, боюсь, на этом моя фантазия исчерпана и я не знаю, как помочь в твоем случае

Pirotexnik
08.04.2012, 02:10
.htaccess перенастраивает свойства диры, в которой лежит, и всех вложенных.

Похоже, прийдется забивать

asiaman
08.04.2012, 03:26
Pirotexnik said:
.htaccess перенастраивает свойства диры, в которой лежит, и всех вложенных.
Похоже, прийдется забивать


а перл и др. скрипты могут выполниться? что на сервере есть? и какие модули апача стоят?

если будешь забивать совсем. то можешь скинуть в личку, я пораскину мозгами. в замен тоже какой-нить шелл дам, если нужно.

просто читать статьи - в одно ухо называется. без практики на завтра уже и не вспомню как да чего читал((

да и ты когда-то про форум движок Дискуз статью писал. Я некоторые азиатские языки знаю. и тоже на некоторых азиатских бордах есть. так вот Дискуз - китайский двиг. под Дискуз в чайна-нете есть сплойты. но азиаты в осовном на вин-системы ориентируются.

если что пиши в личку. жаба тоже есть)

Expl0ited
08.04.2012, 09:38
в качестве переноса строки нужно использовать \r

select "test\rtest2" into outfile '/путь/1.txt'


Code:
cat 1.txt
test
test2

если использовать \n то получится:


Code:
cat 2.txt
test\
test2

Pirotexnik
08.04.2012, 12:09
select 'php_flag engine on \rAddType application/x-httpd-php .phtml .jpg .html \rAddHandler application/x-httpd-php .phtml .jpg .html \r \rAddType application/x-httpd-php .gif \r' INTO OUTFILE '/home/*/public_html/members/uploads/xx_02/.htaccess'


Создался нормально!

.php - 403

.shtml - не выполняется

.jpg - не выполняется

.gif - не выполняется

Cennarios
09.04.2012, 02:42
Pirotexnik said:
Создался нормально!
.php - 403
.shtml - не выполняется
.jpg - не выполняется
.gif - не выполняется



Сие означает , что либо на директорию выставлены соответствующие права , запрещающие выполнение скриптов или базовая конфигурация апача опционально игнорирует правила htaccess к данной конкретной директории.

asiaman
09.04.2012, 13:19
Cennarios said:
Сие означает , что либо на директорию выставлены соответствующие права , запрещающие выполнение скриптов или базовая конфигурация апача опционально игнорирует правила htaccess к данной конкретной директории.


Я тоже с таким столкнулся, но на другом ресурсе.

Для ТС. По твоему хосту я выснил, что его уже дручили не раз. Маднет вообще потещает "uzbekcms" Хотя через маднет-сканер вроде одна дитектория для записи есть.

+ советую пройтись просканить директории сканером dipbuster. Возможно существует нужная и доступная директория.

Pirotexnik
10.04.2012, 01:15
Прошелся чем можно, только 1 дира... В ней ничего как php не выполняется...

.htaccess тупо игнорируется. Конфиг апача либо не доступен для чтения, либо я его не нашел.

Варианты?

Pirotexnik
10.04.2012, 01:32
UPD!!!

Там стоит nginx!

Для него конфиги тоже задаются .htaccess?

Несмотря на это в дире /admin .htaccess работает исправно!

Конфиг nginx


Code:
user nginx;
worker_processes 6;
worker_rlimit_nofile 10240;

#error_log /var/log/nginx/error.log;
error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;

#pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log off;

sendfile on;
# tcp_nopush on;
# tcp_nodelay on;

#keepalive_timeout 0;
keepalive_timeout 65;

gzip on;
gzip_disable "msie6";

index index.php index.html index.htm;

client_max_body_size 500m;
upload_progress upload 1m;
upload_progress_json_output;

server {
listen 80;
server_name target.net;
rewrite ^ http://www.target.net$request_uri permanent;
}

server {
listen 80;
server_name www.target.net
target.at www.target.at
target.name www.target.name
target.org www.target.org
target.tk www.target.tk
target.us www.target.us
target.de www.target.de;

rewrite ^/index.htm$ /index.php last;
rewrite ^/index.html$ /index.php last;
rewrite ^/members/uploads/([a-z0-9_]+)/([-a-z_]+)__(.*)$ /members/uploads/$1/_$3 last;
rewrite ^/members/uploads/([a-z0-9_]+)/([-a-z_]+)_(.*)$ /members/uploads/$1/$3 last;
rewrite ^/([-a-z_]+).html$ /keyword.php?keyword=$1 last;
rewrite ^/gallery_photo_([a-z]+)_([0-9]+)_([0-9]+).html$ /gallery_photo.php?l=$1&gender=$2&page=$3 last;
rewrite ^/view_([a-z]+)_([0-9]+).html$ /view.php?l=$1&id=$2 last;
rewrite ^/paypalok_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_([a-zA-Z0-9]+).html$ /paypalok.php?id=$1&package=$2&magic=$3 last;

root /home/target/public_html;

location /members/ {
location ~ \.(php|php3|php4|php5)$ {
deny all;
}
location ~ \.(jpg|png|gif|bmp|css|js)$ {
expires 30d;
}
}

location /admin/ {
rewrite ^(.*).zip$ $1.php last;

location ~ \.php$ {
access_log /var/log/nginx/www.IK.admin.access.log main;
include proxy_params;
}
}

location /phpMy777/ {
alias /srv/www/htdocs/phpMy777/;
index index.php index.html index.htm;
}

location = /upload_progress {
upload_progress_header APC_UPLOAD_PROGRESS;
report_uploads upload;
}
location ~ /upload\.php$ {
access_log /var/log/nginx/www.IK.uploads.log main;
include proxy_params;
upload_progress_header APC_UPLOAD_PROGRESS;
track_uploads upload 30s;
}

location ~ \.php$ {
access_log /var/log/nginx/www.IK.php.access.log main;
include proxy_params;
}

# ngix statistic
location = /nginx-stat {
stub_status on;
access_log off;
allow 188.40.*.*;
allow 127.0.0.1;
allow 46.4.*.*;
deny all;
}

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /srv/www/htdocs/;
}

error_page 404 /404.html;
location = /404.html {
root /srv/www/htdocs/;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
}

Pirotexnik
10.04.2012, 02:04
YAHOOOOOO!!!!

Зашел с 81 портом, постучал в бубен, потом по дереву, потом заработало!

Всем спасибо, всех люблю! :*:*:*

p.s. ребят, возьмите на заметку, нащёт 81 порта. Точнее нащёт того, кто обрабатывает страничку. Узнать кто на каком можно nmap'ом.

asiaman
10.04.2012, 02:06
Pirotexnik said:
YAHOOOOOO!!!!
Зашел с 81 портом, постучал в бубен, потом по дереву, потом заработало!
Всем спасибо, всех люблю! :*:*:*
p.s. ребят, возьмите на заметку, нащёт 81 порта. Точнее нащёт того, кто обрабатывает страничку. Узнать кто на каком можно nmap'ом.


В смысле? получилось. можно чуть-чуть по подробнее. спс.

Или краткий мануал для новичков, можно в форме статьи. Я бы с радостью прочитал, как ты все делал и какие подводные камни были.

Pirotexnik
10.04.2012, 02:22
Хорошо, будет "От дорка до рута 2"

Действительно, много-много нового узнал во время хэка этого сайта.

asiaman
10.04.2012, 02:31
Pirotexnik said:
Хорошо, будет "От дорка до рута 2"
Действительно, много-много нового узнал во время хэка этого сайта.


Супер! Спасибо.

З.Ы. Надеюсь, что пафосные товарищи не будут тебя критиковать. А то они может и уровнем по выше. Но статьи не пишут, активно знаниями не деляться. А только пафос. Не обращай на них внимания. Главное, чтобы новичкам было понятно. И это гуд

Cennarios
10.04.2012, 03:13
Pirotexnik said:
YAHOOOOOO!!!!
Зашел с 81 портом, постучал в бубен, потом по дереву, потом заработало!
Всем спасибо, всех люблю! :*:*:*
p.s. ребят, возьмите на заметку, нащёт 81 порта. Точнее нащёт того, кто обрабатывает страничку. Узнать кто на каком можно nmap'ом.



НИчего сверхъестественного здесь нет. Во первых, nginx не обрабатывает .htaccess. Файл .htaccess, это чисто апачевская приблуда. Далее, имеет место банальная связка nginx+apache по схеме frontend-backend для повышения производительности сервера. При должной настройке nginx обычно вешается на 80 порт и ловит все приходящие пакеты с заголовками по типовой схеме browser->80 port server и передает на backend apache, который вешают в силу естественных причин на другой порт, в данном случае на 81.

Pirotexnik
10.04.2012, 03:43
Да, там связка, все верно! Но несмотря на это, на 80 порту не работает, на 81 работает.

Почему?

Cennarios
10.04.2012, 03:57
Pirotexnik said:
Да, там связка, все верно! Но несмотря на это, на 80 порту не работает, на 81 работает.
Почему?



Потому что, как я и говорил, запрос сначала попадает на nginx. А там , взгляни внимательно на конфиг, идет определенный перечень правил, на основании которых запрос трансформируется необходимым образом. Взять хотя бы кусок конфига:

location /members/ {

location ~ \.(php|php3|php4|php5)$ {

deny all;

}

Сия конструкция запрещает выполнение скриптов с расширениями php|php3|php4|php5 в директории(или по линку) /members для любого IP в заголовке запроса.

Естественно, скрипты и не будут выполняться. Но если же обратиться на 81 порт на котором висит апач - site:81/members/script.php то скрипт успешно выполнится. Потому как запрос непроходит через ряд правил nginx'a а идет напрямую в backend.

Суть заключается именно в этом. Вообще, нормальный админ фиксит доступ к backend напрямую для внешней сети.