Многие новички часто задаются вопросом – а с чего же мне начать взлом сайта? Сейчас я попытаюсь об этом рассказать.
Для начала определяется хотя бы какая то информация о сервере. Для этого есть множество способов. Полученная информация может иногда очень сильно помочь при взломе. Этой информацией может быть версия веб-сервера, операционная система, дополнительный софт.
После получения хотя бы какой-то информации большинство людей приступают к поиску уязвимостей в скриптах атакуемого веб-сервера. Другие же люди, не входящие в выше описанное большинство, по непонятным причинам опускают руки. Дальнейший ход событий зависит от того были ли найдены уязвимости, если да, то какого типа уязвимость была обнаружена.
Сейчас я расскажу как собрать как можно больше информации об атакуемом сервере. Дополнительная информация может очень даже помочь при проведении атаки или при поиске эксплойта.
Robots.txt
Файл robots.txt используется на сайтах для того, чтобы предотвратить сканирование поисковыми пауками директорий указанных в этом файле. Файл robots.txt лежит в корневом каталоге сайта (http://www.[site].ru/robots.txt). Но хочу обратить Ваше внимание на то что не на каждом сайте можно встретить данный файл.
Здесь Dir1, Admin, Users, Test и Unit – это каталоги, доступ к которым запрещен поисковым паукам (каталоги могут быть совершенно другими, это зависит от администратора). К определённым директориям запрещается доступ паукам из-за того, что в них может храниться конфиденциальная информация. В таких каталогах чаще всего хранятся странички администрирования и какая-либо важная информация. Каталоги в robots.txt указываются из корневого каталога сайта. Не смотря на то, что поисковым паукам доступ туда закрыт, Вы, если повезёт, сможете в эти каталоги без проблем обратится.
/CGI-BIN/
Данный каталог используется для хранения и выполнения различных скриптов. Каталог /CGI-BIN находится в корне сайта (http://www.[site].com/cgi-bin/). Так же, в этой директории, могут присутствовать log-файлы содержащие в себе действия скрипта и записи об ошибках (частенько попадается). В /CGI-BIN, после установки сервера, хранится файл test.cgi (или test.pl). Большинство администраторов его удаляют, но некоторые забывают (или просто не знают) о важности удалении этого скрипта. Чем же этот скрипт может помочь взломщику? Данный скрипт может предоставить важную информацию о сервере. Например, администраторы, которые пользуются пакетом denever, часто забывают удалять из папки /cgi/ скрипт test.php который выводит информацию об установленной версии php и об его конфигурации. Вот пример результата запроса /cgi-bin/test.pl того же denever’а: Этот текст сгенерирован файлом /home/[имя сайта]/cgi-bin/test.pl, расположенным в CGI-директории виртуального хоста localhost.
Увидев эту надпись, взломщик уже знает что все файлы сайта лежат в директории /home/[имя сайта]/
Заметьте что не на всех сайтах так. Каталог /CGI-BIN больше распространён на серверах с установленным apache. В IIS за место /CGI-BIN имеется папка /scripts . Идеальным было бы поставить у себя на компьютере точно такой же пакет (который установлен на сервере) и уже у себя на компьютере разбираться в его строении и в файлах дающихся для теста.
Папка может называться и не cgi-bin. Она может иметь названия cgi, cgi-glob и т.д. А вообще, администратор может создать совершенно отдельную папку и разрешить в ней исполнения cgi-скриптов.
Дополнительная информация.
Дополнительная информация никогда не бывает лишней. Дополнительной информацией может быть абсолютно всё, что поможет хоть как-то во взломе. Для начала, можно запросить не существующую страницу, конечно же, вы увидите сообщение об ошибке, но внизу, скорее всего, будет указана версия установленного веб-сервера (зависит от лоховитости администратора, но следует принять во внимание то, что иногда данные могут быть специально изменены). Сейчас имеется множество админов, которые держат сервера под Linux. При установке Linux они не редко указывают, что нужно установить сразу веб-сервер, почтовый сервер и т.д. Чем плоха такая установка? Плоха она тем, что если во время не подправить конфигурационные файлы взломщик вместе с сообщением об ошибке увидит и версию веб-сервера и операционной системы и модов, установленных для веб-сервера (Такую вещь я видел на сайте одного из крупных банков). Хотя если собирать Apache самому, из исходников, то при ошибке он не скажет версию ОС. Так же администратор может установить все под ряд модули для веб-сервера (просто так, чтоб было). Это очень плохо тем, что если в одном из модулей будет найдена уязвимость, то пострадает сервер, даже если данный модуль не используется. Вот пример плохого администрирования, запрашиваем не существующий документ и появляется ошибка:
Not Found
The requested URL /ewfwefw.pl was not found on this server.
Apache/2.0.52 RedHat 10.0 (modules)
Как видите мы уже знаем версию веб-сервера, ещё и тип ОС которая стоит на сервере + версия ОС. Дальше (в большинстве случаев) идёт описание модулей которые установлены для Apache+версии этих модулей, я их приводить не стал а просто заменил словом modules (Лень заново всё ставить J). А вот ответ нормально администрируемого сервера Not Found
The requested URL /wefew was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Тут ни версии веб-сервера, ни даже названия. Но только по типу ответа можно судить что стоит Apache т.к. IIS выдаёт ответ, который оформлен совершенно по другому.
Так же дополнительной информацией может считаться листинг директорий.
Листинг директории это просмотр её содержимого. Дело в том что в каждой папке должен находится файлик index.html, index.php и т.д., а вот если этого файлика в папке нету то веб-сервер показывает всё содержимое этой папки. Пример:
В директориях могут находиться файлы, ссылок на которые не существует. Такие файлы могут использоваться для быстрого переконфигурирования сайта, или администрирования определённой его части. Обратите внимание на то, что за просмотр папок отвечает отдельный модуль, если администратор его отключит то Вы увидите пустую страницу.
Версии установленных скриптов.
В данное время очень много как бесплатных так и платных скриптов для сайтов. Если компании жалко денег на заказ сайта у какойн-нибудь веб-студии то администратор просто скачивает готовые скрипты и устанавливает их. Чаще всего получается очень даже приятный сайт, с красивым дизайном и многофункциональностью. Но разработчики таких скриптов обязательно оставляют на своих скриптах запись о том кто автор скрипта и домашнюю страничку. Чаще всего эта надпись находится внизу. Вот пример указания авторских прав в форумах phpBB:
Как ты видишь тут указано имя форума (phpBB), его версия (2.0.17), имя и годы существования группы(2001,2005 phpBB Group), которая разработала его.
Администраторы чаще всего удаляют версию форума, или подделывают её. Если же всё-таки версия форума настоящая и администратор её не затирает то можно попробовать поискать информацию об уязвимостях данного форума в публичных источниках. Вдруг эта версия дырявая?
Так же дела обстоят и с другими бесплатными скриптами. Но если же нет версии то бывают (редко) какие ни будь признаки по которым можно отличить версию скрипта. В данном случае скрипт скачивается и устанавливается у себя на компьютере, затем исследуется. Но об этом позже.
Ошибки и недоработки в скриптах.
Сейчас очень редко можно встретить сайты, которые не используют скрипты. Скрипты могут быть не достаточно защищены. Это уже не недоработка администратора, а недоработка программиста написавшего этот скрипт. Рассмотрим следующий пример:
На сайте http://www.[site].com имеется скрипт story.php, который отвечает за показ, выбранного пользователем, рассказа. Название рассказа передаётся в параметре story. Скрипт просто берёт из папки файл с именем рассказа и выводит его пользователю. Вот пример ссылки: http://www.[site].com/story.php?story=dead_man.txt
Если программист, который писал этот скрипт, не уделил внимание фильтрации опасных символов то после подставления в ссылку опасного символа (например одинарной ковычки http://www.[site].com/story.php?story=dead_m’an.txt) то покажется ошибка, из которой можно извлечь много интересного. Вот небольшой пример ошибки связанной с работой с файлами:
Warning: fopen(./data/storys/dead_m'an): failed to open stream: No such file or directory in D:Websiteindex.php on line 54
Warning: fputs(): supplied argument is not a valid stream resource in D:Websiteindex.php on line 55
Warning: fclose(): supplied argument is not a valid stream resource in D:Websiteindex.php on line 56
Warning: file(./data/storys/dead_m'an): failed to open stream: No such file or directory in D:Websiteindex.php on line 60
Warning: array_reverse(): The argument should be an array in D:Websiteindex.php on line 63
Из этой ошибки можно понять, что все рассказы расположены в папке /data/storys/ и то что все файлы сайта лежат в папке D:Website. А вот тут уже можно увидеть что веб-сервер стоит на платформе Windows (сайт лежит на диске D ).
Это конечно уже уязвимость, но о них мы поговорим чуть позже.
phpinfo.php
Данный файл (прим. редактора: на самом деле это функция такая) содержит в себе всю информацию об установленной версии php и ещё много интересной информации. phpinfo используется разработчиками для отладки сайта. Когда сайт только поднимают и настраивают, разработчикам часто приходится обращаться к этому файлу, в нём лежит много информации о конфигурации php. Эта же информация может быть полезна взломщику при исследовании защиты сайта. Частенько, после окончания отладок и настроек, разработчики забывают убирать этот файл, что может привести к не очень хорошим последствиям. Также этот файл может быть переименован или в нём может содержаться какая-нибудь шутка администратора. Вообще этот файл может располагаться где угодно, так что если всё-таки он очень нужен то можете проверить на его наличие все директории.
Вот небольшой кусок информации, которую можно найти в этой файле:
Отсюда видно что версия php – 4.3.11 . ОС, на которой установлен веб-сервер это Windows NT 5.0 (Windows 2000). Далее видно что сам php установлен в D:UtilsPhp . Там же лежит конфигурационный файл php.ini. После этой информации в phpinfo содержится информация о конфигурации php и ещё много всего интересного. Вообще вся информация дающаяся phpinfo занимает несколько листов формата А4.
Заголовок ответа.
Когда вы запрашиваете у сервера какой-либо документ то он, в заголовке ответа, указывает информацию о себе. Данный способ может быть полезен тогда, когда при выводе ошибок или листингов сервер не сообщает о себе ничего. С помощью браузера заголовок ответа не получить, зато большинство программ это умеют. Они будут описаны чуть позже. Вот небольшой пример: запрашиваем на одном веб-сервере несуществующий документ, в ответ получаем следующую ошибку:
Not Found
The requested URL /ewfwe.pl was not found on this server.
Apache/1.3.33 Server at www.[site].ru Port 80
Отсюда видим - сервер даёт информацию только о своей версии и всё.
Далее делаем запрос на любой существующий (можно и не существующий) файл и в заголовке находим следующую информацию:
Это строчка с информацией о веб-сервере(3-я сверху). Обратите внимание на то, что при ошибочном запросе документа веб-сервер выдал только информацию о своей версии, а тут сразу видно и дополнительные модули + их версии: PHP/4.3.10 и PL30.20 (это perl). Так же по строчке Apache/1.3.33 (Unix) можем судить о том, что операционная система точно не Windows. Но эта надпись не означает того, что на сервере стоит именно Unix, там может стоять Linux, xBSD и любая другая *nix система. Как же можно получить данный заголовок? Очень просто. Для этого нам понадобится написать скрипт из 5 строчек на перле. Вот код данного скрипта:
#!usr/bin/perl
use LWP::UserAgent;
$client = LWP::UserAgent->new( ) or die;
print "Enter site:";
$url=<STDIN>; #Просим пользователя ввести адрес сайта
$answer = $client->get($url); #Отсылаем запрос на сайт
print "============================n";
print $answer->header('server'); # Выводим поле Server из заголовка
print "============================n";
Вот пример работы нашего скрипта:
Комментарии.
Интересные комментарии в коде веб-страниц попадаются очень редко, практически никогда, но бывают и исключения. Я сам всего 1 раз находил именно нужные комментарии в коде, содержащие важную информацию. Просмотреть код веб-страниц можно в браузере, либо можно сохранить страницу на винчестере и открыть её через блокнот. Кстати в html-коде может попасться тоже немного интересной информации о расположении сайта, однажды я встретил вот такой код картинки:
<img scr=’C:\site\www\images1.gif’>
Как видите тут даже напрягатся не надо – разработчик сам показал мне директорию сайта.
Скрытые тэги.
Как вы знаете – в формах html-страниц имеются различные типы полей данных – text, password и т.д. Сейчас речь пойдёт о полях типа hidden (скрытых). Данный тип полей используется для передачи определённой информации скрипту, только в скрытой форме, если поля типа text и password Вы видите и можете вводить в них данные то hidden-поля вы не видите. Увидеть их можно только в html-коде данных. Вот небольшой пример скрытого поля с именем user:
<input type=”hidden” value=”administrator” name=”user”> <!-- скрытое поле -->
</form>
Допустим что имеется определённый форум или чат, вобщем любое веб-приложение где можно посылать сообщение пользователем от своего имени. Если программисты не образованны в плане безопасности, то они могут передавать скрипту имя отправителя скрытые тэги. В таком случае взломщик может сохранить форму на винчестере и изменить значение скрытого поля на другое имя. Таким образом, станет возможным отправление сообщений от любого имени.
Good day! Would you mind if I share your blog with my myspace group? There's a lot of people that I think would really enjoy your content. Please let me know. Thanks купить диплом в серове https://njt.ru/forum/user/168764/ http://autogroupe.ru/zakazhite-diplom-onlayn-i-otkroyte-dveri-k-novyim-vozmozhnostyam https://vip.9bb.ru/viewtopic.php?id=5499#p9158 https://kharkov-balka.com/showthread.php?p=152947#post152947 http://moscowurban.getbb.ru/viewtopic.php?f=12&t=994
Hello there! Do you use Twitter? I'd like to follow you if that would be ok. I'm definitely enjoying your blog and look forward to new posts. купить диплом в феодосии http://bonus.2bb.ru/viewtopic.php?id=4815#p25760 http://pesnibardov.ru/f/viewtopic.php?f=2&t=156698 https://hikariacademy.edu.vn/49-ban-tham-du-hoc-bong-asahi-deu-do/ http://amtest.mybb.ru/viewtopic.php?id=328#p648 https://www.pitomec.ru/forum/post/12103
What a data of un-ambiguity and preserveness of precious know-how about unexpected feelings. купить диплом в кургане http://sk-sh.ru http://n-seo.ru http://vrninfo.ru
Aw, this was an incredibly good post. Spending some time and actual effort to make a great article… but what can I say… I put things off a lot and don't seem to get nearly anything done. куплю диплом цена http://sutangarsk.ru http://rdm-mytyshi.ru http://rfe-revizor.ru
Hello to every one, it's genuinely a nice for me to visit this web site, it includes priceless Information. купить диплом в армавире http://mir-forum.ru http://ivavai.ru http://school-10-lik.ru
Hello friends, its impressive piece of writing regarding teachingand entirely explained, keep it up all the time. купить диплом врача http://milru.ru http://ot1do8.ru http://psypokolenie.ru
What a information of un-ambiguity and preserveness of precious know-how on the topic of unexpected feelings. купить диплом в перми http://interestbook.ru http://sosedi2017.ru http://sadicagency.ru