Обложка канала

Кавычка

9725 @webpwn

Ломать - не строить

Кавычка

4 года назад
Открыть в
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-запроса >