Zabezpieczenia stron internetowych

Bezpieczeństwo aplikacji webowych spoczywa głównie na programiście i jego wiedzy a także na korzystanych przez niego, dostarczanych przez innych twórców – frameworki lub potocznie zwane biblioteki. Strony internetowe mogą zostać zabezpieczone w pewien sposób głównie przez webmasterów (lub opcjonalne dodatkowo płatne usługi udostępniające przez firmę hostingową). Dzisiaj jednak skupimy się na zabezpieczeniach strony naszego Liceum i wykonamy prosty rekonesans bezpieczeństwa.

Ostrzeżenie!

Twórczość autora w tym poście, w wydanej tutaj treści nie ma na celu namówienie bądź zachęcenie do łamania prawa. Jeśli popełniłeś lub masz zamiar popełnić przestępstwo, bądź masz wątpliwości, czy Twoje działania nie będą łamać prawa, powinieneś skonsultować się z najbliższą jednostką Policji lub Prokuratury, a jeśli są one związane z pieniędzmi, dla pewności również z Urzędem Skarbowym. Bądź etyczny, nie hakuj.

0. Nasza strona działa na WordPress'ie

WordPress to napisany w języku PHP system zarządzania treścią zaprojektowany głównie do obsługi blogów, sklepów i responsywnych stron internetowych. Wykorzystuje bazę danych MySQL. System ten jest łatwy w obsłudze oraz administrowaniu. Przykładowo ten tekst, który właśnie czytasz, jest komponentem graficznym dodanym do tego wpisu (posta) za pomocą tzw. edytora blokowego.

0
ataków hakerskich co godzinę globalnie​
0
komentarze typu spam na naszej stronie miesięcznie​

1. Komentarze - zbiorowisko botów

Programiści często tworzą boty, czyli małe programy mające na celu np. automatyzowanie pewnych czynności w konkretnym programie. Przykładem mogą być boty używane przez ludzi na Discordzie, które często są dodawane na serwery, aby móc je moderować, weryfikować użytkowników, a nawet ostrzegać lub nakładać kary przy łamaniu regulaminu. Nie byłoby to jednak problemem, o ile właśnie te boty komentowałyby wpisy na stronie, dodając do nich linki nieznanego pochodzenia.

Mamy zaimplementowaną standardową ochronę, dostarczaną przez WordPress. Dzięki niej możemy akceptować każdy z tych komentarzy bądź je odrzucać. Dodatkowo system sam ukrywa komentarze nie pochodzące od ludzi w naszym widoku komentarzy na panelu administracyjnym strony. Jak widać na powyższej grafice, nie wszystkie te komentarze zostały poprawnie skategoryzowane i przekazane do widoku spamu, ale dalej znaczna ich część została odrzucona automatycznie. Aby rozwiązać problem spamu na swojej stronie internetowej, należy na niej uwzględnić system weryfikacji reCAPTCHA.

2. Luki w zabezpieczeniach (exploity)

Dosyć często przeprowadzamy kontrolowane ataki, czyli tzw. pentesty, aby upewnić się, czy na pewno strona Liceum jest wystarczająco bezpieczna. Bowiem nic tak nie upewnia administratora o bezpieczeństwie strony lub systemu, jak przeprowadzony próbny atak na jego infrastrukturę. W systemie Kali Linux na wirtualnej maszynie, mamy przygotowane całe potrzebne środowisko do testów oraz narzędzie WPScan, którym się posługujemy. Również system Windows 10 jest już w zasadzie przygotowany na przeprowadzenie kontrolowanych testów. Posiadamy autorski program w języku C#, który ma za zadanie automatyzować działania podejmowane przez Arachni.

Gdy zostanie wykryta luka w zabezpieczeniach, aktualizujemy dany komponent o nową wersję wydaną przez WordPress, bądź tymczasowo go usuwamy na czas jej naprawienia. Co ciekawe, WPScan może też być dostępny w formie rozszerzenia do strony.

3. DDoS & DoS

DDoS oraz DoS (uproszczona definicja) to ataki mające na celu zablokowanie wyświetlenie strony innym użytkownikom Internetu poprzez wysyłanie dużej ilości zapytań o witrynę. Mamy dostępu do pliku access.log, który zawiera informacje dotyczące odwiedzin na witrynie, zapytań GET i POST. Na jego podstawie możemy przeprowadzać analizę korzystania ze strony.

Odtwórz wideo

Botnet to sieć komputerów zainfekowanych złośliwym oprogramowaniem, która przekazuje hakerowi zdalną kontrolę nad maszynami np. w celu wysyłania spamu, rozprzestrzeniania wirusów lub przeprowadzania ataków DDoS bez wiedzy i zgody faktycznych właścicieli. W roli botneta najczęściej jest wykorzystywane złośliwe oprogramowanie, czyli specjalny program napisany po to, aby móc zarządzać zdalnie czyimś komputerem.

W Internecie są dostępne usługi DDoS oraz anty-DDos. Co ciekawe, zwiększona ilość zasobów serwerowych może unieszkodliwiać w pewien sposób każdy taki atak na stronę. Sprawdzi się to w przypadku, gdy atakujący dysponuje skończoną liczbą urządzeń, która nie jest w stanie “zapełnić” zasobów. W przypadku ataku będziemy mogli wyłączyć stronę internetową, przeczekać wymierzony na nas atak oraz ponownie uruchomić całą infrastrukturę. Zaimplementowaliśmy również autorski system prewencji (spoofingu), który może przekierowywać wszystkie żądania kierowane na naszą stronę na wcześniej przygotowaną jej “pustą” kopię na innym hostingu. Wkrótce będziemy mieli zainstalowaną wtyczkę “All In One WP Security & Firewall”, która wzmocni wektor obronny serwera.

 

4. Ataki typu injection

Injection znaczy po angielsku wstrzykiwanie. Widząc to słowo, mam na myśli wstrzykiwanie potencjalnie złośliwego kodu JavaScript w poszczególne podatne komponenty witryny. Aby się przed tym chronić, należy w miarę jak najczęściej aktualizować wszystkie wtyczki, motywy oraz sam system WordPress. Przetestowaliśmy już formularz logowania przed tym zagrożeniem i wydaje się być bezpieczny. Korzystamy z opracowanego i przetestowanego przez programistów z całego świata formularza, więc nie ma sensu tworzyć nowego. Dobre praktyki programowania mówią, że jak coś już jest, działa i jest używane przez innych, to nie ma sensu implementować własnego rozwiązania do projektu. Mamy wyłączone korzystanie z kodu JavaScript przez wszystkie komponenty, co nie pozwoli na przeprowadzenie tego typu ataków.

Na obrazku powyżej znajduje się przykładowy raport. Jeśli chcesz wykonać podobny do tego co wyżej, otwórz prawym przyciskiem myszki Inspekcję stronyLighthouse ➤ Wybierz typ urządzenia ➤ Kliknij “Generate report”.

Ogólny zarys bezpieczeństwa strony

5. Zabezpieczenie logowania

Włamania na różnego rodzaju konta jest jak najbardziej możliwe (inżynieria społeczna itd.). Wcześniej opisałem zagrożenie typu injection, na które mogą być podatne niezaktualizowane formularze WordPress’a. Wyciągnięcie hasła z bazy danych bez jej zrzutowania nie jest aktualnie możliwe, ponieważ mamy zaimplementowaną najnowszą wersję formularza logowania. Hasła całej administracji składają się z ponad 25 losowych znaków, co uniemożliwia ich złamanie. Poniżej znajduje się zrzut ekranu z ekranu logowania.

Poniżej znajduje się raport z Kaspersky Password Check, który ukazuje informacje o jednym z losowo wygenerowanym haśle. Podobnie i my używamy takich długich haseł do panelu administracyjnego.

Jedynym wektorem ataku mogło być przejęcie konta poczty administratora. Na szczęście jesteśmy na tyle świadomi zagrożeń czyhających w cyberprzestrzeni, że i tutaj korzystamy z silnych haseł.

6. WordPress

Przepełnienie danymi różnych kont na hostingu, gdzie jest postawiony WordPress może również być zagrożeniem. W tym celu mamy wyłączone ustawienie, które umożliwiałoby tworzenia nowych kont przez losowe i niedozwolone osoby. Ponadto wyłączyliśmy możliwość edycji ustawień przez kod JavaScript – wszystko musi być ustawiane ręcznie, co podniesie poziom bezpieczeństwa przed atakami typu injection itd.

Nasz serwer nie jest skonfigurowany do obsługi REST API. Umożliwiałby on dostęp do najważniejszych elementów udostępnianych przez WordPress. Na swojej stronie, jeśli nie będziemy z niego korzystać, wypadało więc by go usunąć.

Przy próbie nawiązania połączenia i pobrania pliku strony, występuje błąd 301 Moved Permanently. Nie jest to jednak błędem, ale tylko dodatkową zaletą wyłączenia ustawień komunikacji witryny przez API (application programming interface).

7. Bazy danych

Baza danych to najważniejszy i najpodatniejszy element każdej aplikacji webowej. To właśnie w niej są przechowywane wszelkie informacje o użytkownikach czy też statystyki strony.

SQL (skrót od Structured Query Language, język zapytań) jest wykorzystywany do hakowania baz danych (oraz ich tworzenia i zarządzania). Każde dane przechowywane są w bazie danych, więc należy wiedzieć o programowaniu w nim oraz podatności na bazę danych, ponieważ jest to najbardziej wrażliwa cześć aplikacji i serwera internetowego. W programowaniu aplikacji biznesowych SQL jest kluczowym językiem programowania.

Wszystkie hasła użytkowników strony są przechowywane w bazie danych, do której dostęp mają tylko sami administratorzy. Dodatkowo, baza ma zaimplementowaną chroniona przed jej zrzutowaniem. W przypadku jej wykradnięcia, hasła nie są w formie tekstu zwykłego (plain text), ale w postaci zahashowanym ciągów wyrazowych.

Czytaj więcej:

Jak haker może złamać Twoje hasło? Napiszemy prosty program do ich łamania oraz pokażę, na czym polega password cracking.

Jak bezpiecznie pobierać pliki z Internetu? Zaimplementujemy funkcję skrótu SHA256 i pokażę dokładnie, czym jest hash.

8. Logi

Logi to nic innego, jak pliki dziennika przechowywane lokalnie na Twoim komputerze. Tworzy je system oraz aplikacje użytkownika. Serwer i strona internetowa (aplikacja webowa) również mogą na tworzyć na bieżąco swoje pliki dziennika. Często są one wykorzystywane do wyszukiwania problemów z oprogramowaniem lub urządzeniem, ponieważ najczęściej zawierają poszczególne zdarzenia, informacje o błędach i czasach wykonania.

Dostęp do tych plików ma tylko i wyłącznie administrator, który zarządza kontem hostingowym podpiętym pod instancję tego WordPress’a. W rozdziale trzecim wyjaśniłem, czym jest “access.log” i jak z niego możemy korzystać. W przypadku dostania się do plików dziennika przez nieuprawnione do tego osoby, otrzymają one błąd 403 forbidden, który oznacza, że dostep do żądanego zasobu jest zabroniony. Serwer zrozumiał żądanie, ale nie spełni go.

9. Testy zabezpieczeń

Test penetracyjny – proces polegający na przeprowadzeniu kontrolowanego ataku na system teleinformatyczny, mający na celu praktyczną ocenę bieżącego stanu bezpieczeństwa tego systemu, w szczególności obecności znanych podatności i odporności na próby przełamania zabezpieczeń.

Na bieżąco wdrażamy wszystkie nowości (aktualizacje) używanych przez nas produktów i programów na rynku zabezpieczeń.

WPScan to skaner bezpieczeństwa WordPress o otwartym kodzie źródłowym. Skanuje w poszukiwaniu znanych luk w zabezpieczeniach WordPressa – zarówno w jego rdzeniu, jak i we wtyczkach i motywach.

Burp Suite to intuicyjne narzędzie, które umożliwia wykrycie ponad 100 różnego rodzaju typów błędów mających istotny wpływ na poziom bezpieczeństwa. Przykładami mogą być np. fragmenty skryptu podatne na wstrzykiwanie baz danych SQL.

Ograniczenia dostępu jest to jedno z ustawień, które umożliwia zablokowanie dostępu do plików konfiguracyjnych WordPress’a i/lub hostingu osobom do tego nieuprawnionym. Bowiem zmiana ustawień w tych plikach może przyczynić się do wielu negatywnych działań.

Arachni – rozbudowana, modułowa i wydajna platforma Ruby, której celem jest pomoc testerom penetracyjnym i administratorom w ocenie bezpieczeństwa nowoczesnych aplikacji internetowych.

Metasploit – otwarte narzędzie służące do testów penetracyjnych i łamania zabezpieczeń systemów teleinformatycznych. Metasploit zawiera bazę gotowych exploitów oraz udostępnia interfejs, dzięki któremu można przygotowywać własne, korzystając z gotowych komponentów

10. Bezpieczeństwo danych (SSL)

SSL jest protokołem sieciowym używanym do bezpiecznych połączeń internetowych, przyjęto go jako standard szyfrowania na stronach WWW. Załóżmy, że logujesz się do jakiegoś serwisu internetowego. Serwis ten posiada certyfikat SSL, więc wszystkie dane, które wysyłasz do serwera są szyfrowane specjalnym, unikatowym kluczem.

 

Krytycznym parametrem określającym siłę szyfrowania SSL jest długość użytych kluczy. Im dłuższy klucz, tym trudniej jest go złamać, a przez to odszyfrować transmisję. Dla kluczy asymetrycznych, zgodnie z zaleceniami organizacji NIST, długością sugerowaną jest obecnie 2048 bitów. Powszechnie używane są wyrażenia „SSL 128 bitów” lub „SSL 256 bitów” określające długość użytego klucza symetrycznego.

Podsumowanie

Bezpieczeństwo w Internecie prawie zawsze towarzyszy nam od początków jego istnienia. Poznaliśmy narzędzia, które mogą pomóc w wyłapywaniu luk w zabezpieczeniach oraz podszkoliliśmy się w zabezpieczeniu stron internetowych oraz aplikacji webowych na przykładzie naszej strony, którą dzisiaj dokładnie przeanalizowaliśmy. Wykonaliśmy zatem prosty rekonesans, który pozwolił nam upewnienie się, że wszystko działa poprawnie, jak należy.

źródło: wiedza własna, Wikipedia (definicje);

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Rekrutacja INFO
Zobacz zasady rekrutacji do naszego Liceum.
Zobacz szczegóły
Kategorie
Ostatnie posty
Skontakujmy się
Tutaj znajdziesz dane, poprzez które skontaktujesz się z nami.
  • ul. Kopernika 2, 06-200 Maków Mazowiecki
  • (29) 71-71-285
  • lommak@o2.pl
Skip to content