Набросал сайт, взгляните
http://www.ls-soft.com/wortschatz/
Это только наброски, но пожелания в каком направлении развивать, на что обратить внимание и т.д. уже хотелось бы услышать. Спасибо
http://ls-soft.com

http://www.mitnick.com.ru/downloads/test.html
http://menvix.newmail.ru
Я походил по другим сайтам в интернете, "подсмотрел" кое-где дизайн, и применил на своей странице. А все остальное - организация структуры, идея, программирование, и закладка информации моя. Вроде тоже не мало.
http://ls-soft.com
Я могу туда подставить адрес любого файла, какой мне нужен, и он выполнится.
Как пример http://www.ls-soft.com/wortschatz/index.php?site=http://gym9.volgograd.ru/temp/test.inc
Здесь я напечатал просто текст. Можно написать любой код...
Как залатать... Или фильтровать запрос, или просто отказаться от такой структуры.
http://ls-soft.com
>Но я чего-то ей особого значения не придаю. Пусть пока будет.
Ну, напрасно, напрасно. Я попытаюсь объяснить, что можно с подобной дыркой сделать.
Сначала немного теории.
Это дыра имеет позволяет воспользоваться кросс-сайт скриптингом. Данный термин обозначает несколько видов атак, в данном случае, позволяет исполнить в контексте Вашего веб-сервера скрипт находящийся где угодно в интернете. А это означает, что можно получить полный контроль над Вашим сайтом при некоторых благоприятных условиях.
Если неубедительно звучит, тогда попробую потеоретизировать, что можно сделать практически.
Можно прийти с работы домой, почитать германку, увидеть эту ветку, убедиться, что дырища на самом деле имеется, залить куда-нить на халявный вебхостинг скрипт на PHP, который выводит phpinfo() и содержимое страницы index.php, тут дабы совсем тупые скрипкидди не претворили в жизнь заветы партии, скажу: "использовать этот скрипт", так вот, использовать этот скрипт для просмотра содержимого index.php и настроек вебсервера, увидеть скрипт haupt.php загружаемый в index.php, а в нём подключаемый basa_info.php в котором лежат имя базы, логин и пароль, изменить скрипт на халявном хостинге, что бы он показал что там в таблице users лежит...
Да, надо сказать, использование safe_mode на веб-сервере былo здравой идеей..
Итак, к данному моменту, чисто теоретически ;-), получены пользователи сайта. Кстати, могла бы произойти совершенно невероятная вещь

Потом можно было бы подумать вслух: "порыцца в грязном белье и поискать в почте информацию о каких-либо аккаунтах?", но всё-таки решить принципиально не делaть ничего плохого :) людям которые существуют на германке, и просто разлогиниться и ничего личного ни у кого не читать. И посоветовать аффтару более серьёзно относится к дырам.
Также можно посоветовать заменить принимаемые имена страниц на константы с каждой из которых была бы сопоставлена своя страница, это закрыло бы дыру. Также, в базе пользователей хранить хэши вместо паролей и, при логине сравнивать хэш от введённого пароля с хэшем из таблицы, это усложнило бы задачу того кто добрался бы до таблицы. Потом можно посоветовать аффтару подходить более последовательно к обработке ошибок в коде -- это благотворно сказывается на карме т.к. стиль программирования при этом улучшится. Ну, и наконец, посоветовать сообщить пользователям данного сайта, что чисто теоретически, сайт, в виду непредвиденных дыр, мог быть немного поломан, поэтому стоит поменять пароли.
Вот что могло бы случиться, чисто теоретически

Кстати, это не самых худший вариант. Хуже для владельца сайта, когда делается это молча, а вебмастер уверенный, что дыра пусть посуществует себе пока, успокоеный незначительностью дырки, будет делать спокойно сайт дальше, а тот кто его сломал бы сейчас, подождал бы пока база пользователей не наберётся побольше, даже вероятное обещаниe вебмастера закрыть дыры не помешало бы -- вполне вероятно, что доступ на фтп будет также хорошо функционировать и будущем... Далее мысль развивать не буду.
Спасибо за внимание. ;)
---
Если вы параноик, то это не значит ещё, что за вами не следят.

---
Идиотов и фриков перевоспитать невозможно!
В ответ на:Также можно посоветовать заменить принимаемые имена страниц на константы с каждой из которых была бы сопоставлена своя страница, это закрыло бы дыру.
А где хранить констаты? Что-то я уже не в чем не уверен и думаю, что эти константы будут также с лекгостью просмотренны. И где же черт побери хранить пароль к базе? Я уже не знаю что и делать.
Вообще хотелось бы просмотреть шаблон какого-нибудь сайта, как правильно нужно делать что бы избежать подобных проблем?
http://ls-soft.com
В ответ на:информацию о физическом пути к скрипту в сообщениях об ошибках показывать совсем необязательно
Как ее прятать-то?
Чего-то не представляю как можно в контрукцию SELECT всавить параметры, которые бы убивали базу? Конструкцию DELETE я не применяю нигде, здесь бы было все ясно. Это важно мне знать, что бы мочь правильно запросы фильтровать
http://ls-soft.com

>А где хранить констаты? Что-то я уже не в чем не уверен и думаю, что эти константы будут также с лекгостью просмотренны.
Да они будут видны, но это значения иметь не будет. Сейчас грузится то, что указано в ?site=xxxxx, т.е. ваще что угодно, а будет загружаться из ж╦стко заданного набора страниц. У вас будет в том же самом скрипте что принимает переменную $site нечто типа:
switch( $site ) {
case 1:
тут грузите страницу1..
break;
case 2:
тут грузите страницу2..
break;
default:
die("hacker? mmm.. logged.",0);
}
т.е. XSS станет уже невозможным.
Кстати, по ходу дела, есть такая глобальная переменная $HTTP_REFFER советую посмотреть -- е╦ можно использовать для выяснения откуда запрос приш╦л -- из Вашей собственной формы или с какого левого халявного хостинга..
>Вообще хотелось бы просмотреть шаблон какого-нибудь сайта, как правильно нужно делать что бы избежать подобных проблем?
Это необязательно. Делайте как хотите, просто узнайте о возможных проблемах и выясните как дыры работают -- от 90% процентов взломщиков избавитесь. А без этого и шаблоны не помогут. Вон, сколько phpBB, что мнoго где стоит вылизывают, до сих пор дыры находятся.
>И где же черт побери хранить пароль к базе?
Там же где и храните, просто сделайте так, чтобы как минимум, этот пароль был уникальный

>>информацию о физическом пути к скрипту в сообщениях об ошибках показывать совсем необязательно
>Как ее прятать-то?
Ну как, все обращения к базе должны содержать "or die" либо-ещ╦ какой метод обработки ошибок, что бы небыло ситуаций, когда соединения с базой нет, а делается попытка выполнения mysql_query(). Т.е. если была ошибка, то должно вывестись сообщение пользователю о ней не содержащее никакой для него полезной информации и программа должны быть останолена. И не забывайте, что можно передав заведомо неверные параметры спровоцировать ошибку, т.е. там, к примеру, где требуется ввести целое число, которое будет использоваться как параметр в SQL-запросе, должно быть полученo именно целое число и ничего другого. Фильтруйте!
>Чего-то не представляю как можно в контрукцию SELECT всавить параметры, которые бы убивали базу?
вот одно из простых описаний SQL-Injection. Там найд╦те примеры вставки в базу. Вместо INSERT/UPDATE вполне может быть DROP.
http://www.securitylab.ru/31623.html
---
Идиотов и фриков перевоспитать невозможно!
http://ls-soft.com


Что я не так сделал? и как получить указанный доступ через мой сайт? и как это дело прикрыть. Только битте "ключевые" моменты в личку. Спасибо.
http://ls-soft.com
>Можно получить доступ к всему серверу и просканировать все каталоги!!!
Включ╦н safe-mode и restricted base_dir. Допустим, вчера, я сюда ничего не писал и по-прежнему имею доступ на ftp. Просвяти, каким образом я получу возможность вылезти за пределы ftp_rooт_dir? Единственное, что имеется это apache 2.0.48 и установленные модули. Мне лень ковырять было, если ты так уверенно говоришь, возможно ты что-то конкретное имеешь в виду? В данной версии апача есть непофиксеный buffer overflow?
---
Идиотов и фриков перевоспитать невозможно!