SQL Injection

Uzyskanie dostępu do systemu przez wykonanie RCE

Opis Aplikacji Aplikacja webowa zawierająca panel logowania, połączona z bazą danych MySQL
Zabezpieczenie: Brak filtrów danych wejściowych, brak ochrony przed SQL Injection i RCE, brak weryfikacji tożsamości użytkownika w kontekście uprawnień.
Zadanie: Wykryć i wykorzystać podatności typu SQL Injection, uzyskać dostęp do danych oraz wykonać zdalne polecenia prowadzące do odczytu pliku.
Szczegółowy opis: Obejście zabezpieczenia logowania przy użyciu podatności typu SQL Injection. Następnie zidentyfikowanie dostępnych baz danych za pomocą narzędzia sqlmap, w tym tabele zawierające polecenia systemowe. Wykorzystanie SQL Injection typu UNION do wykonania zdalnych poleceń zapisanych w bazie. Na koniec odczytanie pliku.
Target IP: [TARGET_IP]




  1. Nieautoryzowane logowanie do aplikacji przez SQL Injection
    Cel: Uzyskanie nieautoryzowanego dostępu do aplikacji
    Działanie: Wprowadzenie do pola „Username” ładunku SQL Injection ' or 1=1-- , a w polu „Password” dowolnej wartości.
    Rezultat: Aplikacja akceptuje zapytanie SQL jako prawdziwe, pomijając warunek logowania. Użytkownik zostaje zalogowany bez uwierzytelnienia, co umożliwia dostęp do dalszych funkcjonalności systemu.
    Example
    Example

  1. Identyfikacja i enumeracja baz danych za pomocą sqlmap
    Cel: Uzyskanie listy wszystkich baz danych dostępnych w systemie.
    Działanie: Wykonanie polecenia:

    bash

    sqlmap -u http://192.168.100.60 --forms --dbs
    
    Rezultat: Aplikacja ujawnia dwie bazy danych: information_schema oraz pentest. Potwierdzona podatność SQL Injection umożliwia dalszą eksplorację danych w systemie.
    Example

  1. Zrzut zawartości bazy danych
    Cel: Uzyskanie danych przechowywanych w bazie pentest w celu identyfikacji użytkowników i ich informacji.
    Działanie: Wykonanie polecenia:

    bash

    sqlmap -u http://192.168.100.60 --forms -D pentest --dump-all
    
    Rezultat: Z bazy danych pentest zostaje odczytana tabela users, zawierająca kolumny id oraz username. Narzędzie potwierdza istnienie 3 rekordów, co potwierdza skuteczną eksfiltrację danych.
    Example

  1. Wykonanie polecenia systemowego poprzez SQL Injection typu UNION
    Cel: Uzyskanie dostępu do wyników komend bash zapisanych w bazie danych.
    Działanie: Wykonanie prób ataków typu UNION SELECT w celu zidentyfikowania liczby kolumn, jaką oczekuje aplikacja. Testowanie różnych wariantów zapytań, aby ustalić poprawną składnię umożliwiającą późniejsze połączenie danych:

    url

    123-- x
    123 union select 'id'--
    123 union select 'id','id'--
    123 union select 'id','id','id'--
    
    Rezultat: Aplikacja wykonuje polecenie systemowe i zwraca jego wynik w interfejsie. Widoczny jest wynik komendy id, wskazujący, że serwer działa z uprawnieniami użytkownika www-data. To potwierdza możliwość zdalnego wykonania kodu (RCE) przez podatność SQL Injection typu UNION SELECT.
    Example

  1. Odczyt pliku przy użyciu RCE przez SQL Injection
    Cel: Odczytanie zawartości pliku, przy użyciu podatności typu Remote Code Execution (RCE), dostępnej poprzez SQL Injection.
    Działanie: W parametrze id adresu URL aplikacji wykonaj polecenia systemowe, korzystając z zapytania typu UNION SELECT:

    1. url - polecenie ls, aby wylistować pliki w katalogu serwera

    http://192.168.100.60/?id=123 union select 'id','id','ls'--
    

    2. url - odczytanie zawartość pliku z flagą

    http://192.168.100.60/?id=123 union select 'id','id','cat flag3_lgaf.txt'--
    
    Rezultat: Na ekranie aplikacji wyświetlona została zawartość pliku flag3_1gaf.txt — tym samym udało się skutecznie odczytać flagę z serwera, co potwierdza pełną możliwość wykonania poleceń systemowych przez lukę w zabezpieczeniach.
    Example
    Example

Wnioski końcowe:

Wykorzystanie podatności SQL Injection umożliwiło ominięcie logowania, enumerację bazy danych, wykonanie zdalnych poleceń systemowych oraz odczyt plików serwera. Brak filtracji danych wejściowych i brak izolacji warstw systemu skutkuje pełną kompromitacją aplikacji.