ВОПРОС · Q&A

Как структурировать процесс пентеста? Ищу советы от практиков

9 ответов 1,6 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор вопроса
Всем привет! Я занимаюсь пентестом уже какое-то время: закончил курсы кодеби, прошел не мало "челленджей" на root-me, проводил пентесты реальных сайтов знакомых(с их разрешения). Имею базу по сетям, линукс, ОВАСП топ 10. Проблема в том, что у меня нет четкой структуры пентеста, я обычно начинаю со сканирования, и могу на очень большое время застрять на этом этапе, потому что я могу долго искать открытые порты, искать сервера, эксплоиты к ним. Потом я сильно застреваю на процессе аутентификации, глубоко разбираюсь в устройстве авторизации, опять трачу много времени, и так далее. А потом проверяю разные инъекции например, xss, или sql(с помощью sqlmap) ищу другие потенциальные места для атаки. Честно, мне кажется, что я делаю это неэффективно, и будь у меня четкий workflow, то я бы смог сэкономить кучу времени и сделать пентест более эффективным. Поэтому хотел спросить у практиков:

1) Как вы организовываете процесс?
2) какие инструменты вы используете на каждом этапе? или какие скрипты
3) Ведете ли вы заметки во время пентеста для себя в условный Obsidian?
4) Какие именно уязвимости вы проверяете во время пентеста(не стандартные idor, старые сервера с эксплоитами)? есть ли такие уязвимости, которые бывают у большого количества сайтов, но о них часто забывают?

Буду благодарен за любой ответ!
 
  • Нравится
Реакции: Сергей Попов
1
Привет. Имхо, если не хочется застревать надолго в каких-то местах, то придется ставить себе рамки.
Например, ты взял в работу сайт на площадке ББ. Представь, что этот сайт на тест тебе отдал Заказчик и ждет от тебя отчет через месяц, в противном случае получишь неустойку.
Теперь отталкивайся от имеющегося у тебя времени. За это время тебе надо выполнить все этапы по методологии и написать отчет (в котором будут описаны все найденные уязвимости, посчитаны их cvss, описаны шаги их воспроизведения и даны рекомендации по их устранению).
Ковырять приложение, не имея временных рамок, можно бесконечно долго и это может быть малопродуктивным.
Не забывай отдыхать.
Насчет инструментов и скриптов не отвечу, так как все они известны, никаких секретных инструментов нет.
Насчет заметок - однозначно надо вести по каждому проекту, можно прям буквально записывать по ходу дела, что уже выполнено, какие язвы или недостатки найдены и накидывать план дальнейших действий в зависимости от контекста.
Насчет того, какие уязвимости проверяете - любые. Следуй методологии и всё, каких-то особенных уязвимостей нет.
 
  • Нравится
Реакции: UmarTilekov
1
Привет. Имхо, если не хочется застревать надолго в каких-то местах, то придется ставить себе рамки.
Например, ты взял в работу сайт на площадке ББ. Представь, что этот сайт на тест тебе отдал Заказчик и ждет от тебя отчет через месяц, в противном случае получишь неустойку.
Теперь отталкивайся от имеющегося у тебя времени. За это время тебе надо выполнить все этапы по методологии и написать отчет (в котором будут описаны все найденные уязвимости, посчитаны их cvss, описаны шаги их воспроизведения и даны рекомендации по их устранению).
Ковырять приложение, не имея временных рамок, можно бесконечно долго и это может быть малопродуктивным.
Не забывай отдыхать.
Насчет инструментов и скриптов не отвечу, так как все они известны, никаких секретных инструментов нет.
Насчет заметок - однозначно надо вести по каждому проекту, можно прям буквально записывать по ходу дела, что уже выполнено, какие язвы или недостатки найдены и накидывать план дальнейших действий в зависимости от контекста.
Насчет того, какие уязвимости проверяете - любые. Следуй методологии и всё, каких-то особенных уязвимостей нет.
Спасибо за ответ!
Да, наверное, мне надо ставить временные рамки, а то я могу часами на пролет пытаться найти уязвимость в серверах сайта/авторизации. Но хочу задать встречный вопрос - сколько времени Вы тратите в среднем чтобы найти какую-то уязвимость в ББ? Часто ли вы находите? Просто лично я за несколько ББ программ нашел всего-лишь одну уязвимость уровня low, и то это скорее вектор атаки DoS/DDoS, и то ее исправили без моего репорта. Если находили, то какие именно?
По поводу инструментов и скриптов. Например, я сам писал скрипт-сканер, который прогоняет сайт через: whatweb, httpx, katana, nmap, nikto, subfinder, gau, nuclei, dirsearch. Хоть я и понимаю, что нужно самому запускать некоторые сайты, за 15 минут это мне дает неплохое понимание структуры сайта. Вот я и спрашивал про подобные скрипты - есть ли у Вас подобные наработки, например, скрипт-автоматизация xss(наподобие sqlmap) и тому подобные?
Насчет инструментов. Относительно недавно я узнал про обход прокси сервера(origin IP discovery) с помощью shodan/censys(osint разведке) есть ли еще подобные инструменты/способы, которые могут помочь при пентесте, не считая самых известных(nmap, nuclei, sqlmap, burpsuite)?
Еще насчет заметок. Я имел ввиду заметки каждого своего действия, например, вот моя заметка при одном из первых моих пентестов сайта(как оказалось, это был макет)

18:40 - был запущен скрипт, после чего пошел ознакамливаться с сайтом
19:00 - первое ознакомление с сайтом, проверка пары xss инъекций, перерыв
19: 05 - продолжаю работу
19:07 - анализ скрипта сканирования
19:42 - оформление отчета
19:42-19:50 - доказательство уязвимости clickjaking. Уязвимость доказана
19:50 - перерыв
20:15 - продолжение
20:20 - анализ вывода katana, начало активного тестирования сайта
20:25 - анализ /profile, попытка idor
20:30 - idor невозможен, всего 1 пользователь
Вывод - проект сырой, макет

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

Часто ли вы находите?
Почти всегда что-то есть в отчет (но для ББ такое не всегда прокатит)

Просто лично я за несколько ББ программ нашел всего-лишь одну уязвимость уровня low, и то это скорее вектор атаки DoS/DDoS, и то ее исправили без моего репорта.
Это нормально

я сам писал скрипт-сканер, который прогоняет сайт через: whatweb, httpx, katana, nmap, nikto, subfinder, gau, nuclei, dirsearch
не знаю, кому как, но я предпочитаю каждый из таких инструментов использовать по отдельности. Если нужен комбайн, то их и так полно, но мне лично не нравятся.

есть ли у Вас подобные наработки, например, скрипт-автоматизация xss(наподобие sqlmap) и тому подобные?
нет, для этого тоже есть инструменты, как минимум в burp intruder (или turbo intruder - вот что действительно рекомендую освоить) можно использовать соответствующий словарь (например из seclists), хоть для xss, хоть для sqli, ssti и тд. Если точек входа немного, можно и руками поработать.


Относительно недавно я узнал про обход прокси сервера(origin IP discovery) с помощью shodan/censys(osint разведке) есть ли еще подобные инструменты
и этих пока достаточно, не упарывайся в количество инструментов

стоит ли вести подобные отчеты вместе с официальным отчетом об уязвимостях или нет?
прям такой подробный отчет считаю избыточным ) Зачем туда писать "перерыв", "продолжаю работу" и тд. Если так удобней, то ок, но кмк - это писанина ради писанины.

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


Почти всегда что-то есть в отчет (но для ББ такое не всегда прокатит)


Это нормально


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


нет, для этого тоже есть инструменты, как минимум в burp intruder (или turbo intruder - вот что действительно рекомендую освоить) можно использовать соответствующий словарь (например из seclists), хоть для xss, хоть для sqli, ssti и тд. Если точек входа немного, можно и руками поработать.



и этих пока достаточно, не упарывайся в количество инструментов


прям такой подробный отчет считаю избыточным ) Зачем туда писать "перерыв", "продолжаю работу" и тд. Если так удобней, то ок, но кмк - это писанина ради писанины.

Если нашел что-то, что тебя заинтересовало, что может быть потенциально интересно, то записал, чтоб не забыть потом. Можно и заскринить сразу.
Мне думается, что записывать надо то, что потом тебе пригодится, а не все подряд. Но возможно по началу так удобнее, дальше сам поймешь, как лучше. Я тоже так раньше делал.
Спасибо большое за совет с turbo intruder, посмотрел в интернете, хороший аналог burp intruder, учитывая, что за burp suite нужно платить 499$/год, чтобы получить intruder без ограничений, обязательно скачаю. Хотел у Вас спросить насчет того, как опытный пентестер находит уязвимости в проектах? За счет чего? Просто мне интересно, имеет ли здесь важную роль факт того, что опытный пентестер работал со многими стеками технологий, и, когда он ознакамливается с сайтом, сразу понимает, где потенциально уязвимые места этого стека, которые могут быть неочевидны начинающим пентестерам/разработчикам? Есть ли у Вас такое "видение" сайта? И чем отличается опытный пентестер от новичка?
 
Спасибо большое за совет с turbo intruder, посмотрел в интернете, хороший аналог burp intruder, учитывая, что за burp suite нужно платить 499$/год, чтобы получить intruder без ограничений, обязательно скачаю. Хотел у Вас спросить насчет того, как опытный пентестер находит уязвимости в проектах? За счет чего? Просто мне интересно, имеет ли здесь важную роль факт того, что опытный пентестер работал со многими стеками технологий, и, когда он ознакамливается с сайтом, сразу понимает, где потенциально уязвимые места этого стека, которые могут быть неочевидны начинающим пентестерам/разработчикам? Есть ли у Вас такое "видение" сайта? И чем отличается опытный пентестер от новичка?
У Pwn3rzs есть кряки для обучения пойдёт.
 
как опытный пентестер находит уязвимости в проектах?
Также, как и не опытный ) Мой совет - просто бери сайт (из ББ, потому что его можно) и тестируй по методологии.

Сначала иди по методологии OWASP:
Когда дойдешь до чего-то, где не хватает инфы из WSTG, посмотри, например, тут:
тут ты найдешь более подробные варианты.
Это то, что касается вэба, в основном.

Еще полезный для тебя сайт:
тут не только веб, но и многое другое.

--
Опыт несомненно имеет роль, вот и набирай его. И нет такого (во всяком случае у меня), что сразу понятно, где тут дыра. Надо в любом случае исследовать, делать рутинную работу, типа перебора директорий и файлов, имен и значений параметров, заголовков и тд. Просто со временем ты поймешь, где надо перебирать файлы, а где не надо. Где надо перебирать файлы с этими расширениями, а где с другими. И так далее.

В общем если у тебя сейчас не получается - это нормально. Иногда и у опытных не получается.
Меньше рефлексируй, больше делай. Если что не понятно конкретно по теме, например что-то в SQLi не получается, пиши на форум, кто-то поможет, возможно. А переживания на счет того, что кто-то опытный знает волшебные скрипты - оставь на потом )

UPD: ко мне можно на ты
 
Последнее редактирование:
  • Нравится
  • Огонь
Реакции: f22 и R4ssv3t
1
Благодарю тебя еще раз за советы! Просто это то, что мне и нужно было - четкое понимание того, как развиваться и как проводить сам пентест с понятной структурой. Попробую по этой методологии строго по времени потестировать ББ программы. Единственное, еще хочу тебя спросить: имеет ли смысл ознакамливаться с другими уязвимостями, пока у меня не отработана на автомате методология owasp wstg? А то я начал изучать инструмент turbo intruder, и заметил там скрипты для эксплуатации уязвимости http request smuggler, и вот стоит ли изучать подобные уязвимости или лучше отрефлексировать то что есть?
 
1) Как вы организовываете процесс?
2) какие инструменты вы используете на каждом этапе? или какие скрипты
3) Ведете ли вы заметки во время пентеста для себя в условный Obsidian?
4) Какие именно уязвимости вы проверяете во время пентеста(не стандартные idor, старые сервера с эксплоитами)? есть ли такие уязвимости, которые бывают у большого количества сайтов, но о них часто забывают?
Расскажу как это работает у меня.
1) Процесс разбивается на стадии: пассивная разведка -> активная разведка -> тестирование -> ??? -> профит!!!
Во время разведки как раз и происходит 80% всей работы, и после неё ты точно знаешь во что тыкаться. Если не знаешь куда тыкаться, то значит этап не окончен.
«Если ты знаешь цель и знаешь инструментарий, тебе не страшны сто пентестов. Если ты знаешь инструментарий, но не знаешь цель, за каждую известную уязвимость тебя ждёт провал в эксплуатации. Если ты не знаешь ни инструментария, ни цели, ты будешь сидеть и тупить в белые буковки на черном фоне.»
SunZее или кто-то такой сказал.

2) Шодан, дирб/гобустер (зависит только от настроения), спайдерфут, гирдра, мутул и экзифтул для медиа, бурп, нмап, неткат, скулмап, никто, впскан (лол). Обычно большего не требуется.

3) Заметки это обязательная часть вообще всей работы. Я использую для заметок zim (рекомендую) и мальтего для построения карт и графов (забивать гвозди микроскопом я всегда любил, и вам советую). И более того, потом очень удобно закинуть блокнот зим в иишку со словами "сделай из этого нормальный отчет и убери все матюги".

4) Вот тут начинается процесс сборки урожая, так сказать. Пошерстить эксплоитдб, повтыкать полиглоты во все возможные поля, скачать и потыкать в исходники, если такие имеются. Побрутить формочки и фтп худрой. При правильном проведении разведки, к этому моменту уже не остается вопросов "а че тут ваще?", остается только чистой воды "А что если?".

А еще очень рекомендую завести себе чеклист, и тыкать по нему каждый раз, даже если у тебя отличная память.
Ну и конечно же, если ты где-то люто затупил — всегда можно спросить совета у коллег в чатиках или на форуме, чаще всего тебе помогут.
Надеюсь что и я хоть немного помог.
 
Процесс разбивается на стадии: пассивная разведка -> активная разведка -> тестирование -> ??? -> профит!!!
Во время разведки как раз и происходит 80% всей работы, и после неё ты точно знаешь во что тыкаться. Если не знаешь куда тыкаться, то значит этап не окончен.
Да, я тоже слышал подобное мнение, что большая часть времени уходит на разведку: изучение серверов, строения и логики сайта, а уже потом атака. Я делал так: разведка с помощью сканеров, например, nmap, cencys, nuclei, потом уже тестирование логики: первым делом ознакамливаюсь со страницей регистрации, пробую разные инъекции, потом пытаюсь найти IDOR, затем продолжаю уже после регистрации искать формы ввода, потенциальные векторы атаки, но на практике получалось так, что я очень много времени на сканирование/idor, что я банально уставал, то есть я мог часа 2 просидеть за поиском сертификатов, пытаясь найти оригинальный айпи адрес, спрятанный за прокси, очень много времени сидеть за subfinder и поиском поддоменов, потом мог столько же времени начать с нмапом искать открытые порты и, если находил зацепку, мог столько же времени пытаться найти эксплоит, например, на одном сайте я нашел сервер apache 2.4.61, к которому есть эксплоит cve 40725 - заключается вроде в том, что при некоторой конфигурации сайт может отдать изначальный код скачиваемой страницы, я пытался в этом разобраться, и, в итоге cловил дизмотивацию, потому что очень много времени потратил на какую то фигню с нулевым выхлопом, так ничего и не найдя. Поэтому я здесь и написал на форуме с просьбой дать советы с тайм менеджментом и инструментами, чтобы больше не попадать в подобные ситуации. Так что большое спасибо всем за рекомендации, я обязательно буду применять их на практике
 

Ещё по теме