|
User-Agent
– это больше чем просто название вашего броузера. Сегодня мы поговорим
об этом замечательном поле протокола HTTP. На самом деле это поле несколько
более полезно, чем вам может показаться на первый взгляд. Мы рассмотрим
два интересных момента относительно этого поля.
Момент
первый. Обход авторизации на сайтах.
Все
на большем количестве сайтов требуется регистрация или даже плата, для
получения полного доступа к их контенту. Но заметьте – поисковик Google
знает об их контенте, без регистрации и платы! Да и не только Google.
В чем секрет? Почему обычные пользователи должны регистрироваться, или
платить за то, что поисковый гугл бот получает за так? Причина этого проста:
каждый сайт хочет использовать поисковые системы для увеличения посещаемости,
а для этого боты этих поисковых систем должны иметь доступ к информации,
которая может заинтересовать пользователей.
Многие сайты при их посещении проверяют, какой браузер у клиента. Это
делается довольно просто – при заходе на страницу браузер передает на
сервер свое имя, в виде небольшой текстовой строки (см. примеры в конце
абзаца). Получить эту строку довольно просто, вот пример из скрипта на
perl:
my $browser=$ENV{'HTTP_USER_AGENT'};#
- строка содержит название браузера
Так вот, если клиент идентифицируется сайтом как, к примеру,
поисковый бот google, то его пропускают без регистрации и платы во все
разделы (за исключением описанных в файле robots.txt – но это учитывает
сам бот (или не учитывает :-)))). Ну или почти во все…
А если клиент идентифицируется как Мозила, IE, Opera или еще что-нибудь,
то с него требуют регистрацию, плату, признание их лицензий и т.п
Что делать? И кто виноват? Известный русский вопрос… Кто виноват? Виновата
жажда денег, и это не исправить, но так как жажда халявы также сильна
в людях, то мы будем прикидываться google ботами, и все.
Для того чтобы это сделать можно использовать одну из этих программ:
1. Для IE
- WinGuides
Tweak Manager
2. Для Firefox/Mozilla
User Agent Switcher
Для тестирования
вам очень подойдут сайты http://www.winnetmag.com/
и http://www.nature.com/.
Также для доказательства правдивости моих слов попробуйте сделать следующее:
1) Отправляйтесь по линку: http://www.windowsitpro.com/
И вы не увидите полных статей, но…
2) Смените user-agent’а на Googlebot/2.1 и вернитесь на сайт…
3) Вы получите полный доступ к статьям
Резюме:
Естественно не все сайты подвержены данной уязвимости. Но если вы выбрали
на своем сайте данную методу, то как, спросите вы защититься? Самый простой
и лежащий на поверхности способ, это отследить IP-адреса с которых заходит
google-bot, и в дальнейшем отслеживать принадлежность клиента к данному
IP-адресу, либо к подсети адресов. Это значительно умерит пыл любителям
халявы.
Ну и на последок –
список user-agent строк браузеров и ботов:
Browsers:
|
Internet
Explorer 5.5 on Windows 2000: Mozilla/4.0 (compatible; MSIE 5.5; Windows
NT 5.0) |
Internet
Explorer 6.0 in MSN on Windows 98: Mozilla/4.0 (compatible; MSIE 6.0;
MSN 2.5; Windows 98) |
Internet
Explorer 6.0 on Windows XP: Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1) |
Internet
Explorer 7.0 beta running on Windows Longhorn: Mozilla/4.0 (compatible;
MSIE 7.0b; Windows NT 6.0) |
Internet
Explorer 5.2 on Mac OS X: Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC) |
Konqueror
3.1 (French): Mozilla/5.0 (compatible; Konqueror/3.1; Linux 2.4.22-10mdk;
X11; i686; fr, fr_FR) |
Mozilla
1.7.8 on Linux: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8)
Gecko/20050511 |
Mozilla
Firefox 1.0.4 on Windows XP: Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 |
Mozilla
Firefox 1.0.4 on Ubuntu Linux, on AMD64: Mozilla/5.0 (X11; U; Linux
x86_64; en-US; rv:1.7.6) Gecko/20050512 Firefox |
Mozilla
Firefox 1.0.4 on FreeBSD 5.4 on i386: Mozilla/5.0 (X11; U; FreeBSD
i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4 |
Netscape
4.8 on Windows 2000: Mozilla/4.8 [en] (Windows NT 5.0; U) |
Netscape
7 on Sun Solaris 8: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1)
Gecko/20020920 Netscape/7.0 |
Netscape
8.0.1 on Windows XP using Gecko: Mozilla/5.0 (Windows; U; Windows
NT 5.1; en-US; rv:1.7.5) Gecko/20050519 |
Netscape
8.0.1 on Windows XP using MSHTML (with .NET installed) : Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1 |
Opera
6.03 on Windows 2000, cloaked as MSIE: Mozilla/4.0 (compatible; MSIE
5.0; Windows 2000) Opera 6.03 [en] |
Opera
7.23 on Windows 98: Opera/7.23 (Windows 98; U) [en] |
Opera
8.00 on Windows XP: Opera/8.00 (Windows NT 5.1; U; en) |
Opera
8.00 on Gentoo Linux: Opera/8.0 (X11; Linux i686; U; cs) |
Safari
v125 on Mac OS X: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124
(KHTML, like Gecko) Safari/125 |
Safari
v125 on Mac OS X, cloaked as MSIE: Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.2) |
ELinks
0.4pre5 on Linux: ELinks (0.4pre5; Linux 2.4.27 i686; 80x25) |
Links
0.99pre14 under Cygwin on Windows 2000: Links (0.99pre14; CYGWIN_NT-5.0
1.5.16(0.128/4/2) i686; 80x25) |
Links
2.1pre17 under Gentoo Linux: Links (2.1pre17; Linux 2.6.11-gentoo-r8
i686; 80x24) |
Lynx
2.8.4rel.1 on Linux: Lynx/2.8.4rel.1 libwww-FM/2.14 |
Off
By One 3.5a on Windows XP: Mozilla/4.7 (compatible; OffByOne; Windows
2000) |
w3m
on FreeBSD: w3m/0.5.1 |
Bots: |
Crawler
for Ask Jeeves/Teoma: Mozilla/2.0 (compatible; Ask Jeeves/Teoma) |
cURL:
curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7b
zlib/1.2.2 |
Googlebot:
Googlebot/2.1 (+http://www.google.com/bot.html) |
Момент
второй. XSS и SQL инъекции.
Да, через
строку User-Agent можно попробовать исполнить XSS, или даже SQL-инъекцию.
И это не теория. Хотя для начала и она не помешает.
Многие системы сбора статистики о посетителях, собирают информацию и о
том какой клиент (браузер) использует посетитель. В некоторых из этих
систем (зачастую они встроены во всевозможные движки) можно обнаружить
уязвимости, типа XSS, Code или SQL-инъекцию, или раскрытие путей. Для
подобного обнаружения вы можете использовать скрипты на Perl, Php, или
специальные программы описанные мной выше (в том числе программу Achilles).
Вот здесь,
к примеру, описывается уязвимость такого типа в движке YaBB.
К вашему вниманию (для advanced) прилагаю к статье скрипт
на perl предоставленный мне said'ом. Скрипт является простейшим прокси-срвером,
который контролирует поле User-Agent, и немного модифицировав его вы сможете
подставлять в поле User-Agent нужные вам данные. На этом я раскланиваюсь.
Думаю, тему для размышления я вам дал, что, в общем-то, и требовалось.
|
|