617 Shares 3708 views

Jaki jest iniekcja SQL?

Liczba witryn i stron w sieci stale rośnie. Zrobione dla rozwoju wszystkich tych, którzy mogą. I początkujących twórców stron WWW często używają niebezpieczny kod i starych. I stwarza wiele luk dla przestępców i hakerów. Niż są. Jeden z najbardziej klasycznych luk – SQL-wstrzykiwań.

Trochę teorii

Wiele osób wie, że większość witryn i usług w sieci jest używany do przechowywania bazy danych SQL. Jest to strukturalny język zapytań , które pozwala kontrolować i zarządzać przechowywanie danych. Istnieje wiele różnych wersji bazy danych systemu zarządzania bazą danych – Oracle, MySQL, Postgre. Niezależnie od nazwy i rodzaju, używają tych samych danych zapytań. To tu tkwi potencjalne luki. Jeśli deweloper nie obsługuje poprawnie i bezpiecznie wnioskować, atakujący może wykorzystać to i używać specjalnych taktyk, aby uzyskać dostęp do bazy danych, a następnie – i wszystkim zarządzania witryną.

Aby uniknąć takich sytuacji, trzeba odpowiednio zoptymalizować kod i ściśle monitorować w sposób, w którym żądanie jest przetwarzane.

Sprawdź, SQL-wstrzykiwań

Aby ustalić obecność luki w sieci ma masę gotowych zautomatyzowanych systemów oprogramowania. Ale jest to możliwe do przeprowadzenia prostego sprawdzenia ręcznie. Aby to zrobić, przejdź do jednego z obiektów testowych oraz w pasku adresu, aby spróbować wywołać błąd bazy danych. Na przykład skrypt na witrynie nie może obsłużyć żądania, a nie je przyciąć.

Na przykład, nie nekiy_sayt / index.php? Id = 25

Najprostszym sposobem – umieścić 25 po środki i wysłać żądanie. Jeśli nie wystąpił błąd, albo na miejscu i filtrem wszystkie żądania są obsługiwane prawidłowo lub jest wyłączony w ustawieniach swojej produkcji. Jeśli strona jest ładowany z problemami, wówczas podatność na SQL-wstrzykiwań jest.

Po tym jak dowiedział się, można spróbować go pozbyć.

Aby wdrożyć tę lukę trzeba wiedzieć trochę o SQL zapytań zespołów. Jeden z nich – Unii. Skupia kilka wyników zapytania do jednego. Tak więc możemy obliczyć liczbę pól w tabeli. Przykład pierwsze zapytanie jest:

  • nekiy_sayt / index.php? id = 25 UNIA SELECT 1.

W większości przypadków ten rekord należy wygenerować błąd. Oznacza to, że liczba pól nie jest równy 1. Tak więc, wybierając opcje 1 lub więcej, możliwe jest, aby ustalić ich dokładną liczbę:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

To znaczy, gdy nie będzie już pojawi się błąd, to znaczy, że liczba pól do odgadnięcia.

Istnieje również alternatywne rozwiązanie tego problemu. Na przykład, gdy duża liczba pól – 30, 60 lub 100. Ta grupa komendę. grupy IT wynikach zapytania o jakichkolwiek powodów, na przykład ID:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

Jeśli błąd nie został odebrany, to pola więcej niż 5. W ten sposób, zastępując opcje z dość szerokim zakresie, możliwe jest obliczenie, ilu z nich faktycznie.

Ten przykład SQL-injection – dla początkujących, którzy chcą spróbować się w testowaniu swojej stronie. Ważne jest, aby pamiętać, że w przypadku nieautoryzowanego dostępu do innego dostępnego artykułu Kodeksu Karnego.

Główne rodzaje iniekcji

Realizować tę lukę, SQL wstrzykiwań w kilku przykładach wykonania. Następne są najbardziej popularne metody:

  • UNION kwerendy SQL injection. Prostym przykładem tego typu zostało już zbadane powyżej. Realizowane jest to spowodowane błędem w sprawdzaniu danych przychodzących, które nie są filtrowane.

  • Błąd na bazie SQL injection. Jak sama nazwa wskazuje, ten rodzaj wykorzystuje również błąd, wysyłając wyrażeń złożonych składniowo niepoprawne. Następnie jest przechwytywanie nagłówków reakcji, analizowania, która może być wykonane później SQL iniekcji.

  • Skumulowany zapytań SQL zastrzyk. Luka ta jest określana poprzez wykonywanie kolejnych żądań. Charakteryzuje się przez dodanie na końcu znakiem „;”. Takie podejście jest często realizowany dostęp do wdrażania odczytu i zapisu danych lub funkcji systemu operacyjnego, jeśli pozwalają na to przywileje.

Oprogramowanie do wyszukiwania luk SQL

Czy istnieje SQL wtrysku, program zwykle mają dwa składniki – strona skanować za ewentualne luki i wykorzystywać je, aby uzyskać dostęp do danych. Istnieją pewne narzędzia do niemal wszystkich znanych platformach. Ich funkcjonalność znacznie ułatwia sprawdzanie strony złamać SQL iniekcji.

sqlmap

Bardzo mocny skaner, który współpracuje z większością baz danych. Obsługuje różne metody realizacji SQL-wstrzykiwań. Posiada zdolność do automatycznego rozpoznawania typu hash hasła kraking i słownika. Obecny i funkcjonalny przesyłanie plików i pobieranie z serwera.

Instalacja w systemie Linux jest wykonywana za pomocą polecenia:

  • git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py –wizard.

Dla systemu Windows jest dostępna jako opcja z wiersza poleceń i graficznego interfejsu użytkownika.

jSQL wtryskowa

jSQL Injection – narzędzie cross-platform do testowania wykorzystanie luk SQL. Napisany w Javie, więc system musi być zainstalowany JRE. W stanie obsłużyć żądań GET, POST, nagłówka, cookie. Posiada wygodny interfejs graficzny.

Instalacja tego pakietu oprogramowania jest następująca:

wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E -o „/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . JAR {1,2} [0-9] {1,2} | Głowica-n 1 '

Uruchomienie jest za pomocą polecenia java -jar ./jsql-injection-v*.jar

W celu uruchomienia stronę testową na SQL-luki, trzeba wpisać adres w górnym polu. Są oddzielne dla GET i POST. Z wynikiem pozytywnym, lista dostępnych tabel pojawi się w lewym oknie. Można je obejrzeć i dowiedzieć się trochę poufnych informacji.

Zakładka «Strona Administracja» użyte do znalezienia paneli administracyjnych. On to za pomocą specjalnych szablonów automatycznie przeszukuje system rejestruje uprzywilejowanych użytkowników. Od nich można uzyskać tylko hash hasła. Ale on ma w przyborniku programu.

Po znalezieniu wszystkich luk i wtrysku niezbędne starania, narzędzie pozwoli serwer wypełnić pliku lub odwrotnie, ściągnąć go stamtąd.

SQLi Wywrotka v.7

Program ten – łatwe w użyciu narzędzie do wyszukiwania i wdrażaniu luki SQL. Produkuje ONZ opiera się na tzw Dorcas. Ich listę można znaleźć w Internecie. Dorca dla SQL-wstrzykiwań – są to specjalne szablony zapytań. Przy ich pomocy można znaleźć potencjalnie narażone witryny poprzez dowolnej wyszukiwarce.

Narzędzia do szkolenia

Itsecgames.com na miejscu znajduje się specjalny zestaw narzędzi, które pozwala na przykład pokazuje, jak to zrobić zastrzyk SQL i przetestować go. W celu skorzystania, konieczne jest, aby pobrać i zainstalować. Archiwum zawiera zestaw plików, który jest struktura serwisu. Aby zainstalować to trzeba w istniejącym systemie zestawu serwera Apache, MySQL i PHP.

Rozpakuj archiwum w katalogu serwera WWW, trzeba przejść do wpisanego adresu podczas instalowania tego oprogramowania. Strona z rejestracji użytkownika. Tutaj trzeba wpisać swoje dane i kliknij «Tworzenie». Przeniesienie użytkownika do nowego ekranu, system poprosi o wybranie jednego z przypadków testowych. Wśród nich znajdują się zarówno opisane przez iniekcję i wielu innych elementów testowych.

Warto zastanowić przykład typu SQL injection-get / Search. Tutaj musisz go zaznaczyć i kliknąć «Hack». Zanim pojawią się użytkownik, a imitacja wyszukiwania ciąg miejscu filmowego. Aby posortować filmy mogą być długie. Ale istnieją tylko 10. Na przykład, można spróbować wprowadzić Iron Man. będzie to oznaczać, film, witryna działa i tabele w nim zawarte. Teraz musimy sprawdzić, czy filtry skryptów znaków specjalnych, w szczególności środki. Aby to zrobić, należy dodać „w pasku adresu". Co więcej, musi to być zrobione po tytule filmu. Witryna daje błąd błędzie: Masz błąd w składni SQL; sprawdzić podręcznika, który odpowiada twojej wersji serwera MySQL dla prawego składnię używaną w pobliżu „%” „w linii 1, który stanowi, że znaki nie są jeszcze obsługiwane prawidłowo. Więc można spróbować zastąpić żądania. Ale najpierw musimy obliczyć liczbę pól. Służy do tego celu przez, który jest wprowadzany po cudzysłowie: http://testsites.com/sqli_1.php?title=Iron+Man „zamów przez 2 – & action = wyszukiwania.

To polecenie wyświetla tylko informacje o filmie, który jest liczba pól jest większa niż 2. Podwójny łącznik informuje serwer, że pozostałe wnioski muszą zostać usunięte. Teraz musimy uporządkować, stawiając coraz większe znaczenie, dopóki błąd nie zostanie wydrukowany. W końcu okazuje się, że pola będzie 7.

Teraz nadszedł czas, aby dostać coś pożytecznego z podstawy. Nieznacznie zmodyfikować wniosek w pasku adresu, przenosząc je do postaci: http://testsites.com/sqli_1.php?title=Iron+Man „union select 1, bazy danych (), użytkownik (), 4, hasło, 6, 7 z użytkownikami – & action = wyszukiwania. W wyniku jego realizacji będzie wyświetlać ciąg z hashe haseł, które można łatwo przekształcić w zrozumiałych symboli przy użyciu jednej z usług internetowych. Wyczarował trochę i podniósł nazwę pola z logowania, można uzyskać dostęp do cudzego wejścia, takie jak administrator serwisu.

Produkt ma typu wtryskowego masach, na których w praktyce. Należy pamiętać, że stosowanie tych umiejętności w sieci na prawdziwych witrynach może być przestępstwem.

Wtrysk i PHP

Co do zasady, PHP kodu i jest odpowiedzialny za niezbędne przetwarzania żądań pochodzących od użytkownika. Dlatego na tym poziomie trzeba budować obronę przed SQL-wstrzykiwań w PHP.

Po pierwsze, dajmy kilka prostych wskazówek, na podstawie których jest to konieczne, aby to zrobić.

  • Dane te muszą być przetwarzane zawsze przed wprowadzeniem do bazy danych. Można to zrobić albo za pomocą istniejących wyrażeń, albo przez organizację zapytań ręcznie. Tutaj również należy wziąć pod uwagę, że wartości liczbowe są przekształcane do typu, który jest potrzebny;
  • Unikać poproszony różnych struktur kontrolnych.

Teraz trochę o zasadach sporządzania zapytań w MySQL w celu ochrony przed SQL-wstrzykiwań.

Przy sporządzaniu wszelkich wyrażeń kwerendy ważne jest, by oddzielić dane z kluczowych SQL.

  • SELECT * FROM tabela WHERE name = Zergów.

W tej konfiguracji, system może myśleć, że Zerg – nazwa każdej dziedzinie, więc trzeba ująć ją w cudzysłów.

  • SELECT * FROM tabela WHERE name = 'Zergów'.

Jednak zdarza się, że sama wartość zawiera cudzysłów.

  • SELECT * FROM tabela WHERE name = 'Wybrzeże Kości Słoniowej'.

Tutaj tylko obsługiwać część Wybrzeża Kości Słoniowej, a reszta może być postrzegana jako zespół, który, oczywiście, nie. Dlatego też, gdy wystąpi błąd. Następnie trzeba tego rodzaju danych przesiewowych. Aby to zrobić, należy użyć ukośnika – .

  • SELECT * FROM tabela WHERE name = 'cat-d ' Ivoire”.

Wszystkie powyższe odnosi się do rzędów. Jeśli akcja toczy się z szeregu, to nie potrzebuje żadnych cytatów lub ukośniki. Jednak powinny one być wymagane przymusowo doprowadzić do żądanego typu danych.

Istnieją zalecenia, że nazwa pola musi być ujęty w małe cudzysłowy. Symbol ten znajduje się po lewej stronie klawiatury wraz z tyldy „~”. Ma to zapewnić, że MySQL mógł dokładnie rozróżnić nazwę pola z danym słowem kluczowym.

Dynamiczna praca z danymi

Bardzo często, aby uzyskać żadnych danych z bazy danych przy użyciu zapytań generowanych dynamicznie. Na przykład:

  • SELECT * FROM tabela WHERE liczba = '$ liczba'.

Tutaj, zmienna $ liczba jest przekazywana jako określenia wartości pola. Co się stanie, jeśli robi się „Wybrzeże Kości Słoniowej”? Błąd.

Aby tego uniknąć kłopotów, oczywiście, można dołączyć ustawienia „Magia cudzysłowie”. Teraz jednak dane będzie można zobaczyć, gdzie to konieczne i nie jest to konieczne. Ponadto, jeśli kod jest napisany ręcznie, można spędzić trochę więcej czasu, aby stworzyć odporne na pękanie samego systemu.

Dla niezależnego dodanie ukośnika można używać mysql_real_escape_string.

$ Liczba = mysql_real_escape_string ($ liczba);

$ Rok = mysql_real_escape_string ($ rok);

$ Query = "INSERT INTO tabela (liczba lat, klasa) VALUES ( '$ number', '$ Year', 11)".

Chociaż kod i zwiększył swoją objętość, ale potencjalnie będzie pracować o wiele bezpieczniejsze.

zastępcze

Symbole zastępcze – rodzaj znaczników, dla których system uznaje, że jest to miejsce, trzeba zastąpić specjalną funkcję. Na przykład:

$ Sate = $ mysqli-> przygotować ( "SELECT dzielnica od numeru WHERE Name =?");

$ Sate-> bind_param ( "s", $ liczba);

$ Sate-> execute ();

Ten fragment kodu wykonuje zapytanie szablon szkolenie, a następnie wiąże zmienną liczbę i wykonuje go. Takie podejście pozwala na podział przetwarzania zapytań i jego realizację. Tak więc, może być zapisana z wykorzystaniem złośliwego kodu są SQL-.

Co może atakujący

Protection System – bardzo ważnym czynnikiem, którego nie można pominąć. Oczywiście, to prosta strona wizytówka będzie łatwiej przywrócić. A jeśli jest to duży portal, serwis, forum? Jakie są konsekwencje, jeśli nie myśleć o bezpieczeństwo?

Po pierwsze, haker może zakłócać integralności zarówno podstawy i usunąć go całkowicie. A jeśli administrator lub akademik nie zrobić kopię zapasową, trzeba będzie trudne czasy. Przede wszystkim, intruz, pękanie pojedyncze miejsce, można przejść do drugiego pisał w tym samym serwerze.

Dalej jest kradzież danych osobowych użytkowników. Jak korzystać – wszystko jest ograniczona tylko przez wyobraźnię hakera. Ale w każdym przypadku, konsekwencje nie będzie bardzo przyjemny. Zwłaszcza, jeśli zawarte informacje finansowe.

Ponadto, atakujący może połączyć się baza danych, a następnie wyłudzić pieniądze na jego powrót.

użytkownicy dezinformacji w imieniu administratora strony, osoba, nie są one mogą być również negatywne konsekwencje jak możliwych faktów nadużyć.

wniosek

Wszystkie informacje zawarte w tym artykule są podawane jedynie w celach informacyjnych. Używaj go tylko trzeba przetestować własne projekty po wykryciu luk i ich rozwiązania.

Do badania bardziej dogłębnej technik jak prowadzić SQL-zastrzyk, konieczne jest, aby rozpocząć z rzeczywistymi możliwościami badawczymi i cech języka SQL. Jak skompilowanych zapytań, słów kluczowych, typów danych, a korzystanie z niej wszystko.

Również nie może obyć się bez zrozumienia działania funkcji PHP i elementy HTML. Głównym zastosowaniem wrażliwych punktów do wstrzykiwań – w pasku adresu i różnym polu wyszukiwania. Uczenie funkcji PHP, sposób realizacji i funkcje będzie dowiedzieć się, jak uniknąć błędów.

Obecność wielu gotowych narzędzi programowych pozwala na dogłębną analizę na miejscu znane luki. Jednym z najbardziej popularnych produktów – Kali Linux. Ten obraz systemu operacyjnego opartego na systemie Linux, który zawiera dużą liczbę narzędzi i programów, które mogą prowadzić kompleksową analizę wytrzymałości miejscu.

Co trzeba wiedzieć, jak włamać się na stronę? To bardzo proste – trzeba mieć świadomość potencjalnych luk w projekcie lub stronie. Zwłaszcza jeśli jest to sklep internetowy z płatności online, w którym dane użytkownika płatność może zostać naruszona przez atakującego.

Do profesjonalnego badania istniejących pracowników ochrony informacji będzie mógł sprawdzić witrynę do różnych kryteriów i głębokości. Począwszy od prostego HTML zastrzyków i inżynierii społecznej i phishingiem.