SPIKE и BURP для использования в реальном мире компьютерной безопасности (часть 3)

Published on Февраль 5, 2009 by   ·   Комментариев нет

Эта статья – последняя из серии, посвященной SPIKE на HTTP прокси (proxy). 

Если вы хотите прочитать другие части из этой серии статей, то, пожалуйста, перейдите по ссылкам:

В рамках этой статьи мы будем использовать все, о чем я писал ранее, и применять это в реальных сценариях на практике. Специальное использование различных комбинаций в поле Web браузера Firefox, как я думаю, может привести к некоторым интересным результатам. Читайте и повторяйте за мной!

SPIKE и реальный мир

Совсем недавно я достаточно много написал о том, что такое HTTP прокси (proxy), об их использовании, и особенно о SPIKE HTTP прокси (proxy). В дополнение к SPIKE, в недалеком будущем я также напишу о BURP suite, что закончит серию статей, посвященной HTTP прокси. Это всегда является неплохой практикой,  попробовать взломать ваше web приложение при работе с двумя различными, при этом полученный результат может достаточно сильно варьироваться. Именно поэтому, я посвящу статью настройке и использованию комплекта BURP. Вы понимаете, что использование HTTP прокси необходимо для тестирования web приложений, и попыток обмануть систему безопасности. Будь то SQL (SQL injection) вследствие плохой фильтрации на сервере, или обход самого протокола HTTP, HTTP прокси способен выполнить все это.

Я считаю, что очень полезно брать уроки и по возможности сразу же применять полученные знания в реальных сценариях. После изучения новой теории, ее всегда следует опробовать по возможности на реальной среде . С этой точки зрения мы закончим наше изучение SPIKE с помощью реального тестирования приложения. В прошлом году я выполнял одну лабораторную работу, когда я заметил что-то странное в запросе от web клиента Firefox. Пожалуйста, взгляните на пакет, который представлен ниже, особенно обратите внимание на жирную и подчеркнутую часть.

10:35:36.275250 IP (tos 0x0, ttl 128, id 52101, offset 0, flags [DF], proto: TCP (6), length: 493) 192.168.1.100.2502 > 192.168.1.107.80: P, cksum 0x6d9b (correct), 468268059:468268512(453) ack 3224989207 win 65535
0x0000:  4500 01ed cb85 4000 8006 a965 c0a8 0164  E…..@….e…d
0x0010:  c0a8 016b 09c6 0050 1be9 341b c039 6e17  …k…P..4..9n.
0x0020:  5018 ffff 6d9b 0000 4745 5420 2f20 4854  P…m…GET./.HT
0x0030:  5450 2f31 2e31 0d0a 486f 7374 3a20 3139  TP/1.1..Host:.19
0x0040:  322e 3136 382e 312e 3130 370d 0a55 7365  2.168.1.107..Use
0x0050:  722d 4167 656e 743a 204d 6f7a 696c 6c61  r-Agent:.Mozilla
0x0060:  2f34 2e30 2028 636f 6d70 6174 6962 6c65  /4.0.(compatible
0x0070:  3b20 4d53 4945 2035 2e30 3b20 5769 6e64  ;.MSIE.5.0;.Wind
0x0080:  6f77 7320 4e54 3b20 426f 6229 0d0a 4163  ows.NT;.Bob)..Ac
0x0090:  6365 7074 3a20 7465 7874 2f78 6d6c 2c61  cept:.text/xml,a
0x00a0:  7070 6c69 6361 7469 6f6e 2f78 6d6c 2c61  pplication/xml,a
0x00b0:  7070 6c69 6361 7469 6f6e 2f78 6874 6d6c  pplication/xhtml
0x00c0:  2b78 6d6c 2c74 6578 742f 6874 6d6c 3b71  +xml,text/html;q
0x00d0:  3d30 2e39 2c74 6578 742f 706c 6169 6e3b  =0.9,text/plain;
0x00e0:  713d 302e 382c 696d 6167 652f 706e 672c  q=0.8,image/png,
0x00f0:  2a2f 2a3b 713d 302e 350d 0a41 6363 6570  */*;q=0.5..Accep
0x0100:  742d 4c61 6e67 7561 6765 3a20 656e 2d75  t-Language:.en-u
0x0110:  732c 656e 3b71 3d30 2e35 0d0a 4163 6365  s,en;q=0.5..Acce

Мне повезло, что я проводил сетевой анализ пакетов соединения во время тестирования и заметил выделенный выше раздел. Это было достаточно странно, я никогда не видел это значения “q=…….” прежде. Через некоторое время я смог отследить, что означают эти вещи. Оказалось, что это было просто способ Firefox для индикации предпочтительных для клиента специфических mime типов. Символ “q” оказался просто весовым символом между 0 и 1, который используется для того, чтобы показать предпочтительность специального mime типа. Например, “q=0.9” означает, что определенный mime тип наиболее предпочтителен. И обратно, значение “q=0.1” будет означать наименее предпочтительный mime тип.

Теперь попробуем все это вместе

Я полагал, что такой способ представления предпочтения mime типов в действительности достаточно четкий. Я связался со своим коллегой, который также занимался тестированием web приложений, чтобы поделится с ним своим открытием. После нашей беседы было решено провести некоторое тестирование. Нас обоих заинтересовало то, что параметр “q” варьировался от 0.1 до 0.9. Что случится, если, например, кто-нибудь введет достаточно большое целое значение, или большое отрицательное значение в это поле HTTP web клиента? Действительно, хороший вопрос, мы подумали! Поэтому мы решили проверить это на двух различных web серверах и сравнить их ответы.

Первым для тестирования мы выбрали IIS 5 web сервер. Об установке IIS web сервера я уже рассказывал ранее, поэтому не буду к этому снова возвращаться. Сразу после установки приступим к этому HTTP прокси безумию. Такие эксперимент не помешают и вам. Они позволяют вам проверить различны приемы для взлома, а также улучшить ваши знания сетевых протоколов. Ниже на рисунке вы можете увидеть параметр “q”, который Firefox послал IIS 5 web серверу.

Spikes in usage использовании


Рисунок
1

Что случится, если я заново пошлю этот запрос с достаточно большим значение параметра “q” на IIS 5 web сервер? Для того, чтобы ввести большое целое значение вы можете просто выбрать соответствующее поле, как показано на рисунке выше, и ввести в него достаточно большое число. Давайте посмотрим на ответ IIS 5 web сервера, после того, как он получил это совсем неожиданное значение поля. Пакет вы можете увидеть ниже.

10:35:36.290875 IP (tos 0x0, ttl 128, id 140, offset 0, flags [DF], proto: TCP (6), length: 1464) 192.168.1.107.80 > 192.168.1.100.2502: P, cksum 0x6835 (correct), 3224989207:3224990631(1424) ack 468268512 win 63787
0x0000:  4500 05b8 008c 4000 8006 7094 c0a8 016b  E…..@…p….k
0x0010:  c0a8 0164 0050 09c6 c039 6e17 1be9 35e0  …d.P…9n…5.
0x0020:  5018 f92b 6835 0000 4854 5450 2f31 2e31  P..+h5..HTTP/1.1
0x0030:  2032 3030 204f 4b0d 0a53 6572 7665 723a  .200.OK..Server:
0x0040:  204d 6963 726f 736f 6674 2d49 4953 2f35  .Microsoft-IIS/5
0x0050:  2e30 0d0a 4461 7465 3a20 5375 6e2c 2032  .0..Date:.Sun,.2
0x0060:  3620 4d61 7220 3230 3036 2031 353a 3335  6.Mar.2006.15:35
0x0070:  3a33 3520 474d 540d 0a43 6f6e 7465 6e74  :35.GMT..Content
0x0080:  2d4c 656e 6774 683a 2031 3237 300d 0a43  -Length:.1270..C
0x0090:  6f6e 7465 6e74 2d54 7970 653a 2074 6578  ontent-Type:.tex
0x00a0:  742f 6874 6d6c 0d0a 4361 6368 652d 636f  t/html..Cache-co

Обратно web сервер отправил статус кода “200” в пакете. Благодаря такому коду ответа (status code) мы знаем, что на web сервере не возникло проблем с разбором большого целого значения от web клиента Firefox. Итак, мы можем заключить, что IIS 5 правильно разобрал как нормальный, так и неправильный ответ от Firefox web клиента. Я надеялся получить нечто более интересное от web сервера. Возможно даже получение сообщения о DoS атаке (denial of service – отказ в обслуживании).

Теперь давайте попробуем Apache

Итак, я был немного расстроен неожиданным ответом от IIS 5. Я еще немного поэкспериментировал с различными положительными и отрицательными числами, и получал тот же самый результат. У IIS 5 не возникало проблем с их обработкой. Поэтому я решил попробовать проделать то же самое с Apache, чтобы узнать, как он обработает такой неожиданный запрос от Firefox. На рисунке ниже вы можете увидеть, как я ввел большое целое число.


Рисунок
2

Что случится, если мы заново передадим такой запрос с модифицированным значением поля “q”? Давайте взглянем на пакеты, которые пришли в ответ от Apache web сервера на наш запрос.

11:25:44.212750 IP (tos 0x0, ttl 128, id 59389, offset 0, flags [DF], proto: TCP (6), length: 388) 192.168.1.100.2859 > 192.168.1.104.80: P, cksum 0x12e1 (correct), 228302848:228303196(348) ack 892392516 win 65535
0x0000:  4500 0184 e7fd 4000 8006 8d59 c0a8 0164  E…..@….Y…d
0x0010:  c0a8 0168 0b2b 0050 0d9b a000 3530 d444  …h.+.P….50.D
0x0020:  5018 ffff 12e1 0000 4745 5420 2f69 6d67  P…….GET./img
0x0030:  2f62 7269 646f 6e5f 6963 6f6e 2e70 6e67  /bridon_icon.png
0x0040:  2048 5454 502f 312e 310d 0a48 6f73 743a  .HTTP/1.1..Host:
0x0050:  2031 3932 2e31 3638 2e31 2e31 3034 0d0a  .192.168.1.104..
0x0060:  5573 6572 2d41 6765 6e74 3a20 4d6f 7a69  User-Agent:.Mozi
0x0070:  6c6c 612f 342e 3020 2863 6f6d 7061 7469  lla/4.0.(compati
0x0080:  626c 653b 204d 5349 4520 352e 303b 2057  ble;.MSIE.5.0;.W
0x0090:  696e 646f 7773 204e 543b 2042 6f62 290d  indows.NT;.Bob).
0x00a0:  0a41 6363 6570 743a 2069 6d61 6765 2f70  .Accept:.image/p
0x00b0:  6e67 2c2a 2f2a 3b71 3d30 2e35 0d0a 4163  ng,*/*;q=0.5..Ac
0x00c0:  6365 7074 2d4c 616e 6775 6167 653a 2065  cept-Language:.e
0x00d0:  6e2d 7573 2c65 6e3b 713d 302e 350d 0a41  n-us,en;q=0.5..A
0x00e0:  6363 6570 742d 456e 636f 6469 6e67 3a20  ccept-Encoding:.
0x00f0:  677a 6970 2c20 6465 666c 6174 650d 0a41  gzip,.deflate..A
0x0100:  6363 6570 742d 4368 6172 7365 743a 2049  ccept-Charset:.I
0x0110:  534f 2d38 3835 392d 312c 7574 662d 383b  SO-8859-1,utf-8;
0x0120:  713d 3131 3131 3131 3131 3131 3131 2e30  q=111111111111.0
0x0130:  2c2a 3b71 3d30 2e37 0d0a 4b65 6570 2d41  ,*;q=0.7..Keep-A
0x0140:  6c69 7665 3a20 3330 300d 0a43 6f6e 6e65  live:.300..Conne
0x0150:  6374 696f 6e3a 206b 6565 702d 616c 6976  ction:.keep-aliv
0x0160:  650d 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d  e..————-
0x0170:  2d2d 3a20 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d  —:.————
0x0180:  0d0a 0d0a             ….

Мы видим в пакет, который представлен выше, что жирным и подчеркнутым шрифтом выделена часть, которую мы послали. Давайте теперь посмотрим на ответ Apache web сервера на такой запрос.

11:25:44.212750 IP (tos 0x0, ttl 128, id 248, offset 0, flags [DF], proto: TCP (6), length: 910) 192.168.1.104.80 > 192.168.1.100.2859: P, cksum 0xb753 (correct), 892392516:892393386(870) ack 228303196 win 63892
0x0000:  4500 038e 00f8 4000 8006 7255 c0a8 0168  E…..@…rU…h
0x0010:  c0a8 0164 0050 0b2b 3530 d444 0d9b a15c  …d.P.+50.D…\
0x0020:  5018 f994 b753 0000 4854 5450 2f31 2e31  P….S..HTTP/1.1
0x0030:  2032 3030 204f 4b0d 0a44 6174 653a 2053  .200.OK..Date:.S
0x0040:  756e 2c20 3236 204d 6172 2032 3030 3620  un,.26.Mar.2006.
0x0050:  3136 3a32 343a 3336 2047 4d54 0d0a 5365  16:24:36.GMT..Se
0x0060:  7276 6572 3a20 4170 6163 6865 2f32 2e30  rver:.Apache/2.0
0x0070:  2e35 3420 2857 696e 3332 290d 0a4c 6173  .54.(Win32)..Las
0x0080:  742d 4d6f 6469 6669 6564 3a20 5361 742c  t-Modified:.Sat,
0x0090:  2032 3020 4175 6720 3230 3035 2032 303a  .20.Aug.2005.20:
0x00a0:  3235 3a35 3020 474d 540d 0a45 5461 673a  25:50.GMT..ETag:
0x00b0:  2022 3232 3239 2d32 3439 2d34 3039 3636  .»2229-249-40966
0x00c0:  3163 6422 0d0a 4163 6365 7074 2d52 616e  1cd»..Accept-Ran
0x00d0:  6765 733a 2062 7974 6573 0d0a 436f 6e74  ges:.bytes..Cont
0x00e0:  656e 742d 4c65 6e67 7468 3a20 3538 350d  ent-Length:.585.
0x00f0:  0a4b 6565 702d 416c 6976 653a 2074 696d  .Keep-Alive:.tim
0x0100:  656f 7574 3d31 352c 206d 6178 3d31 3030  eout=15,.max=100
0x0110:  0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65  ..Connection:.Ke
0x0120:  6570 2d41 6c69 7665 0d0a 436f 6e74 656e  ep-Alive..Conten
0x0130:  742d 5479 7065 3a20 696d 6167 652f 706e  t-Type:.image/pn
0x0140:  670d 0a0d 0a89 504e 470d 0a1a 0a00 0000  g…..PNG…….
0x0150:  0d49 4844 5200 0000 1000 0000 1008

Опять web сервер не смутило такое неожиданное значение поля. Это показано подчеркнутым и жирным шрифтом на пакете. Отправив код ответа HTTP 200 status code, web сервер сообщает нам, что при обработке запроса от клиента не возникло проблем.

Резюме

В этой статье мы увидели, как мы можем использовать SPIKE HTTP прокси в реальном мире. Вы увидел реальный пример использования HTTP прокси. Он может оказать вам неоценимую помощь при тестировании web приложений, и при этом всем имеет интуитивно понятные настройки: SPIKE GUI (graphical user interface – графический интерфейс пользователя). Теперь, когда вы увидели, как легко можно использовать его для тестирования web серверов, вы можете двигаться вперед и бороться с такими вещами как SQL проникновение (SQL injection). HTTP прокси очень мощное средство, особенно в руках того, кто знает его протоколы. Я искренне надеюсь, что вам понравилась эта статья, и как всегда я жду ваших отзывов. До новых встреч!

Источник www.windowsecurity.com
















































































Смотрите также:

Tags: , , ,

Readers Comments (Комментариев нет)




Да человек я, человек! =)




Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]