Zastrzyki SQL: ataki na serce Twojej witryny

Tobias Schüring Ostatnia aktualizacja 15.01.2020
6 Min.
iniekcje SQL

Obok atakówBrute Force pojawiają się wciąż na nowo WordPress SQL Injections pojawiają się na liście największych zagrożeń dla stron WordPress . Są to stosunkowo proste manipulacje bazą danych Twoich stron. Hakerzy mogą wejść w posiadanie poufnych danych lub założyć własne konta administratorów i dowolnie manipulować Twoją stroną. Pokazujemy, jak działa ten atak i dlaczego jest tak niebezpieczny.

Marzec 2008: Hakerzy (wśród których znalazł się prawdziwy mistrz) uzyskują 134 miliony danych kart kredytowych amerykańskiej firmy Heartland Payment Systems. Połowa 2016 roku: Podejrzani rosyjscy hakerzy uzyskują dostęp do bazy danych zarejestrowanych wyborców Stanowej Rady Wyborczej Stanu Illinois (Illinois State Board of Elections). Podobne rzeczy dzieją się w Arizonie. Luty 2017: Dane z 65.000 kont użytkowników zostają wykradzione z amerykańskiego sprzedawcy broni Airsoft GI. Marzec 2017: Podejrzani chińscy hakerzy uzyskują dane osobowe 4 tys. klientów koreańskiej aplikacji i wysyłają do ofiar wiadomości tekstowe, niektóre z nich obsceniczne.

Wszystkie te ataki mają jedną wspólną cechę: stoi za nimi stosunkowo łatwy do wykonania hack zwany SQL injection. W tym ataku hakerzy uzyskują dostęp do bazy danych, a tym samym do wszystkich danych użytkownika na danej stronie. W rzeczywistości, iniekcje SQL są uważane za jedno z największych zagrożeń dla operatorów stron internetowych. Także i przede wszystkim dla webmasterów, którzy pracują głównie z WordPress .

A ponieważ, najpóźniej od WooCommerce , szczególnie większe i bardziej złożone sklepy mogą być obsługiwane bez problemów z WordPress , ważne jest, aby zrozumieć ryzyko WordPress SQL Injection i jak to działa.

Jak "niebezpieczne" są WordPress SQL Injections?

Na pytanie o "niebezpieczność" włamania na stronę WordPress nie można odpowiedzieć za pomocą jednego wskaźnika. Należy raczej wziąć pod uwagę co najmniej dwa aspekty: Z jednej strony prawdopodobieństwo, z jakim własny WordPress -WordPress -projekt może paść ofiarą takiego ataku, a także szkody, jakie może wyrządzić włamanie.

W przypadku ataków naBrute Force , na przykład, liczba ataków miesięcznie jest tak duża (w niektórych przypadkach ponad 1 miliard zmierzonych ataków + szacowana liczba niezgłoszonych przypadków), że można właściwie powiedzieć, że każdy WordPress -WordPress - projekt prędzej czy później staje się celem takiego ataku. Szkody, jakie może wyrządzić udane włamanie, są wielorakie. W większości przypadków ataki Brute Force służą również do porywania stron internetowych i włączania ich do botnetu. Cross-site scripting, z drugiej strony, występuje znacznie rzadziej, ale jest przede wszystkim wykorzystywany do infekowania stron internetowych złośliwym kodem.

Organizacja non-profit Open Web Application Security Project (OWASP) regularnie publikuje listę 10 największych zagrożeń dla bezpieczeństwa aplikacji internetowych. A iniekcje SQL niezmiennie okupują tu pierwsze miejsce, nawet na (choć wstępnej) liście za 2017 rok.

Jest to grafika z listy top 10 największych zagrożeń bezpieczeństwa aplikacji internetowych regularnie publikowanej przez organizację non-profit OWASP. Pierwsze miejsce zajmują tutaj iniekcje SQL.
Organizacja non-profit OWASP regularnie publikuje listę 10 największych zagrożeń bezpieczeństwa dla aplikacji internetowych. Pierwsze miejsce regularnie zajmują tutaj iniekcje SQL.

W rzeczywistości, iniekcje SQL są tu po to, aby pozostać. Hack istnieje już od ponad 15 lat. A według raportu Akamai State of the Internet Security Report for 2017, częstotliwość ataków SQL wzrosła o 28 procent od pierwszego kwartału 2016 roku. W pierwszym kwartale 2017 r. najczęstszym atakiem były iniekcje SQL, które stanowiły 44 procent ataków. 

Ilustruje to, że w pierwszym kwartale 2017 roku SQL injection był najczęstszym hackiem, odpowiadającym za 44% ataków.
W pierwszym kwartale 2017 roku, SQL injection stanowił najczęstsze włamanie, odpowiadając za 44% ataków - wynika z raportu Akamai's 2017 State of the Internet Security Report.

Wordfence, Producent oprogramowania zabezpieczającego dla WordPress , dochodzi do wniosku, że SQL injections stanowią duże zagrożenie szczególnie dla użytkowników WordPress . Analiza prawie 1600 luk bezpieczeństwa w Plugins, które zostały zgłoszone w ciągu 14 miesięcy, wyraźnie pokazuje, że wstrzyknięcia SQL są drugim najczęstszym zagrożeniem bezpieczeństwa dla stron WordPress .

Wykres wyraźnie pokazuje, że iniekcje SQL są drugim najczęściej występującym zagrożeniem bezpieczeństwa dla stron WordPress .
Wykres pokazuje, że iniekcje SQL są drugim najczęściej występującym zagrożeniem bezpieczeństwa dla stron WordPress .

Przy tych wszystkich liczbach należy pamiętać, że liczba niezgłoszonych przypadków jest znacznie większa - ataki SQL często nie są nawet zauważane i nie pojawiają się w żadnych statystykach.

Liczby pokazują, że WordPress SQL Injections po atakachBrute Force i podatności XSS to jedne z najczęstszych rodzajów ataków. Ponadto, iniekcje SQL są wymierzone w szczególnie wrażliwy obszar witryny: bazę danych. Szczególnie dla właścicieli sklepów internetowych takie włamania są zagrożeniem egzystencjalnym. Dlatego ważne jest, aby zrozumieć, jak one działają i co można przeciwko nim zrobić.

WordPress SQL Injections celują w serce Twojej strony: bazę danych.

Aby zrozumieć jak działa SQL injection, musisz zrozumieć jak WordPress jest zbudowany. Jeśli już to wiesz, możesz spokojnie pominąć tę część.

Baza danych jest podstawą każdej instalacji WordPress : Tutaj przechowywane są wszystkie treści. Sam system CMS umożliwia wyświetlanie i edycję tych treści. WordPress jest bazą danych MySQL. SQL jest skrótem od Structured Query Language, w pełni funkcjonalnego języka programowania, który może być używany do tworzenia struktur w bazie danych oraz wstawiania, modyfikowania i usuwania danych.

Za każdym razem, gdy piszesz artykuł, tworzysz nową kategorię, zmieniasz hasło, a nawet gdy Twoi użytkownicy piszą komentarz, te nowe dane są zapisywane w bazie danych. Jest to więc miejsce, w którym znajduje się każda pojedyncza treść na Twojej stronie.

Za każdym razem, gdy użytkownik wywołuje Twoją stronę i żąda określonej treści,WordPress pobiera odpowiednie dane z bazy danych, łączy je z PHP i tworzy dokument HTML, który jest ostatecznie przesyłany do przeglądarki użytkownika. Użytkownik nie jest świadomy wszystkich procesów zachodzących do tego momentu.

SQL Injections wstrzykuje zewnętrzny kod do bazy danych

Nawet jeśli nigdy nie pracujesz bezpośrednio z bazą danych, a jedynie z backendem WordPress : Baza danych jest sercem Twojej strony internetowej.

Ale jak już powiedziałem: Użytkownicy są również w stanie wprowadzać dane do bazy danych. Napisanie komentarza, założenie konta użytkownika, wypełnienie i wysłanie formularza kontaktowego - wszystkie te czynności generują dane, które są przechowywane w bazie danych.

Ale co jeśli ktoś wykorzysta ten pośredni dostęp do Twojej bazy danych, aby przemycić do niej złośliwy kod? Jest to tzw. wstrzykiwanie kodu SQL.

Idea, która za tym stoi, nie jest nawet szczególnie skomplikowana: Jeśli nie ma żadnych zabezpieczeń, haker musi jedynie wprowadzić kod SQL w pole formularza (np. podczas pisania komentarza). Kod ten zawiera znaki, które pełnią specjalną funkcję dla interpretera SQL, który jest odpowiedzialny za wykonywanie poleceń SQL w bazie danych. Takimi znakami specjalnymi, zwanymi metaznakami, są na przykład ; " ' i \.

CMS uważa, że są to nieszkodliwe dane i przekazuje dane wejściowe do bazy danych jak zwykle z poleceniem ich zapisania. Interpreter SQL rozpoznaje kod jako żądanie akcji na podstawie metaznaków i wykonuje polecenie bazy danych.

Nawiasem mówiąc, to samo odnosi się do wstrzyknięć SQL, co do ataków Brute Force: prawie nigdy nie jest tak, że haker siedzi sam przy komputerze i ręcznie wpisuje kody do formularzy. Ataki te są również przeprowadzane za pośrednictwem zautomatyzowanych botnetów, które skanują tysiące stron internetowych jednocześnie w poszukiwaniu luk i uderzają tam, gdzie je wykryją.

Co może się teraz wydarzyć?

  • Haker omija wszelkie mechanizmy uwierzytelniania lub ukrywa się za tożsamością istniejącego użytkownika, aby uzyskać dostęp. Jeśli haker stworzy na przykład nowe konto administratora, jest to określane jako exploit na eskalację przywilejów.
  • W ten sposób może podsłuchiwać, zmieniać lub usuwać dane. Jest to szczególnie ważne, jeśli prowadzisz sklep internetowy i dysponujesz danymi płatniczymi swoich klientów.
  • Może on przejąć kontrolę nad całą Twoją stroną i przestrzenią internetową, na przykład, logując się jako administrator i uzyskując dostęp do Twojego backendu. W ten sposób haker ma pełną kontrolę nad Twoją stroną i może ją wykorzystać jako przemytnika spamu, wstrzyknąć złośliwy kod lub wprowadzić do botnetu.

Wniosek: Szczególnie ze względu na automatyzację WordPress SQL Injections są bardzo niebezpieczne.

WordPress Wstrzyknięcia SQL to jedne z najniebezpieczniejszych włamań. Są one łatwe do wykonania, w większości zautomatyzowane i mogą powodować ogromne szkody: Szczególnie dla operatorów sklepów internetowych zagrożenie związane z iniekcjami SQL ma charakter egzystencjalny.

Dlatego ważne jest, aby odpowiednio zabezpieczyć swoją stronę: Dane wejściowe użytkownika muszą być sprawdzone i oczyszczone. Należy również maskować dane, aby zapobiec wykonaniu złośliwego kodu. Proces ten nazywany jest sanityzacją i walidacją danych i jest szczegółowo opisany na przykład w WordPress Codex. W jednym z następnych artykułów zajmiemy się jednak tym tematem bardziej szczegółowo i pokażemy, jak można zapobiec uaktywnieniu się złośliwego kodu w bazie danych.

Zasadniczo, kompleksowe zabezpieczeniaPlugins pomagają również tutaj: ponieważ są one szczególnie zdolne do blokowania automatycznych ataków na Twoje strony, które są podstawą wielu włamań.

Jako administrator systemu Tobiasz czuwa nad naszą infrastrukturą i znajduje każdą śrubkę, aby zoptymalizować wydajność naszych serwerów. Dzięki jego niestrudzonym wysiłkom, często można go spotkać w nocy na stronie Slack .

Powiązane artykuły

Komentarze do tego artykułu

Napisz komentarz

Twój adres e-mail nie zostanie opublikowany. Pola obowiązkowe oznaczone są *.