Podział zagrożeń i podatności aplikacji napisanej w języku PHP

  • Adrian Kowalski
  • 2024-09-29
  • 0

Podział obszarów zagrożeń:

Serwer aplikacji

  • DDoS (ang. Distributed Denial of Service)

Aplikacje hostowane na publicznych serwerach (każdy dostawca ma swoje zabezpieczenia np. serwery lustrzane) podatne są na ataki. Tego typu podatność polega na tym, iż strona może być podatna na duże obciążenie z ruchu sieciowego. Dany host (adres ip) może być obciążany wieloma otwartymi połączeniami do niego w 1 czasie. Pod wpływem napływu informacji i otwartych gniazd sieciowych serwer aplikacji zostaje zaśmiecony i przestaje odpowiadać.

Strona 94

http://cybersecurity.umcs.lublin.pl/wp-content/uploads/kmazur/WSEI2019/6.pdf

  • Path Traversal/Directory Traversal

Aplikacje napisane w języku PHP są podatne na ataki na pliki i katalogi. Objawia się to niekontrolowanym dostępem do zasobów na serwerze. Każdy system plików na systemach operacyjnych ma swój sposób na zabezpieczanie zasobów. Można niestety w niektórych przypadkach przypadkowo dać dostęp do zasobów zabronionych poprzez złe zabezpieczenie aplikacji. Sposobem na to są np. znaki ucieczki ’../’ – czyli wyjście do katalogów wyżej. Możliwa jest sytuacja, w której użytkownik strony internetowej/aplikacji uzyska dostęp do plików konfiguracyjnych serwera. Może to doprowadzić do wycieku informacji lub unieruchomienia serwera aplikacji.

  • Misconfiguration Attack

Ataki typu objawiają się błędną konfiguracją środowiska produkcyjnego. Są one przyczyną wielu błędów, awarii i wycieku danych. Mogą one pojawić się w środowisku serwerowym, programistycznym, bazodanowym oraz aplikacji. Każdy framework programistyczny posiada swoje pliki konfiguracyjne oraz flagi produkcyjne. Ważną rzeczą jest, aby aplikację zawsze wystawiać z flagami produkcyjnymi.

Przykład framework Symfony:

 Clear your Symfony Cache

Make sure you clear and warm-up your Symfony cache:

$ APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear

Serwer bazy danych

  • Nadmierne uprawnienia

W aplikacjach bazodanowych duży nacisk kładzie się na uprawnienia użytkownika do komend wykonywanych na bazie danych. W przypadku, gdy użytkownik bazy danych ma za duży obszar uprawnień może dojść do wypływu informacji lub skasowania informacji zapisanych na bazie danych.

  • Privilage abuse

Ten typ ataku to przywłaszczenie uprawnień. Może do niego dojść np. poprzez dostęp do konta administratora.

  • SQL Injection

Ten typ ataku objawia się wstrzyknięciem składnie ataku kodu polegającego na manipulacji na bazie danych. Wstrzykuje się go głównie w formularze.

 To jest tekst '1=1; DROP DATABASE;'
  • Słaby mechanizm uwierzytelnienia

W domyślnie skonfigurowanych aplikacjach konto administratora bazy danych jest pozbawione hasła. Aby aplikacja internetowa mogła uzyskać dostęp do bazy danych potrzebny jest podanie danych uwierzytelniających. Ważne jest wtedy skonfigurowanie aplikacji w tryb produkcyjny, aby użytkownicy z zewnątrz nie uzyskali dostępu do danych uwierzytelniających użytkownika bazy danych. W innym wypadku może dojść do niekontrolowanej manipulacji na bazie danych.

  • Kradzież kopii bazy danych

Większość aplikacji internetowych posiada mechanizmy tworzenia kopii bazy danych np. przyrostowe. Przydatne jest to w momentach, gdy na bazie wykonane zostaną niekontrolowane komendy (wysypie się skrypt/cron), ktoś niechcący usunie, zmodyfikuje dane lub dane zostaną utracone poprzez problemy mechaniczne z serwerem. Kopie zazwyczaj zapisywane są na tym samym serwerze co aplikacja lub są rozsiane. W przypadku, gdy są nieszyfrowane użytkownik (haker) dostaje dostęp do poufnych danych przedsiębiorstwa.

Architektura klient-serwer

  • Cross-site scripting (XSS)

Atak ten polega na osadzaniu w treści kodu zainfekowanych fragmentów JavaScript.

  • Zapisany

Jest to typ ataku polegający na osadzeniu w zazwyczaj w bazie danych złowrogiego kodu. Polega to np. na podaniu w komentarzu fragmentu JavaScript. Zostaje on zapisany w bazie danych. Zainfekowany kod uwidacznia się na stronie internetowej. Może to doprowadzić do manipulacji na wyglądzie strony.

Komentarz z zainfekowanym kodem
Zapisany kod JS w bazie danych
  • Odbity

Polega to na zainfekowaniu linku do strony. Podatny kod JS można podać w linku strony. Może to doprowadzić to do manipulacji na stronie internetowej.

https://sekurak.pl/czym-jest-xss/
  • Oparty o model DOM

Atak ten polega na zainfekowaniu drzewa DOM stron (budowa HTML strony). Doprowadza to często do zniszczenia struktury strony.

Czat internetowy
Zainfekowany model DOM dokumentu
  • Cross-site request forgery (CSRF)

Atak polega na skłonieniu użytkownika do wykonania akcji, do której dana osoba nie miała zamiaru. Osoba atakująca może np. podać spreparowany link, który może wykonać niezamierzoną akcję.

  • Brute force attack

Są to ataki kryptograficzne. Polegają one na siłowym łamaniu np. hasła aplikacji. Ataki te objawiają się dużą mocą obliczeniową maszyn służący do łamania zabezpieczeń.

Siłowe łamanie haseł
  • Cross-Origin Reqource Sharing Policy (CORS)

Mechanizm ten polega na wymianie informacji pomiędzy różnymi źródłami. Problemy z nim pojawiają się często podczas integracji frontendu aplikacji napisanym w frameworku i backendu napisanym w nim także. Polega to na zabezpieczeniu informacji przepływających w aplikacji.

Mechanizm CORS
  • Unicode Encoding

Ten atak polega na problemie z kodowaniem znaków. Może to doprowadzić do złego kodowania treści. Często objawia się to problemem w warstwie logicznej aplikacji. Pojawiają się błędy logiczne na stronie i problemy np. sortowaniem lub wyświetlaniem danych.

  • Man-in-the-middle

Atak ten polega na przechwytywaniu informacji wysyłanych pomiędzy dwoma punktami. Służy do tego np. program Wireshark. Wypływ informacji może mieć np. miejsce gdy korzystamy z niezabezpieczonych protokołów np. HTTP (bezpieczna odmiana HTTPS).

Przechwycenia loginu i hasła użytkownika
  • Inżynieria społeczna

Czułym punktem każdego przedsiębiorstwa są ludzie. W większości przedsiębiorstw pomieszczenia takie jak serwerownie są zamykane zamkami elektronicznymi. Niekontrolowany dostęp do takich zasobów może skutkować dostępem do warstwy fizycznej aplikacji np. utraty danych lub jej kradzieży.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *