Web3 Security

  • Опубликован OWASP Top 10 2010 (RC1)

    Posted in

    OWASP, открытый проект безопасности приложений, накануне представил для обсуждения новую версию списка десяти самых опасных угроз. В сравнении с OWASP Top 10 2007 изменениям подверглись четыре позиции. Меня удивило, что инклуд-баг Malicious File Execution был исключен из списка якобы в силу того, что PHP стал более безопасным по умолчанию. Видимо Jeremiah Grossman и компания не учли, что LFI (local file include) по степени риска теперь можно практически приравнять к RFI (remote file include). Возможно к 2010 бажных версий PHP будет намного меньше, но, несмотря на это, косячить в коде будут всегда. А может обнаружатся еще какие-нибудь новые уязвимости 🙂

    Итак, сама десятка самых опасных угроз:

    1. A1 Injection (всякого рода инъекции, в т.ч. SQL, LDAP и т.д.)
    2. A2 Cross Site Scripting (не потерявший актуальности XSS)
    3. A3 Broken Authentication and Session Management (ошибки в архитектуре аутентификации и управления сессиями)
    4. A4 Insecure Direct Object References (незащищенные ресурсы и объекты, можно вспомнить случай с SVN)
    5. A5 Cross Site Request Forgery (CSRF)
    6. A6 Security Misconfiguration (небезопасная конфигурация окружения, различных фреймворков, платформы)
    7. A7 Failure to Restrict URL Access (несанкционированный доступ к функционалу, требующему особых привилегий – например обход проверки c помощью двойного слэша “//” в URL для получения доступа к управлению блогом в WordPress)
    8. A8 Unvalidated Redirects and Forwards (открытые редиректы, которые ведут к фишингу, HTTP Response Splitting и XSS)
    9. A9 Insecure Cryptographic Storage (небезопасное хранение важных данных)
    10. A10 Insufficient Transport Layer Protection (недостаточная защита данных при их передаче на транспортном уровне, например по HTTP вместо HTTPS).

    Надеюсь, это неокончательная версия Top 10, ждем следующий релиз-кандидат.

  • PHP и зашифрованный код

    Posted in

    Обфускация и шифрование кода в веб-приложениях обычно применяется с целью затруднения поиска уязвимостей, скрытия участков кода, осуществляющих проверку лицензионного ключа, невозможности редактирования, а также для защиты важных данных, например для подключения к базе данных. Методы шифрования могут быть самыми разными. В первую очередь проигрывают реализации обфускации на самом PHP – расшифровать такой код задача довольно тривиальная, так как в большинстве случаев ограничивается перехватом пары eval()’ов. Существуют даже универсальные инструменты для расшифровки, например вот этот скрипт на PHP. Что касается более продвинутых средств, таких как Zend Guard и ionCube, то дела здесь обстоят ничуть не лучше. Программа для расшифровки скриптов, закодированных Zend’ом, уже давно появилась в публичном доступе, а расшифровка ionCube также возможна, но пока только платно.

    В некоторых случаях получение исходного кода вовсе не обязательно. Рассмотрим пример, когда необходимо получить доступ к базе данных.

    (more…)

  • SVN позволяет получить доступ к исходному коду

    Posted in

    SVNСегодня на habrahabr.ru был опубликован весьма интересный пост, рассказывающий о том, как были получены исходные коды нескольких тысяч русских веб-проектов, включая yandex.ru, rambler.ru, mail.ru, rbk.ru, а также самого habrahabr.ru. Последствия находки, на первый взгляд, действительно потрясающие. Все строится на вполне очевидном факте – повсеместном использовании систем для контроля версий aka SVN. Дело в том, что на сайтах, где используется SVN остаются метафайлы, в которых хранится вся структура проекта. В дополнение к этому, все файлы получают расширение .svn-base, что делает доступным их исходный код при прямом обращении. Разумеется, все самые популярные интернет-проекты на момент выхода поста уже исправили уязвимость, однако зарубежные сайты остаются подверженными раскрытию исходного кода. Стоит сказать, что, несмотря на огромную популярность SVN, по тем или иным причинам уязвимы далеко не все сайты. Согласно статистике, которую любезно предоставили авторы, только 0,14% просканированных сайтов были уязвимы. Тем не менее, недооценивать значение бага нельзя, посмотрим, к чему это приведет в масштабах всего интернета.
    http://habrahabr.ru/blogs/infosecurity/70330/

  • Сканнер уязвимостей CMS Drupal

    Posted in

    drupalscan

    Не секрет, что идеальных сканнеров уязвимостей не существует, особенно если такой сканнер стремится быть универсальным. Как правило, чем выше поле действия сканнера, тем ниже скорость работы, а также процент его эффективности. Эту идею подтверждает проект OWASP Joomla Vulnerability Scanner, который нацелен на самую популярную CMS. Испытав сканнер, я остался очень доволен результатами и решил написать нечто подобное для другого не менее известного продукта – CMS Drupal.

    Drupal заслуженно является одной из самых безопасных CMS. Поддержка безопасности CMS в отличие от, к примеру, WordPress находится на более высоком уровне благодаря активному тестированию CMS специальной группой Drupal Security Team и своевременному выпуску патчей и апдейтов, что подтверждается доверием пользователей. Тем не менее, как и у любого популярного веб-приложения, у Drupal есть свои уязвимости, что и послужило основнанием для создания простого сканнера.

    (more…)

  • Презентация способов обхода XSS фильтров на BlackHat

    Posted in

    BlackHatЕжегодно проводимая конференция BlackHat является одним из самых значимых событий в сфере информационной безопасности. В этом году эксперты из множества стран собрались в Лас Вегасе, чтобы показать и обсудить результаты своих исследований. Разумеется, не обошли стороной веб-безопасность – наиболее интересное выступление дали Эдуардо Вела (Eduardo Vela) и Дэвид Линдсэй (David Lindsay) на тему реализации XSS-атак в условиях WAF. Были затронуты практически все самые известные программные продукты, связанные с защитой от XSS как на стороне сервера, так и клиента: PHP-IDS, Mod_Security, XSSFilter в IE8, NoScript. Наиболее слабым оказался Mod_Security, поэтому авторы доклада рекомендуют использовать PHP-IDS вместо него. XSSFilter, изначально неспособный защитить от всех типов XSS (по словам разработчиков из MS в силу производительности браузера), также был повержен несколькими новыми XSS-векторами. На уровне клиента докладчики посоветовали использовать Firefox+NoScript, хотя и для последнего были найдены способы обхода. Ознакомиться с материалами выступления можно на сайте одного из авторов. Презентация получилась немалой – более 100 страниц. Много внимания уделено новым XSS-векторам, некоторые из которых просто поражают воображение. Только взгляните:

    (É=[Å=[],µ=!Å+Å][µ[È=-~-~++Å]+({}+Å) [Ç=!!Å+µ,ª=Ç[Å]+Ç[+!Å],Å]+ª])() [µ[Å]+µ[Å+Å]+Ç[È]+ª](Å)
    
    ($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''
    +$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)

    За этим, казалось бы, беспорядочным набором символов кроется всем известный javascript:alert(1);. Кроме того, показаны примеры XSS, которые могут возникнуть в будущем с внедрением HTML5, а также уязвимость в PHP-функции utf8_decode(), позволяющая эксплуатировать неправильную обработку UTF-8. В целом, доклад, если не инновационный с точки зрения способов обхода, то уж точно приносящий много пищи для размышления, как разработчикам, так и взломщикам.

  • HTTP Parameter Pollution

    Posted in

    HTTP Parameter Pollution – это новый вид атак на веб-приложения, основным преимуществом которого является возможность обхода WAF (Web Application Firewall). Концепт HPP был разработан итальянскими исследователями Luca Carettoni и Stefano di Paola и представлен на недавно прошедшей конференции OWASP AppSec EU09 Poland.

    Несмотря на простоту, HPP является довольно эффективным способом. Его суть заключается в смешивании или дословно “загрязнении” границ HTTP-параметров.

    (more…)

  • Чтение истории посещений с помощью CSS

    Posted in

    На написание этой небольшой заметки меня подтолкнул пост в блоге автора плагина NoScript о ресурсе с провокационным названием Start Panic!, который призывает пользователей написать петицию к разработчикам браузеров для устранения бага, связанного с выявлением посещенных пользователями страниц с помощью JS+CSS эксплоита, который может быть размещен на любом сайте. Как раз на startpanic.com и проводится демонстрация уязвимости; к слову, довольно показательная – все выведенные адреса действительно мной посещались. На самом деле ничего нового в этом баге нет – используется давно известный прием CSS History Reading. Собственно о нем и расскажу на примере его реализации на startpanic.com.

    (more…)

  • Новая техника быстрого извлечения данных при SQL-инъекциях в MSSQL

    Posted in

    Прежде всего хочу поделиться ценной ссылкой – http://www.indianz.ch/. Данный ресурс имеет огромный и постоянно обновляемый каталог утилит и программ, имеющих отношение к информационной безопасности и взлому – от полезных скриптов в несколько десятков строк до таких монстров как metasploit. Именно здесь я нашел PoC, реализующий способ, который позволяет извлекать таблицы целиком за один запрос при SQL-инъекциях в MSSQL.

    Новая техника называется SFX-SQLi – Select For Xml SQL Injection. В ее основе лежит применение оператора FOR XML для SELECT, который впервые появился в MSSQL 2000 и служит для преобразования результата выборки в формат данных XML, при чем на выходе всегда будет одна строка. Пример:

    	SELECT *
    	FROM [test].[dbo].[articles]
    	FOR XML RAW
    

    sfxsqli1

    Несмотря на то, что оператор FOR XML известен еще со времен SQL Server 2000, техника SFX-SQLi получила освещение лишь в феврале этого года в работе Daniel Kachakil. Тем не менее, некоторые специалисты указывают на упоминание применения FOR XML в SQL-инъекциях еще в 2007 году.

    (more…)

  • XSS Rays – браузер как сканер XSS

    Posted in

    Небезызвестный Gareth Heyes сегодня опубликовал свою новую утилиту для сканирования сайтов на наличие XSS. Особенность его разработки заключается в том, что процесс сканирования производится браузером атакующего при помощи javascript. Алгоритм довольно прост: javascript-код рекурсивно собирает все ссылки и формы со страниц сайта и проводит различные тесты, используя встроенную базу векторов. XSS Rays способен совершать кроссдоменные вызовы благодаря использованию тэгов iframe вместо AJAX. Для логирования результатов сканеру требуется локальный веб-сервер с PHP. Реализация сканера в контексте браузера, по словам разработчика, способствует повышению точности и качества конечного результата, хотя ложные срабатывания не исключены. Для использования XSS Rays необходимо лишь открыть страницу http://localhost/XSS_Rays/helpers/bookmarklet.html и сохранить ссылку в закладки. Сканирование сайта производится по клику на букмарклет и нажатию на CTRL+SHIFT+X.
    XSS Rays

  • MySQL бэкдор для Windows

    Posted in

    В одном из своих постов однажды я уже упоминал возможность создания SQL-бэкдоров, в частности для MySQL. В отличие от MSSQL и Oracle, где имеются широкие возможности по созданию сложных хранимых процедур и функций, для MySQL проблема безопасности внутренней инфраструктуры баз данных является не столь освещенной и разработанной. Прежде всего это связано с отсутствием средств для создания различного рода malware на уровне БД, а именно встроенного скриптового языка – имеется лишь ограниченный набор конструкций для создания простейших циклов и условий. Но недавно случайно для себя обнаружил довольно любопытный пример MySQL-бэкдора, основанный на использовании UDFUser-Defined Functions (определяемые пользователем функции). Такое средство призвано расширить функционал MySQL с помощью специально оформленного и предварительно скомпилированного кода на C++, который реализует дополнительные возможности в контексте базы данных, при чем использование таких функций ни чем не отличается от любых других встроенных функций. Представленный выше бэкдор работает только под Windows XP, так как для создания UDF-функции необходимы права на запись в папку, содержащую системные библиотеки. В старых версиях MySQL этой директорией была С:/mysql/bin/, но в версиях > 5.1 поиск необходимой dll будет производиться в C:/windows/system32/. В любом случае, в Windows Vista трюк с UDF работать не будет, так как UAC не позволит записать ни в одну из этих папок. (more…)