diff --git a/src/pentesting-web/csrf-cross-site-request-forgery.md b/src/pentesting-web/csrf-cross-site-request-forgery.md
index bc1bcd886..fb0af1e7c 100644
--- a/src/pentesting-web/csrf-cross-site-request-forgery.md
+++ b/src/pentesting-web/csrf-cross-site-request-forgery.md
@@ -4,83 +4,111 @@
## Wyjaśnienie Cross-Site Request Forgery (CSRF)
-**Cross-Site Request Forgery (CSRF)** to rodzaj luki w zabezpieczeniach występującej w aplikacjach internetowych. Umożliwia ona atakującym wykonywanie działań w imieniu nieświadomych użytkowników, wykorzystując ich uwierzytelnione sesje. Atak jest realizowany, gdy użytkownik, który jest zalogowany na platformie ofiary, odwiedza złośliwą stronę. Strona ta następnie wywołuje żądania do konta ofiary za pomocą metod takich jak wykonywanie JavaScript, przesyłanie formularzy lub pobieranie obrazów.
+**Cross-Site Request Forgery (CSRF)** to rodzaj podatności bezpieczeństwa występującej w aplikacjach webowych. Pozwala atakującym wykonywać akcje w imieniu nieświadomych użytkowników, wykorzystując ich uwierzytelnione sesje. Atak jest przeprowadzany, gdy użytkownik zalogowany w serwisie ofiary odwiedza złośliwą stronę, która następnie wywołuje żądania do konta ofiary poprzez np. uruchamianie JavaScript, wysyłanie formularzy lub pobieranie obrazów.
-### Wymagania wstępne do ataku CSRF
+### Wymagania wstępne dla ataku CSRF
-Aby wykorzystać lukę CSRF, musi być spełnionych kilka warunków:
+Aby wykorzystać podatność CSRF, musi być spełnionych kilka warunków:
-1. **Zidentyfikowanie wartościowej akcji**: Atakujący musi znaleźć akcję wartą wykorzystania, taką jak zmiana hasła użytkownika, adresu e-mail lub podniesienie uprawnień.
-2. **Zarządzanie sesją**: Sesja użytkownika powinna być zarządzana wyłącznie za pomocą ciasteczek lub nagłówka HTTP Basic Authentication, ponieważ inne nagłówki nie mogą być manipulowane w tym celu.
-3. **Brak nieprzewidywalnych parametrów**: Żądanie nie powinno zawierać nieprzewidywalnych parametrów, ponieważ mogą one uniemożliwić atak.
+1. **Zidentyfikować wartościową akcję**: atakujący musi znaleźć akcję wartą wykorzystania, np. zmianę hasła, adresu email lub podniesienie uprawnień.
+2. **Zarządzanie sesją**: sesja użytkownika powinna być zarządzana wyłącznie za pomocą cookies lub nagłówka HTTP Basic Authentication, ponieważ inne nagłówki nie mogą zostać zmanipulowane w tym celu.
+3. **Brak nieprzewidywalnych parametrów**: żądanie nie powinno zawierać nieprzewidywalnych parametrów, które mogą uniemożliwić atak.
-### Szybka kontrola
+### Szybka weryfikacja
-Możesz **przechwycić żądanie w Burp** i sprawdzić zabezpieczenia CSRF, a aby przetestować z przeglądarki, możesz kliknąć **Kopiuj jako fetch** i sprawdzić żądanie:
+Możesz **przechwycić żądanie w Burp** i sprawdzić zabezpieczenia CSRF; aby przetestować z poziomu przeglądarki, kliknij **Copy as fetch** i sprawdź żądanie:
","widgetType":"URL"}]
+```
+
+- Bypass by switching to GET (no token):
+
+```http
+GET /index.php?module=Home&action=HomeAjax&file=HomeWidgetBlockList&widgetInfoList=[{"widgetId":"https://attacker
","widgetType":"URL"}] HTTP/1.1
+```
+
+Uwagi:
+- Ten wzorzec często występuje razem z reflected XSS, gdy odpowiedzi są błędnie serwowane jako text/html zamiast application/json.
+- Połączenie tego z XSS znacznie obniża bariery eksploatacji, ponieważ możesz dostarczyć pojedynczy link GET, który jednocześnie wyzwala podatną ścieżkę kodu i całkowicie omija sprawdzanie CSRF.
### Brak tokena
-Aplikacje mogą wdrożyć mechanizm do **walidacji tokenów**, gdy są obecne. Jednak luka powstaje, jeśli walidacja jest całkowicie pomijana, gdy token jest nieobecny. Atakujący mogą to wykorzystać, **usuwając parametr**, który przenosi token, a nie tylko jego wartość. Umożliwia to obejście procesu walidacji i skuteczne przeprowadzenie ataku Cross-Site Request Forgery (CSRF).
+Aplikacje mogą implementować mechanizm, aby **validate tokens** gdy są obecne. Jednak powstaje luka, jeśli walidacja jest całkowicie pomijana, gdy token jest nieobecny. Atakujący mogą to wykorzystać poprzez **usunięcie parametru**, który zawiera token, a nie tylko jego wartość. Pozwala to obejść proces walidacji i skutecznie przeprowadzić Cross-Site Request Forgery (CSRF).
-### Token CSRF nie jest powiązany z sesją użytkownika
+### CSRF token is not tied to the user session
-Aplikacje **niepowiązujące tokenów CSRF z sesjami użytkowników** stanowią znaczące **ryzyko bezpieczeństwa**. Te systemy weryfikują tokeny w stosunku do **globalnej puli**, zamiast zapewnić, że każdy token jest związany z inicjującą sesją.
+Aplikacje, które nie wiążą CSRF token z sesjami użytkowników, stanowią poważne ryzyko bezpieczeństwa. Systemy te weryfikują tokeny przeciwko globalnemu zbiorowi zamiast upewnić się, że każdy token jest powiązany z sesją inicjującą.
Oto jak atakujący to wykorzystują:
-1. **Uwierzytelniają się** za pomocą własnego konta.
-2. **Uzyskują ważny token CSRF** z globalnej puli.
-3. **Używają tego tokena** w ataku CSRF przeciwko ofierze.
+1. Zaloguj się używając własnego konta.
+2. Uzyskaj ważny CSRF token z globalnego zbioru.
+3. Użyj tego tokena w ataku CSRF przeciwko ofierze.
-Ta luka pozwala atakującym na składanie nieautoryzowanych żądań w imieniu ofiary, wykorzystując **niewystarczający mechanizm walidacji tokenów** aplikacji.
+Ta luka pozwala atakującym wykonywać nieautoryzowane żądania w imieniu ofiary, wykorzystując niewystarczający mechanizm walidacji tokenów aplikacji.
-### Obejście metody
+### Method bypass
-Jeśli żądanie używa "**dziwnej**" **metody**, sprawdź, czy funkcjonalność **przełamania metody** działa. Na przykład, jeśli **używa metody PUT**, możesz spróbować **użyć metody POST** i **wysłać**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
+Jeśli żądanie używa "dziwnej" metody, sprawdź, czy działa funkcja method override. Na przykład, jeśli używa metody PUT możesz spróbować użyć metody POST i wysłać: _https://example.com/my/dear/api/val/num?__method=PUT_
-Może to również działać, wysyłając **parametr \_method wewnątrz żądania POST** lub używając **nagłówków**:
+Może to także zadziałać, wysyłając parametr _method_ wewnątrz żądania POST lub używając nagłówków:
- _X-HTTP-Method_
- _X-HTTP-Method-Override_
- _X-Method-Override_
-### Obejście tokena nagłówka niestandardowego
+### Custom header token bypass
-Jeśli żądanie dodaje **niestandardowy nagłówek** z **tokenem** do żądania jako **metodę ochrony CSRF**, to:
+Jeśli żądanie dodaje niestandardowy header z tokenem jako metodę ochrony CSRF, to:
-- Przetestuj żądanie bez **Niestandardowego Tokena i również nagłówka.**
-- Przetestuj żądanie z dokładnie **tą samą długością, ale innym tokenem**.
+- Przetestuj żądanie bez niestandardowego tokena i bez nagłówka.
+- Przetestuj żądanie z tokenem o tej samej długości, ale innym tokenem.
-### Token CSRF jest weryfikowany przez ciasteczko
+### CSRF token is verified by a cookie
-Aplikacje mogą wdrożyć ochronę CSRF, duplikując token zarówno w ciasteczku, jak i w parametrze żądania lub ustawiając ciasteczko CSRF i weryfikując, czy token wysłany w backendzie odpowiada wartości w ciasteczku. Aplikacja weryfikuje żądania, sprawdzając, czy token w parametrze żądania zgadza się z wartością w ciasteczku.
+Aplikacje mogą implementować ochronę CSRF poprzez duplikowanie tokena zarówno w cookie, jak i w parametrze żądania, lub poprzez ustawienie CSRF cookie i weryfikowanie, czy token przesłany w backendzie odpowiada cookie. Aplikacja waliduje żądania, sprawdzając, czy token w parametrze żądania zgadza się z wartością w cookie.
-Jednak ta metoda jest podatna na ataki CSRF, jeśli witryna ma wady umożliwiające atakującemu ustawienie ciasteczka CSRF w przeglądarce ofiary, takie jak luka CRLF. Atakujący mogą to wykorzystać, ładując zwodniczy obraz, który ustawia ciasteczko, a następnie inicjując atak CSRF.
+Jednak ta metoda jest podatna na ataki CSRF, jeśli serwis ma luki pozwalające atakującemu ustawić CSRF cookie w przeglądarce ofiary, np. luka CRLF. Atakujący może to wykorzystać, ładując zwodniczy obraz, który ustawia cookie, a następnie inicjuje atak CSRF.
-Poniżej znajduje się przykład, jak mógłby być skonstruowany atak:
+Poniżej przykład, jak mógłby wyglądać taki atak:
```html
@@ -103,19 +131,19 @@ onerror="document.forms[0].submit();" />
```
> [!TIP]
-> Zauważ, że jeśli **token csrf jest powiązany z ciasteczkiem sesji, ta atak nie zadziała**, ponieważ będziesz musiał ustawić ofierze swoją sesję, a zatem będziesz atakować siebie.
+> Zwróć uwagę, że jeśli **csrf token is related with the session cookie this attack won't work** ponieważ będziesz musiał ustawić victim swoją session, a w konsekwencji zaatakujesz samego siebie.
### Zmiana Content-Type
-Zgodnie z [**tym**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests), aby **uniknąć** żądań preflight przy użyciu metody **POST**, dozwolone są następujące wartości Content-Type:
+Zgodnie z [**this**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests), aby **uniknąć żądań preflight** przy użyciu metody **POST**, dozwolone są następujące wartości Content-Type:
- **`application/x-www-form-urlencoded`**
- **`multipart/form-data`**
- **`text/plain`**
-Jednakże, zauważ, że **logika serwera może się różnić** w zależności od używanego **Content-Type**, więc powinieneś spróbować wymienionych wartości oraz innych, takich jak **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
+Jednak zwróć uwagę, że **severs logic may vary** w zależności od użytego **Content-Type**, więc powinieneś wypróbować wymienione wartości oraz inne, takie jak **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
-Przykład (z [tutaj](https://brycec.me/posts/corctf_2021_challenges)) wysyłania danych JSON jako text/plain:
+Przykład (z [here](https://brycec.me/posts/corctf_2021_challenges)) wysyłania danych JSON jako text/plain:
```html