No właśnie co z tą webówką?
Poznając zagadnienia związane z bezpieczeństwem aplikacji webowych, doszedłem do momentu, że należy to uporządkować tj. moje materiały/wiedzę i zostawić coś od siebie.
Jak spojrzymy na oferty pracy dla Pentestera, to co bije nas po oczach, wszędzie jest wymagana znajomość web (w sumie nic dziwnego wszystko przenosi się do internetu 😎 ).
Przygotowałem mini cykl gdzie zbiorę najważniejsze informacje które były pomocne w uporządkowaniu tematów.
Na pierwszy rzut przychodzą mi podstawy bez których trudno było mi zrozumieć, czyli HTTP (tak, tak szybciej odpalałem Burpa niż wgłębiałem się w temat).
Myślałem sobie są metody, ciasteczka, żądania, po co tyle czytać lecimy z jakimś CTFem i się nauczymy w locie (taka wskazówka ode mnie - jest to wymagająca droga, polecam dla wytrwałych) 😀
Jako nawyk wyrobiłem sobie zapisywanie najciekawszych adresów w zakładkach przeglądarki tak abym nie musiał już Googlować tylko "klik" i przechodzę do tematu (na końcu dodam źródła).
Co z tym HTTP? - czyli jak przeglądarka komunikuje się z serwerem.
HTTP to skrót od Hypertext Transfer Protocol i jest to główny protokół używany współcześnie w przeglądarkach. Jest to protokół bezstanowy, tzn. ani serwer (ani klient) nie przechowuje informacji o tym akie były wcześniej zapytania pomiędzy określonym serwerem i klientem oraz nie posiada stanu wewnętrznego.
Na pewno należny zapamiętać jego strukturę (przyda się nam jak będziemy manipulować nimi w Burp czyli narzędziu pracy w websecurity).
Przykłda:
GET / HTTP/1.1
Nagłówki: wartość
Nagłówki: wartość
pusta linia
body (treść)
Co tutaj zapamiętujemy:
GET — to nazwa metody HTTP (mamy różne, poniżej),
"/" to tzw. URI, czyli ta część adresu, który występuje po domenie,
HTTP/1.1 — określenie protokołu, tutaj HTTP w wersji 1.1 (mamy 2.0,3.0 - jako nowość wersja 3 używa w komunikacji UDP a poprzednie TCP - w źródłach do poczytania o różnicach).
Metody:
- GET – pobranie zasobu wskazanego przez URI, zazwyczaj pierwsza metoda np jak przechodzimy na index strony
- HEAD – pobiera informacje o zasobie, stosowane do sprawdzania dostępności zasobu
- PUT – przyjęcie danych przesyłanych od klienta do serwera, najczęściej aby zaktualizować wartość (stosowane często w rest)
- POST – przyjęcie danych przesyłanych od klienta do serwera (np. wysyłanie zawartości formularzy)
- DELETE – żądanie usunięcia zasobu, włączone dla uprawnionych użytkowników(wyłączamy w cholerę na produkcji, chyba że to rest)
- OPTIONS – informacje o opcjach i wymaganiach istniejących w kanale komunikacyjnym (badamy czy np serwer nie ma metody PUT udostępnionej - tak tylko dla backdoora przygotowanej 😀)
- TRACE – diagnostyka, analiza kanału komunikacyjnego
- CONNECT – żądanie przeznaczone dla serwerów pośredniczących pełniących funkcje tunelowania
- PATCH – aktualizacja części danych
Nagłówki HTTP spotkamy zarówno w zapytaniach, jak i w odpowiedziach. Są one pierwszymi liniami, oddzielone od ciała jedną pustą linią. Nagłówki są opcjonalne — protokół nie wymaga ich obecności. Nagłówki to pewnego rodzaju metadane i polecenia wymieniane przez przeglądarkę i serwer. Można je implementować po stronie serwera lub aplikacji.
Content-Type, Content-Length, Cookie (to będzie osobny wpis) itp.
Body:
Ciało zapytania to nic innego jak dane, które wysyłamy do serwera.
Kody odpowiedzi:
Jeżeli coś pójdzie nie tak musimy jakoś o tym wiedzieć. Serwer zwraca nam w odpowiedzi różne kody. Zaczynają się od 1xx, 2xx, 3xx, 4xx, 5xx. W źródłach link do zapoznania (tak aby rozumieć język jakim do nas serwer przemówił).
Przykład:
HTTP/1.1 200
W HTTPS dodajemy jeszcze certyfikat i strona zanim trafi do nas jest szyfrowana i po pobraniu odszyfrowywana u nas w przeglądarce. Kolejną ważną różnicą pomiędzy HTTP a HTTPS jest wykorzystanie innego domyślnego portu usługi. W przypadku HTTP jest to port 80, natomiast HTTPS korzysta z portu 443.
Do przerobienia pokój w TryHackMe:
Web Fundamentals
Źródła: