<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://course.secsem.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Paulchr</id>
	<title>SecSem Wiki - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://course.secsem.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Paulchr"/>
	<link rel="alternate" type="text/html" href="https://course.secsem.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Paulchr"/>
	<updated>2026-05-21T16:02:21Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=481</id>
		<title>Дополнительные главы практической безопасности (2021)/Домашнее задание по фаззингу</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=481"/>
		<updated>2021-04-10T18:06:21Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: /* FAQ по домашке */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Домашнее задание по фаззингу =&lt;br /&gt;
&lt;br /&gt;
== Первый семинар ==&lt;br /&gt;
&lt;br /&gt;
=== Задача ===&lt;br /&gt;
&lt;br /&gt;
http://fuzzing.tasks.course.secsem.ru/&lt;br /&gt;
&lt;br /&gt;
На первом семинаре мы с вами говорили о том, что CTF задачи на бинарную эксплуатацию довольно часто развивают не те навыки, которые востребованы в реальной жизни. Данная задача направлена на развитие ваших навыков автоматизации поиска уязвимостей, диагностики ошибок и написания репортов по найдённым уязвимостям. Для выполнения задачи вам будет предложено искать реальные уязвимости в реальном продукте при помощи фаззинга.&lt;br /&gt;
&lt;br /&gt;
Исследуемый продукт: GtkVNC — клиент для приложений доступа к удалённого экрану, которые используют протокол RFB. [https://tools.ietf.org/html/rfc6143 RFC на протокол]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы начать искать уязвимости [https://gist.github.com/PaulCher/d4ed9df3e04e0777198538cd36c79a4c достаточно сделать это...]&lt;br /&gt;
&lt;br /&gt;
Правила игры:&lt;br /&gt;
Чем больше уязвимостей Вы найдёте в проекте — тем лучше. &lt;br /&gt;
Сколько уязвимостей — неизвестно, но они есть. &lt;br /&gt;
Если Вы — первый человек, кто нашёл уязвимость данного типа, то мы вместе непублично репортим уязвимость вендору и регистрируем на Вас идентификатор CVE.&lt;br /&gt;
Уязвимости, которые приводят к возможности получения удалённого доступа на клиенте оцениваются выше, чем уязвимости, которые приводят к падению клиента (RCE круче, чем DoS). &lt;br /&gt;
Уязвимости искать руками тоже можно не используя фаззинг, это не будет контролироваться.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы подтвердить, что вы действительно нашли уязвимость вам необходимо будет написать минимальный Proof-of-Concept, который необходимо будет сдать в проверяющую систему. Проверяющая система будет запускать ваш PoC и тестировать, что бинарный пакет gtkvnc, скомпилированный с AddressSanitizer выдаёт типичную для ASAN-a ошибку. Если уязвимость, которую вы нашли не триггерит ASAN, но является уязвимостью (например это ошибка неинициализированной памяти, которую клиент удалённо может считать), то пишите в телеграмм paulchr . Такие уязвимость тоже буду засчитаны. &lt;br /&gt;
&lt;br /&gt;
Прежде, чем посылать эксплоит на сервер рекомендуется убедиться, что вы можете получить ошибку локально, подключившись при помощи клиента GtkVNC, который скомпилирован с библиотекой ASAN. После того как вы убедились в этом, посылайте ваш PoC на сервер. Для этого надо зарегистрироваться на нём, выбрать &amp;quot;Targets&amp;quot; -&amp;gt; &amp;quot;GtkVNC&amp;quot; и загрузить скрипт на сервер. Запускаться он будет через ./poc, так что не забудьте шабанг. &lt;br /&gt;
&lt;br /&gt;
Если PoC успешно пройдёт проверку, то он будет переведён из состояния &amp;quot;in progress&amp;quot; в состояние &amp;quot;success&amp;quot;, иначе он перейдёт в состояние &amp;quot;failed&amp;quot;. Таймаут работы — одна минута, но если вашему скрипту нужно больше времени на работу, чтобы стриггерить уязвимость, так как он, например, посылает много данных, то это поправимо (пишите в телеграмм). Если после загрузки файла на сервер ваш PoC завис в состоянии &amp;quot;in progreess&amp;quot;, &amp;quot;created&amp;quot; или &amp;quot;internal error&amp;quot;, то пишите в телеграмм, скорее всего что-то сломалось и я постараюсь это почитать как только так сразу. Система тестируется на людях в первый раз.&lt;br /&gt;
&lt;br /&gt;
Если ваш PoC перешёл в состояние success, то поздравляю, вы стриггерили уязвимость, но это не конец. Для успешного завершения упражнения Вам необходимо написать репорт в проверяющую систему где вы опишете подробно насколько это возможно уязвимость и последствия для программы, к которым она приводит. Описание отправляется на ревью (состояние &amp;quot;on review&amp;quot;) и может быть отклонено администраторами системы, если репорт был плохо написан. Примеры таких возможных случаев: причина уязвимости была неверно истолкована или непонятно изложена, импакт данной уязвимости был определён неверно, ваш PoC написан не достаточно понятно или обфусцирован или был загружен бинарный исполняемый файл. В таком случае Ваш submission отправляется в состояние &amp;quot;rejected&amp;quot;. Если Вы первым смогли стриггерить  данную уязвимость, но плохо написали репорт, и человек после Вас получил успешный статус &amp;quot;success&amp;quot;, то он будет считаться первым успешно выполнившим задание, а следовательно, будет претендовать на получение идентификатора CVE, даже если Вы потом успешно заново сдали данную уязвимость.&lt;br /&gt;
&lt;br /&gt;
В окружении в котором будет запускаться ваш PoC есть питон3 и библиотека pwntools. [https://gist.github.com/PaulCher/d86d4db6bba67034e1c4de69e9edafd7 Подробнее об устройстве PoC контейнере]&lt;br /&gt;
&lt;br /&gt;
Делиться информацией о найденных уязвимостях ни с кем  категорически нельзя до конца задания!&lt;br /&gt;
&lt;br /&gt;
=== Вспомогательные материалы ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/google/AFL/ AFL]&lt;br /&gt;
* [https://github.com/google/AFL/blob/master/docs/technical_details.txt AFL technical_details.txt]&lt;br /&gt;
* [https://llvm.org/docs/LibFuzzer.html Базовая справка по libFuzzer]&lt;br /&gt;
* [https://github.com/Dor1s/libfuzzer-workshop Хороший воркшоп про libFuzzer]&lt;br /&gt;
* [https://github.com/google/sanitizers/wiki/AddressSanitizer Документация AddressSanitizer]&lt;br /&gt;
* [https://github.com/llvm-mirror/compiler-rt/blob/master/test/fuzzer/AbsNegAndConstant64Test.cpp Пример интересного теста из libFuzzer (да, он и такое умеет)]&lt;br /&gt;
* [https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/ Пример фаззинга реального приложения от и до]&lt;br /&gt;
* [https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md libFuzzer tutorial]&lt;br /&gt;
&lt;br /&gt;
=== FAQ по домашке ===&lt;br /&gt;
&lt;br /&gt;
* Что делать если &amp;quot;Internal Error&amp;quot;? &lt;br /&gt;
&lt;br /&gt;
Писать в чат в телегремме. На сервере иногда случаются докер-проблемы, но всё что отработало с &amp;quot;Internal Error&amp;quot; будет перепроверено и засчитано. &lt;br /&gt;
&lt;br /&gt;
* Почему мы откатываемся на какой-то коммит? Неужели ты нас обманул и мы ищем уже запатченные уязвимости? &lt;br /&gt;
&lt;br /&gt;
Нет, на коммит я откатился, потому что на нём я тестировал свой фаззер и вместе с ним сбилжен тестовый билд с ASAN-ом на котором проверяются ваши эксплоиты. Соответственно вам тоже удобнее будет тестировать не на последнем коммите, потому что если в проекте с тех пор появились какие-то обновления, то они могут помешать и вы не поймёте что случилось.&lt;br /&gt;
&lt;br /&gt;
* У тебя там тестируется всё локально, поэтому я могу наверное как-то обмануть проверяющую систему и мне засчитается submission? &lt;br /&gt;
&lt;br /&gt;
Скорее всего это не получится. Контейнеры, в которых запускаются ваш PoC и уязвимый бинарь, изолированы друг от друга и от общей докеровской сети. Кстати, в связи с этим будьте внимательны: ваш PoC должен слушать порт 5900 не на 127.0.0.1, а на 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
* Экслоит не работает. Что делать?&lt;br /&gt;
&lt;br /&gt;
Сбилдить указанный коммит с ASAN-ом и проверить руками свой пок.&lt;br /&gt;
&lt;br /&gt;
* Эксплоит работает локально, но не работает удалённо. Что делать?&lt;br /&gt;
&lt;br /&gt;
Проверьте различные проблемы. Проверьте, что первой строчкой в вашем поке идёт шебанг. Вы используете питон версии 3. Ваш пок не использует лишних библиотек. Если вы сидите на винде, то замените все переводы строк с CRLF на LF. Если всё это не работает, то пишите в чат в телеграмме.&lt;br /&gt;
&lt;br /&gt;
* Что должен содержать минимальный репорт?&lt;br /&gt;
&lt;br /&gt;
Подробное описание где конкретно проижошла уязвимость с именами файлов, функций и номерами строк. Что привело к уязвимости: понятное и точное описание с именами переменных. Импакт от данной уязвимости. Может ли данная уязвимость привести к возможности удалённого исполнения кода. Если для этого будут требоваться другие уязвимости, то написать какие именно (например, memory leak). Если при описании импакта Вы не уверены на 100%, то можно написать об этом. Идентификатор [https://cwe.mitre.org/ CWE].&lt;br /&gt;
&lt;br /&gt;
* Где создать репорт? &lt;br /&gt;
&lt;br /&gt;
После того, как ваш PoC отработал со статусом &amp;quot;success&amp;quot; кнопка &amp;quot;Create Report&amp;quot; будет находиться на полной странице вашего submission_a. Там же впоследствии появится комментарий проверяющего после ревью.&lt;br /&gt;
&lt;br /&gt;
== Второй семинар ==&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=480</id>
		<title>Дополнительные главы практической безопасности (2021)/Домашнее задание по фаззингу</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=480"/>
		<updated>2021-04-10T17:16:24Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: /* Первый семинар */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Домашнее задание по фаззингу =&lt;br /&gt;
&lt;br /&gt;
== Первый семинар ==&lt;br /&gt;
&lt;br /&gt;
=== Задача ===&lt;br /&gt;
&lt;br /&gt;
http://fuzzing.tasks.course.secsem.ru/&lt;br /&gt;
&lt;br /&gt;
На первом семинаре мы с вами говорили о том, что CTF задачи на бинарную эксплуатацию довольно часто развивают не те навыки, которые востребованы в реальной жизни. Данная задача направлена на развитие ваших навыков автоматизации поиска уязвимостей, диагностики ошибок и написания репортов по найдённым уязвимостям. Для выполнения задачи вам будет предложено искать реальные уязвимости в реальном продукте при помощи фаззинга.&lt;br /&gt;
&lt;br /&gt;
Исследуемый продукт: GtkVNC — клиент для приложений доступа к удалённого экрану, которые используют протокол RFB. [https://tools.ietf.org/html/rfc6143 RFC на протокол]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы начать искать уязвимости [https://gist.github.com/PaulCher/d4ed9df3e04e0777198538cd36c79a4c достаточно сделать это...]&lt;br /&gt;
&lt;br /&gt;
Правила игры:&lt;br /&gt;
Чем больше уязвимостей Вы найдёте в проекте — тем лучше. &lt;br /&gt;
Сколько уязвимостей — неизвестно, но они есть. &lt;br /&gt;
Если Вы — первый человек, кто нашёл уязвимость данного типа, то мы вместе непублично репортим уязвимость вендору и регистрируем на Вас идентификатор CVE.&lt;br /&gt;
Уязвимости, которые приводят к возможности получения удалённого доступа на клиенте оцениваются выше, чем уязвимости, которые приводят к падению клиента (RCE круче, чем DoS). &lt;br /&gt;
Уязвимости искать руками тоже можно не используя фаззинг, это не будет контролироваться.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы подтвердить, что вы действительно нашли уязвимость вам необходимо будет написать минимальный Proof-of-Concept, который необходимо будет сдать в проверяющую систему. Проверяющая система будет запускать ваш PoC и тестировать, что бинарный пакет gtkvnc, скомпилированный с AddressSanitizer выдаёт типичную для ASAN-a ошибку. Если уязвимость, которую вы нашли не триггерит ASAN, но является уязвимостью (например это ошибка неинициализированной памяти, которую клиент удалённо может считать), то пишите в телеграмм paulchr . Такие уязвимость тоже буду засчитаны. &lt;br /&gt;
&lt;br /&gt;
Прежде, чем посылать эксплоит на сервер рекомендуется убедиться, что вы можете получить ошибку локально, подключившись при помощи клиента GtkVNC, который скомпилирован с библиотекой ASAN. После того как вы убедились в этом, посылайте ваш PoC на сервер. Для этого надо зарегистрироваться на нём, выбрать &amp;quot;Targets&amp;quot; -&amp;gt; &amp;quot;GtkVNC&amp;quot; и загрузить скрипт на сервер. Запускаться он будет через ./poc, так что не забудьте шабанг. &lt;br /&gt;
&lt;br /&gt;
Если PoC успешно пройдёт проверку, то он будет переведён из состояния &amp;quot;in progress&amp;quot; в состояние &amp;quot;success&amp;quot;, иначе он перейдёт в состояние &amp;quot;failed&amp;quot;. Таймаут работы — одна минута, но если вашему скрипту нужно больше времени на работу, чтобы стриггерить уязвимость, так как он, например, посылает много данных, то это поправимо (пишите в телеграмм). Если после загрузки файла на сервер ваш PoC завис в состоянии &amp;quot;in progreess&amp;quot;, &amp;quot;created&amp;quot; или &amp;quot;internal error&amp;quot;, то пишите в телеграмм, скорее всего что-то сломалось и я постараюсь это почитать как только так сразу. Система тестируется на людях в первый раз.&lt;br /&gt;
&lt;br /&gt;
Если ваш PoC перешёл в состояние success, то поздравляю, вы стриггерили уязвимость, но это не конец. Для успешного завершения упражнения Вам необходимо написать репорт в проверяющую систему где вы опишете подробно насколько это возможно уязвимость и последствия для программы, к которым она приводит. Описание отправляется на ревью (состояние &amp;quot;on review&amp;quot;) и может быть отклонено администраторами системы, если репорт был плохо написан. Примеры таких возможных случаев: причина уязвимости была неверно истолкована или непонятно изложена, импакт данной уязвимости был определён неверно, ваш PoC написан не достаточно понятно или обфусцирован или был загружен бинарный исполняемый файл. В таком случае Ваш submission отправляется в состояние &amp;quot;rejected&amp;quot;. Если Вы первым смогли стриггерить  данную уязвимость, но плохо написали репорт, и человек после Вас получил успешный статус &amp;quot;success&amp;quot;, то он будет считаться первым успешно выполнившим задание, а следовательно, будет претендовать на получение идентификатора CVE, даже если Вы потом успешно заново сдали данную уязвимость.&lt;br /&gt;
&lt;br /&gt;
В окружении в котором будет запускаться ваш PoC есть питон3 и библиотека pwntools. [https://gist.github.com/PaulCher/d86d4db6bba67034e1c4de69e9edafd7 Подробнее об устройстве PoC контейнере]&lt;br /&gt;
&lt;br /&gt;
Делиться информацией о найденных уязвимостях ни с кем  категорически нельзя до конца задания!&lt;br /&gt;
&lt;br /&gt;
=== Вспомогательные материалы ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/google/AFL/ AFL]&lt;br /&gt;
* [https://github.com/google/AFL/blob/master/docs/technical_details.txt AFL technical_details.txt]&lt;br /&gt;
* [https://llvm.org/docs/LibFuzzer.html Базовая справка по libFuzzer]&lt;br /&gt;
* [https://github.com/Dor1s/libfuzzer-workshop Хороший воркшоп про libFuzzer]&lt;br /&gt;
* [https://github.com/google/sanitizers/wiki/AddressSanitizer Документация AddressSanitizer]&lt;br /&gt;
* [https://github.com/llvm-mirror/compiler-rt/blob/master/test/fuzzer/AbsNegAndConstant64Test.cpp Пример интересного теста из libFuzzer (да, он и такое умеет)]&lt;br /&gt;
* [https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/ Пример фаззинга реального приложения от и до]&lt;br /&gt;
* [https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md libFuzzer tutorial]&lt;br /&gt;
&lt;br /&gt;
=== FAQ по домашке ===&lt;br /&gt;
&lt;br /&gt;
* Что делать если &amp;quot;Internal Error&amp;quot;? &lt;br /&gt;
&lt;br /&gt;
Писать в чат в телегремме. На сервере иногда случаются докер-проблемы, но всё что отработало с &amp;quot;Internal Error&amp;quot; будет перепроверено и засчитано. &lt;br /&gt;
&lt;br /&gt;
* Почему мы откатываемся на какой-то коммит? Неужели ты нас обманул и мы ищем уже запатченные уязвимости? &lt;br /&gt;
&lt;br /&gt;
Нет, на коммит я откатился, потому что на нём я тестировал свой фаззер и вместе с ним сбилжен тестовый билд с ASAN-ом на котором проверяются ваши эксплоиты. Соответственно вам тоже удобнее будет тестировать не на последнем коммите, потому что если в проекте с тех пор появились какие-то обновления, то они могут помешать и вы не поймёте что случилось.&lt;br /&gt;
&lt;br /&gt;
* У тебя там тестируется всё локально, поэтому я могу наверное как-то обмануть проверяющую систему и мне засчитается submission? &lt;br /&gt;
&lt;br /&gt;
Скорее всего это не получится. Контейнеры, в которых запускаются ваш PoC и уязвимый бинарь, изолированы друг от друга и от общей докеровской сети. Кстати, в связи с этим будьте внимательны: ваш PoC должен слушать порт 5900 не на 127.0.0.1, а на 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
* Экслоит не работает. Что делать?&lt;br /&gt;
&lt;br /&gt;
Сбилдить указанный коммит с ASAN-ом и проверить руками свой пок.&lt;br /&gt;
&lt;br /&gt;
* Эксплоит работает локально, но не работает удалённо. Что делать?&lt;br /&gt;
&lt;br /&gt;
Проверьте различные проблемы. Проверьте, что первой строчкой в вашем поке идёт шебанг. Вы используете питон версии 3. Ваш пок не использует лишних библиотек. Если вы сидите на винде, то замените все переводы строк с CRLF на LF. Если всё это не работает, то пишите в чат в телеграмме.&lt;br /&gt;
&lt;br /&gt;
== Второй семинар ==&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)&amp;diff=479</id>
		<title>Дополнительные главы практической безопасности (2021)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)&amp;diff=479"/>
		<updated>2021-04-10T17:04:18Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Дополнительные главы практической безопасности&#039;&#039;&#039; — математический спецкурс по выбору, продолжение курса [[Введение_в_практическую_безопасность_(2019)|Введение в практическую безопасность]] (читавшегося в 2019 году).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: во вторник, 18:20, 16 февраля 2021&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 612, 2-й учебный корпус, планета Земля, Млечный Путь.&lt;br /&gt;
&lt;br /&gt;
Курс рекомендуется студентам, интересующимся практической безопасностью. Каждое занятие будет иметь формат воркшопа/семинара - будет практическим, на него надо приходить с ноутбуком, а также установленным софтом.&lt;br /&gt;
&lt;br /&gt;
Оценка за курс будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные. Баллы за все обязательные задания вместе дадут &#039;&#039;&#039;10000&#039;&#039;&#039;. Гарантируется, что 10000 и больше будут давать оценку &amp;quot;отлично&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;16.02&#039;&#039;&#039; - Веб-безопасность — XXE ([http://xxe.course.secsem.ru/ материалы], [[Дополнительные_главы_практической_безопасности_(2021)/XXE|про эксплуатацию OOB]])&lt;br /&gt;
* &#039;&#039;&#039;02.03&#039;&#039;&#039; - Веб-безопасность — небезопасная десериализация ([//course.secsem.ru/slides/unserialize_php.pdf слайды по небезопасной десериализации PHP])&lt;br /&gt;
* &#039;&#039;&#039;09.03&#039;&#039;&#039; - Веб-безопасность — template injection ([//course.secsem.ru/slides/2021-ssti-dgpb.pdf слайды])&lt;br /&gt;
* &#039;&#039;&#039;16.03&#039;&#039;&#039; - Ошибки неправильного использования криптографии в реальных приложениях ([//course.secsem.ru/slides/dont-roll-your-own-crypto.pdf слайды])&lt;br /&gt;
* &#039;&#039;&#039;23.03&#039;&#039;&#039; - Система типов в языке программирования Rust ([//course.secsem.ru/slides/2021-course-extended-lec5.pdf слайды], [https://course.secsem.ru/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83 домашка])&lt;br /&gt;
* &#039;&#039;&#039;30.03&#039;&#039;&#039; - Фаззинг бинарных программ — основы ([https://course.secsem.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A4%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3_-_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B.zip слайды])&lt;br /&gt;
* &#039;&#039;&#039;06.04&#039;&#039;&#039; - Фаззинг бинарных программ — примеры использования в реальной жизни&lt;br /&gt;
* &#039;&#039;&#039;13.04&#039;&#039;&#039; - Фаззинг бинарных программ — возникающие проблемы и способы их решения на основе специализированных фаззеров и техник: kAFL, Redqueen, Grimoire, etc.&lt;br /&gt;
* &#039;&#039;&#039;20.04&#039;&#039;&#039; - Веб-безопасность — атаки на race condition в веб-приложениях&lt;br /&gt;
* &#039;&#039;&#039;27.04&#039;&#039;&#039; - Эскалация привилегий (LPE) в Windows&lt;br /&gt;
* &#039;&#039;&#039;11.05&#039;&#039;&#039; - &#039;&#039;&#039;[дистанционно]&#039;&#039;&#039; Внутреннее устройство webassembly и как там достигается сэндбоксинг&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
[[Дополнительные_главы_практической_безопасности_(2021)/Задания|Задания находятся на этой странице]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)&amp;diff=478</id>
		<title>Дополнительные главы практической безопасности (2021)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)&amp;diff=478"/>
		<updated>2021-04-10T17:01:24Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: /* Занятия */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Дополнительные главы практической безопасности&#039;&#039;&#039; — математический спецкурс по выбору, продолжение курса [[Введение_в_практическую_безопасность_(2019)|Введение в практическую безопасность]] (читавшегося в 2019 году).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: во вторник, 18:20, 16 февраля 2021&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 612, 2-й учебный корпус, планета Земля, Млечный Путь.&lt;br /&gt;
&lt;br /&gt;
Курс рекомендуется студентам, интересующимся практической безопасностью. Каждое занятие будет иметь формат воркшопа/семинара - будет практическим, на него надо приходить с ноутбуком, а также установленным софтом.&lt;br /&gt;
&lt;br /&gt;
Оценка за курс будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные. Баллы за все обязательные задания вместе дадут &#039;&#039;&#039;10000&#039;&#039;&#039;. Гарантируется, что 10000 и больше будут давать оценку &amp;quot;отлично&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;16.02&#039;&#039;&#039; - Веб-безопасность — XXE ([http://xxe.course.secsem.ru/ материалы], [[Дополнительные_главы_практической_безопасности_(2021)/XXE|про эксплуатацию OOB]])&lt;br /&gt;
* &#039;&#039;&#039;02.03&#039;&#039;&#039; - Веб-безопасность — небезопасная десериализация ([//course.secsem.ru/slides/unserialize_php.pdf слайды по небезопасной десериализации PHP])&lt;br /&gt;
* &#039;&#039;&#039;09.03&#039;&#039;&#039; - Веб-безопасность — template injection ([//course.secsem.ru/slides/2021-ssti-dgpb.pdf слайды])&lt;br /&gt;
* &#039;&#039;&#039;16.03&#039;&#039;&#039; - Ошибки неправильного использования криптографии в реальных приложениях ([//course.secsem.ru/slides/dont-roll-your-own-crypto.pdf слайды])&lt;br /&gt;
* &#039;&#039;&#039;23.03&#039;&#039;&#039; - Система типов в языке программирования Rust ([//course.secsem.ru/slides/2021-course-extended-lec5.pdf слайды])&lt;br /&gt;
* &#039;&#039;&#039;30.03&#039;&#039;&#039; - Фаззинг бинарных программ — основы ([https://course.secsem.ru/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A4%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3_-_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B.zip слайды])&lt;br /&gt;
* &#039;&#039;&#039;06.04&#039;&#039;&#039; - Фаззинг бинарных программ — примеры использования в реальной жизни&lt;br /&gt;
* &#039;&#039;&#039;13.04&#039;&#039;&#039; - Фаззинг бинарных программ — возникающие проблемы и способы их решения на основе специализированных фаззеров и техник: kAFL, Redqueen, Grimoire, etc.&lt;br /&gt;
* &#039;&#039;&#039;20.04&#039;&#039;&#039; - Веб-безопасность — атаки на race condition в веб-приложениях&lt;br /&gt;
* &#039;&#039;&#039;27.04&#039;&#039;&#039; - Эскалация привилегий (LPE) в Windows&lt;br /&gt;
* &#039;&#039;&#039;11.05&#039;&#039;&#039; - &#039;&#039;&#039;[дистанционно]&#039;&#039;&#039; Внутреннее устройство webassembly и как там достигается сэндбоксинг&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
[[Дополнительные_главы_практической_безопасности_(2021)/Задания|Задания находятся на этой странице]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A4%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3_-_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B.zip&amp;diff=477</id>
		<title>Файл:Фаззинг - основы.zip</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A4%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3_-_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B.zip&amp;diff=477"/>
		<updated>2021-04-10T17:00:27Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: Презентация с семинара по фаззингу&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Краткое описание ==&lt;br /&gt;
Презентация с семинара по фаззингу&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=474</id>
		<title>Дополнительные главы практической безопасности (2021)/Домашнее задание по фаззингу</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=474"/>
		<updated>2021-04-08T20:46:10Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: /* Вспомогательные материалы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Домашнее задание по фаззингу =&lt;br /&gt;
&lt;br /&gt;
== Первый семинар ==&lt;br /&gt;
&lt;br /&gt;
=== Задача ===&lt;br /&gt;
&lt;br /&gt;
http://fuzzing.tasks.course.secsem.ru/&lt;br /&gt;
&lt;br /&gt;
На первом семинаре мы с вами говорили о том, что CTF задачи на бинарную эксплуатацию довольно часто развивают не те навыки, которые востребованы в реальной жизни. Данная задача направлена на развитие ваших навыков автоматизации поиска уязвимостей, диагностики ошибок и написания репортов по найдённым уязвимостям. Для выполнения задачи вам будет предложено искать реальные уязвимости в реальном продукте при помощи фаззинга.&lt;br /&gt;
&lt;br /&gt;
Исследуемый продукт: GtkVNC — клиент для приложений доступа к удалённого экрану, которые используют протокол RFB. [https://tools.ietf.org/html/rfc6143 RFC на протокол]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы начать искать уязвимости [https://gist.github.com/PaulCher/d4ed9df3e04e0777198538cd36c79a4c достаточно сделать это...]&lt;br /&gt;
&lt;br /&gt;
Правила игры:&lt;br /&gt;
Чем больше уязвимостей Вы найдёте в проекте — тем лучше. &lt;br /&gt;
Сколько уязвимостей — неизвестно, но они есть. &lt;br /&gt;
Если Вы — первый человек, кто нашёл уязвимость данного типа, то мы вместе непублично репортим уязвимость вендору и регистрируем на Вас идентификатор CVE.&lt;br /&gt;
Уязвимости, которые приводят к возможности получения удалённого доступа на клиенте оцениваются выше, чем уязвимости, которые приводят к падению клиента (RCE круче, чем DoS). &lt;br /&gt;
Уязвимости искать руками тоже можно не используя фаззинг, это не будет контролироваться.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы подтвердить, что вы действительно нашли уязвимость вам необходимо будет написать минимальный Proof-of-Concept, который необходимо будет сдать в проверяющую систему. Проверяющая система будет запускать ваш PoC и тестировать, что бинарный пакет gtkvnc, скомпилированный с AddressSanitizer выдаёт типичную для ASAN-a ошибку. Если уязвимость, которую вы нашли не триггерит ASAN, но является уязвимостью (например это ошибка неинициализированной памяти, которую клиент удалённо может считать), то пишите в телеграмм paulchr . Такие уязвимость тоже буду засчитаны. &lt;br /&gt;
&lt;br /&gt;
Прежде, чем посылать эксплоит на сервер рекомендуется убедиться, что вы можете получить ошибку локально, подключившись при помощи клиента GtkVNC, который скомпилирован с библиотекой ASAN. После того как вы убедились в этом, посылайте ваш PoC на сервер. Для этого надо зарегистрироваться на нём, выбрать &amp;quot;Targets&amp;quot; -&amp;gt; &amp;quot;GtkVNC&amp;quot; и загрузить скрипт на сервер. Запускаться он будет через ./poc, так что не забудьте шабанг. &lt;br /&gt;
&lt;br /&gt;
Если PoC успешно пройдёт проверку, то он будет переведён из состояния &amp;quot;in progress&amp;quot; в состояние &amp;quot;success&amp;quot;, иначе он перейдёт в состояние &amp;quot;failed&amp;quot;. Таймаут работы — одна минута, но если вашему скрипту нужно больше времени на работу, чтобы стриггерить уязвимость, так как он, например, посылает много данных, то это поправимо (пишите в телеграмм). Если после загрузки файла на сервер ваш PoC завис в состоянии &amp;quot;in progreess&amp;quot;, &amp;quot;created&amp;quot; или &amp;quot;internal error&amp;quot;, то пишите в телеграмм, скорее всего что-то сломалось и я постараюсь это почитать как только так сразу. Система тестируется на людях в первый раз.&lt;br /&gt;
&lt;br /&gt;
Если ваш PoC перешёл в состояние success, то поздравляю, вы стриггерили уязвимость, но это не конец. Для успешного завершения упражнения Вам необходимо написать репорт в проверяющую систему где вы опишете подробно насколько это возможно уязвимость и последствия для программы, к которым она приводит. Описание отправляется на ревью (состояние &amp;quot;on review&amp;quot;) и может быть отклонено администраторами системы, если репорт был плохо написан. Примеры таких возможных случаев: причина уязвимости была неверно истолкована или непонятно изложена, импакт данной уязвимости был определён неверно, ваш PoC написан не достаточно понятно или обфусцирован или был загружен бинарный исполняемый файл. В таком случае Ваш submission отправляется в состояние &amp;quot;rejected&amp;quot;. Если Вы первым смогли стриггерить  данную уязвимость, но плохо написали репорт, и человек после Вас получил успешный статус &amp;quot;success&amp;quot;, то он будет считаться первым успешно выполнившим задание, а следовательно, будет претендовать на получение идентификатора CVE, даже если Вы потом успешно заново сдали данную уязвимость.&lt;br /&gt;
&lt;br /&gt;
В окружении в котором будет запускаться ваш PoC есть питон3 и библиотека pwntools. [https://gist.github.com/PaulCher/d86d4db6bba67034e1c4de69e9edafd7 Подробнее об устройстве PoC контейнере]&lt;br /&gt;
&lt;br /&gt;
Делиться информацией о найденных уязвимостях ни с кем  категорически нельзя до конца задания!&lt;br /&gt;
&lt;br /&gt;
=== Вспомогательные материалы ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/google/AFL/ AFL]&lt;br /&gt;
* [https://github.com/google/AFL/blob/master/docs/technical_details.txt AFL technical_details.txt]&lt;br /&gt;
* [https://llvm.org/docs/LibFuzzer.html Базовая справка по libFuzzer]&lt;br /&gt;
* [https://github.com/Dor1s/libfuzzer-workshop Хороший воркшоп про libFuzzer]&lt;br /&gt;
* [https://github.com/google/sanitizers/wiki/AddressSanitizer Документация AddressSanitizer]&lt;br /&gt;
* [https://github.com/llvm-mirror/compiler-rt/blob/master/test/fuzzer/AbsNegAndConstant64Test.cpp Пример интересного теста из libFuzzer (да, он и такое умеет)]&lt;br /&gt;
* [https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/ Пример фаззинга реального приложения от и до]&lt;br /&gt;
* [https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md libFuzzer tutorial]&lt;br /&gt;
&lt;br /&gt;
== Второй семинар ==&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=473</id>
		<title>Дополнительные главы практической безопасности (2021)/Домашнее задание по фаззингу</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=473"/>
		<updated>2021-04-08T20:45:46Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: /* Вспомогательные материалы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Домашнее задание по фаззингу =&lt;br /&gt;
&lt;br /&gt;
== Первый семинар ==&lt;br /&gt;
&lt;br /&gt;
=== Задача ===&lt;br /&gt;
&lt;br /&gt;
http://fuzzing.tasks.course.secsem.ru/&lt;br /&gt;
&lt;br /&gt;
На первом семинаре мы с вами говорили о том, что CTF задачи на бинарную эксплуатацию довольно часто развивают не те навыки, которые востребованы в реальной жизни. Данная задача направлена на развитие ваших навыков автоматизации поиска уязвимостей, диагностики ошибок и написания репортов по найдённым уязвимостям. Для выполнения задачи вам будет предложено искать реальные уязвимости в реальном продукте при помощи фаззинга.&lt;br /&gt;
&lt;br /&gt;
Исследуемый продукт: GtkVNC — клиент для приложений доступа к удалённого экрану, которые используют протокол RFB. [https://tools.ietf.org/html/rfc6143 RFC на протокол]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы начать искать уязвимости [https://gist.github.com/PaulCher/d4ed9df3e04e0777198538cd36c79a4c достаточно сделать это...]&lt;br /&gt;
&lt;br /&gt;
Правила игры:&lt;br /&gt;
Чем больше уязвимостей Вы найдёте в проекте — тем лучше. &lt;br /&gt;
Сколько уязвимостей — неизвестно, но они есть. &lt;br /&gt;
Если Вы — первый человек, кто нашёл уязвимость данного типа, то мы вместе непублично репортим уязвимость вендору и регистрируем на Вас идентификатор CVE.&lt;br /&gt;
Уязвимости, которые приводят к возможности получения удалённого доступа на клиенте оцениваются выше, чем уязвимости, которые приводят к падению клиента (RCE круче, чем DoS). &lt;br /&gt;
Уязвимости искать руками тоже можно не используя фаззинг, это не будет контролироваться.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы подтвердить, что вы действительно нашли уязвимость вам необходимо будет написать минимальный Proof-of-Concept, который необходимо будет сдать в проверяющую систему. Проверяющая система будет запускать ваш PoC и тестировать, что бинарный пакет gtkvnc, скомпилированный с AddressSanitizer выдаёт типичную для ASAN-a ошибку. Если уязвимость, которую вы нашли не триггерит ASAN, но является уязвимостью (например это ошибка неинициализированной памяти, которую клиент удалённо может считать), то пишите в телеграмм paulchr . Такие уязвимость тоже буду засчитаны. &lt;br /&gt;
&lt;br /&gt;
Прежде, чем посылать эксплоит на сервер рекомендуется убедиться, что вы можете получить ошибку локально, подключившись при помощи клиента GtkVNC, который скомпилирован с библиотекой ASAN. После того как вы убедились в этом, посылайте ваш PoC на сервер. Для этого надо зарегистрироваться на нём, выбрать &amp;quot;Targets&amp;quot; -&amp;gt; &amp;quot;GtkVNC&amp;quot; и загрузить скрипт на сервер. Запускаться он будет через ./poc, так что не забудьте шабанг. &lt;br /&gt;
&lt;br /&gt;
Если PoC успешно пройдёт проверку, то он будет переведён из состояния &amp;quot;in progress&amp;quot; в состояние &amp;quot;success&amp;quot;, иначе он перейдёт в состояние &amp;quot;failed&amp;quot;. Таймаут работы — одна минута, но если вашему скрипту нужно больше времени на работу, чтобы стриггерить уязвимость, так как он, например, посылает много данных, то это поправимо (пишите в телеграмм). Если после загрузки файла на сервер ваш PoC завис в состоянии &amp;quot;in progreess&amp;quot;, &amp;quot;created&amp;quot; или &amp;quot;internal error&amp;quot;, то пишите в телеграмм, скорее всего что-то сломалось и я постараюсь это почитать как только так сразу. Система тестируется на людях в первый раз.&lt;br /&gt;
&lt;br /&gt;
Если ваш PoC перешёл в состояние success, то поздравляю, вы стриггерили уязвимость, но это не конец. Для успешного завершения упражнения Вам необходимо написать репорт в проверяющую систему где вы опишете подробно насколько это возможно уязвимость и последствия для программы, к которым она приводит. Описание отправляется на ревью (состояние &amp;quot;on review&amp;quot;) и может быть отклонено администраторами системы, если репорт был плохо написан. Примеры таких возможных случаев: причина уязвимости была неверно истолкована или непонятно изложена, импакт данной уязвимости был определён неверно, ваш PoC написан не достаточно понятно или обфусцирован или был загружен бинарный исполняемый файл. В таком случае Ваш submission отправляется в состояние &amp;quot;rejected&amp;quot;. Если Вы первым смогли стриггерить  данную уязвимость, но плохо написали репорт, и человек после Вас получил успешный статус &amp;quot;success&amp;quot;, то он будет считаться первым успешно выполнившим задание, а следовательно, будет претендовать на получение идентификатора CVE, даже если Вы потом успешно заново сдали данную уязвимость.&lt;br /&gt;
&lt;br /&gt;
В окружении в котором будет запускаться ваш PoC есть питон3 и библиотека pwntools. [https://gist.github.com/PaulCher/d86d4db6bba67034e1c4de69e9edafd7 Подробнее об устройстве PoC контейнере]&lt;br /&gt;
&lt;br /&gt;
Делиться информацией о найденных уязвимостях ни с кем  категорически нельзя до конца задания!&lt;br /&gt;
&lt;br /&gt;
=== Вспомогательные материалы ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/google/AFL/ AFL]&lt;br /&gt;
* [https://github.com/google/AFL/blob/master/docs/technical_details.txt AFL technical_details.txt]&lt;br /&gt;
* [https://llvm.org/docs/LibFuzzer.html Базовая справка по libFuzzer]&lt;br /&gt;
* [https://github.com/Dor1s/libfuzzer-workshop Хороший воркшоп про libFuzzer]&lt;br /&gt;
* [https://github.com/google/sanitizers/wiki/AddressSanitizer Документация AddressSanitizer]&lt;br /&gt;
* [https://github.com/llvm-mirror/compiler-rt/blob/master/test/fuzzer/AbsNegAndConstant64Test.cpp Пример интересного теста из libFuzzer (да, он и такое умеет)]&lt;br /&gt;
* [https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/ Пример фаззинга реального приложения от и до]&lt;br /&gt;
* [https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md libfuzzer tutorial]&lt;br /&gt;
&lt;br /&gt;
== Второй семинар ==&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=472</id>
		<title>Дополнительные главы практической безопасности (2021)/Домашнее задание по фаззингу</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=472"/>
		<updated>2021-04-08T20:40:49Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: /* Задача */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Домашнее задание по фаззингу =&lt;br /&gt;
&lt;br /&gt;
== Первый семинар ==&lt;br /&gt;
&lt;br /&gt;
=== Задача ===&lt;br /&gt;
&lt;br /&gt;
http://fuzzing.tasks.course.secsem.ru/&lt;br /&gt;
&lt;br /&gt;
На первом семинаре мы с вами говорили о том, что CTF задачи на бинарную эксплуатацию довольно часто развивают не те навыки, которые востребованы в реальной жизни. Данная задача направлена на развитие ваших навыков автоматизации поиска уязвимостей, диагностики ошибок и написания репортов по найдённым уязвимостям. Для выполнения задачи вам будет предложено искать реальные уязвимости в реальном продукте при помощи фаззинга.&lt;br /&gt;
&lt;br /&gt;
Исследуемый продукт: GtkVNC — клиент для приложений доступа к удалённого экрану, которые используют протокол RFB. [https://tools.ietf.org/html/rfc6143 RFC на протокол]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы начать искать уязвимости [https://gist.github.com/PaulCher/d4ed9df3e04e0777198538cd36c79a4c достаточно сделать это...]&lt;br /&gt;
&lt;br /&gt;
Правила игры:&lt;br /&gt;
Чем больше уязвимостей Вы найдёте в проекте — тем лучше. &lt;br /&gt;
Сколько уязвимостей — неизвестно, но они есть. &lt;br /&gt;
Если Вы — первый человек, кто нашёл уязвимость данного типа, то мы вместе непублично репортим уязвимость вендору и регистрируем на Вас идентификатор CVE.&lt;br /&gt;
Уязвимости, которые приводят к возможности получения удалённого доступа на клиенте оцениваются выше, чем уязвимости, которые приводят к падению клиента (RCE круче, чем DoS). &lt;br /&gt;
Уязвимости искать руками тоже можно не используя фаззинг, это не будет контролироваться.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы подтвердить, что вы действительно нашли уязвимость вам необходимо будет написать минимальный Proof-of-Concept, который необходимо будет сдать в проверяющую систему. Проверяющая система будет запускать ваш PoC и тестировать, что бинарный пакет gtkvnc, скомпилированный с AddressSanitizer выдаёт типичную для ASAN-a ошибку. Если уязвимость, которую вы нашли не триггерит ASAN, но является уязвимостью (например это ошибка неинициализированной памяти, которую клиент удалённо может считать), то пишите в телеграмм paulchr . Такие уязвимость тоже буду засчитаны. &lt;br /&gt;
&lt;br /&gt;
Прежде, чем посылать эксплоит на сервер рекомендуется убедиться, что вы можете получить ошибку локально, подключившись при помощи клиента GtkVNC, который скомпилирован с библиотекой ASAN. После того как вы убедились в этом, посылайте ваш PoC на сервер. Для этого надо зарегистрироваться на нём, выбрать &amp;quot;Targets&amp;quot; -&amp;gt; &amp;quot;GtkVNC&amp;quot; и загрузить скрипт на сервер. Запускаться он будет через ./poc, так что не забудьте шабанг. &lt;br /&gt;
&lt;br /&gt;
Если PoC успешно пройдёт проверку, то он будет переведён из состояния &amp;quot;in progress&amp;quot; в состояние &amp;quot;success&amp;quot;, иначе он перейдёт в состояние &amp;quot;failed&amp;quot;. Таймаут работы — одна минута, но если вашему скрипту нужно больше времени на работу, чтобы стриггерить уязвимость, так как он, например, посылает много данных, то это поправимо (пишите в телеграмм). Если после загрузки файла на сервер ваш PoC завис в состоянии &amp;quot;in progreess&amp;quot;, &amp;quot;created&amp;quot; или &amp;quot;internal error&amp;quot;, то пишите в телеграмм, скорее всего что-то сломалось и я постараюсь это почитать как только так сразу. Система тестируется на людях в первый раз.&lt;br /&gt;
&lt;br /&gt;
Если ваш PoC перешёл в состояние success, то поздравляю, вы стриггерили уязвимость, но это не конец. Для успешного завершения упражнения Вам необходимо написать репорт в проверяющую систему где вы опишете подробно насколько это возможно уязвимость и последствия для программы, к которым она приводит. Описание отправляется на ревью (состояние &amp;quot;on review&amp;quot;) и может быть отклонено администраторами системы, если репорт был плохо написан. Примеры таких возможных случаев: причина уязвимости была неверно истолкована или непонятно изложена, импакт данной уязвимости был определён неверно, ваш PoC написан не достаточно понятно или обфусцирован или был загружен бинарный исполняемый файл. В таком случае Ваш submission отправляется в состояние &amp;quot;rejected&amp;quot;. Если Вы первым смогли стриггерить  данную уязвимость, но плохо написали репорт, и человек после Вас получил успешный статус &amp;quot;success&amp;quot;, то он будет считаться первым успешно выполнившим задание, а следовательно, будет претендовать на получение идентификатора CVE, даже если Вы потом успешно заново сдали данную уязвимость.&lt;br /&gt;
&lt;br /&gt;
В окружении в котором будет запускаться ваш PoC есть питон3 и библиотека pwntools. [https://gist.github.com/PaulCher/d86d4db6bba67034e1c4de69e9edafd7 Подробнее об устройстве PoC контейнере]&lt;br /&gt;
&lt;br /&gt;
Делиться информацией о найденных уязвимостях ни с кем  категорически нельзя до конца задания!&lt;br /&gt;
&lt;br /&gt;
=== Вспомогательные материалы ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/google/AFL/ AFL]&lt;br /&gt;
* [https://github.com/google/AFL/blob/master/docs/technical_details.txt AFL technical_details.txt]&lt;br /&gt;
* [https://llvm.org/docs/LibFuzzer.html Базовая справка по libFuzzer]&lt;br /&gt;
* [https://github.com/Dor1s/libfuzzer-workshop Хороший воркшоп про libFuzzer]&lt;br /&gt;
* [https://github.com/google/sanitizers/wiki/AddressSanitizer Документация AddressSanitizer]&lt;br /&gt;
* [https://github.com/llvm-mirror/compiler-rt/blob/master/test/fuzzer/AbsNegAndConstant64Test.cpp Пример интересного теста из libFuzzer (да, он и такое умеет)]&lt;br /&gt;
* [https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/ Пример фаззинга реального приложения от и до]&lt;br /&gt;
&lt;br /&gt;
== Второй семинар ==&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=469</id>
		<title>Дополнительные главы практической безопасности (2021)/Домашнее задание по фаззингу</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D1%8B_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_(2021)/%D0%94%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B5%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D1%84%D0%B0%D0%B7%D0%B7%D0%B8%D0%BD%D0%B3%D1%83&amp;diff=469"/>
		<updated>2021-04-07T20:50:20Z</updated>

		<summary type="html">&lt;p&gt;Paulchr: Новая страница: «= Домашнее задание по фаззингу =  == Первый семинар ==  === Задача ===  === Вспомогательные матер…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Домашнее задание по фаззингу =&lt;br /&gt;
&lt;br /&gt;
== Первый семинар ==&lt;br /&gt;
&lt;br /&gt;
=== Задача ===&lt;br /&gt;
&lt;br /&gt;
=== Вспомогательные материалы ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/google/AFL/ AFL]&lt;br /&gt;
* [https://github.com/google/AFL/blob/master/docs/technical_details.txt AFL technical_details.txt]&lt;br /&gt;
* [https://llvm.org/docs/LibFuzzer.html Базовая справка по libFuzzer]&lt;br /&gt;
* [https://github.com/Dor1s/libfuzzer-workshop Хороший воркшоп про libFuzzer]&lt;br /&gt;
* [https://github.com/google/sanitizers/wiki/AddressSanitizer Документация AddressSanitizer]&lt;br /&gt;
* [https://github.com/llvm-mirror/compiler-rt/blob/master/test/fuzzer/AbsNegAndConstant64Test.cpp Пример интересного теста из libFuzzer (да, он и такое умеет)]&lt;br /&gt;
* [https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/ Пример фаззинга реального приложения от и до]&lt;br /&gt;
&lt;br /&gt;
== Второй семинар ==&lt;/div&gt;</summary>
		<author><name>Paulchr</name></author>
	</entry>
</feed>