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¶m2=test&...¶m500=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)]()> |
|