Na naszym kanale YouTube zawitała seria pod nazwą “Cybersecurity w 5 minut“. W tej chwili w planie jest kilka/naście odcinków, w których omówimy znane podatności bezpieczeństwa w maksymalnym skrócie tak, aby wyciągnąć maksimum ich esencji przy okazji oszczędzając czas.

Dziś przedstawiamy pierwszy odcinek dotyczący podatności XSS, czyli Cross-Site Scripting.

Istotą każdego z krótkich video jest to, że podajemy w nich referencje do dodatkowych materiałów dla wszystkich zainteresowanych bliższym zapoznaniem się z tematem – są one także w slajdach na filmie, ale jeśli nie chcesz przepisywać z obrazka, to zapraszamy poniżej 🙂

Co więc ciekawego możemy polecić w tematyce podatności XSS? Mamy dwie spore listy zasobów – dla osób, które chcą się obronić przed XSS’ami, a także dla osób, które chcą się dowiedzieć, jak testować / znajdować / wykorzystywać tę podatność.

XSS dla pentesterów i atakujących:

Jeżeli chcesz dowiedzieć się, jak działa ten atak od podstaw, to zapoznaj się z tutorialem od Portswiggera. Aby lepiej zrozumieć jak należy testować aplikacje w poszukiwaniu ten konkretnej podatności, warto zerknąć do OWASP Testing Guide – gdzie znajdziesz trzy osobne artykuły o testowaniu Reflected XSS, Stored XSS i DOM-based XSS.

Często w aplikacjach można spotkać niedoskonałe próby wyeliminowania podatności XSS (np. przez zakazanie używania tagu “script”), co łatwo można ominąć, podobnie jak inne zabezpieczenia tego typu. Aby dowiedzieć się, jak obchodzić wadliwe mechanizmy obrony możemy zerknąć tu po niestandardowe payloady XSS oraz drugą kolekcję tychże, lub tu po sposoby omijania Content Security Policy.

Na sam koniec, aby efektywnie wykorzystać podatność XSS, polecamy trzy ciekawe zasoby:

  • Podstawowy mechanizm kradzieży cookie, warto zwrócić uwagę jeżeli ktoś rozpoczyna swoją przygodę z tą podatnością. Wymaga serwera Apache obsługującego PHP. Jest to jeden z wielu podobnych skryptów, które można znaleźć pod nazwą “cookie stealer”.
  • Project Beef – Narzędzie do generowania skryptu do wykorzystania podatności XSS – wymaga instalacji na systemie (np. Kali Linux) – jest nieco przestarzałe, w praktyce np. Bug bounty lepiej skorzystać z opcji trzeciej, czyli
  • XSS Hunter (online) – Narzędzie do generowania skryptu, który pozwala na wykorzystanie podatności

XSS Dla programistów i obrońców:

Najważniejszym sposobem wyeliminowania podatności XSS jest usuwanie znaków specjalnych HTML na wejściu i wyjściu. Przydatna lista reguł walidacji wejścia / wyjścia znajduje się tutaj.

Jeżeli jednak jakiś nieproszony HTML/JS zostanie już wstrzyknięty do aplikacji, to istnieje możliwość znaczącego ograniczenia możliwości jego wykorzystania poprzez użycie takich mechanizmów jak np.:

CSP (Content Security Policy) – CSP to jeden z nagłówków HTTP zawartych w odpowiedzi od serwera. Mechanizm ten określa typy zasobów, jakie mogą być doładowywane przez aplikację. Jest to bardzo kompleksowy mechanizm, jednak można zastosować go w opcji domyślnej “nie pozwalającej na nic” – chociaż może to czasami zagrażać prawidłowemu działaniu aplikacji.

Flagi cookie – Atak XSS celuje w pliki cookie, a ich kradzież może oznaczać kradzież tożsamości. Właściwe flagi pozwolą na zabezpieczenie cookie przed skutkami ataku XSS.

Dodatkowe nagłówki bezpieczeństwa – nagłówki załączane do odpowiedzi HTTP od serwera, które są interpretowane przez przeglądarkę klienta mogą także utrudnić wykorzystanie podatności XSS.

Tokeny Anty-CSRF – podatność CSRF to zupełnie inny kawałek chleba, natomiast warto wiedzieć, że skuteczny, globalny mechanizm anty-CSRF może chronić aplikację także przed atakami typu Reflected XSS.

PS. Jeśli chcesz dowiedzieć się więcej o cyberbezpieczeństwie – nie tylko aplikacji webowych, to koniecznie dołącz do naszego darmowego Newslettera – pod koniec każdego miesiąca przesyłamy kilka ciekawych artykułów dotyczących świata IT security.