29.09.2015 @ 12:45 Перевод OWASP Testing Guide. Часть 1.10. owasp, web security Представляю вашему вниманию очередную часть перевода OWASP Testing Guide. В данной статье речь пойдет об определении веб-приложения. Предыдущие статьи: Тестирование: введение и задачи Сбор информации с помощью поисковых систем Определение веб-сервера Поиск информации в метафайлах веб-сервера Определение веб-приложений на сервере Поиск утечек информации в комментариях и метаданных Определение точек входа веб-приложения Составление карты веб-приложения Определение фреймворка веб-приложения Определение веб-приложения Резюме Сейчас тяжело придумать что-либо новое и потому практически каждое веб-приложение, которое вы планировали создать? уже ранее было кем-то создано. При разработке веб-приложений широко распространены и применяются различные бесплатные и опенсорсные продукты, поэтому во время теста весьма велика вероятность что целевое веб-приложение частично или полностью зависит от этих продуктов (например, WordPress, phpBB, Mediawiki и т. д.). Зная используемые компоненты мы не только значительно ускорим тестирование безопасности веб-приложения, но и затратим на него намного меньше усилий. Определить веб-приложение мы можем с помощью HTTP заголовков, куки и структуры каталогов. Задачи тестирования Определить веб-приложение и его версию, определить общедоступные уязвимости и эксплоиты. Как тестировать Куки Довольно надежным способом определения веб-приложения является изучение куки. Рассмотрим следующий запрос GET / HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 '''Cookie: wp-settings-time-1=1406093286; wp-settings-time-2=1405988284''' DNT: 1 Connection: keep-alive Host: blog.owasp.org Однако стоит помнить о том, что имена куки могут быть изменены. Исходный код страниц Данный метод основывается на поиске в исходном коде страниц определенных паттернов (маркеров). Зачастую, из исходного кода можно получить много информации, благодаря которой можно определить веб-приложение. Одним из наиболее распространенных маркеров являются комментарии, которые напрямую раскрывают используемое приложение. Более часто можно обнаружить пути, характерные для определенного приложения, например, css файлы и/или js каталоги. Различные специфичные имена переменных в скриптах также позволяют опеределить веб-приложение. В приведенном ниже примере из исходного кода сразу можно узнать веб-приложение и его версию: <meta name="generator" content="WordPress 3.9.2" /> Довольно часто полезная информация размещается в теге meta или же внизу страницы. Тем не менее, рекомендуется полностью изучить исходный код страницы, так как в нем могут содержаться полезные комментарии и скрытые поля для ввода. Специфичные файлы и каталоги Каждое веб-приложение различается структурой каталогов на сервере, изучив данную структуру мы с довольно высокой вероятностью можем определить веб-приложение. Ранее оговаривалось что некоторые файлы и каталоги можно увидеть в исходном коде страниц, однако некоторые страницы являются скрытыми. Для обнаружения подобных ресурсов нам нужно произвести брутфорс директорий и файлов — запрашиваются файлы и каталоги из заранее заготовленного списка, впоследствии изучаются ответы от сервера. Полученная информация может быть использована не только для определения веб-приложения, но и для проведения непосредственно атаки. Рассмотрим пример брутфорса директорий в WordPress приложении с помощью Burp Intruder: В приведенном примере видно, что были обнаружены несколько директорий, характерных для WordPress: /wp-includes/, /wp-admin/ и /wp-content/. Как говорилось ранее мы не ограничены только брутфорсом каталогов, можно также брутить различные файлы: Подсказка: перед брутом директорий и файлов рекомендуется сначала изучить файл robots.txt, в нем иногда находится различная ценная информация, пример подобного файла показан на следующем скриншоте: Файлы и каталоги различны для каждого веб-приложения. Рекомендуется установить соответствующие веб-приложение во время проведения пентеста для того, чтобы лучше понимать его инфраструктуру и определить файлы, которые могли остаться на сервере. Существуют несколько хороших списков файлов и одним из лучших являются списки из FuzzDB, в разделе predictable files/folders (http://code.google.com/p/fuzzdb/). Распространенные идентификаторы веб-приложений Куки phpBB phpbb3_ WordPress wp-settings 1C-Bitrix BITRIX_ AMPcms AMP Django CMS django DotNetNuke DotNetNukeAnonymous e107 e107_tz EPiServer EPiTrace, EPiServer Graffiti CMS graffitibot Hotaru CMS hotaru_mobile ImpressCMS ICMSession Indico MAKACSESSION InstantCMS InstantCMS[logdate] Kentico CMS CMSPreferredCulture MODx SN4[12symb] TYPO3 fe_typo_user Dynamicweb Dynamicweb LEPTON lep[some_numeric_value]+sessionid Wix Domain=.wix.com VIVVO VivvoSessionId Исходный код страниц Веб-приложение Ключевые слова WordPress <meta name=»generator» content=»WordPress 3.9.2″ /> phpBB <body id=»phpbb» Mediawiki <meta name=»generator» content=»MediaWiki 1.21.9″ /> Joomla <meta name=»generator» content=»Joomla! — Open Source Content Management» /> Drupal <meta name=»Generator» content=»Drupal 7 (http://drupal.org)» /> DotNetNuke DNN Platform — http://www.dnnsoftware.com Полезная информация и больше примеров: https://www.owasp.org/index.php/Web-metadata Инструменты Рассмотрены в предыдущей части перевода. Справочные материалы Saumil Shah: «An Introduction to HTTP fingerprinting» — http://www.net-square.com/httprint_paper.html Anant Shrivastava : «Web Application Finger Printing» — http://anantshri.info/articles/web_app_finger_printing.html Противодействие атакующему Рассмотрено в предыдущей части перевода. abychutkin 12169 Web security Читать дальше >>