Уязвимости веб-приложений и серверов
Раздел 8.10, шаг 6 из 9. Предыдущий — Wi-Fi; далее — оценка уязвимостей.
Модель безопасности веб-приложений
Веб-пентест опирается на понимание как HTTP-сессия связывает запросы и где доверие к клиенту ошибочно.
Same-Origin Policy и CORS
Same-Origin Policy (SOP) — браузер ограничивает чтение ответов другого origin (схема + host + port). CORS (Cross-Origin Resource Sharing) — механизм ослабления SOP через заголовки Access-Control-Allow-*. Misconfigured CORS (Allow-Origin: * с credentials) открывает кражу данных с другого сайта.
Сессии и cookies
| Атрибут cookie | Защита от |
|---|---|
HttpOnly | Кража через XSS (document.cookie) |
Secure | Передача по HTTP |
SameSite=Strict/Lax | CSRF |
| Короткий TTL + rotation | Session fixation, hijacking |
Пентестер проверяет: cookie без HttpOnly на чувствительном приложении, session ID в URL, отсутствие logout на сервере.
OWASP Testing Guide — фазы
| Фаза | Действия |
|---|---|
| Information Gathering | Crawl, технологии, entry points |
| Configuration Management | TLS, headers, default creds |
| Identity Management | Registration, username enumeration |
| Authentication | Brute force, MFA bypass |
| Authorization | IDOR, privilege escalation |
| Session Management | Timeout, fixation |
| Input Validation | Injection, XSS, SSRF |
| Error Handling | Stack traces, oracle |
| Cryptography | Weak algorithms at app layer |
| Business Logic | Race, price manipulation |
Это каркас; OWASP Top 10 (8.07/1) группирует классы уязвимостей по частоте.
Две поверхности атаки
Пентест веб-стека обычно делят на:
| Уровень | Что проверяют | Типичные находки |
|---|---|---|
| Сервер / инфраструктура | ОС, nginx/Apache, TLS, заголовки, CVE | Устаревший OpenSSL, directory listing, default vhost |
| Приложение | Логика, сессии, API, формы | IDOR, SQLi, XSS, SSRF, broken auth |
Теория классов уязвимостей — в безопасности приложений и инъекциях. Здесь — инструменты Kali, порядок проверки и углублённая теория классов атак.
Классы уязвимостей — краткая теория
| Класс | Суть | Механизм эксплуатации |
|---|---|---|
| Injection | Данные интерпретируются как код/запрос | SQL, OS command, LDAP, template |
| Broken Access Control | Нет проверки «может ли этот user» | IDOR, path traversal, forced browsing |
| XSS | Чужой JS в контексте жертвы | Reflected, stored, DOM-based |
| SSRF | Сервер делает запрос по URL атакующего | Metadata, internal scan |
| Security Misconfiguration | Default, лишние сервисы, verbose errors | Nikto, ручной обзор |
| Cryptographic Failures | Слабое шифрование, ключи в коде | TLS audit, static analysis |
Injection требует понимания контекста: SQLi — когда ввод попадает в запрос БД; CMDi — в shell; XSS — в HTML/JS. Один payload не работает везде.
IDOR (Insecure Direct Object Reference) — ссылка на объект (/invoice/12345) без проверки владельца. Horizontal (чужой user того же уровня) vs vertical (эскалация до admin).
SSRF превращает сервер в прокси атакующего во внутреннюю сеть. Blind SSRF — ответ не виден, но есть side-channel (DNS, time).
Burp Suite и OWASP ZAP
Burp Suite
Burp — прокси между браузером и сервером. Перехватывает HTTP/HTTPS, позволяет править запросы, повторять их, сканировать (Pro).
Базовая настройка:
- Запустите Burp (
burpsuiteиз меню или CLI). - Proxy → 127.0.0.1:8080.
- В браузере укажите прокси; для HTTPS импортируйте CA-сертификат Burp (Proxy → Import / export CA certificate).
- Включите Intercept для ручного анализа или выключите для пассивного сбора в HTTP history.
Ключевые вкладки:
| Вкладка | Назначение |
|---|---|
| Proxy | Перехват и изменение запросов |
| Repeater | Ручная отправка вариантов одного запроса |
| Intruder | Fuzzing параметров (осторожно с rate на prod) |
| Scanner | Автоматический поиск (Pro) |
Burp хранит site map — дерево URL и параметров. Ручной пентест часто = systematic обход site map + Repeater на каждый параметр.
Режимы proxy:
| Режим | Когда |
|---|---|
| Intercept on | Изучение одного запроса, правка перед отправкой |
| Intercept off | Пассивный сбор history + spider |
Scope в Burp ограничивает, что попадает в history — полезно, когда браузер ходит и на google.com, и на target.
OWASP ZAP
ZAP — open-source альтернатива с автоматическим spider и active scan:
zaproxy
# или headless
zap.sh -daemon -port 8090 -config api.disablekey=true
Подходит для CI и быстрого baseline; глубокая логика — ручной Burp.
Active scan генерирует тысячи запросов и может создать инцидент. Запускайте только в согласованное окно или на staging в scope.
Сканирование сервера
Nikto
Проверка известных misconfiguration и CGI:
nikto -h https://scanme.nmap.org
Nmap NSE для HTTP/SSL
nmap -p 443 --script ssl-enum-ciphers,http-headers example.com
testssl.sh
Детальный аудит TLS (часто ставят отдельно):
testssl.sh https://example.com
Ищите: слабые cipher suites, TLS 1.0/1.1, отсутствие HSTS, проблемы с цепочкой сертификатов. См. SSL/TLS.
Типовые misconfiguration серверов
| Проблема | Риск | Как находят |
|---|---|---|
| Directory listing | Утечка backup, конфигов | /, /uploads/ |
| Default страницы | Версия продукта | /server-status, Tomcat manager |
| Verbose errors | Stack trace, пути | Ошибочный ввод |
| HTTP без redirect | Downgrade, cookie theft | curl -I http:// |
Открытый .git | Исходный код | /.git/HEAD |
| SMB на веб-сервере | Lateral movement | nmap -p445 |
Defense in depth: даже при RCE на веб-сервере сегментация и минимальные права процесса ограничивают post-exploitation.
Веб-уязвимости — практика в лаборатории
Используйте DVWA, WebGoat, PortSwigger Web Security Academy — не prod без scope.
SQL injection
Ручная проверка в Repeater:
GET /vulnerabilities/sqli/?id=1' OR '1'='1&Submit=Submit
sqlmap (только там, где разрешено):
sqlmap -u "http://192.168.56.101/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="security=low; PHPSESSID=..." --dbs
Флаги --os-shell и --dump — только в учебной среде или с явным разрешением.
XSS
Reflected XSS — payload в параметре отражается в ответе:
<script>alert(1)</script>
Stored XSS — payload сохраняется (комментарии, профиль). Проверяйте контекст (HTML, attribute, JS). Защита — CSP, encoding; см. 113.
IDOR и broken access control
Подмена user_id=1001 на 1002 в API. Burp Repeater + два аккаунта (жертва и атакующий).
SSRF
Параметр URL заставляет сервер запросить внутренний ресурс:
POST /fetch url=http://169.254.169.254/latest/meta-data/
Критично в облаке (metadata AWS/GCP).
SQL injection — теория
SQLi возникает, когда приложение конкатенирует пользовательский ввод в SQL. Классы:
| Тип | Признак | Пример идеи |
|---|---|---|
| In-band | Ответ в том же канале | UNION SELECT |
| Error-based | Ошибка БД в ответе | ' AND 1=CONVERT(int, @@version)-- |
| Blind boolean | Разный контент true/false | ' AND SUBSTRING(password,1,1)='a |
| Blind time | Задержка SLEEP(5) | ' OR IF(1=1,SLEEP(5),0)-- |
| Out-of-band | DNS/HTTP exfil | редко, нужен stack |
Защита — parameterized queries (prepared statements), ORM с binding, least privilege DB user.
XSS — контексты вывода
| Контекст | Экранирование |
|---|---|
| HTML body | <, > |
| Attribute | Кавычки, entities |
| JavaScript | Не вставлять user data в JS |
| URL | Encoding scheme |
DOM XSS — уязвимость в client-side JS (location.hash → innerHTML), Burp видит не всё; нужен анализ фронтенда.
Business logic
Логические баги не находит типовой scanner:
- Оплата: изменить
amount=0.01в скрытом поле - Купон: применить дважды через race (parallel requests в Burp Turbo Intruder)
- Регистрация: шаг admin через пропуск
/setup-complete
Требуют понимания домена и flow приложения.
ffuf и перебор
# Директории
ffuf -u https://target/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt
# Параметры
ffuf -u https://target/page?FUZZ=test -w params.txt
SecLists (/usr/share/seclists) — стандартный набор словарей в Kali.
Анализ серверных CVE
После recon сопоставьте версии с базами:
- NVD
searchsploit apache 2.4
searchsploit apache 2.4.49
Эксплуатация публичного exploit против системы заказчика — только в scope и с планом отката.
Hardening — взгляд защитника
| Область | Рекомендация |
|---|---|
| TLS | TLS 1.2+, сильные cipher, HSTS |
| Заголовки | X-Frame-Options, CSP, X-Content-Type-Options |
| Сервер | Убрать версию в Server, отключить лишние модули |
| Приложение | Parameterized queries, CSRF-токены, RBAC |
| Файлы | Запретить .git, backup .bak, listing |
| WAF | Дополнительный слой, не замена secure coding |
Мини-чек-лист пентеста веб+сервер
- Scope URL и out-of-scope поддомены зафиксированы.
- Passive crawl (Burp, ZAP spider).
- TLS и заголовки (
nikto,testssl.sh). - Auth — logout, session fixation, password reset.
- Все параметры — injection, IDOR.
- File upload — тип, path traversal.
- Business logic — обход оплаты, race.
- Findings → шаблон отчёта.
Практическое задание
- Разверните DVWA в той же lab-сети, что Kali.
- Пройдите уровни SQLi и XSS на low security через Burp Repeater.
- Запустите
niktoпротив своего контейнера и исправьте одну находку (например, заголовок). - Оформите один finding по шаблону из 8.09/2 (title, steps, impact, remediation).
Связанные материалы
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Установка Kali Linux в VM, dual boot и WSL, первый вход, репозитории apt, обновление системы и подготовка рабочей среды для пентеста. Категории утилит Kali Linux, passive и active recon, OSINT, DNS и поддомены, nmap и httpx — методы легальной разведки перед пентестом. Аудит Wi-Fi в Kali Linux — режим monitor, aircrack-ng, захват handshake, WPA/WPA2, WPS, Evil Twin и меры защиты беспроводной сети. Сетевое сканирование nmap, перехват трафика Wireshark и MitM, атаки на пароли — Hashcat, John the Ripper, Hydra — в рамках легального пентеста. Тестирование на проникновение как процесс — PTES, OSSTMM, типы аудита, pre-engagement, scope, правила взаимодействия с заказчиком и жизненный цикл engagement. Vulnerability assessment и exploitation — автоматизированное и ручное тестирование, верификация findings, Metasploit, exploit lifecycle и безопасная эксплуатация в scope. Пентест Windows-домена и типовых сетевых сервисов — LDAP, Kerberos, SMB, RDP, SSH, FTP, атаки на пароли, BloodHound, Impacket и Hydra в lab. Lateral movement и pivoting, повышение привилегий Windows и Linux, post-exploitation, сбор доказательств и составление отчёта пентеста коммерческого уровня. Краткое резюме раздела 8.10 — процессы PTES, recon, VA, exploitation, AD, pivoting, privesc и отчёты коммерческого уровня. Вопросы для закрепления раздела 8.10 — Kali Linux, recon, Wi-Fi, веб-пентест, сканирование и атаки на пароли.Kali Linux — установка и настройка
Инструменты Kali и сбор информации
Тестирование беспроводных сетей
Сканирование, перехват и брутфорс
Процессы пентестинга
Оценка уязвимостей и эксплуатация
Active Directory и типовые сервисы
Pivoting, post-exploitation и отчёты
Тестирование на проникновение — итоги
Тестирование на проникновение — чек-лист самопроверки