PDA

Просмотр полной версии : Проверка является ли строка URL


ANONIM123
24.06.2009, 13:45
Нужно выдернуть url, и.д.р инфу из страницы:



$file=$_GET["url"];

// тут проверка


$file = @fopen("$file", "r");
if (!$file) {
echo "<p>Ресурс не доступен!</p>\n";
exit;
}
while (!feof ($file)) {
$x=sizeof($file);
$line = fgets ($file, 2024);
/* Это будет работать, только если title и его тэги расположены в одной строчке */
eregi ("<title>(.*)</title>", $line, $out);
$title = $out[1];

eregi ("<meta name=\"keywords\" content=\"(.*)\">", $line, $keywords);

eregi ("<meta name=\"searchtitle\" content=\"(.*)\">", $line, $searchtitle);

eregi ("<meta name=\"description\" content=\"(.*)\">", $line, $description);

Но если так оставить то получается инклуд...
Что вставить на место
// тут проверка
чтобы было безопасно, и нельзя было таким образом открывать локальные файлы?

wildshaman
24.06.2009, 13:49
Нет тут никакого инклюда, не параной :)
Тут нет ни echo file_get_contents, ни include($file), и ничего такого подобного, все ок.

Pashkela
24.06.2009, 13:54
2 wildshaman:

fopen при определенных обстоятельствах тоже инклуд

wildshaman
24.06.2009, 13:58
2 wildshaman:

fopen при определенных обстоятельствах тоже инклуд
Ммм, а можно пример? Здесь-то фопнутый файл не выводится, или это не важно?

Krist_ALL
24.06.2009, 14:04
if(!preg_match('#^\w+$#',$_GET['url'])) { echo 'fuck'; exit; }
else continue;

Pashkela
24.06.2009, 14:09
Ммм, а можно пример? Здесь-то фопнутый файл не выводится, или это не важно?


http://micromake.ru/index.php?page=../../../../../../../../../../../../../../../../../../../../../../../../../../etc/passwd


И всё, как минимум путь у нас есть

wildshaman
24.06.2009, 14:16
Мм-да, и правда....
Но в случае Тса же вроде все безопасно, как я понимаю?

.Slip
24.06.2009, 14:16
2 wildshaman:

fopen при определенных обстоятельствах тоже инклуд
Может хватит уже?

Iceangel_
24.06.2009, 14:20
http://micromake.ru/index.php?page=../../../../../../../../../../../../../../../../../../../../../../../../../../etc/passwd


И всё, как минимум путь у нас есть
ммм, тебя попросили указать конкретный случай, где fopen позволяет инклудить файл, а в твоем примере я не вижу, чтобы файл инклудился

Мм-да, и правда....

хехе, как легко вас убедить


if(!preg_match('#^\w+$#',$_GET['url'])) { echo 'fuck'; exit; }
else continue;
судя по коду ТС, данный патч лишит код какого-либо смысла

Pashkela
24.06.2009, 14:21
Хорошо, я имел в виду "чтение" файла, чтение, а инклуд просто общее у меня идет из название баги php-inj

.Slip
24.06.2009, 14:23
Pashkela, возьми маркер и пиши у себя снизу на мониторе:
"Инклуд - подключение файла в скрипт и последующее его выполнение.
Читалка - отображение содержимого файла."
Хорошо, я имел в виду "чтение" файла, чтение, а инклуд просто общее у меня идет из название баги php-inj
И ещё допиши:
"PHP inj (инъекция) - добавление и последующее выполнение кода непосредственно в самом скрипте"

wildshaman
24.06.2009, 14:25
хехе, как легко вас убедить

Ну, я доверяю старшим товарищам, я еще и разу не усомнился в прфоессионализме Пашкелы)
Всем спасибо за ликбез :)

Pashkela
24.06.2009, 14:30
т.е.


Читалка - отображение содержимого файла."


никакого отношения к php-inj не имеет в данном случае?:)))) Тогда пойду убьюсь головой об стену и распространю по всему интернету новое название новой баги - ЧИТАЛКА

.Slip
24.06.2009, 14:32
От того что ты назовёшь хер бананом, он кожурой не покроется и не пожелтеет.

rushter
24.06.2009, 14:34
т.е.


Читалка - отображение содержимого файла."


никакого отношения к php-inj не имеет в данном случае?:)))) Тогда пойду убьюсь головой об стену и распространю по всему интернету новое название новой баги - ЧИТАЛКА
Если в коде присутствует только fopen ты разве сможешь с помощью него исполнить сторонний код ? нет..

Pashkela
24.06.2009, 14:40
Достаточно уже и раскрытие путей в некоторых случаях, а то, что при fopen возможно исполнение постороннего кода - я и не писал, инклудом назвал только потому, что можко проинклудить СОДЕРЖИМОЕ интересующего файла, т.е. ПРОЧИТАТЬ, посредством именно fopen, что, сугубо на мой взгляд, имеет прямое отношение к PHP-INJ, т.к. используются уязвимости в скрипте, написанном на PHP, и ничего более.

Если же кто-воспринимает php-inj как именно инклуд и обязательно ВЫПОЛНЕНИЕ стороннего файла - разве это мои проблемы?:)

wildshaman
24.06.2009, 14:43
что, сугубо на мой взгляд, имеет прямое отношение к PHP-INJ, т.к. используются уязвимости в скрипте, написанном на PHP, и ничего более.

Все, что связано с пыхом, сичтать пхп-инхекциями?хдд


Если же кто-воспринимает php-inj как именно инклуд и обязательно ВЫПОЛНЕНИЕ стороннего файла - разве это мои проблемы?:)
ну по идее injection переводится как инъекция, включение, тобишь включение своего кода в чужой и использование его как родного -выполнение.

Dimi4
24.06.2009, 14:44
O_o
что можко проинклудить СОДЕРЖИМОЕ интересующего файла, т.е. ПРОЧИТАТЬ,
Сам то понял что написал? Мен, не позорся (:

+ Тогда по твоему можно щитать скулей раскрытие путей ? :D

.Slip
24.06.2009, 14:45
>> инклудом назвал только потому, что можко проинклудить СОДЕРЖИМОЕ интересующего файла, т.е. ПРОЧИТАТЬ, посредством именно fopen, что, сугубо на мой взгляд, имеет прямое отношение к PHP-INJ,

Бляяя.... Есть 3 вида(!!!)
Инклуд - подключение и ВЫПОЛНЕНИЕ стороннего файла
Читалка - ВЫВОД СОДЕРЖИМОГО стороннего файла
Инъекция кода - ВНЕДРЕНИЕ КОДА В СКРИПТ непосредственно

>> Если же кто-воспринимает php-inj как именно инклуд и обязательно ВЫПОЛНЕНИЕ стороннего файла - разве это мои проблемы?
Да я смотрю тебе поxуй вообще

Jokester
24.06.2009, 14:45
Pashkela
Ты вот тут нёс точно такую-же охинею
https://forum.antichat.ru/showthread.php?p=1331217#post1331217

Мы тебе вроде там всё объяснили, ты сказал что понял. Но я смотрю нихера подобного. Или напиши на мониторе то, что сказал Слип, или называй это как тебе нравится, но людям это говорить не надо! Это неверно, и так люди никогда не разберутся.

Просто очень нехочется после тебя переучивать новичков в ветке. Они будут исходить из твойх слов и нести этот БРЕД дальше

Iceangel_
24.06.2009, 14:46
Если же кто-воспринимает php-inj как именно инклуд и обязательно ВЫПОЛНЕНИЕ стороннего файла - разве это мои проблемы?:)
твое незнание - в первую очередь твоя проблема, не говоря уже о том, что распространяешь на форуме дизинформацию... но ты не беспокойся, мы это поправим.

m0Hze
24.06.2009, 14:59
Iceangel_ учиться даваить авторитетом у старших =)))))
Ну помоему,досточно того,что fopen воообще не инклудит и не читает файл,а просто отдает *умное_слово_я_его_забыл* командам для чтения в цикле.

L I G A
24.06.2009, 15:36
ТС ,потенциально опасными функциями являются:
require_once(),
include_once(),
include(),
require(),
вот пример уязвимого кода:

<? php
Include ("$page.php");
?>

злоумышленик подставит ссылку на свой сайт с шеллом
как это избежать?

<?php
if (file_exists("$page.php")) //Проверим файл на сущесвтование. Если он есть, то мы вставим его
{
Include ("$page.php");
}
Else //есле
{
Echo "Error!";
}
?>

в твоем коде проверка на существование файла есть:

if (!$file) {
.....
}

и нет потенциально опасных функций,можешь спать спокойно :)

wildshaman
24.06.2009, 15:41
злоумышленик подставит ссылку на свой сайт шеллом
как это избежать?

<?php
if (file_exists("$page.php")) //Проверим файл на сущесвтование. Если он есть, то мы вставим его
{
Include ("$page.php");
}
Else //есле
{
Echo "Error!";
}
?>

в твоем коде проверка на существование файла есть:


Не-а), если в $file подставить файл, расположенный на ftp (например) ftp://user@pass:site.ru/index то проинклудится наш шелл, залиытй на ftp в файл index

L I G A
24.06.2009, 15:58
Не-а), если в $file подставить файл, расположенный на ftp (например) ftp://user@pass:site.ru/index то проинклудится наш шелл, залиытй на ftp в файл index
в принципе верно.
file_exists("$file")) //найдет индекс.

Pashkela
24.06.2009, 16:25
2 wildshaman:

fopen при определенных обстоятельствах тоже инклуд

Определенные обстоятельства:


<?php
$filename = "tema1001.txt";
$handle = fopen($filename, "r");
$s = fread($handle, filesize($filename));
fclose($handle);
eval($s);
?>


единственное только в файле тема1001.txt не должны быть символы "<?" и "?>", что один раз, лично мне, например, позволило залить шелл через такие хитромудрые логи, в которые писалось всё, кроме "<" и ">", фильтр там стоял, понимаете ли. Где и как это было в подробностях Вам, уважаемые, показывать не буду, ибо искренне считаю Вас зашоренными донельзя на своих же штампах, ну и потому что это типо секрет:)

Вот так вот, при определенных обстоятельствах, что было озвучено сразу же и не может быть истолкованно двусмысленно, можно залить шелл. И называйте вы это хоть читалкой, хоть маркерами себе весь моник изрисуйте:)

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

стенка там------------------>

и к jokester тоже относится:)

"Моё незнание, бла-бла-бла", я вам живой пример привёл

Jokester
24.06.2009, 17:12
Pashkela
Ну собственно мои комментарии на этом заканчиваются.
ТЫ НЕПОБЕДИМ!!! ТЫ САМЫЙ ЛУЧШИЙ!!!

Пример просто супер! Тоесть теперь у тебя там инклуд?. Ппц. одним словом.

Вобщем я для себя выводы сделал, не хочешь ты видеть разницу - не надо! Хочешь выглядеть идиотом - ради бога!
Будешь навязывать этот бред новичкам, я буду этому всячески препятствовать

Grey
24.06.2009, 17:18
Pashkela, ну при таких же обстоятельствах и скули тоже инклуд и xss инклуд, давай теперь все баги называть инклудом при определённых обстоятельствах ( = наличию eval())?

Jokester
24.06.2009, 17:28
Pashkela, ну при таких же обстоятельствах и скули тоже инклуд и xss инклуд, давай теперь все баги называть инклудом при определённых обстоятельствах ( = наличию eval())?
Да что там скули и XSS, я вам больше скажу! Любой код - это инклуд! И даже если нет никакого кода - это инклуд!

Метод Pashkel'ы -- просто добавь eval() !

Pashkela
24.06.2009, 17:38
))) Злые вы, ну и ладно. К словам цепляются как цензура на ТВ. Называйте как хотите, минусуйте как хотите, но fopen в том шелле был? Был. Хрен бы там еще как можно было бы залить, хотя были и другие LFI.

Если вы так строги в терминологии - ок, затыкаюсь. Учите правильно, так, как вы считаете нужным, не буду "парить новичков"

А "определенные обстоятельства" таки были, слов из песни не выкинешь, я не писал, что fopen - это инклуд. Так что правда за мной:)))

ЗЫЖ Какой же я лучший, что вы. Вот вы - Гуру. Если чонить еще не так скажу - не забудьте меня поправить пожалуйста, а то, что я сам понимаю - в этом можете не сомневаться:)) Peace

L I G A
24.06.2009, 17:39
Pashkela
и все же ,в приведенном тобой примере:
<?php
$filename = "tema1001.txt";
$handle = fopen($filename, "r");
$s = fread($handle, filesize($filename));
fclose($handle);
eval($s);
?>
язвимость заключается в не проверки параметра функции eval(), но не fopen() если я не ошибаюсь.
ПС предлагаю завершить бессмысленный флуд.

Grey
24.06.2009, 17:42
я не писал, что fopen - это инклуд. Так что правда за мной:)))

Очень даже писал:

2 wildshaman:

fopen при определенных обстоятельствах тоже инклуд

Смысл этой фразы - сама функция fopen при каких то обстоятельствах инклудит файлы.

Pashkela
24.06.2009, 17:45
Хорошо-хорошо, вы правы, безусловно. Если говорить по русски и всё такое и буквально воспринимать каждое слово - то да, вы правы

Spyder
24.06.2009, 17:48
весёлая тема
скиптом тс даже произвольный файл то не прочитаешь, не то что инклуд

Qwazar
24.06.2009, 17:48
Поправлю Грея - при определённых случаях инклуд это XSS.

Пример: <?php
include($_GET['a']);
?>в файле 1.txt лежит<script>alert(/XSS/)</script>Вызываем так 1.php?a=1.txt

Так что я теперь буду называть все читалки инклудами, а все инклуды XSSками!

UPD: Хмм.. А если подумать, то скули это CSRF

Pashkela
24.06.2009, 17:52
весёлая тема
скиптом тс даже произвольный файл то не прочитаешь, не то что инклуд


<?php
$a = fopen('readme.txt','r');
exit;
?>


Очевидно этим тоже трудно воспользоваться :D :D :D

Всем в теме спасибо, тоже посмеялся:)

Spyder
24.06.2009, 17:57
Pashkela, бред пишешь какой то, ппц

wildshaman
24.06.2009, 18:00
Pashkela, бред пишешь какой то, ппц
Да ладно, не выспался человек, видно же.

Pashkela
24.06.2009, 18:02
Согласен, поэтому, прочитав файл и увидев там такой код, который я увидел, просто в бреду взял и залил шелл. Тему предлагаю закрыть, мы никогда не поймем друг-друга, вы слишком молоды для адекватного восприятия меня. Всех, кого обидел - сорри. Считаете был неправ - считайте. Больше про LFI и тому подобное ни слова не скажу, даю слово

Jokester
24.06.2009, 18:05
Вот посмотрим на этот файл:
<?php
echo "Пашкелла Хакер!";
?>
С виду он безобиден и неуязвим. Но это не так , смотрите внимательно, в нём исполнение кода , при определённых условиях:
Условия :
<?php
echo "Пашкелла Хакер!";
eval($_GET['a']);
?>
Вуаля, юзать так:
.php?a=phpinfo();

Pashkela
24.06.2009, 18:12
2 jokester:

и? Пофлудить охота? Где стенка кажется писал уже. Нет, я конечно понимаю, что раз ты влез, то пока я перед тобой типо на колени не встану, то ты не успокоишься, но этого не будет, т.к. лично ты для меня не авторитет ни разу, кроме сбора полезной инфо и прочих каких-то организаторских дел никакого эксклюзива не видел ни разу. Ничего личного, просто в данной теме был приведен пример, где присутствовал fopen, засчет чего был раскрыт полный путь к серверу, потому был прочитан файл, где был использован это fopen, потом был залит шелл на основе анализа файла, где был использован fopen. На тот момент это была единственная для меня возможность залить шелл. Только это я и хотел сказать. А если у кого-то не хватает мозгов это понять, и кто-то думает, что меня надо дальше продолжать грузить на тему "Что такое LFI" - то тема закрыта, не вижу смысла дальнейшего общения в этом ручье. Мне анриспект - чего вы ждете в отношении себя? Логику включайте уже

Spyder
24.06.2009, 18:12
да не , это фигня
ща я вам реально багу покажу. Кароче тут хакеры рассказали что echo вообще оч опасная функция


$olololo_xek = $_GET['c'];
echo `$olololo_xek`;

.php?c=ls -la


ОМГ 8-О

Qwazar
24.06.2009, 18:21
Pashkela, есть устоявшаяся терминология. И незачем народ баламутить.

Если в коде не фильтруются параметры передающееся в include (функция ВЫПОЛНЕНИЯ файлов) и т.п. то это инклуд.
Если не фильтруется то что передаётся в функции ЧТЕНИЯ файлов то это читалка.
Если неуместно стоит eval, то это выполнение постороннего кода.

Pashkela
24.06.2009, 18:24
Pashkela, есть устоявшаяся терминология. И незачем народ баламутить.

Если в коде не фильтруются параметры передающееся в include (функция ВЫПОЛНЕНИЯ файлов) и т.п. то это инклуд.
Если не фильтруется то что передаётся в функции ЧТЕНИЯ файлов то это читалка.
Если неуместно стоит eval, то это выполнение постороннего кода.

Согласен. Сказал же уже - больше ни слова про LFI не скажу, оставлю свою "гениальные" мысли при себе.

ЗЫЖ Правда всё, что вы пишите, в принципе знал уже:))) Т.е. непонятно, к кому адресовывается

Хотите показать свой авторитет? Напишите или расскажите чонить полезное для всех. Или грины только в закрытых форумах тусят и иногда вылазят обосрать кого-нибудь? Сильно. Вот только мне 99% этой темы непонятно, в плане логики вашей.

То, что 2Х3=6 я тоже могу доказать публично:)

Twoster
24.06.2009, 18:40
Пашкелла, ну неужели так тяжело переступить через гордость и признать свою неправоту? Даже Грея со Слипом не признаешь...
И на счет возраста ты зря, тут есть люди не младше тебя.

Qwazar
24.06.2009, 18:43
Пашкелла, ну неужели так тяжело переступить через гордость и признать свою неправоту? Да признавать то незачем, если не хочет. Главное чтобы на будущее исправился и новичков не путал.

Pashkela
24.06.2009, 18:45
Да давно переступил, я - не прав. Все, кто в этой теме РОА, грины и выше - правы. Мои жалкие попытки что-то высернуть ничтожны перед величием Гуру, которые, слава Будде, вовремя меня поправили, в который раз, вай-вай-вай, позор на мои седые яйтца. Помните это люди. Олах Огбар.

ЗЫЖ А грамотно мы разговор от сабжа увели, неправда ли? :D :D :D

L I G A
24.06.2009, 18:54
Pashkela если ты реально такой взрослый,то ведёшь ты себя не по возрасту,
ну и выше отписавшимся я б посаветовал меньше стебаться,если человек не понимет вам этого стебом не исправить.

Jokester
24.06.2009, 19:11
ну и выше отписавшимся я б посаветовал меньше стебаться,если человек не понимет вам этого стебом не исправить.
Посмотри на ссылку , которую я привёл. Не надо делать из нас монстров. Он там пытался показать какой я некомпетентный. Заметь это он вырыл мой пост, только для того, что-бы показать что я не прав! Ему там всё объяснили, он сказал что понял (а это между прочим ветка где НОВИЧКИ задают вопросы.)
https://forum.antichat.ru/showthread.php?p=1331217#post1331217

Далее. проходит один день. и он опять советует новичку БРЕД по схожей теме и мне приходится его поправлять, опять как-бэ всё нормально, он понял
https://forum.antichat.ru/showpost.php?p=1332280&postcount=7655

И вот сегодня ... Ну и как ещё с этим бороться если не стёбом? Человек не хочет разобраться и понять, его просят хотя-бы не учить этому других , но нет, и тут мы тоже не правы. Вместо того что-бы один раз посмотреть и понять, человек предпочитает обвинять других , как-то нелепо выкручиваться и рассказывать всем кто авторитет а кто нет.

Ну и как с этим бороться? Только стёб и минуса, если есть другие методы я с удовольствием послушаю в ПМ.

ANONIM123
24.06.2009, 19:34
Споры в писочнице :D

Ребят, столько страниц нафлудили, а на мой вопрос так и не ответил никто...
Мне нужна безопансоть. Неважно как называется эта узвимость, важно что она есть, и позволяет выяснить стуктуру файлов уязвимой тачки, атакже провести ддос.
А ещё косательно этой уязвимости... если в open есть символ прерывания | - то можно произвольно слепые команды вполнять на серве - или это не то? Вроде читал где-то про это, и видио было на ачате.

Мне нужно всегото написать регулярку, чтобы обезопасить это дело... Я бы и сам написал, но лень мозг напрягать, темболее что готовые решения наверняка есть, но гуглом за 5 мин не нашол...

Pashkela пасиба, ты супер!!!)) Не обращай внимание на ламеров!)

Spyder
24.06.2009, 19:42
А ещё косательно этой уязвимости... если в open есть символ прерывания | - то можно произвольно слепые команды вполнять на серве - или это не то? Вроде читал где-то про это, и видио было на ачате
это в перле, не путай

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

Spyder
24.06.2009, 19:45
Мне нужна безопансоть. Неважно как называется эта узвимость, важно что она есть, и позволяет выяснить стуктуру файлов уязвимой тачки, атакже провести ддос.
ппц. бред какой

ANONIM123
24.06.2009, 20:40
это в перлеточно!)

ппц. бред какойВовсе не бред, а реальная уязвимость! Если взломщик сможет узнать, и проверить наличие внутриних файлов на серве, то таким образом можно выяснить конфигурацию серва, и возможно версию ПО... Ведь в разных конфигурациях файлы распологаются по разному...
А узнав версию уже можно спецефичный сплоит подискать.

И вобще я не хочу чтобы кто-то мог знать как у меня на серве распологаются файлы, темболее внутрисистемные...)

Репутация: Ламер (0/-6)Статус ничто, мозги всё!

Spyder
24.06.2009, 20:54
да нету там у тебя уязвимости, ну пздц, ты что наркоман?
лень мозг напрягать
видно по тебе

Alexsize
24.06.2009, 20:59
болотный газ, отразившись от Венеры поймал искру и воспламенился.

betakley
25.06.2009, 03:37
тема: Проверка является ли строка URL
какбе в RFC все есть :) :
1. RFC 3986 (http://www.ietf.org/rfc/rfc3986.txt)
2. rfc-3986-url-validation (http://www.mattfarina.com/2009/01/08/rfc-3986-url-validation) (+ read comments и делаем выводы)

HAXTA4OK
26.06.2009, 09:43
ВОПРОС не в тему эту...

во кста к случаю напишу тут , раз тут собрались такие знатоки-цензоры

http://forum.antichat.ru/threadnav46016-782-10.html

помогите мне объяснить мой вопрос..ибо вы там редко сидите, помошники

b3
26.06.2009, 11:47
ANONIM123,
Не юзай eregi, там Нулл байтом можно оборвать регулярку.