• XSS.stack #1 – первый литературный журнал от юзеров форума

Онлайн брутфорс форм логин+пароль - есть ли в нём вообще смысл на практике?

zdestuta

(L1) cache
Пользователь
Регистрация
04.06.2024
Сообщения
749
Реакции
373
Если с оффлайн брутом WPA2 хэндшейков на GPU или хэшей добытых как-то из БД сайта чтобы зайти админом всё понятно - смысл точно есть! Ну во всяком случае у меня были положительные результаты и много раз.
Аналогично с фаззингом ffuf по seclists онлайн - часто находит что-то ну как минимум интересное.

То вот с онлайн брутом форм паролей на сайтах вот сколько ни пользовал (обычно с rockyou.txt каким-нибудь) - ни разу ничего не подбиралось! :)
И речь не идёт о сайтах с защитой от брута, нет - речь про самые простые сайты, на которые админам даже как правило похер (они слов "посмотри логи" даже не знают таких, речь про таких "админов").
Притом что локально я поднимаю тот же энвайрнмент и валидирую как оно брутить будет - и оно рил брутит (ну я один из паролей в известный ставлю чтобы детект был, разумеется), то есть не вслепую.
Но онлайн оно конечно же не в локалке, поэтому тот же rockyou.txt на ~14млн паролей даже по 100rps это ну прям не быстро, а выставить если больше, то так таргет можно "положить" :)

Я понимаю что это "почти философский вопрос", но тем не менее он не даёт мне покоя...

Может быть я что-то не так делаю и кто-то тут успешно брутит (формы на сайта, тем же вот Nuclei это делать влёгкуюну всмысле техничеси шаблон сам) и... даже получается??? :)
Поделитесь тут может "историями успеха" и как грамотно словарь паролей может составить под таргет?
 
Брутил пару раз админки через бурп с вордлистом в миллион паролей. Результат нулевой. Но ЧСХ на некоторых бразильских сайтах удавалось заходить в админки вручную с логин:пассом teste:teste.
Короче какой вывод? Надо пробовать парсить с Ценсиса таргеты, причем крупные, и запускать какой-то автоматизированный подбор на список из 1000 паролей + 2-3 логинов и смотреть будут ли гуды.

Но вот что по настоящему полезно, так это находить булеан бейзд скули в авторизациях, с помощью них можно авторизоваться без пароля (т.е. можно не платить лишние 50 баксов за дехеш). К примеру имеем следующий булеан бейзд: asassaas' OR 1=1--. Для того чтобы попасть в админку достаточно просто подобрать логин, который уже существует, т.е. условный admin' OR 1=1-- и вуаля - вы в админке!
 
Последнее редактирование:
Брутил пару раз админки через бурп с вордлистом в миллион паролей. Результат нулевой. Но ЧСХ на некоторых бразильских сайтах удавалось заходить в админки вручную с логин:пассом teste:teste.
Короче какой вывод? Надо пробовать парсить с Ценсиса таргеты, причем крупные, и запускать какой-то автоматизированный подбор на список из 1000 паролей + 2-3 логинов и смотреть будут ли гуды.

Но вот что по настоящему полезно, так это находить булеан бейзд скули в авторизациях, с помощью них можно авторизоваться без пароля (т.е. можно не платить лишние 50 баксов за дехеш). К примеру имеем следующий булеан бейзд: asassaas' OR 1=1--. Для того чтобы попасть в админку достаточно просто подобрать логин, который уже существует, т.е. условный admin' OR 1=1-- и вуаля - вы в админке!
впервые слышу про булеанбэйзд и вход без пароля, статью бы)))
 
впервые слышу про булеанбэйзд и вход без пароля, статью бы)))
Сделаю, брат, только время бы найти в своем графике. Но постараюсь до конца месяца написать с живым примером.
 
впервые слышу про булеанбэйзд и вход без пароля, статью бы)))
Но, если в кратце, принцип достаточно прост, но следует начать с азов. Что такое булеан бейзд и как он определяется? В кратце, у тебя есть стандартный ответ сервера: "Пароль не правильный". Но стоит нам только пошаманить с самим значением login=admin' OR 1=1--, то есть шанс что сервер выдаст другой ответ. К примеру, просто пустую страницу, или код 200. В этом случаем мы воспринимаем ответ, как true, а прошлый ответ, а именно "Пароль не найден" как false. Это так, краткий экскурс для тех кто этого не знал. Так что же нам с этим делать? Все очень просто, практически в каждой авторизации имеем стандартное квери что-то в духе
Код:
SELECT id, username, role
FROM users
WHERE username = 'your_username' AND password = 'your_password';
Это по факту булеан констуркция. Т.е. сервер проверяет совпадает ли логин и пароль, но стоит нам подставить в username логическое выражение OR 1=1-- или '-- и вуаля! Проверка пароля закомментирована, а значит сервер даст нам зайти без него.
Код:
SELECT id, username, role
FROM users
WHERE username = 'your_username' OR 1=1--' AND password = 'your_password';
 
обычно с rockyou.txt каким-нибудь
Потому что rockyou годится только для цтфок всяких, для всего остального он чуть менее чем бесполезен
Нужен норм словарь, а так же норм инструмент для брута формочек, например hydra или Intruder из Pro версии бурпа

Напомню что rockyou был взломан в 2009, и с тех пор много воды утекло, пароли все таки стали чутоооочку лучше, плюс сервис был англоязычный
 
впервые слышу про булеанбэйзд и вход без пароля, статью бы)))
Дык этож "классика" ну типа на бэке:

$userdata = $db->query("SELECT * FROM users WHERE login='" . $db->escape($REQUEST['login']) . "' AND password='" . $REQUEST['password') . "'");
Ни в коем случае так не пишите!
Этот пример выше прям пример как НЕ надо писать бэк - вообще никогда не делайте конкатенацию с экранированием - это 100% способ где-то облажаться не сейчас так потом, как регулярно это делают WP и OpenCart или их плагины!
Всегда юзайте prepared statements - это 100% защита от SQLi, при prepared statements SQLi - невозможны в принципе по сути.
В prepared statements - план запроса летит отдельно, а данные тоже отдельно летят - в разных SQL пакетах, ну и различаются и соответствено интерпретируются СУБД безошибочно.
Плюс если тип запроса один, а данные к нему много и разные - prepared statemets ещё и ускоряют работу СУБД, иногда выигрыш в десятки раз!

Я статью даже планирую "Как найти все SQLi в сырках бэка за ~5 минут c помощью ripgrep и регулярок", но времени нет так как SQLi пачками нахожу таким способом и "руки устали уже найденное ломать" тут не до статьи 🙃

Типа без prepared statements школоло сделало, и логин - заэкранировали, а пассворд - типа забыли заэкранировать (ну или функция экранирования - говно, например нерекурсивная) :)

И тогда если в URL передать login.php?user=юзернейм&password=любоеговно' OR 1=1-- , то получится что второе условие AND в SQL запросе тоже станет true (потому и boolean based , что 1=1 это true, а OR как "логическое ИЛИ" говорит "или первое условие true или второе или оба" ) то есть по факту на бэке выполнится вот это:

$userdata = $db->query("SELECT * FROM users WHERE login='юзернейм' AND password='любоеговно' OR 1=1--'");

Ну то есть password='любоеговно' даст false , но далее по SQL коду стоит OR и SQL начнёт и его проверять на true/false и окажетсмя что 1=1 это ж true !
А занчит и всё выражение password='любоеговно' OR 1=1 даст true , потому что false OR true это будет true - не знаю как ещё более подробнее "разжевать" такое, с этого SQLi вообще все начинали учить :)

Мне кажется про такую банальщину статью писать как-то излишне :)

Сейчас таких банальных boolean based почти не встречается в дикой природе, но "почти" это не значит что шанс нулевой ;-)
 
Последнее редактирование:
rockyou годится только для цтфок всяких,
не согласен с его полной бесполезности - я на практике много добытых хэшей юзеров и даже админов именно с помощью хэшката+рокью сломал. но это локально и имея хэши на руках - это же сильно быстрее чем брут веб формы через сеть.
чтобы брутить через сетку нужен spear brute то есть таргетированный, но... как? :)
 
Последнее редактирование:
норм инструмент для брута формочек, например hydra или Intruder из Pro версии бурпа
Чем многопоточный Nuclei хуже (объективно плиз) гидры и burp'a ?
Обычно узкое место тут не локальный пефоманс (кстати у Nuclei в RAM маленький footprint - это найс) а сетевой или ресурсы сервака на том конце (было дело, пару раз давно по глупости и неопытности "клал" серваки ffuf'ом или Nuclei :) ), а он от тулзы малозависим.
Гидра хороша для сервисов обычно, не-HTTP всяких разных там ssh или RDP.
Burp Pro - он платный.
 
Нужен норм словарь,
о дааа!!!! дааа!!!!! вот про это максимально интересно !!!!!
(аж слюна закапала на кнопки! 🤤 )

Откуда норм словарь добывается или как генерится?
Если генерится, то сам принцип и алгоритм генерации и подход, а тулов то дохрена начиная от print'a в bash'e и заканчивая Python :)
Опять же не в теории, а на практике интересно, например даже вот достаточно на уровне: "crunch или CeWL дают лучший выхлоп на рил таргетах (а не на CTF 'синтетике') по факту?"

Не уверен что товарищи из APT снизойдут до того чтобы мне (и всем тут к великой общей радости) "разжевать" принципы и best practices таргетированной генерации... 😔
 
Чем многопоточный Nuclei хуже (объективно плиз) гидры и burp'a ?

Гидра хороша для сервисов обычно, не-HTTP всяких разных там ssh или RDP.
Причем тут нукли и гидра ?

Я тестировал на веб форме именно 4 актуальных на данный момент инструмента (hydra, patator, intruder, medusa)
Самую высокую скорость показала именно гидра.

Нравится рок ю, я не против. Про локальные хеши тут говорить не буду, потому что это небо и земля, на локалке можно и на 150 Гигов себе словарь собрать и брутить сколько душе угодно
Плюс hashcat умеет брутить например прямо из 7z архива и его не надо предварительно распаковывать.
По листам тут индивидуально, например если сервис российский, то часто используется схема русское слов в анг раскладке - добротный (lj,hjnysq) и уже можно сделать некоторые выводы.

Burp Pro - он платный.
Великая проблема :D
 
Вот я наивный спрашиваю про брутфорс, особенно про генерацию словарей небольших и эффективных "заточенных" под компанию, а это етить-колотить аж целая наука оказывается!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх