Best-Torrents.com




Discord
Książki / E-Booki
Bezpieczeństwo aplikacji webowych - Michał Sajdak; Michał Bentkowski; Marcin Piosek; Gynvael Coldwind [PL] [pdf] [LIBGEN]


Dodał: xdktkmhc
Data dodania:
2022-05-30 17:03:10
Rozmiar: 50.62 MB
Ostat. aktualizacja:
2024-08-12 08:43:10
Seedów: 2
Peerów: 0


Komentarze: 0

..::(Info)::..

Tytuł: Bezpieczeństwo aplikacji webowych
Rok:
Wydawca:
Format: pdf

..::(Opis)::..


Autorzy
Wstęp
Dlaczego aplikacje webowe?
Co można powiedzieć o ich bezpieczeństwie?
Największy problem z bezpieczeństwem aplikacji WWW?
Czy istnieją metody sprawdzenia poziomu bezpieczeństwa naszych aplikacji?
Podziękowania
Prawne aspekty ofensywnego bezpieczeństwa IT
Wstęp
Prawo, czyli właściwie co?
Ochrona informacji i dostępu do systemów informatycznych
Przełamywanie lub omijanie zabezpieczeń
Dostęp do systemu bez omijania zabezpieczeń
Podsłuch komputerowy
Ingerencja w dane lub w pracę systemu informatycznego
Naruszanie integralności danych
Zakłócanie przetwarzania danych lub pracy systemu
Sabotaż
Narzędzia
Próba ograniczenia karalności, czyli lex bug bounty
Stan wyższej konieczności
Kilka uwag końcowych
Podstawy protokołu HTTP
Wstęp
Podstawowa komunikacja HTTP
Metody HTTP
URL czy URI?
Nagłówki HTTP
Czy nagłówki są absolutnie wymagane?
Wartości przekazywane do aplikacji protokołem HTTP
Nagłówki żądania HTTP
URL
POST: application/x-www-form-urlencoded
POST: multipart/form-data
Ciasteczka
Podsumowanie
Burp Suite Community Edition – wprowadzenie do obsługi proxy HTTP
Wstęp
Wyznaczamy cel
Czym jest Burp Suite?
Alternatywy i dlaczego Burp?
Pobranie i uruchomienie Burp Suite Community Edition
Konfiguracja środowiska pracy
Przystępujemy do pracy
Modyfikowanie zapytań HTTP
Przechwytywanie odpowiedzi
Repeater – powtórz to jeszcze raz
Intruder – automatyzacja i oszczędność czasu
Comparer – wskaż różnice
Decoder – radzimy sobie z „dziwnym” ciągiem znaków
Sequencer – analiza entropii i nie tylko
Połączenie nie jest bezpieczne – HTTPS
Dopasuj i zamień
Socksproxy – proxy w proxy
Rozwiązywanie nazw i brak uprawnień
Skróty klawiszowe
Wtyczki – jeszcze więcej możliwości!
Gdy coś przebiega niezgodnie z planem
Podsumowanie
Protokół HTTP/2 – czyli szybciej, ale czy również bezpieczniej?
Wstęp
Porównanie komunikacji z HTTP/1.1
Wykorzystanie protokołu TCP
Podstawy komunikacji HTTP/2
Bezpieczeństwo
Obowiązkowy TLS?
Złożoność protokołu
Znane podatności raz jeszcze
WAF/IDS
Co dalej?
Narzędzia
Podsumowanie
Nagłówki HTTP w kontekście bezpieczeństwa
Wstęp
Jak możemy sprawdzić aktualne nagłówki dla konkretnej strony?
Wybrane nagłówki HTTP a ich wpływ na bezpieczeństwo
HTTP Strict-Transport-Security (HSTS)
Wdrożenie
Referrer-Policy
Wdrożenie
X-Content-Type-Options
Wdrożenie
Feature-Policy
Wdrożenie
X-Frame-Options
Wdrożenie
Nagłówki w służbie omijania zabezpieczeń i filtrów (m.in. WAF)
Podsumowanie
Chrome DevTools w służbie bezpieczeństwa aplikacji webowych
Wstęp
Narzędzia
Analiza kodu HTML
Analiza mechanizmów przechowywania danych (Cookies, Storage)
Statyczna analiza kodu JavaScript
Debugger JavaScript
Wykonywanie kodu JavaScript z użyciem snippetów (Snippets)
Punkty wejścia i wykonania kodu (sources oraz execution sinks)
Podsumowanie
Bezpieczeństwo haseł statycznych
Wstęp
Metody uwierzytelniania
Hasła statyczne
Hasła jednorazowe
Protokół wyzwanie–odpowiedź
Przechowywanie haseł statycznych
Funkcje skrótu i ich właściwości
Kryptograficzna funkcja skrótu Message Digest
Kryptograficzna funkcja skrótu SHA
Problem szybkości
Sól i pieprz
Key stretching
Wszystko w jednym – funkcje PBKDF
Studium przypadku – Battlefield Heroes
Studium przypadku – Dropbox
Ataki zdalne (online)
Ataki lokalne (offline)
Kompromis czasowo-pamięciowy i tęczowe tablice
Receptury
Polecane zasoby w sieci
Rekonesans aplikacji webowych (poszukiwanie celów)
Wstęp
Cel inwentaryzacji
Lokalizacja serwerów webowych na zadanym zakresie adresów IP
Poszukiwanie aktywne
nmap
Poszukiwanie pasywne
VirusTotal/PassiveTotal
Censys/Zoomeye/Shodan
Inne narzędzia
Rekonesans poddomen
Aktywne zapytania do DNS
Amass – metoda słownikowa i pozyskiwanie danych z zewnętrznych źródeł
DNS zone transfer
DNSSEC
Pasywne pozyskiwanie informacji o poddomenach
PassiveTotal
VirusTotal
Google/Bing/Yandex
Certificate Transparency logs
Projekt Sonar – historyczne wpisy Forward DNS oraz Reverse DNS
SecurityTrails
CSP
Źródła stron HTML/JS/CSS
Aplikacje mobilne
Domeny wirtualne
Automatyzacja rekonesansu
Domeny powiązane z bazowymi
Builtwith
ViewDNS.info
Podsumowanie
Ukryte katalogi i pliki jako źródło informacji o aplikacjach internetowych
Wstęp
Systemy kontroli wersji
Podstawowe informacje o obiektach Git
Plik .gitignore
Subversion (SVN)
Katalogi i pliki konfiguracyjne środowisk programistycznych
JetBrains IDE – PHPStorm, WebStorm, PyCharm, IntelliJ IDEA
NetBeans IDE
Pliki konfiguracyjne narzędzi deweloperskich
Pliki konfiguracyjne specyficzne dla Node.js czy JavaScript: bower.json oraz package.json
Plik konfiguracyjny .gitlab-ci.yml (GitLab CI/CD)
Plik Ruby on Rails: database.yml
Plik macOS .DS_Store
Odkrywaj ukryte foldery oraz pliki z gotowym słownikiem dla swojego ulubionego narzędzia
Podsumowanie
Podatność Cross-Site Scripting (XSS)
Wstęp
Czym jest XSS oraz typy podatności XSS
Skutki XSS
Konteksty XSS
Konteksty DOM XSS
Funkcje typu eval
Funkcje przyjmujące kod HTML
Funkcje przyjmujące adres URL
XSS nie tylko w HTML
XSS a dopuszczanie fragmentów HTML
Ochrona przed XSS
Enkodowanie danych
Systemy szablonów z automatycznym enkodowaniem
Ochrona przed DOM XSS
Filtrowanie HTML
Upload plików
Content-Security-Policy
Filtry anty-XSS w przeglądarkach
XSS a popularne biblioteki JS
Dynamiczne budowanie szablonów
Bezpośrednie podstawianie HTML
Pułapka kontekstu URL-owego
Frameworki a DOM XSS
Podsumowanie
Content Security Policy (CSP)
Czym jest CSP i przed czym chroni
Składnia CSP
Dyrektywy CSP
Dyrektywy *-src
Dyrektywa script-src
Dyrektywa base-uri
Dyrektywy block-all-mixed-content i upgrade-insecure-requests
Dyrektywa form-action
Dyrektywa frame-ancestors
Dyrektywa plugin-types
Dyrektywa report-uri
Dyrektywa sandbox
Raportowanie
Sposoby obejścia CSP
Obejście przez JSONP
Obejście przez frameworki JS
Kiedy warto, a kiedy nie warto stosować CSP?
Przykładowe polityki CSP
Podsumowanie
Same-Origin Policy i Cross-Origin Resource Sharing (CORS)
Wstęp
Same-Origin Policy (SOP)
Przykład 1
Przykład 2
Przykład 3
Cross-Origin Resource Sharing (CORS)
Przykład podobny do trzeciego ze wstępu
Przykład podobny do drugiego ze wstępu
Obiekty XMLHttpRequest2
Model pierwszy – zapytania proste (Simple Requests)
Model drugi – zapytania nie-takie-proste (Not-So-Simple Requests)
Przesyłanie danych uwierzytelniających w CORS
Implementacja mechanizmu CORS po stronie serwera
Wady CORS
Alternatywy dla CORS
JSONP
postMessage
Serwer proxy
WebSockets
Flash i crossdomain.xml
Sposoby obejścia Same-Origin Policy
Obejścia CORS
Zbyt szerokie uprawnienia: * (gwiazdka) w odpowiedzi
Zbyt szerokie uprawnienia: „odbijanie” originu
Błędy implementacji
„null” origin
Nadmierne zaufanie do stron trzecich
CORS i Cache Poisoning
Inne przykłady obejścia SOP
Przykład 1
Przykład 2
Przykład 3
Przykład 4
Przykład 5
Obejścia dla deweloperów
Podsumowanie
Polecane zasoby w sieci
Podatność Cross-Site Request Forgery (CSRF)
Wstęp
Przykład 1. CSRF realizowany w tej samej domenie. Nieautoryzowane utworzenie nowego konta administracyjnego, metoda GET
Przykład 2. CSRF realizowany pomiędzy różnymi domenami. Nieautoryzowane usunięcie konta administratora, metoda GET
CSRF a Same-Origin Policy
Przykład 3. CSRF realizowany pomiędzy różnymi domenami. Bankowość elektroniczna, metoda POST
CSRF a inne niż GET/POST metody HTTP
Przykład 4. CSRF w połączeniu z innymi podatnościami – urządzenia sieciowe
Przykład 5. Podatność wieloetapowa – przejęcie dostępu do systemu WordPress
Metody ochrony przed CSRF
Losowe tokeny
SameSite
Ekran logowania
Nowe podatności wprowadzone przez ochronę przeciwko CSRF
Podsumowanie
Podatność Server-Side Template Injection (SSTI)
Wstęp
Silniki szablonów
Server-Side Template Injections – Velocity
Teoria, metodyka, narzędzia
Identyfikacja podatności
Identyfikacja silnika
Eksploitacja
Narzędzia i przykład zastosowania – Freemarker
Zapobieganie i obrona
Rezygnacja z szablonów (przynajmniej częściowo)
Użycie bezpiecznych silników
Sandboxing
Hardening
Podsumowanie
Polecane zasoby w sieci
Podatność Server-Side Request Forgery (SSRF)
Wstęp
Przykłady
Możliwe skutki wykorzystania podatności
Częste miejsca występowania podatności SSRF
Podstawy
Pliki XML
XXE
Document type definition (DTD)
XInclude
SVG/XLink
XSLT
Formaty pakietów biurowych
Inne formaty plików
Dowolne formaty
MP4
Biblioteki
Mechanizm uploadu
Inne miejsca
Protokoły inne niż HTTP wykorzystywane w SSRF
Wstęp
HTTPS
PHAR
Gopher
Inne protokoły
Częste błędy w filtrach anty-SSRF
Filtry blacklist
Filtry whitelist
Metody ochrony
Podsumowanie
Podatność SQL Injection
Wstęp
Czym jest SQL Injection
Sposoby wykorzystania SQL Injection
UNION-based
ERROR-based
BLIND (content based)
BLIND (time based)
Stacked queries
Skutki wykorzystania SQL Injection
Wydobycie dowolnych danych z bazy
Omijanie ekranu logowania
Modyfikacja/usuwanie danych
Przykład 1. Zmiana hasła administratora: UPDATE
Przykład 2. Ścieżka dostępu
Przykład 3. Wykonanie kodu PHP
Odczyt plików z dysku
Zapis plików na dysku
Wykonywanie poleceń systemu operacyjnego
Jak szukać SQL Injection?
Second-order SQL Injection
Metody ochrony przed SQL Injection
Zapytania parametryzowane
Walidacja typów danych
Stosowanie systemów klasy ORM
Hardening bazy danych
Podsumowanie
Podatność Path Traversal
Wstęp
Logika podatności
Zagrożenia
Ujawnienie nadmiarowych informacji
Ujawnienie plików konfiguracyjnych
Zdalne wykonanie kodu
Szersze spojrzenie na problem
Przykłady podatności
GlassFish Server
ColoradoFTP 1.3
Testowanie
Automatyzacja
Omijanie filtrów
Ochrona
Blokowanie ataku poprzez podmianę tekstu
Modelowanie zagrożeń
Podsumowanie
Code Injection i Command Injection – przegląd wektorów ataku w aplikacjach webowych
Wstęp
Czym jest Code Injection oraz Command Injection?
Wektory ataków
Formalność – Eval
Klasyka: Local File Inclusion i Remote File Inclusion
Podatności w mechanizmie wgrywania plików
Uruchamianie zewnętrznego oprogramowania – Command Injection
Panele administracyjne
Cross-Site Scripting a Code Injection
Tryb debug a serwer produkcyjny
Od SQL Injection do RCE
XSLT
WebDAV
Podatności w bibliotekach
Przegląd podatności
Drobne błędy
Czy to już wszystko?
Skutki
Wykradanie danych
Eskalacja
Jakby tego było mało – webshelle i tylne furtki
Podsumowanie
Uwierzytelnianie, zarządzanie sesją, autoryzacja
Wstęp
Teoria i podstawowe pojęcia
Błędne pojęcia
Identyfikacja
Uwierzytelnianie
Zarządzanie sesją
Autoryzacja
Błędy bezpieczeństwa
Rodzaje mechanizmów uwierzytelniania
Sposób klasyczny (zapytanie oraz ciasteczka HTTP)
HTTP Basic Authentication
OpenID Connect
Klucze API
Uwierzytelnianie certyfikatem
Kerberos oraz NTLM
Uwierzytelnianie
Nie ma HTTPS, nie ma poświadczeń
Brak uwierzytelnienia
Po co wyważać, skoro można obejść – omijanie uwierzytelnienia
Poświadczenia podane na tacy
Praca po stronie serwera
Enumeracja użytkowników
Automatyzacja ataku, czyli ataki brute-force
Zabezpieczenia tak dobre, że aż złe – jak skutecznie bronić się przed atakami siłowymi
Jak nie drzwiami, to oknem
Reset hasła
Niebezpieczne pytania bezpieczeństwa
Podaj hasło jeszcze raz – krytyczne akcje
Higiena przechowywania haseł
Polityka bezpieczeństwa haseł
Logowanie zdarzeń
Zarządzanie sesją
Wymyślanie koła na nowo
Regenerowanie sesji
Session Fixation
Obsługa równoległych sesji
Strzec jak oka w głowie
Odpowiednia złożoność
Odpowiedni czas życia
Unieważnianie sesji
ID sesji jako fingerprint
ID sesji jako zagrożenie
Kłopotliwa funkcja „zapamiętaj mnie”
Autoryzacja
Brak autoryzacji oraz autoryzacja na warstwie interfejsu
Podejmowanie decyzji i eskalacja uprawnień
Problem globalnych identyfikatorów
Centralizacja
Rozliczalność oraz niezaprzeczalność
Krytyczne operacje
Wybór modelu autoryzacji
Zasada najmniejszego uprzywilejowania
Co można zrobić lepiej
Uwierzytelnianie dwuskładnikowe
Poszerzanie wiedzy
Podsumowanie
Polecane zasoby w sieci
Pułapki w przetwarzaniu plików XML
Wstęp
Podstawy XML – encje i encje parametryczne
Billion laughs
Quadratic blowup
XXE (XML eXternal Entity)
Inne podatności XML
Podsumowanie
Bezpieczeństwo API REST
Wstęp
Czym jest API REST?
Metody HTTP
Brak ścisłej formalizacji użycia metod
Nadpisywanie metod
Rekonesans API
Przykład
Dokumentacja
Wykonanie metody API na wiele różnych sposobów
Frameworki
Struts REST Plugin
Spring Data REST
Spring OAuth
RESTEasy
Jackson Databind
Tryb debug
Jakie formaty danych akceptuje nasze API?
JSON
XML
YAML
Bezpośrednia deserializacja
Jakiego formatu danych oczekuję w odpowiedzi?
Problemy z kluczami API
Bezpieczeństwo webhooks
Uwierzytelnienie i autoryzacja
Problem z uwierzytelnieniem, a następnie z autoryzacją
Reset hasła
Dostęp do panelu administracyjnego
Kradzież środków z jednego z największych banków w Indiach
Dostęp do wewnętrznego API
Podsumowanie
Niebezpieczeństwa JSON Web Token (JWT)
Wstęp
Definicja
Kolejny przykład JWT i pierwsze problemy bezpieczeństwa
Kolec pierwszy: nadmierna komplikacja
Kolec drugi: none
Kolec trzeci: łamanie hasła do HMAC
Kolec czwarty: gdzie algorytmów sześć, tam nie ma bezpieczeństwa
Kolec piąty: choć może należałoby mu się pierwszeństwo
Kolec szósty: czy szyfrowanie JWT może w ogóle działać?
Kolec siódmy: dekodowanie/weryfikacja – co za różnica?
Kolec ósmy: przechwycenie dowolnego tokena = przejęcie dostępu do API?
Kolec dziewiąty: replay JWT
Kolec dziesiąty: ataki czasowe na podpis
Kolec jedenasty: mnogość bibliotek
Alternatywa do JWT?
Czy JWT może być bezpieczne?
Podsumowanie
Polecane zasoby w sieci
Zalety i wady OAuth 2.0 z perspektywy bezpieczeństwa
Wstęp
Czym jest OAuth 2.0?
Wykorzystywana terminologia
Zasada działania OAuth
Korzyści wynikające ze stosowania OAuth
Krok w tył – czym OAuth nie jest
Pozostałe metody pozyskiwania tokena
Implicit Grant
Client Credentials
Resource Owner Credentials
Refresh token
Jaką metodę pozyskiwania tokena wybrać?
Co może pójść nie tak
Brak szyfrowanego kanału komunikacji
Serwer autoryzujący
Problematyczne przekierowania
Stary znajomy – CSRF
Granulacja uprawnień
Klient
Tokeny oraz kody dostępu
Consent screen
OAuth i phishing
Biblioteki i gotowe rozwiązania
Aplikacje mobilne
Cookies
Brak izolacji
Krok w tył
Złe nawyki
Własne URI
PKCE
Alternatywa dla WebViews oraz Custom URI
Aplikacje natywne
Różnice w stosunku do OAuth 1.0 oraz kontrowersje
Modelowanie zagrożeń
Podsumowanie
Bezpieczeństwo protokołu WebSocket
Wstęp
Co to jest i jak działa protokół WebSocket?
Prosty klient
Zagrożenia
Same-Origin Policy
Niepoprawne zarządzanie uwierzytelnieniem oraz sesją
Ominięcie autoryzacji
Wstrzyknięcia i niepoprawna obsługa danych
Wyczerpanie zasobów serwera
Tunelowanie ruchu
Szyfrowany kanał komunikacji
Gotowe rozwiązania
Testowanie
Modelowanie zagrożeń
Podsumowanie
Polecane zasoby w sieci
Flaga SameSite – jak działa i przed czym zapewnia ochronę?
Wstęp
Podstawy – przeglądarki, ciasteczka i sesja
Nadużycie
SameSite na ratunek
Polityka Lax – nawigacja „top-level” oraz bezpieczne metody HTTP
Bilans zysków i strat
Podsumowanie: lek na całe zło?
Niebezpieczeństwa deserializacji w PHP
Wstęp
Jak wygląda serializacja w PHP?
Podatność PHP Object Injection
Trening – wykorzystanie Object Injection w Guzzle
Praktyczne wykorzystanie Object Injection
Ochrona przed podatnością
Podsumowanie
Niebezpieczeństwa deserializacji w Pythonie (moduł pickle)
Wstęp
Jak działa moduł pickle?
Złośliwe użycie pickle
Sposoby ochrony
Podsumowanie
Niebezpieczeństwa deserializacji w .NET
Wstęp
Środowisko programistyczne
Json.Net
XmlSerializer
Case Studies
Breeze (CVE-2017-9424)
DotNetNuke Platform (CVE-2017-9822)
Microsoft SharePoint (CVE-2019-0604)
Niebezpieczeństwa deserializacji w Javie
Wstęp
Podstawy – teoria
Mechanizm serializacji/deserializacji
Niebezpieczna deserializacja
Automatyczne wykonanie metod
Klasy „interesujące” i „dostępne”
Program deserializuje dane od użytkownika
Podatność deserializacji w języku Java
Apache commons-collections gadget chain
Analiza
Podatność deserializacji w języku Java – praktyka
Case Study: prosta aplikacja
Natywna serializacja a DoS
Rekurencyjne zbiory (java.util.Set)
Analiza
Modyfikacja zserializowanych danych i błąd przepełnienia pamięci
Analiza
Inne formaty serializacji
Biblioteka XStream
Jak się zabezpieczyć przed deserializacją niezaufanych danych?
Rozwiązanie #0: obfuskacja
Rozwiązanie #1: brak serializacji
Eliminacja serializacji natywnej
Rozwiązanie #2: blokowanie gadżetów
Blacklisting i whitelisting
Java Serialization Filter
Rozwiązanie #3: kryptografia
Analiza
Rozwiązanie bonusowe: monitoring
Monitorowanie przesyłania zserializowanych obiektów
Monitorowanie wyjątków
Podsumowanie
Wprowadzenie do programów bug bounty
Wstęp
Programy bug bounty
Rys historyczny
Jak się do tego zabrać?
Budowanie warsztatu
Udział w konkursach i programy bughunterskie
W jaki sposób zgłosić błąd?
Dokumentacja programu
Zasady punktacji
Zgłoszenie znalezionej podatności
Modelowy raport
Cykl życia błędu, czyli co się dzieje po przesłaniu raportu
Jak wybrać program?
Na miarę możliwości
Rozpoznana technologia
Wnikliwa analiza zasad obowiązujących w programie
Zakres testu
Prawa i obowiązki programów
Profesjonalizacja
Podsumowanie

Komentarze są widoczne tylko dla osób zalogowanych!

Żaden z plików nie znajduje się na serwerze. Torrenty są własnością użytkowników. Administrator serwisu nie może ponieść konsekwencji za to co użytkownicy wstawiają, lub za to co czynią na stronie. Nie możesz używać tego serwisu do rozpowszechniania lub ściągania materiałów do których nie masz odpowiednich praw lub licencji. Użytkownicy odpowiedzialni są za przestrzeganie tych zasad.

Copyright © 2024 Best-Torrents.com