Industrial Remote Access Tool Ewon Cosy+ Narażony na Ataki z Dostępem Root
Cyberprzestępcy zaatakowali około 40 francuskich muzeów, w tym Grand Palais podczas olimpijskiego weekendu.
Czytaj dalej →Cyberprzestępcy zaatakowali około 40 francuskich muzeów, w tym Grand Palais podczas olimpijskiego weekendu.
Czytaj dalej →Awaria popularnej sieci komórkowej i wyszukiwarek: Brak połączeń i internetu mobilnego – Co się dzieje?
Czytaj dalej →W ostatnich dniach firma Check Point poinformowała o zauważonych przez nich próbach uzyskania nieuprawnionego dostępu do sieci korporacyjnych za pomocą komunikacji VPN, w tym między innymi na klientów tego producenta.
Czytaj dalej →SQL Injection (SQLi) to jedna z najbardziej niebezpiecznych i powszechnych technik ataku na aplikacje webowe, która pozwala atakującemu manipulować zapytaniami SQL do bazy danych. Temat wydawał się dla mnie bardzo łatwy i oczywisty. Trafiłem jednak na sytuację w której moja wiedza na temat tego rodzaju ataku nie była wystarczająca by poradzić sobie z rozwiązaniem pokoju. Zacząłem zgłębiać ten temat odświeżając swoje stare notatki i okazuję się że dowiedziałem się nowych rzeczy. Tak więc zachęcam do dalszej lektury, na pewno nie stracisz czasu a uzupełnisz swoją wiedzę!
SQL Injection polega na wstrzyknięciu złośliwego kodu SQL do zapytania do bazy danych. Atakujący może to osiągnąć poprzez manipulację parametrami wejściowymi aplikacji webowej, które są następnie wstawiane do zapytań SQL bez odpowiedniego filtrowania lub zabezpieczenia. Skutkiem takiego ataku może być ujawnienie danych, modyfikacja danych, usunięcie danych, a w skrajnych przypadkach nawet pełna kontrola nad serwerem bazy danych.
Error-Based SQL Injection polega na manipulacji zapytaniami SQL w taki sposób, aby powodować błędy w odpowiedziach bazy danych. Te błędy mogą zawierać informacje o strukturze bazy danych, takie jak nazwy tabel i kolumn.
Przykład: Jeśli aplikacja używa następującego zapytania SQL:
SELECT * FROM users WHERE id = $id;
a atakujący wprowadzi wartość 1'
, zapytanie zmieni się na:
SELECT * FROM users WHERE id = '1'';
Union-Based SQL Injection polega na użyciu operatora UNION w celu łączenia wyników z wielu zapytań SQL. Atakujący może wykorzystać to do uzyskania dodatkowych informacji z bazy danych, takich jak inne tabele lub kolumny.
Przykład: Jeśli aplikacja używa następującego zapytania SQL:
SELECT name, email FROM users WHERE id = $id;
a atakujący wprowadzi wartość 1 UNION SELECT username, password FROM admin--
, zapytanie zmieni się na:
SELECT name, email FROM users WHERE id = 1 UNION SELECT username, password FROM admin--;
Blind SQL Injection występuje, gdy aplikacja nie zwraca bezpośrednio wyników zapytania SQL ani błędów. Atakujący muszą więc wnioskować o strukturze bazy danych na podstawie zmian w zachowaniu aplikacji.
Opis: Polega na wysyłaniu zapytań SQL, które zwracają różne odpowiedzi prawda/fałsz w zależności od warunku. Atakujący może zadawać pytania bazie danych, na które odpowiedź to „tak” lub „nie”.
Przykład: Jeśli aplikacja używa następującego zapytania SQL:
SELECT * FROM users WHERE id = $id;
a atakujący wprowadzi wartość 1 AND 1=1
, zapytanie zmieni się na:
SELECT * FROM users WHERE id = 1 AND 1=1;
Co jest zawsze prawdą i zwróci wynik.
Jeśli wprowadzi 1 AND 1=2
, zapytanie zmieni się na:
SELECT * FROM users WHERE id = 1 AND 1=2;
Co jest zawsze fałszem i nie zwróci wyniku. Porównując odpowiedzi, atakujący może dowiedzieć się więcej o bazie danych.
Opis: Polega na wysyłaniu zapytań SQL, które powodują opóźnienia w odpowiedzi bazy danych w zależności od warunku. Atakujący wnioskować na podstawie czasu odpowiedzi.
Przykład: Jeśli aplikacja używa następującego zapytania SQL:
SELECT * FROM users WHERE id = $id;
a atakujący wprowadzi wartość 1 AND IF(1=1, SLEEP(5), 0)
, zapytanie zmieni się na:
SELECT * FROM users WHERE id = 1 AND IF(1=1, SLEEP(5), 0);
Co spowoduje opóźnienie o 5 sekund, ponieważ warunek jest prawdziwy.
Jeśli wprowadzi 1 AND IF(1=2, SLEEP(5), 0)
, zapytanie zmieni się na:
SELECT * FROM users WHERE id = 1 AND IF(1=2, SLEEP(5), 0);
Co nie spowoduje opóźnienia, ponieważ warunek jest fałszywy. Analizując różnice w czasie odpowiedzi, atakujący może uzyskać informacje o bazie danych.
Wykrywanie SQL Injection (SQLi) jest kluczowe dla zapewnienia bezpieczeństwa aplikacji webowych. Oto przystępne wyjaśnienie, jak wykryć SQL Injection, wraz z przykładami logów i wskazówkami, na co zwracać uwagę.
Opis: Logi serwera mogą zawierać cenne informacje o podejrzanych działaniach. Szukaj nietypowych wzorców, które mogą wskazywać na próby SQL Injection.
Przykłady Logów:
"SELECT * FROM users WHERE id = '1' OR '1'='1' --"
'
, --
, ;
, które mogą wskazywać na próbę wstrzyknięcia SQL.id=1; DROP TABLE users; --
DROP
, SELECT
, UNION
.Na co zwracać uwagę:
'
, --
, ;
, które są często używane w atakach SQL Injection.Opis: Błędy serwera mogą zawierać informacje o nieudanych próbach wstrzyknięcia SQL. Jeśli aplikacja zwraca komunikaty o błędach SQL, może to wskazywać na próbę ataku.
Przykłady Błędów:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1'' at line 1
Unclosed quotation mark after the character string '';
Na co zwracać uwagę:
Opis: Analiza ruchu sieciowego może ujawnić podejrzane zapytania wysyłane do serwera. Można to zrobić za pomocą narzędzi takich jak Wireshark, Burp Suite, czy inne narzędzia do analizy ruchu.
Przykłady:
GET /user?id=1 OR 1=1 HTTP/1.1
POST /login HTTP/1.1
: username=admin’–&password=12345Na co zwracać uwagę:
'
, --
, ;
, OR 1=1
.Opis: Istnieje wiele narzędzi, które mogą automatycznie skanować aplikacje pod kątem podatności na SQL Injection.
Przykłady Narzędzi:
Przykład Użycia SQLMap:
sqlmap -u "http://example.com/user?id=1" --batch --dbs
Polecenie to skanuje podaną URL w poszukiwaniu podatności SQL Injection i wylistuje dostępne bazy danych, jeśli jest podatność.
Opis: Testowanie aplikacji w środowisku testowym może pomóc w wykryciu podatności przed wdrożeniem na produkcję.
Przykład:
1' OR '1'='1
, aby sprawdzić, czy aplikacja jest podatna.Opis: Parametryzowane zapytania pozwalają oddzielić kod SQL od danych, co uniemożliwia wstrzyknięcie złośliwego kodu.
Przykład w PHP (PDO):
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => $userInput]);
$user = $stmt->fetch();
Przykład w Python (SQLite):
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE id = ?", (user_input,))
rows = cursor.fetchall()
Opis: ORM automatycznie mapuje obiekty w kodzie na rekordy w bazie danych, co redukuje potrzebę pisania surowych zapytań SQL.
Przykład w Django (Python):
from myapp.models import User
user = User.objects.get(id=user_input)
Przykład w Hibernate (Java):
User user = session.get(User.class, userId);
Opis: Zawsze waliduj i filtruj dane wejściowe. Sprawdzaj, czy dane mają odpowiedni format i typ.
Przykład:
Walidacja numeru identyfikacyjnego:
if (!filter_var($userInput, FILTER_VALIDATE_INT)) {
// Handle invalid input
}
Używanie bibliotek do walidacji:
from cerberus import Validator
schema = {'id': {'type': 'integer', 'min': 1}}
v = Validator(schema)
if not v.validate({'id': user_input}):
# Handle invalid input
Opis: Baza danych powinna mieć ograniczone prawa dostępu. Użytkownicy aplikacji powinni mieć tylko te uprawnienia, które są absolutnie niezbędne.
Przykład:
Opis: WAF to narzędzia, które chronią aplikacje webowe przed różnymi rodzajami ataków, w tym SQL Injection.
Przykład:
Opis: Kodowanie wyjścia pomaga zabezpieczyć aplikację przed atakami typu XSS, ale także może pomóc w unikaniu SQL Injection, zabezpieczając dane przed niechcianymi zmianami.
Przykład w PHP:
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
Opis: Niektóre bazy danych oferują wbudowane funkcje bezpieczeństwa, które mogą pomóc w ochronie przed SQL Injection.
Przykład w MySQL:
mysql_real_escape_string
w starszych aplikacjach, jeśli nie możesz użyć PDO lub MySQLi.Opis: Regularne przeglądanie kodu i testowanie aplikacji pod kątem bezpieczeństwa pomaga wykrywać i naprawiać potencjalne podatności.
Przykład:
Opis: Zadbaj o to, aby zespół deweloperski był dobrze przeszkolony w zakresie najlepszych praktyk zabezpieczania aplikacji przed SQL Injection.
Przykład:
Opis: Implementacja mechanizmów monitorowania i alarmowania pozwala na szybkie wykrywanie i reagowanie na próby ataków.
Przykład:
Jak sami widzicie jest tego bardzo dużo a jeszcze nie jest to koniec! Tych aspektów w SQL Injection jest bardzo dużo ale też nie chciałem tego wszystko władować w jeden artykuł ponieważ nie byłby on czytelny. Moja propozycja jest taka, wy zostawiacie suba na kanale, piszecie do mnie na LI lub bezpieczenstwoxd@advatech.pl o treści „chcemy więcej sql injection”. Zobaczę jak duże będzie zainteresowanie tym tematem i przejdziemy sobie do konkretnych ataków, przeanalizuję dla Was przypadki cięższe!
Dawid Lis, Inżynier ds. Wdrożeń Systemów Cyberbezpieczeństwa w firmie Advatech, to absolwent renomowanego Wydziału Elektroniki Politechniki Wrocławskiej. Jego pasja do cyberbezpieczeństwa rozpoczęła się w 2021 roku, kiedy to rozpoczął swoją profesjonalną karierę w tej dziedzinie.
Jako Inżynier ds. Wdrożeń Systemów Cyberbezpieczeństwa, Dawid kieruje się głównie audytami i testami, które mają na celu sprawdzenie oraz wzmocnienie zabezpieczeń systemów. Jego zaangażowanie w tę dziedzinę nie kończy się na środowisku zawodowym – aktywnie dzieli się swoją wiedzą i doświadczeniem na platformach społecznościowych, zachęcając zarówno osoby techniczne, jak i nietechniczne do podnoszenia świadomości w obszarze cyberbezpieczeństwa.
Dawidowi zależy na tym, aby przekazywać zdobytą wiedzę w sposób przystępny i atrakcyjny, aby zainteresować jak największą liczbę osób. Jego naczelną misją jest edukacja w świecie cyfrowym, który uważa za kluczowy obszar współczesnej rzeczywistości. Poza pracą zawodową, Dawid pasjonuje się rozwiązywaniem CTF-ów (Capture The Flag), widząc w nich zarówno wyzwanie, jak i fascynującą zabawę.
Strony zachęcały odwiedzających do pobrania fałszywej aplikacji zawierającej nieznany wcześniej backdoor MaxMxShell reklamowane w Google
Czytaj dalej →Awaria popularnej sieci komórkowej i wyszukiwarek: Brak połączeń i internetu mobilnego – Co się dzieje?
Czytaj dalej →Awaria popularnej sieci komórkowej i wyszukiwarek: Brak połączeń i internetu mobilnego – Co się dzieje?
Czytaj dalej →Awaria popularnej sieci komórkowej i wyszukiwarek: Brak połączeń i internetu mobilnego – Co się dzieje?
Czytaj dalej →Awaria popularnej sieci komórkowej i wyszukiwarek: Brak połączeń i internetu mobilnego – Co się dzieje?
Czytaj dalej →Dropbox Inc. poinformował, że jego produkt do cyfrowych podpisów, Dropbox Sign, został naruszony przez hakerów, którzy uzyskali dostęp do informacji użytkowników, takich jak e-maile, nazwy użytkowników i numery telefonów.
Czytaj dalej →