<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
**Wskazówka dotycząca nagrody za błąd**: **Zarejestruj się** na platformie **Intigriti**, premium platformie **nagród za błędy stworzonej przez hakerów, dla hakerów**! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody do **100 000 USD**!
**ViewState** służy jako domyślny mechanizm w ASP.NET do przechowywania danych strony i kontrolki między stronami internetowymi. Podczas renderowania HTML strony, bieżący stan strony i wartości do zachowania podczas powrotu są serializowane do ciągów zakodowanych w formacie base64. Następnie te ciągi są umieszczane w ukrytych polach ViewState.
1. Dla **dowolnej wersji .NET**, gdy zarówno MAC, jak i Szyfrowanie są wyłączone, nie jest wymagany MachineKey, a zatem nie ma odpowiedniej metody jego identyfikacji.
2. Dla **wersji poniżej 4.5**, jeśli MAC jest włączony, ale Szyfrowanie nie, wymagany jest MachineKey. Metoda identyfikacji MachineKey jest określana jako "Blacklist3r."
3. Dla **wersji poniżej 4.5**, niezależnie od tego, czy MAC jest włączony czy wyłączony, jeśli Szyfrowanie jest włączone, potrzebny jest MachineKey. Identyfikacja MachineKey jest zadaniem dla "Blacklist3r - Future Development."
4. Dla **wersji 4.5 i nowszych**, wszystkie kombinacje MAC i Szyfrowania (czy oba są prawdziwe, czy jedno jest prawdziwe, a drugie fałszywe) wymagają MachineKey. MachineKey można zidentyfikować za pomocą "Blacklist3r."
Możesz spróbować zidentyfikować, czy ViewState jest chronione przez MAC, przechwytując żądanie zawierające ten parametr za pomocą BurpSuite. Jeśli MAC nie jest używany do ochrony parametru, możesz go wykorzystać za pomocą [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
Można założyć, że jeśli **ViewState** nie jest **obecny**, to ich implementacja jest **bezpieczna** przed potencjalnymi podatnościami wynikającymi z deserializacji ViewState.\
Jednakże tak nie jest. Jeśli **dodamy parametr ViewState** do ciała żądania i wyślemy nasz zserializowany ładunek utworzony za pomocą ysoserial, nadal będziemy w stanie osiągnąć **wykonanie kodu**, jak pokazano w **Przypadku 1**.
Możesz spróbować użyć [**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper), aby znaleźć używany klucz.
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) to kolejne narzędzie, które może zidentyfikować znane klucze maszynowe. Jest napisane w Pythonie, więc w przeciwieństwie do Blacklist3r nie ma zależności od systemu Windows. Dla stanów widoku .NET istnieje narzędzie "python blacklist3r", które jest najszybszym sposobem na jego użycie.
Aby wyszukać podatne widoki stanu na skalę, w połączeniu z wyliczaniem subdomen, można użyć modułu `badsecrets` [**BBOT**](exploiting-\_\_viewstate-parameter.md):
Jeśli masz szczęście i klucz zostanie znaleziony, możesz kontynuować atak, korzystając z [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**:**
W tym przypadku nie jest znane, czy parametr jest chroniony za pomocą MAC. W takim przypadku wartość jest prawdopodobnie zaszyfrowana i będziesz **potrzebować klucza maszynowego do zaszyfrowania swojego ładunku**, aby wykorzystać lukę w zabezpieczeniach.
**W tym przypadku** [**moduł Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **jest w trakcie rozwoju...**
**Przed wersją .NET 4.5**, ASP.NET może **przyjąć** niezaszyfrowany parametr \_\_VIEWSTATE od użytkowników, nawet jeśli **`ViewStateEncryptionMode`** został ustawiony na _**Always**_. ASP.NET **sprawdza jedynie** obecność parametru **`__VIEWSTATEENCRYPTED`** w żądaniu. **Jeśli usunie się ten parametr i wyśle niezaszyfrowany ładunek, nadal zostanie on przetworzony.**
Dlatego jeśli atakujący znajdą sposób na uzyskanie klucza maszynowego poprzez inną lukę, taką jak przeglądanie plików, polecenie [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) użyte w **Przypadku 2**, może być wykorzystane do wykonania RCE za pomocą podatności deserializacji ViewState.
* Usuń parametr `__VIEWSTATEENCRYPTED` z żądania, aby wykorzystać podatność deserializacji ViewState, w przeciwnym razie zostanie zwrócony błąd weryfikacji MAC ViewState, a wykorzystanie luki się nie powiedzie.
### Przypadek testowy: 4 – .Net >= 4.5 i EnableViewStateMac=true/false oraz ViewStateEncryptionMode=true/false, z wyjątkiem obu atrybutów ustawionych na false
Możesz spróbować użyć [**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper), aby znaleźć używany klucz:
Dla bardziej szczegółowego opisu IISDirPath i TargetPagePath [odwołaj się tutaj](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
Gdy zidentyfikowany zostanie prawidłowy klucz maszyny, **następnym krokiem jest wygenerowanie spersonalizowanego ładunku za pomocą** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
Jeśli masz wartość `__VIEWSTATEGENERATOR`, możesz spróbować **użyć** parametru `--generator` z tą wartością i **pominąć** parametry `--path` i `--apppath`.
Pomyślne wykorzystanie podatności deserializacji ViewState spowoduje żądanie out-of-band do serwera kontrolowanego przez atakującego, które zawiera nazwę użytkownika. Ten rodzaj ataku jest pokazany w dowodzie koncepcji (PoC), który można znaleźć w zasobie zatytułowanym "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET". Aby uzyskać więcej informacji na temat działania procesu eksploatacji i jak korzystać z narzędzi takich jak Blacklist3r do identyfikacji MachineKey, można przejrzeć udostępniony [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
Właściwość **ViewStateUserKey** może być użyta do **obrony** przed atakiem **CSRF**. Jeśli taki klucz został zdefiniowany w aplikacji i spróbujemy wygenerować ładunek **ViewState** za pomocą omówionych dotychczas metod, **ładunek nie zostanie przetworzony przez aplikację**.\
Dla wszystkich przypadków testowych, jeśli ładunek ViewState YSoSerial.Net działa **poprawnie**, serwer odpowiada " **500 Internal server error**" z treścią odpowiedzi " **The state information is invalid for this page and might be corrupted**" i otrzymujemy żądanie OOB.
Sprawdź [dalsze informacje tutaj](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)
**Wskazówka dotycząca bug bounty**: **Zarejestruj się** na platformie bug bounty **Intigriti**, stworzonej przez hakerów, dla hakerów! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody aż do **$100,000**!
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.