11.07.2015 Views

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ХАКЕР 04 /171/ 2013 Easy Hack63body += fileData + "\r\n";body += "--" + boundary + "--";xhr.send(body);Рис. 2. Используя JavaScript, мы сделали аналогичный запрос-загрузкунам делать очень страшные вещи. Но для того, чтобыпонять, что нам нужно для загрузки файла, необходиморазобраться, чем отличается обычныйPOST-запрос от POST-запроса на загрузку файла.Итак, смотрим рис. 1.Это POST-запрос, в котором я выбрал файлzzzz.jpg для отправки на какой-то сайт.Можно заметить несколько важных моментов.Во-первых, это Content-Type — "multipart/form-data", с указанием границ расположениявложения — «boundary= ---------------------------228852196221080». Во-вторых, само тело запроса,которое выделено границами. В нем в заголовкеContent-Disposition: указывается имя поля изформочки — uploaded_file, а также имя файла вfilename. Далее идет сам файл.Раньше с POST-запросами для нас была проблемав том, что мы не могли влиять на заголовки иимели проблемы с бинарщиной.Теперь же у нас есть JavaScript и мы можемполностью сконструировать аналогичный запрос,используя XMLHTTPRequest:var fileData= 'zzzzzzzzzzzzzzzzzz',fileSize = fileData.length,boundary = "---------------------------228852196221080",xhr = new XMLHttpRequest();xhr.open("POST", "http://victim.com/upload.php", true);xhr.setRequestHeader("Content-Type","multipart/form-data, boundary="+boundary);xhr.setRequestHeader("Content-Length",fileSize);xhr.withCredentials = "true";var body = "--" + boundary + "\r\n";body += 'Content-Disposition:form-data; name=" uploaded_file";filename="zzzzz.jpg"\r\n';body += "Content-Type: application/octet-stream\r\n\r\n";Разберем по пунктикам, чтобы не возникаловопросов. С первой по третью строки — определениепараметров загружаемого файла. В fileDataмогут быть любые данные (включая бинарные),далее нужна их длина, а также границы (хотя онимогут быть произвольными). Следующие две строки— стандартное конструирование запроса. Нотеперь запросы на сторонние хосты разрешены.И еще очень важные строки с шестой повосьмую. Мы можем добавить произвольныезаголовки, а точнее, интересующие насContent-Type и Content-Length. Но еще интереснее— withCredentials, которое укажет браузеру добавитькуки или Basic-аутентификацию в итоговыйзапрос. Без этого запрос отправлялся бы без кук, аэто чаще всего лишало бы атаку смысла.Далее же идет простая конкатенация данных,в аналогичной обычному запросу последовательности.И наконец, отправка данных жертве. Всепросто. Итог смотри на рис. 2. Теперь о плюсах,минусах и тонкостях.Как я уже сказал, разработчики всегда верили внеприкасаемость загрузки файлов, а потому защитуот CSRF на нее не ставили. Скорее даже наоборот,считали, что необходимость загрузки файламожет защитить всю формочку. А потому на этом«погорели» и всякие сайты типа Facebook и Flickr, иразличные Java-серверы типа Tomcat’а. На самомделе есть еще где и что покопать.Минус у техники теперь один — если есть защитаот CSRF, то ее надо как-то обходить.Ну и не могу не поблагодарить «автора» сейтехники — знаменитого Кшиштофа Котовича(Krzysztof Kotowicz). Спасибо! Примеры атаки можнопотрогать на его же сайте — goo.gl/Uql0m.ОТСЛЕДИТЬ ИЗМЕНЕНИЯ В ОСРЕШЕНИЕВ прошлом номере я писал про применение тулзенокиз набора Sysinternals для выявления всевозможныхконфигурационных уязвимостей вОС, которые возникают после кривости админовили из-за уязвимостей устанавливаемого ПО.Но приведенные примеры касались всей ОС вобщем — то есть мы ее всю целиком смотрим истараемся выискать, что же страшного и как мыможем наделать. Но если с правами на папки, нафайлы еще можно как-то быстро разобраться,понять и выделить векторы атаки, то с каким-нибудьреестром это уже не прокатит. Очень уж таммного всякого мусора. Особенно это относится кпоиску уязвимых конфигов. Веток, доступных длячтения, — масса, а просмотреть все и выделитькритичные нереально. Точнее, реально, но этомартышкин труд. Так что же делать? Ну, во-первых,конкретизировать свои желания и не копать всеОС в целом, а сосредоточиться на определенномстороннем ПО. Здесь нам в помощь те же тулзыиз Sysinternals. А во-вторых, дабы еще уменьшитьскоуп работы, можно исходить не из поиска данных,а из тех изменений, которая сделала программапри своей установке в ОС.Добиться этого можно так: делаем снимокОС перед установкой ПО, а потом — снимок послеустановки. После чего все, что нам необходимо,— сравнить эти снимки. Все, в общем-то,просто.Тулз, которые позволяют сделать это, достаточно.Этот функционал есть во многих «продвинутых»анинсталлерах. Но не ведись на рекламу! Для насих функционал мал, так как они в массе своей отслеживаюттолько изменения в файловой системеи реестре, причем только появление чего-то нового,а не изменения существующего.Так что для наших целей нам нужна специальнообученная собака. И имя ей — Attack SurfaceAnalyzer (goo.gl/OibSW). Странно, но продуктсей — дите Microsoft’а. Вероятно, его добройи честной части :). А потому хорош и глубок. Вотсписок мониторинга:filesregistry keysmemory informationwindowsWindows firewallGAC Assembliesnetwork sharesLogon sessionsportsnamed pipesautorun tasksRPC endpointsprocessesthreadsdesktopshandlesС точки зрения практической использованиепросто. Для начала ставим всякие сторонние штуки,которые могут потребоваться для ПО (типабазы данных), чтобы изменения, внесенные оттретьих программ, не мешались. Делаем baselineскриншотсистемы. После чего устанавливаемПО и делаем product-скриншот. Далее запускаемсравнение — и все :).Ну и конечно, анализ лучше всего производитьна виртуальном чистом сервачке или хотя бы приотключенных сторонних программах.В конце еще хотелось бы добавить одну мысль.Как это ни странно, но опыт показывает, что конфигурационныеуязвимости встречаются систематическии искать их достаточно просто. Так чтодля личного фана и лучшего понимания моделибезопасности винды советую тебе поискать такиебаги. Успех почти гарантирован!Ну вот и все. Надеюсь, что было интересно :).Если есть пожелания по разделу Easy Hack илиесть охота поресерчить — пиши на ящик. Всегдарад :).И успешных познаний нового!

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!