Učite i vežbajte AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Učite i vežbajte GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
**Savjet za bug bounty**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
**ViewState** služi kao podrazumevani mehanizam u ASP.NET-u za održavanje podataka o stranici i kontrolama između web stranica. Tokom renderovanja HTML-a stranice, trenutna stanja stranice i vrednosti koje treba sačuvati tokom postback-a se serijalizuju u base64-encoded stringove. Ovi stringovi se zatim smeštaju u skrivene ViewState polja.
1. Za **bilo koju verziju .NET-a**, kada su MAC i Enkripcija onemogućeni, MachineKey nije potreban, i stoga ne postoji primenljiva metoda za njegovo identifikovanje.
2. Za **verzije ispod 4.5**, ako je MAC omogućen, ali Enkripcija nije, MachineKey je potreban. Metoda za identifikaciju MachineKey-a se naziva "Blacklist3r."
3. Za **verzije ispod 4.5**, bez obzira na to da li je MAC omogućen ili onemogućen, ako je Enkripcija omogućena, MachineKey je potreban. Identifikacija MachineKey-a je zadatak za "Blacklist3r - Budući razvoj."
4. Za **verzije 4.5 i više**, sve kombinacije MAC-a i Enkripcije (bilo da su oba true, ili jedan true a drugi false) zahtevaju MachineKey. MachineKey se može identifikovati koristeći "Blacklist3r."
Možete pokušati da identifikujete da li je ViewState zaštićen MAC-om tako što ćete uhvatiti zahtev koji sadrži ovaj parametar pomoću BurpSuite-a. Ako se MAC ne koristi za zaštitu parametra, možete ga iskoristiti koristeći [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
Developers can **remove ViewState** from becoming part of an HTTP Request (korisnik neće primiti ovaj kolačić).\
One may assume that if **ViewState** is **not present**, their implementation is **secure** from any potential vulnerabilities arising with ViewState deserialization.\
However, that is not the case. If we **add ViewState parameter** to the request body and send our serialized payload created using ysoserial, we will still be able to achieve **code execution** as shown in **Case 1**.
Možete pokušati da koristite [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) da pronađete korišćeni ključ.
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) je još jedan alat koji može identifikovati poznate machineKeys. Napisan je u Python-u, tako da, za razliku od Blacklist3r, nema zavisnost od Windows-a. Za .NET viewstate-ove postoji "python blacklist3r" alat, koji je najbrži način da se koristi.
Da biste pretraživali ranjive viewstate-ove na velikoj skali, u kombinaciji sa enumeracijom poddomena, može se koristiti `badsecrets` [**BBOT**](exploiting-\_\_viewstate-parameter.md) modul:
U ovom slučaju nije poznato da li je parametar zaštićen MAC-om. Tada je vrednost verovatno enkriptovana i **biće vam potrebna Mašinska Ključ za enkripciju vašeg payload-a** kako biste iskoristili ranjivost.
**Pre .NET 4.5**, ASP.NET može **prihvatiti****nekriptovani** \_`__VIEWSTATE`\_parametar od korisnika **čak i** ako je **`ViewStateEncryptionMode`** postavljen na _**Uvek**_. ASP.NET **samo proverava****prisutnost****`__VIEWSTATEENCRYPTED`** parametra u zahtevu. **Ako se ovaj parametar ukloni i pošalje nekriptovani payload, on će i dalje biti obrađen.**
Stoga, ako napadači pronađu način da dobiju Mašinski ključ putem druge ranjivosti kao što je pretraga datoteka, [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) komanda korišćena u **Slučaju 2**, može se koristiti za izvođenje RCE koristeći ranjivost deserializacije ViewState-a.
* Uklonite `__VIEWSTATEENCRYPTED` parametar iz zahteva kako biste iskoristili ranjivost deserializacije ViewState-a, inače će se vratiti greška u validaciji Viewstate MAC-a i eksploatacija će propasti.
Možete pokušati da koristite [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) da pronađete ključ koji se koristi:
Za detaljniji opis za IISDirPath i TargetPagePath [pogledajte ovde](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
Kada se identifikuje važeći Machine key, **sledeći korak je generisanje serijalizovanog payload-a koristeći** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
Ako imate vrednost `__VIEWSTATEGENERATOR`, možete pokušati da **koristite** parametar `--generator` sa tom vrednošću i **izostavite** parametre `--path` i `--apppath`.
Uspešna eksploatacija ranjivosti deserializacije ViewState-a dovodi do zahteva van kanala ka serveru pod kontrolom napadača, koji uključuje korisničko ime. Ova vrsta eksploata je prikazana u dokazu koncepta (PoC) koji se može pronaći kroz resurs pod nazivom "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET". Za dalja objašnjenja o tome kako funkcioniše proces eksploatacije i kako koristiti alate poput Blacklist3r za identifikaciju MachineKey-a, možete pregledati pruženi [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
Svojstvo **ViewStateUserKey** može se koristiti za **odbranu** od **CSRF napada**. Ako je takav ključ definisan u aplikaciji i pokušamo da generišemo **ViewState** payload koristeći metode o kojima smo do sada razgovarali, **payload neće biti obrađen od strane aplikacije**.\
Treba da koristite još jedan parametar kako biste ispravno kreirali payload:
Za sve test slučajeve, ako ViewState YSoSerial.Net payload radi **uspešno**, server odgovara sa “**500 Internal server error**” sa sadržajem odgovora “**Informacije o stanju su nevažeće za ovu stranicu i mogu biti oštećene**” i dobijamo OOB zahtev.
Proverite [dodatne informacije ovde](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)
**Bug bounty saveta**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
Učite i vežbajte AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Učite i vežbajte GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**