# Какие есть области знаний в веб-пентесте

### Технологии браузеров

Веб-пентест — это взлом веб-приложений. Поэтому необходимо понимать основные технологии, которые используют в индустрии, как и понимать особенности их работы: HTML, JavaScript, HTTP, веб-сокеты, CSS, SOP, CORS, хранилища.

### Разработки серверной части

В идеале — понимать не только основы, но и детали, которые применяют в работе. Знание частностей языков и технологий помогут проще обнаруживать уязвимости.&#x20;

Стоит начать с PHP, фреймворков, систем управления контентом. Дальше можно что пожестче: Java, Python, Node.JS, C#, Golang. Повторимся, главное — знать особенности языков и типовые ошибки, которые могут допустить разработчики.

### Код

Выделили эту область в отдельную категорию. Начинающему пентестеру совсем необязательно уметь писать код. Но всё-таки неплохо, если вы сможете писать на одном скриптовом языке: Python, PHP или JavaScript. Вышка — если умеете на нескольких.

### Бизнес логика

Понимание бизнес-логики и логики работы системы поможет проводить анализ на выявление ошибок. Многие уязвимости связаны именно с ней.

### Сетевые службы

Понимание Proxy, VPN, AD. Для начала не стоит уделять этому сильно внимания, но рано или поздно придется подтянуть знания. Без этого никак.

### Софт

Навыки работы с софтом для аудита и эксплуатации уязвимостей: SQLMap, Nmap, Metasploit, Burp Suite. Это база, инструментов намного больше.

### Linux

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

### Windows Server

Здесь помогут знания о механизмах управления сетью устройств и сетевым оборудованием. От Active Directory до сетевых протоколов DNS, DHCP и ARP. Тут стоит понимать не только устройство, но и возможности настроек.

### CISCO

Тут уже знания для более прокаченных. Знать архитектуру корпоративных сетей CISCO, понимать настройки, маршрутизацию, VLAN и Trunk порты. А ещё уметь мониторить трафик и управлять корпоративной сетью.

### OSINT

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

Пример: поисковик интернет вещей — [Shodan](https://www.shodan.io/).  С ним можно найти поддомены, серверы, ip-камеры и другое оборудование тестируемой организации. Вот пример поиска всех устройств с открытым 22 портом по России в Краснодаре:

<figure><img src="https://lh7-us.googleusercontent.com/3G4Y5Wj4AMG8J7QdxfyvyfdAGA4YIx-y6v_GWfKYHKxlGghrcrjRCDMbKxxOLZw_vOCdEGshI9TVqSQhekZ_6ZT8Pe6NX56l-fM34KSxIONldSVFsn1DHey3nLh1v-G-GtikPGqY1qOi5LmbQx4g3h8" alt=""><figcaption></figcaption></figure>

В данном случае мы не ищем что-то по тестируемой организации, а просто показываем его функционал. Из этого запроса в Shodan мы узнали, что в Краснодаре есть устройства с открытым 22 портом (еще бы не было), всего их 2 661. Большинство устройств в ведении «Ростелекома», «Мегафона», «Вымпелкома» и «Кубань-Телекома».

Ещё один пример OSINT-инструмента — [Sherlock](https://github.com/sherlock-project/sherlock). Он ищет никнейм при запросе во множестве соцсетей и сайтов. Это позволяет составить профиль человека и если в скоупе пентеста есть социальная-инженерия — можно использовать информацию добытую с помощью Sherlock например для этих целей.

<figure><img src="https://lh7-us.googleusercontent.com/jehgW_lHDCEZqOAIyy2qlOsUh1-D6kUMynF8EhrmXB4gNSr26l6OvBWz1WL2HnVY0X67p22E3WRKlF_chD7xYF0kMr5iFD1S7cmZ3DPcyJ5COX0jxaQfdcUXtwq_3cVONM_gZ0Q2630aUuLu6EdKgb0" alt=""><figcaption></figcaption></figure>

Выше пример использования Sherlock для поиска данных по пользователю hackerman1337.  Пользователь много где зарегистрирован, особенно на сайтах IT-тематики. Тут мы можем предположить, что этот человек может быть разработчиком, так как у него есть GitHub, GitLab и Docker Hub.

### Социальная инженерия

Двоякая область знаний. С одной стороны ей нигде особо не учат, с другой — есть база психологии. Пентестеру это необходимо для установки контакта с жертвой. Если вы знаете информацию о человеке, понимаете его слабости — намного проще приблизить пентест к реальному сценарию контакта жертвы со злоумышленником.

Социальная инженерия всегда на грани добра и зла, потому что приходится делать плохое (обманывать и вводить в заблуждение) ради хорошего (успешного пентеста и безопасности организации). Поэтому первое: социальную инженерию при пентесте не стоит применять без разрешения заказчика.&#x20;

К техникам социальной инженерии относятся:

* Фишинг → отправка жертве вредоносного электронного письма
* Вишинг → подделка голоса на знакомый жертве и выманивание данных посредством звонка
* Смишинг → Отправка жертве вредоносных СМС

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

Для социальной инженерии также есть инструменты, например, [The Social-Engineer Toolkit](https://github.com/trustedsec/social-engineer-toolkit).  В нем сразу есть все что нужно для социальной инженерии, достаточно взглянуть на его основное меню:

<figure><img src="https://lh7-us.googleusercontent.com/s5marZGR5Acd4IQKxxDz8s-lxCgV--wE-grghQAYTwT7DLLCSf3twah0uHbxvhxYZnJjitkBXSJ4IjkE70XaRxvT4z2v9b4RAiQHtSNpqQWa70PuXnpD_guQ-bVvAFDKTpBfRva4MUg_P031O0PpMEU" alt=""><figcaption></figcaption></figure>

Выбор широкий: от целевого фишинга до подставных Wi-Fi точек доступа и генерации QR-кодов. Очень полезен в кейсах, где вам нужно проверять периметр организации. Например, развесить везде QR, который ведёт на вредоносную ссылку. Это может помочь попасть в периметр организации, например, под учетной записью сотрудника, который перешел по вашему QR-коду.

### Криптография

Теория о том, как устроена защита сведений: помогает понять, как работают современные алгоритмы зашифровки и расшифровки. Это поможет находить слабые места и декодировать сообщения. Мы как раз писали и об [алгоритмах шифрования](https://notes.kraken-security.ru/kraken/krupicy-znanii/kakie-est-algoritmy-shifrovaniya), и о [хешировании](https://notes.kraken-security.ru/kraken/krupicy-znanii/obzor-populyarnykh-algoritmov-kheshirovaniya).

### Следование за OWASP

OWASP или Open Web Application Security Project — [открытый проект](https://owasp.org/) по обеспечению безопасности приложений, где есть важные материалы: от топов распространенных уязвимостей до вебинаров (всё на англ). Их рекомендации высоко ценят независимые аудиторы, так что стоит постоянно прислушиваться, что говорит и о чём пишет фонд. Вот, например,[ гайд, как тестить приложения](https://owasp.org/www-project-web-security-testing-guide/).

### Основы безопасной разработки и DevSecOps

Видя противоречия между системой безопасной разработки и реальным кодом, вы сможете проще находить уязвимости. Тут и обработка пользовательского ввода, и управление сессией с зависимостями, и тестирование безопасности кода (CI/CD). Важно понимать принципы и роли в безопасной разработке.

### Контейнеризация

Тут стоит знать принципы и хотя бы основы, а еще инструменты: Docker,  Kubernetes. Контейнерная архитектура — тренд в разработке. С точки зрения безопасности, понимая базу, можно будет находить уязвимости в контроле доступа, управлением конфигурацией и мониторингом.\
\
Здесь мы говорили только веб-пентесте. Если добавить инфраструктурный пентест, областей знаний будет намного больше. И забыли упомянуть главное: пентест — это я прежде всего знание уязвимостей и возможность их эксплуатации. Чем больше вы их знаете, тем больше прокачиваетесь как специалист.  Стоит начать с [MITM](https://notes.kraken-security.ru/kraken/krupicy-znanii/ob-atake-mitm), XSS, SQL-инъекций, SSTI, SSI.\
\ <br>

\ <br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.kraken-security.ru/kraken/krupicy-znanii/karera/kakie-est-oblasti-znanii-v-veb-penteste.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
