# Понедельник 35 твитов
Юхуу! Всем привет! Эта неделя будет неделью безопасности :) С вами на связи - @sergeybelove. Я наметил очень много тем, держитесь! (:
9:59Я 2 года занимался безопасностью в американском стартапе (реклама для мобильных устройств) и 3 года работаю в @DSecRU / @erpscan.
10:02В основном занимаюсь атакой, а не защитой. Писал на хабр (habrahabr.ru/users/belove/) и в @XakepRU. Выступаю на конференциях, в РФ и зарубежом
10:05CodeFest (3 раза :3), РИТ++, CEE-SECR, FrontendConf, OWASP (RU & PL), Hack In Paris, ZeroNights и другие. Также одно время багхантил/баунтил
10:09Находил уязвимости в VK, Telegram, Yandex, Google, CloudFlare, Badoo, Digital Ocean и у др. В общем, давайте к делу - конец прошлого года
10:10Я как раз интересовался безопасностью фронта, около JS технологиями и платформами. Поэтому есть что сказать на эту тему.
10:11Твит для ретвита: habrahabr.ru/company/dsec/b… -
статья про (Не)безопасный frontend. Здесь отразил большинство проблем безопасности фронта.
Конечно, основная проблема безопасности frontend - нарушение SOP. Но и с SOP не все так просто, он не всегда зависит от [scheme][host][port]
10:19На эту тему был воркшоп на ZN 2013 - 2013.zeronights.org/includes/docs/… от @kkotowicz (сейчас в Google). Просто полистайте слайды, они самодостаточны.
10:23@jsunderhood @sergeybelove привет. Помню вас по лекции по security в JetBrains, было интересно
Привет, спасибо! Да, было приятно получить отзывы ) dsec.ru/news/press/the…
@jsunderhood @sergeybelove привет. Помню вас по лекции по security в JetBrains, было интересно
10:27
Вкратце: в java applets хост не имеет значения (если ip1 = ip2), IE - порт не учитывается, cookies - могут ставить с поддомена на основной
10:29Вот с куками как раз много подстав. Так, например, на гитхабе были cookie бомбы от @homakov (ставим большую куку, получаем client side DoS)
10:31Или @i_bo0om использовал этот трюк на последнем PHDays bo0om.ru/telegram-love-… для эксплуатации уязвимости в веб-версии телеграмма
10:32Я к чему - нельзя доверять поддомены кому попало. Иногда cookie injection довольно просто находится, когда он нужен, например для XSS.
10:33Соответственно относимся к cookies недоверительно (при обращении из js) и санитайзим значения, если подставляем их в DOM.
10:34Кстати, про термины! Санитайзим - обезопасиваем (энкод в html сущности), эскейпим - ставим \ перед нужными символами (кавычки как пример)
10:37Фильтруем - значит не пропускаем (вообще) или вырезаем какую-то часть входящих данных. Поэтому при работе с юзер контентом мы санитайзим
10:38(речь про XSS). Что пользователь ввел - то и должно получить на экране, но в "безопасном" виде, после санитайзинга. Ничего не режем.
10:38В случае, если юзеру нужно дать HTML и тут же его подставить в DOM - используем github.com/cure53/DOMPuri… от @cure53berlin. Там все в доках.
10:40Тут подсказывают, что с терминологией в ИБ - беда. Санитайзинг/эскейпинг/фильтрация, XSS - уязвимость/атака, и мн. др. Пропустим это)
11:00Вообще, все, что привносит новый веб - и усложняет атаки (например, как CSP), но и расширяет attack surface, такие вещи как postMessage
11:16Но остаются и "смешные" проблемы, например как с window.opener. Который работает по сей день(и даже в ФБ, хоть их shim и срежет при жалобах)
11:54Демка на facebook - facebook.com/sergeybelove/p… (открывать в браузере, кликнуть, выполнит JS во вкладке с FB, origin изолирован)
11:58@jsunderhood как изменился подход к поиску уязвимостей за последние скажем лет 5? Что-то произошло революционное или подходы все те же?
Cтало больше фреимворков, меньше типичных багов (в лоб). Выгоднее (по импакту) искать логические/бизнес баги.
@jsunderhood как изменился подход к поиску уязвимостей за последние скажем лет 5? Что-то произошло революционное или подходы все те же?
12:07
Демка на facebook - facebook.com/sergeybelove/p… (открывать в браузере, кликнуть, выполнит JS во вкладке с FB, origin изолирован)
Ну так, кто-нибудь тестировал? :) Вообще - всегда задавайте вопросы, если возникают по ходу.
Демка на facebook - facebook.com/sergeybelove/p… (открывать в браузере, кликнуть, выполнит JS во вкладке с FB, origin изолирован)
13:25
@jsunderhood ещё не залатали
Они и не будут латать, мол shim если надо - вступится facebook.com/notes/facebook…
@jsunderhood ещё не залатали
13:36
Что-то ответов не так много. Как оно вообще?) Ни комментов, ни результатов клика по ссылке, только один дм) Стоит:
14:20Вы сами в курсе, к чему эта картинка тут :( pic.twitter.com/kF6V8SeRJT
Но вернемся к нашей теме. Или это хорошее трололо, или так и есть - ровно поровну народ хочет и простых вещей и хардкора. Начнем со сложного
21:36Задача: найти значение, которое при клике на "Render" приведет к DOM XSS (например, выполнится alert). URL таска - sergeybelove.ru/exploits/dom_x…
21:42Решение точно есть для браузера Сhrome (чекнул на версии 51). Там только нативный JS. Ведь это аккаунт разработчиков фронтенда!
21:45Вы можете найти вектора в интернетах. Но более интересно понимание решения (оно и простое, и сложное). Твитьте скрины с вектором и алертом
21:48Эту задачу оставлю до утра (пишите хотя бы, если пробовали решать), а завтра на повестке - "JS, вышедший далеко за рамки фронтенда".
21:52@jsunderhood я даже не понял, что нужно сделать:) можно как то поконкретнее описать?)
Есть textarea, там можно ввести html, он отрендерится (<img src=...>). Нужно таким образом исполнить на js alert(1)
@jsunderhood я даже не понял, что нужно сделать:) можно как то поконкретнее описать?)
21:55
Т.е. по факту - обойти санитайзер, у которого есть белый список (в котором нет <script> или onerror/onload событий, для onerror=alert(1) )
21:59# Вторник 20 твитов
Задача: найти значение, которое при клике на "Render" приведет к DOM XSS (например, выполнится alert). URL таска - sergeybelove.ru/exploits/dom_x…
И снова привет! Сегодня много работы, поэтому я напоминаю, что есть таск для решения и 1-ый хинт: name="body"
Задача: найти значение, которое при клике на "Render" приведет к DOM XSS (например, выполнится alert). URL таска - sergeybelove.ru/exploits/dom_x…
14:13
@jsunderhood есть только один способ исполнить js здесь - это записать его в атрибут src. Но и тот не работает, потому что https
Все же решение не инжект в src, а связано с разбором DOM. Публично этот баг упоминался нечасто, но есть презентации
@jsunderhood есть только один способ исполнить js здесь - это записать его в атрибут src. Но и тот не работает, потому что https
15:33
Видно, что первый таск идет сложно. Пока мы не перешли к новой теме - закидываю таск попроще - sergeybelove.ru/exploits/task2 (задача - найти XSS)
15:42Я не писал код для второго таска (и не добавлял сам уязвимостей). Я просто загуглил - codemag.com/article/1301091, взял весь код и развернул.
15:43К слову, сколько уязвимостей допущено копипастом по первым ссылкам из гугла (stackoverflow - тоже идёт в счет). И это еще не server side.
15:44Уверен, с этим таском у вас должно все получится. Ваш ответ - ссылка в reply, перейдя по которой у меня выскочит alert(1) на моем домене :)
15:45(где-то глубоко в душе я уверен, что фронтендерам интересна безопасность их же технологий). Так что точно попробуйте решить второй таск!
15:46К слову - именно такая навигация (как в таске №2) использовалась в Drupal долгое время (в админке). И точно также была уязвима к DOM XSS
15:49XSS - это когда мы можем внедрить произвольный JS. Как пример - внедрить надо alert(1)
16:01А что-нибудь типа микросервисов во фронтэнд не завезли ещё? Хочу сервис из набора SPA. Есть уже решения, Best practices?
/cc @jsunderhood
Ретвичу, чтобы дела шли в гору) это не по безопасности, так что ответ за фолловерами
А что-нибудь типа микросервисов во фронтэнд не завезли ещё? Хочу сервис из набора SPA. Есть уже решения, Best practices?
16:07
/cc @jsunderhood
@jsunderhood Шикарный баг/фича C***! К сожалению сам не додумался, нагуглил. Спасибо!16:18
@jsunderhood первый что-то через DOM Clobbering не могу сделать, то ли дырки залатали уже, то ли я криворукий :(
Мегахинт: да, первый таск решается через clobbering. Часть залатали, но в паблике есть обходы
@jsunderhood первый что-то через DOM Clobbering не могу сделать, то ли дырки залатали уже, то ли я криворукий :(
16:35
Если вы нашли ТУ самую статью, откуда код для таска, то да, оттуда работать не должно )
16:40Поздравляю @eShreder, @PanyaKor и @naxel_ с решением второго таска! И как факт - вы нашли уязвимость в коде, который в топе выдача гугла )
18:11@jsunderhood <form onclick="alert('1');" style="position:absolute;margin:0;width:100px;height:100px;"><input name="attributes"></form>18:13
И @an4ger с решением первого! Атака называется DOM clobbering. Пэйлоад можно было найти здесь - github.com/Microsoft/JSan…
18:14Вкратце - атака на разбор DOM, реализуется за счет использования зарезервированных имен. thespanner.co.uk/2013/05/16/dom… owasp.org/images/a/ae/Ad…
18:17И конечно же slideshare.net/x00mario/in-th… от @0x6D6172696F. Атака мала известна, включая специалистов по web sec. Но 42% просили что-то сложное!
18:19И конечно же slideshare.net/x00mario/in-th… от @0x6D6172696F. Атака мала известна, включая специалистов по web sec. Но 42% просили что-то сложное!
Правда что-то со SlideShare, но точно можно выкачать PDF'ку
И конечно же slideshare.net/x00mario/in-th… от @0x6D6172696F. Атака мала известна, включая специалистов по web sec. Но 42% просили что-то сложное!
18:22
@an4ger @jsunderhood черт! круто. почитал ссылки. так сразу работает <form><img onerror="alert(1)" src=""><img name="childNodes"></form>21:18
# Среда 1 твит
Не теряйте, я точно расскажу о всем, о чем еще запланировал :) А пока новый челлендж, добейтесь alert(1) везде! escape.alf.nu
14:01# Четверг 44 твита
. @jsunderhood время 01:30: мы вызывали alert как могли! (упоролся) pic.twitter.com/tExx5Xy8ll7:00![]()
Наконец-то могу вернуться к твиттеру (надолго), давайте продолжим тему безопасности. Ранее мы познакомились с уязвимостями фронтенда (хабр)
15:39Что SOP - штука гибкая, код из гайдов - м.б. с уязвимостями и есть разные, интересные сложки атаки на разбор DOM.
15:40Многие попробовали себя в качестве пентестеров (поискать DOM XSS) и у некоторых это вышло, отрадно! Едем к следующей теме.
15:41JS - язык настоящего и будущего и я действительно так считаю. Фронт, бэк, SmartTV, машины (multimedia), десктопные скрипты (win/linux)
15:43расширения для браузеров и мн. другое, все на JS. Из этого я также занимался безопасностью расширений и виджетов и приложений для SmartTV
15:44И эта наша следующая тема. По факту мы имеем тот же JS только с расширенным API (доступ к железку, датчикам, файловой системе и т.п.)
15:45Естественно можно выстрелить себе в ногу при разработке и допустить уязвимость. Только тут импакт уже в разы больше -
15:46мы уже за стандартной песочницей браузера. Начнем с расширений, дело было давно (в 2013) и было интересно. Чтобы не скучали, закину видос :)
15:47Я пользовался расширением Any.DO и при поиске уязвимостей в gmail внезапно нашел в нём xD Demo - youtube.com/watch?v=5Nr-ta…
15:48По факту мы имеем обычную DOM XSS, но в контексте расширения, которое может слать XHR запросы на любые домены(спрашиваются при установке, *)
15:49Но здесь просто full SOP bypass (см. видео). А может быть и выполнение команд ОС (у юзера), статья - blog.kotowicz.net/2012/09/owning…
15:52Поэтому, если вы разрабатываете расширения, смотрите в сторону тех же багов фронта / запрашивайте корректные права и будьте параноиком
15:54SmartTV. С этой темой я выступал на последнем ZeroNights и баги описал в статье - habrahabr.ru/company/dsec/b…
15:55Тут важно понимать, SmartTV - они очень разные и на разных ОС (от кастомных сборок до Tizen и тупо - просто Android'а).
15:56В случае со SmartTV от Samsung - у них своя ОС на базе linux (2008-2014) и Tizen (тоже linux) для новых моделей. Приложения пишутся на JS.
15:58По факту - это SPA + доп API. И в случае приложений для 2008-2014 у вас НЕТ ВОЗМОЖНОСТИ БЕЗОПАСНО хранить данные (OAuth токены, например)
15:59Любое приложение при помощи XHR + схемы file:/// может стащить файл другого приложения, где лежат "секретные" данные. А сколько людей ставят
16:01себе виджеты от "Васяна", в которых вполне может быть подобный бэкдор. Tizen так в руки и не попал, но мне говорили, что фиксили это
16:02Но идем дальше. Я пошел искать настоящие уязвимости. В реальности угрозу несут только DOM XSS (нашел - получил доступ к файловой системе)
16:03И инфолики. Например, в официальном приложении для FB от Samsung я нашел захардкоженные учетки для тестов :) работающие
16:08@jsunderhood разве куки не отдельно от виджетов лежат?
отдельно, но можно прочитать, как и файлы из песочницы (описывал в статье на хабре). Все чекал на реальном TV.
@jsunderhood разве куки не отдельно от виджетов лежат?
16:08
Идем дальше. АВ-ТО-МО-БИЛЬ! И до сюда добрался JS, как пример спека - w3.org/2012/11/web-an…
16:33В рамках данной твиттер-сессии мы не будем вплотную рассматривать этот вопрос, но вкратце: есть API до всяких мультимедиа штук
16:35Но ограничения, как обычно, вводит сам производитель. Мы будем пристально следить за этой темой :)
16:42Очень многое зависит от того, в какую песочницу поместит JS производитель. Неудачная реализация со SmartTV 2008-2014 яркий тому пример.
16:58Но это не освобождает разработчиков от ответственности за код :) Так что будьте в тренде, думайте о безопасности.
17:00Едем дальше, я бы хотел написать про пентесты (анализ защищенности). Формально, бывают разных типов: [white|gray|black]box
17:07Зависит от того, что заказчик предоставляет - всё (исходники и т.п.), дает часть (учетки, что-то еще) и тупо ничего. Например, только url
17:10Отдельно выделим анализ кода (как работу). Ведь исходники могут просто помогать при пентесте, а можно детально анализировать только их.
17:11В последнее время есть тенденция на whitebox и анализ кода. Понимание, что лучше найти дыры до инцидентов - это круто.
17:13А вообще - должна быть дружба между security & developers. Если вы, как разработчики сами имеете сомнения в каком-то функционале - обратите
17:15на него внимание пентестером. Можно что-то говорить спортивность, но пентест на заказ - это ограниченное время и невозможно посмотреть всё.
17:16За определенное время специалистами с таким-то опытом найдутся такие-то уязвимости. Поэтому нет ничего страшного что-нибудь подсказать.
17:17@jsunderhood какие статические анализаторы для js используете?
DOMinator - dominator.mindedsecurity.com + разные плагины для Burp + просто регулярки code.google.com/archive/p/domx…
@jsunderhood какие статические анализаторы для js используете?
17:19
Ладно, будут про пентесты вопросы - пишите :) Возможно, это не так интересно. Поэтому перейдем к вопросу про ... багбаунти! Это так модно :)
17:22(и я догнал тему 4го дня из своего плана). Про это все 1000 раз слышали, когда можно получить деньги за найденные уязвимости.
17:22В реальности, это могут быть easy money (запустил сканер уязвимостей, нашел, оформил тикет, гребешь бабло).
17:24Но чаще всего такое подчищено. В РФ довольно много программ, включая Яндекс, Mail.ru, VK, Badoo и Qiwi.
17:26Среднюю сумму, которую можно получить (за "типичные" баги) - от 5 до 25 тысяч рублей. Критичные - от 30 до ~150
17:27Часть программ управляются тупо через почту, но большая вынесена на площадки - hackerone.com / bugcrowd.com
17:33Там смотрим у кого открыта бб программа, репортим через них же тикет, в случае аппрува - получаем деньги на PayPal. Расценки указны.
17:33Обычно out of scope - флаги для Cookies, security headers (HSTS/XFO/etc), self-xss и подобные штуки. Но если найдете импакт - то платят.
17:34Так, что-то я уже тут много написал, сделаю перерыв :) почитайте ленту, будут вопросы - пишите, поотвечаю и пойдем дальше.
17:35# Воскресенье 36 твитов
Ping! Совсем сложно оказалось на неделе со временем, но за ночь дострочу мысли, идеи, советы и мнения.
21:39Одна из тем, которую хотел затронуть - последние громкие взломы больших компаний. haveibeenpwned.com/PwnedWebsites
21:42И, даавйте исключим из списка "дампы" mail.ru / yandex / etc, они пришли одной волной и были в результате фишинга / слива ботнета, факт
21:43А вот у некоторых действильно слили базу :) И мое мнение, что просто есть проблема в подходе: выстраивать защиту - значить защищаться.
21:45Но защищаться, когда мб тебя и не пытались действительно атаковать - значит сливать деньги в трубу. Да, можно купить крутые железки
21:46Но что толку от них без правильной настройки? А чтобы правильно настроить - надо их проатаковать. Давайте на примерах. Вот корп. фаирволлы
21:48Например, интернета в компании быть не должно ("секретка"). Но всегда не закрывают путь - DNS. DNS резолвится, значит есть прямой путь
21:49Перекидывать данные наружу, да что там - прокидывать шеллы (при социалке удобно). Например, можно через wiki.skullsecurity.org/Dnscat
21:50А внутри сети? С ARP спуфингом научились бороться. Но проводить mitm можно по-разному, и github.com/SpiderLabs/Res… очень помогает в этом
21:52(помните, все тулзы привожу только, конечно же, для ознакомления и в учебных целях)
21:53@jsunderhood не волнуйся, тебя все равно практически никто не понимает
Для того и пишу, чтобы кому ничего непонятно - заинтересовались (полезно), а кто понимает - мб узнали нового :)
@jsunderhood не волнуйся, тебя все равно практически никто не понимает
21:56
Снаружи, обычно, тоже находится путь. Кстати, чтобы чекать банальные штуки я как-то запилил сканер - sergeybelove.ru/one-button-sca… (в одну кнопку)
21:57Тупо вбивайте урл и он делает разные проверки. Обязательно расширю ему базу. Как-то этот сканер нашел реальные баги на wikipedia/yahoo :)
21:58Будут еще утечки, будут сливать базы и не станет "тише", имхо. Чтобы снизить риски - никогда не надо строить защиту без нападения (на себя)
22:00В качестве примера такого тру подхода, в котором я принимал участие - это компания Qiwi. Статья от @isox_xx - journal.ib-bank.ru/post/413
22:02Тру - я конечно же имел ввиду строить защиту, "нападать" на нее, строить дальше, снова "нападать". Сложно придумать лучше.
22:04Кстати, в целом тусовка ИБ (практиков) не очень большая. Это две больших конфы - @phdays и @ZeroNights и небольшие комюнити по городам.
22:07DCG группы (найди в своем городе - defcon.org/html/defcon-gr…), OWASP встречи (Москва), митапы в mail.ru (Москва)
22:10Так же есть CTF тусовки, там тоже обычно встречаются и делают доклады по безопасности. Сейчас это есть почти во всех городах (онсайд).
22:11Поэтому, если надумаете изучать сферу - всегда велком, очень много возможностей, встреч, статей, материалов с конференций и т.п.
22:12А это любому разработчику нужно сделать - хотя бы разобрать базовые/уязвимости атаки. Например, хотя бы, с XSS (если мы говорим про фронт)
22:17Будет хорошо, если будете вникать глубже - например JSONP leaks / CORS / и т.п., что я приводил в статье на Хабре.
22:18Вообще, это большая проблема, что когда собеседуют разработчиков НЕ ЗАДАЮТ вопросов по безопасности. Никаких.
22:19Старший разработчик / тимлид точно может сам понять все базовые атаки. Спрашивайте при приеме на работу / понимаете уровень
22:21@jsunderhood а что еще нужно посмотреть, по фронту?
А я скидывал статью в начале - habrahabr.ru/company/dsec/b…. Более актуального материала пока не находил.
@jsunderhood а что еще нужно посмотреть, по фронту?
22:24
Знаете уровень - будете ставить задачи с этим учетом. Если плохо понимает человек CORS/JSONP/Referer - значит стоит быть аккуратным :)
22:27@jsunderhood помню, в универе написал программу, которая вообще не ломалась никакими данными. У меня не приняли, типа нафиг сложно так писал
Буду банальным, но по универу делать выводы и выбирать подход в тру разработке не надо :) А так да, бывает проблема.
@jsunderhood помню, в универе написал программу, которая вообще не ломалась никакими данными. У меня не приняли, типа нафиг сложно так писал
22:29
Вообще, обычно тут проблемы другие. Если делать безопасно - то это дороже / больше сроки / неудобно юзерам. Поэтому должен быть баланс.
22:31Картинка к теме. Минимальные затраты уже сразу дают резкий рост. С верхним пределом сложно, панацеи нет. pic.twitter.com/k9fHc6iX06
Из чеклиста, что еще оставалось: JS в Security. Например, в reverse engineering - habrahabr.ru/company/dsec/b… (от @evdokimovds )
22:48А также подходит для малвари (скорее в целом - скриптовые языки). Тот же powershell - куча возможностей и не палится антивирусами.
22:49Кстати, все хотел закинуть статью, как через JSONP
serviceWorkers получить постоянную XSS :)
c0nradsc0rner.wordpress.com/2016/06/17/xss…
Подводя итоги хочу сказать, что если вы пропустили мимо тему безопасности, она все равно вас настигнет. Как тот экзамен, который надо сдать.
23:04Поэтому не откладывайте её каждый раз подальше, например как ту кучу непрочитанных закладок в браузере, которые у каждого есть.
23:05Все твиты/ссылки за неделю можно будет найти здесь - jsunderhood.ru/sergeybelove/. Возникнут вопросы - всегда пишите на почту или в твиттер.
23:06Я рад, что была такая необычная возможность поделиться чем-то полезным с сообществом разработчиков. Будьте в безопасности и пока!
23:08# Ссылки
other
- https://habrahabr.ru/users/belove/
- https://habrahabr.ru/company/dsec/blog/259389/
- https://habrahabr.ru/company/dsec/blog/272017/
- https://habrahabr.ru/company/dsec/blog/253309/
- http://2013.zeronights.org/includes/docs/Krzysztof_Kotowicz_-_Hacking_HTML5.pdf
- http://dsec.ru/news/press/the_digital_security_carried_out_a_project_on_security_analysis_for_jetbrains/
- https://bo0om.ru/telegram-love-phdays
- https://github.com/cure53/DOMPurify
- https://github.com/Microsoft/JSanity/issues/7
- https://github.com/SpiderLabs/Responder
- https://www.facebook.com/sergeybelove/posts/10202023285781801
- https://www.facebook.com/notes/facebook-security/link-shim-protecting-the-people-who-use-facebook-from-malicious-urls/10150492832835766
- https://sergeybelove.ru/exploits/dom_xss.html
- https://sergeybelove.ru/exploits/task2
- https://sergeybelove.ru/one-button-scan/
- http://www.codemag.com/article/1301091
- http://www.thespanner.co.uk/2013/05/16/dom-clobbering/
- https://www.owasp.org/images/a/ae/Advanced_XSS.pdf
- http://www.slideshare.net/x00mario/in-the-dom-no-one-will-hear-you-scream
- http://escape.alf.nu/
- https://www.youtube.com/watch?v=5Nr-taiAC6s
- http://blog.kotowicz.net/2012/09/owning-system-through-chrome-extension.html
- https://www.w3.org/2012/11/web-and-automotive/submissions/webautomotive1_submission_31.pdf
- https://dominator.mindedsecurity.com/
- https://code.google.com/archive/p/domxsswiki/wikis/FindingDOMXSS.wiki
- http://hackerone.com/
- https://bugcrowd.com/
- https://haveibeenpwned.com/PwnedWebsites
- https://wiki.skullsecurity.org/Dnscat
- http://journal.ib-bank.ru/post/413
- https://www.defcon.org/html/defcon-groups/dc-groups-index.html
- https://c0nradsc0rner.wordpress.com/2016/06/17/xss-persistence-using-jsonp-and-serviceworkers/
- https://jsunderhood.ru/sergeybelove/