Vipolnenie komand na servereygoltsevСеминар пройдет в формате мастер-класса. Слушатели получат как теоритические, так и практические знания.
В рамках мастер-класса будут рассмотрены уязвимости :
• Unrestricted File Upload
• Remote File Inclusion
• Local File Inclusion
Во время мастер-класса будут рассмотрены теоретические аспекты, вышеуказанных уязвимостей, приведены примеры уязвимого исходного кода.
Слушателям будут продемонстрированы примеры эксплуатации уязвимостей, техника обхода различных фильтраций.
Кроме того, будут приведены примеры безопасного написания сценариев.
Так же у каждого будет возможность применить полученные знания на практике.
Эффективное программирование на NodeJSYura BogdanovДоклад рассматривает тонкости nodejs, а так же преимущества Evented I/O для серверных приложений. Будет предоставлен ряд рекоммендаций по правильному построению архитектуры, модульности, масштабированию, дизайну кода. Краткое введение в технологию программирования "волокнами" (fibers) и ряд других эффективных практик.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandexЛекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
Vipolnenie komand na servereygoltsevСеминар пройдет в формате мастер-класса. Слушатели получат как теоритические, так и практические знания.
В рамках мастер-класса будут рассмотрены уязвимости :
• Unrestricted File Upload
• Remote File Inclusion
• Local File Inclusion
Во время мастер-класса будут рассмотрены теоретические аспекты, вышеуказанных уязвимостей, приведены примеры уязвимого исходного кода.
Слушателям будут продемонстрированы примеры эксплуатации уязвимостей, техника обхода различных фильтраций.
Кроме того, будут приведены примеры безопасного написания сценариев.
Так же у каждого будет возможность применить полученные знания на практике.
Эффективное программирование на NodeJSYura BogdanovДоклад рассматривает тонкости nodejs, а так же преимущества Evented I/O для серверных приложений. Будет предоставлен ряд рекоммендаций по правильному построению архитектуры, модульности, масштабированию, дизайну кода. Краткое введение в технологию программирования "волокнами" (fibers) и ряд других эффективных практик.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandexЛекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
Web deploymentGetDev.NEThttp://getdev.net/Event/msdeploy
Рассказ об инструменте Web Deployment (MSDeploy), возможностях развёртывания Web-приложений на серверах IIS
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFestMicrosoft Azure, пожалуй, самый очевидный выбор для .NET разработчиков, когда они (или их клиенты) внезапно решают, что им нужен клауд. Но при этом мы все равно используем подходы и техники из до-облачного мира, иногда и не подозревая о тех сервисах и удобствах, которые нам дает Azure. На этом докладе Сергей покажет, как быстро и эффективно можно разрабатывать современное веб приложение. Мы затронем разные аспекты -- от организации кода до деплоя и мониторинга приложений, работающих в проде. Документация API, поддержка рабочих процессов, инициализация приложений, полезные инструменты и библиотеки -- все это, и не только, ждет вас на нашем докладе.
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....KazHackStanАлексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Леонид Васильев "Python в инфраструктуре поиска"Yandex2 июля 2011, Я.Субботник в Екатеринбурге
Леонид Васильев "Python в инфраструктуре поиска"
О докладе:
Описание архитектуры и реализации внутренних инструментов для управления поисковым кластером.
Что такое инфраструктура поиска? Какие задачи приходится решать? Какие инструменты для управления кластером используются в поиске? Как они устроены изнутри? Что можно посоветовать проектам с большой инфраструктурой? Какие существуют open-source аналоги?
Formal verification of operating system kernelsDenis EfremovThe speaker will share his experience of participating in projects on formal verification and analysis of access control modules for Astra Linux SE and Elbrus kernels, as well as verification of the Contiki code (OS for IoT) within the European VESSEDIA program. The speaker will disclose details about the development of formal access control models (Rodin/Event-B) and code specifications (Frama-C/ACSL), the use of static and dynamic analyzers, and the inclusion of formal analysis in the continuous integration cycle (continuous verification). Other types of work that help meet the certification requirements will also be considered.
https://standoff365.com/phdays10/schedule/development/formal-verification-of-operating-system-kernels
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
Аналитика в проектах: TFS + QlikPositive Hack Days1. Что такое BI. Зачем он нужен.
2. Что такое Qlik View / Sense
3. Способ интеграции. Как это работает.
4. Метрики, KPI, планирование ресурсов команд, ретроспектива релиза продукта, тренды.
5. Подключение внешних источников данных (Excel, БД СКУД, переговорные комнаты).
Использование анализатора кода SonarQubePositive Hack Days1. Для чего нужны анализаторы кода
2. Что такое SonarQube
3. Принципе работы
4. Поддержка языков
5. Что находит
6. Метрики, снимаемые с кода
Развитие сообщества Open DevOps CommunityPositive Hack Days1. Обзор инструментов в сообществе DevOpsHQ: https://github.com/devopshq и решаемые ими проблемы.
2. Планы развития сообщества DevOpsHQ.
Автоматизация построения правил для ApproofPositive Hack DaysApproof — статический анализатор кода для проверки веб-приложений на наличие уязвимых компонентов. В своей работе анализатор основывается на правилах, хранящих сигнатуры искомых компонентов. В докладе рассматривается базовая структура правила для Approof и процесс автоматизации его создания.
Мастер-класс «Трущобы Application Security»Positive Hack DaysЗадумывались ли вы когда-нибудь о том, как устроены современные механизмы защиты приложений? Какая теория стоит за реализацией WAF и SAST? Каковы пределы их возможностей? Насколько их можно подвинуть за счет более широкого взгляда на проблематику безопасности приложений?
На мастер-классе будут рассмотрены основные методы и алгоритмы двух основополагающих технологий защиты приложений — межсетевого экранирования уровня приложения и статического анализа кода. На примерах конкретных инструментов с открытым исходным кодом, разработанных специально для этого мастер-класса, будут рассмотрены проблемы, возникающие на пути у разработчиков средств защиты приложений, и возможные пути их решения, а также даны ответы на все упомянутые вопросы.
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack DaysРазработка наукоемкого программного обеспечения отличается тем, что нет ни четкой постановки задачи, ни понимания, что получится в результате. Однако даже этом надо программировать то, что надо, и как надо. Докладчик расскажет о том, как ее команда успешно разработала и вывела в промышленную эксплуатацию несколько наукоемких продуктов, пройдя непростой путь от эксперимента, результатом которого был прототип, до промышленных версий, которые успешно продаются как на российском, так и на зарубежном рынках. Этот путь был насыщен сложностями и качественными управленческими решениями, которыми поделится докладчик
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack DaysНемногие разработчики закладывают безопасность в архитектуру приложения на этапе проектирования. Часто для этого нет ни денег, ни времени. Еще меньше — понимания моделей нарушителя и моделей угроз. Защита приложения выходит на передний план, когда уязвимости начинают стоить денег. К этому времени приложение уже работает и внесение существенных изменений в код становится нелегкой задачей.
К счастью, разработчики тоже люди, и в коде разных приложений можно встретить однотипные недостатки. В докладе речь пойдет об опасных ошибках, которые чаще всего допускают разработчики Android-приложений. Затрагиваются особенности ОС Android, приводятся примеры реальных приложений и уязвимостей в них, описываются способы устранения.
Требования по безопасности в архитектуре ПОPositive Hack DaysРазработка любого софта так или иначе базируется на требованиях. Полный перечень составляют бизнес-цели приложения, различные ограничения и ожидания по качеству (их еще называют NFR). Требования к безопасности ПО относятся к последнему пункту. В ходе доклада будут рассматриваться появление этих требований, управление ими и выбор наиболее важных.
Отдельно будут освещены принципы построения архитектуры приложения, при наличии таких требований и без, и продемонстрировано, как современные (и хорошо известные) подходы к проектированию приложения помогают лучше строить архитектуру приложения для минимизации ландшафта угроз.
Формальная верификация кода на языке СиPositive Hack DaysДоклад посвящен разработке корректного программного обеспечения с применением одного из видов статического анализа кода. Будут освещены вопросы применения подобных методов, их слабые стороны и ограничения, а также рассмотрены результаты, которые они могут дать. На конкретных примерах будет продемонстрировано, как выглядят разработка спецификаций для кода на языке Си и доказательство соответствия кода спецификациям.
Механизмы предотвращения атак в ASP.NET CorePositive Hack DaysThe document discusses preventing attacks in ASP.NET Core. It provides an overview of topics like preventing open redirect attacks, cross-site request forgery (CSRF), cross-site scripting (XSS) attacks, using and architecture of cookies, data protection, session management, and content security policy (CSP). The speaker is an independent developer and consultant who will discuss built-in mechanisms in ASP.NET Core for addressing these security issues.
2. Хорошо забытое старое: файловая система
Устройства DOS и зарезервированные имена:
NUL:, CON:, AUX:, PRN:, COM[1-9]:, LPT[1-9]: - двоеточие
необязательно, имена могут использоваться внутри пути
Зарезервированные символы:
< > : " / | ? *
Регистронезависимость имен:
Filename == FileName == filename == FILENAME
Поддержка коротких имен «8.3»:
LongFileName.Extension ~= LONGFI~1.EXT ~= LO0135~1.EXT
Завершающие символы:
Filename == Filename... == Filename
3. Хорошо забытое старое: файловая система
Именованные каналы и почтовые слоты (CreateFile):
Hostpipe<name> , Hostmailslot<name>
Альтернативный синтаксис относительных путей:
C:Windowsnotepad.exe == C:notepad.exe , если Windows –
текущий каталог диска C:
Подстановки (FindFirstFile):
< == * , > == ? , " == .
UNC и Unicode пути:
C:WindowsSystem32
HostC$WindowsSystem32
.C:WindowsSystem32
?C:WindowsSystem32
?UNCHostC$WindowsSystem32
4. Хорошо забытое старое: файловая система
Метатрибуты и альтернативные потоки данных NTFS:
Directory:<Name>:<Type>File:<Name>:<Type>
Метатрибуты файлов Метатрибуты индексов
$STANDARD_INFORMATION $INDEX_ROOT
$FILE_NAME $INDEX_ALLOCATION
$DATA $BITMAP
$ATTRIBUTE_LIST
$OBJECT_ID
$REPARSE_POINT
C:Windowshh.exe == C:Windows:$I30:$INDEX_ALLOCATIONhh.exe
C:Windowsnotepad.exe == C:Windowsnotepad.exe::$DATA
FileName.aspx == FileName.aspx:.jpg
5. [PT-2012-06] Обход ограничений Nginx
Рейтинг опасности: Средний (5.0)
(AV:N/AC:L/Au:N/C:P/I:N/A:N)
Подверженные версии: Nginx for Windows <= v1.3
Вектор: Удаленный
Ошибка позволяла злоумышленнику направлять HTTP-запросы к некоторым
URL-адресам в обход правил, определенных в директивах ‘Location’
конфигурации веб-сервера.
Эксплуатируя уязвимость, потенциальный хакер мог получить доступ к
исходному коду веб-приложения и закрытым разделам сайта, обнаружить
новые уязвимости, украсть пароли подключения к базе данных и прочим
сервисам и т.д.
:$I30:$INDEX_ALLOCATION
обрабатывались, как часть имени каталога.
6. [PT-2012-06] Обход ограничений Nginx
http://hostname/.svn/entries
HTTP/1.1 403 Forbidden
Server: nginx/1.2.0
…
location ~/.svn/ {
deny all;
}
…
HTTP/1.1 200 OK
Server: nginx/1.2.0
http://hostname/.svn::$INDEX_ALLOCATION/entries
* стабильная версия nginx-1.2.0 for Windows, выпущена 2012-04-23
8. Повреждения памяти
Взаимодействие с native-библиотеками, использование смешанных
сборок
MS12-025, апрель 2012: - выполнение произвольного кода за
пределами исполняющей среды через переполнение целого и
повреждение кучи в gdiplus.dll при вызове конструктора класса
System.Drawing.Imaging.EncoderParameter.
Небезопасный управляемый код
unsafe void bufferOverflow(string s)
{
char* ptr = stackalloc char[10];
foreach (var c in s)
{
*ptr++ = c
}
}
9. «Turkish I» и не только
Сравнение строк без учета текущей культуры, может привести к
непредвиденным последствиям:
Английские культуры: I&i
Турецкие культуры: I&ı+İ&i
<%@ Page Language="C#" Culture="Auto" %>
<%@ Import Namespace="System.Globalization" %>
<! DOCTYPE html>
…
<script runat="server">
…
if (Session["mode"].ToLower() != "admin")
…
if (String.Compare(Request["path"]), 0,
"FILE:", 0, 5, true)
…
10. Коллизии хэшей объектов
System.Object.GetHashCode() - возвращает 32-разрядный хэш-код объекта
(принимает значения от -2147483648 до 2147483647).
(http://blogs.msdn.com/b/ericlippert/archive/2010/03/22/socks-birthdays-and-hash-collisions.aspx)
11. Коллизии хэшей в ASP.NET (MS11-100)
Штатная ситуация: Не очень штатная ситуация:
3QBZJK5ZX=&NEUQ7BWAV6=&6902D0YP6J=&9PZGHCDJYD=&NU73S3KNV=&IF686YJQJ8K=&9XUUCJEENJ=&F
X4A75F91FM=&IGJKQVBZAVK=&LJVJV6J3UZ=&X7GJ5MWXY=&6AVIZWTVK=&WQNIQ7OZMS=&IM1VKMZHK6F=&
DO9WX2R9H=&RYLZSIQT8V=&KR9BBFUH2E=&UI8N4SWVWW=&TL5F6URVPP=&B1P81FWDSVV=&CM6Y80XSAO=&
LE72GBPWB=&EEFMULEXC=&M6FKM13WB=&MGN8123XA2K=&ZMI35GXHMN=&LXQQOM138LL=&XXST36DRX=&JR
YRV54TFZ=&LGG3X9MFN7=&MH1NI402I22=&MHFIKIM0TEH=&BWPRVCQ4X3=&RM6K7V75WZ=&SMIAE6PAL4=&
MOCGW14ZU7=&I0JKKKOG7EN=&Q4B9V7L3VZ=&23UAYU5B31=&9TRJE0XRWQ=&3Q3LKPC2K0=&D3ACY8973E=
=&VGJPMCQHP=&AV6THWSCA7=&MH5SM8NPWB1=&P57KEP668X=&81C4LQ4DFY=&MPJBASYMRM=&25EWGNN5NE
… over 4Mb form data …
(https://github.com/HybrisDisaster/aspHashDoS)
12. Хитрый план (post-mortem MS11-100)
1. Рассчитываем 1000 строк с
коллизиями на каждую
комбинацию «версия
.NET»/«аппаратная платформа»
2. Отправляем каждый из
наборов в качестве параметров
POST-запроса
3. Замеряем время ответа на
каждый запрос
4. ???
5. ;)
15. Специфика ASP.NET
Специальные каталоги и файлы:
- App_Browser – определения браузеров
(*.browsers);
- App_Code – исходный код вспомогательных
классов и логики;
- App_Data – хранилища данных;
- App_GlobalResources, App_LocalResources –
ресурсы приложения (*.resx, *.resources);
- App_Themes – темы (*.skin, *.css, images, etc);
- App_WebReferences – ссылки на web-сервисы
(*.wsdl, *.xsd, *.disco, *.discomap);
- Bin – скомпилированные сборки, используемые приложением;
- web.config, web.*.config – конфигурационные файлы, определяющие
настройки web-сервера и приложения.
16. Специфика ASP.NET
Стандартные HTTP-обработчики:
- WebResource.axd – доступ к статическим ресурсам, внедренным в сборки
приложения.
- ScriptResource.axd – доступ к скриптам js, внедренным в сборки или хранящимся
на диске.
Использование:
http://hostname/*Resource.axd?d=<resourceId>&t=<timestamp>
Пример:
http://hostname/ScriptResource.axd?d=JuN78WBP_dBUR_BT9LH1wlP
8mXnNcENfktCX8YwH3sHG7wWwvn73TZaaChQhQtyzip3-
kumGx1U67ntTt0sXKCn22VGvaQ3V4mXtCFgW9M1
Где d, зашифрованный параметр:
Q|~/Scripts/Script1.js,~/Scripts/Script2.js,~/Scripts/Script3.js|#|21c3
8a3a9b
17. Padding oracle (MS10-070)
Последствия:
– получение ключей, необходимых для шифрования/дешифрования:
аутентификационных cookies;
ViewState и Event Validation;
аргументов для WebRecource.axd и ScriptResource.axd =>
чтение произвольных файлов внутри каталога
приложения
Исправления:
при ошибке паддинга возвращается обощенная ошибка;
используется случайное число в качестве IV;
изменен формат шифруемых строк для их валидации;
ScriptResource.axd может обрабатывать только *.js файлы.
18. Специфика ASP.NET
Стандартные HTTP-обработчики:
- Trace.axd – трассировка запросов (доступна только в режиме отладки)
19. Особенности эксплуатации LFI
Response.WriteFile(<vfilename>)
- позволяет включать любой файл внутри каталога приложения, кроме *.config;
- файл включается статически, выполнения кода не происходит;
- принимает в качестве аргумента виртуальное имя файла.
Server.Execute(<vfilename>)
- позволяет включать любой файл внутри каталога приложения, кроме *.config;
- выполняет обработчик для переданного файла, результат включает в ответ;
- принимает в качестве аргумента виртуальное имя файла.
File.ReadAllText(<filename>)
- позволяет включать любой файл, на который есть права;
- файл включается статически, выполнения кода не происходит;
- принимает в качестве аргумента реальное имя файла.
21. Состояние представления (ViewState)
Предназначено для передачи на
сервер информации об элементах
представления.
- передается в параметре
__VIEWSTATE;
- шифрование и целостность часто
не обеспечиваются;
- используется разработчиками, для
хранения данных сессии на
клиенте, хотя не предназначено
для этого;
- нарушение его целостности может
привести к реализации самых
разнообразных угроз от XSS до
нарушения функциональности
приложения.
22. Подтверждение запросов и событий
Request Validation – встроенный примитивный WAF, направленный на
предотвращение атак XSS. Блокируются все запросы, содержащие:
&#
< с последующей буквой, !, / и ?
А также, игнорируются сторонние параметры, начинающиеся с __
Event Validation – встроенный механизм валидации
данных событий. Представляет собой параметр
__EVENTVALIDATION, хранящий хэши допустимых
значений элементов форм, событий, ViewState и т.п.
Вопреки бытующему мнению,
неэффективен против CSRF-атак,
при стандартной реализации.
23. Mass assignment
Model: Controller:
public class User public class UserController : Controller
{ {
public int Id IUserRepository _userRepository;
{ get; set; } public UserController(IUserRepository userRepository) {
public string UserName _userRepository = userRepository;
{ get; set; } }
public string Password
{ get; set; } public ActionResult Edit(int id) {
public bool IsAdmin var user = _userRepository.GetUserById(id);
{ get; set; } return View(user);
} }
[HttpPost]
public ActionResult Edit(int id, FormCollection collection) {
try {
var user = _userRepository.GetUserById(id);
UpdateModel(user);
_userRepository.SaveUser(user);
return RedirectToAction("Index");
} catch {
return View();
}
}
}
24. Mass assignment
(http://digitalbush.com/2012/03/05/mass-assignment-aspnet-mvc/)
25. Внедрение выражений LINQ
LINQ – язык запросов, встроенный в синтаксис .NET-языков.
var result = from item in itemsList
where item.field1 % 2 == 0
orderby item.field2 descending
select new { item.field2, item.field3 }; Expression.Lambda<Predicate<int>>(
Expression.Equal(
Expression.Modulo(
parameterN,
Expression.Constant(2)
),
Expression.Constant(0)
),
parameterN);
var result = itemsList
.Where(x => x.field1 % 2 == 0)
.Select(x => new { x.field2, x.field3 })
.OrderByDescending(x => x.field2);
26. Внедрение выражений LINQ
Dynamic LINQ – одна из нескольких существующих библиотек для
формирования динамических LINQ-запросов времени исполнения.
Возможности:
- определение выражений строками;
var modifier = "0";
- основные примитивные операции;
var result = itemsList
- доступ к членам статических и .Where("field1 % 2 == " + modifier)
экземплярных типов данных; .Select(x => new { x.field2, x.field3 })
.OrderByDescending(x => x.field2);
- создание экземпляров типов и
анонимных типов;
Что, если "modifier" формируется
из входных данных и содержит:
0 OR 1 == 1 ?
27. Внедрение выражений LINQ
Ограничения инъекций в Dynamic LINQ:
- доступ к полям, свойствам и методам возможен только для типа коллекции
или для достижимых типов, определяемых «белым списком»;
- все части выражения должны выполняться без ошибок, в сообщениях об
ошибках отсутствует полезный вывод;
- инъекции подвержены изолированные части запроса;
Возможности инъекций в Dynamic LINQ:
- обход аутентификации / авторизации;
- неавторизованный доступ к данным коллекции;
- нарушение функционала (при наличии у объектов коллекции statefull-
полей);
- реализация угрозы отказа в обслуживании (DoS).
В других решениях возможна реализация угрозы
удаленного выполнения кода (RCE)