hacktricks/pentesting-web/http-response-smuggling-desync.md

134 lines
9 KiB
Markdown
Raw Normal View History

2024-02-11 02:13:58 +00:00
# Kudukiza Majibu ya HTTP / Desync
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:13:58 +00:00
<summary><strong>Jifunze kuhusu kudukiza AWS kutoka mwanzo hadi mtaalamu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Njia nyingine za kusaidia HackTricks:
2023-12-31 01:25:17 +00:00
2024-02-11 02:13:58 +00:00
* Ikiwa unataka kuona **kampuni yako inatangazwa katika HackTricks** au **kupakua HackTricks katika PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukiza kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 02:13:58 +00:00
**Mbinu ya chapisho hili ilitokana na video: [https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s](https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s)**
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
## Kudukiza Safu ya Ombi la HTTP
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kwanza kabisa, mbinu hii **inatumia udhaifu wa Kudukiza Ombi la HTTP**, kwa hivyo unahitaji kujua ni nini:
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
**Tofauti kuu** kati ya mbinu hii na kudukiza kawaida ya Ombi la HTTP ni kwamba **badala ya kushambulia ombi la mwathirika kwa kuongeza kipimo**, tutakuwa **kuvuja au kubadilisha majibu anayopokea mwathirika**. Hii inafanywa kwa kutuma ombi 1 na nusu ili kudukiza Kudukiza Ombi la HTTP, **tuma ombi 2 kamili ili kudukiza safu za majibu za wakala**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Hii ni kwa sababu tutaweza **kudukiza safu ya majibu** ili **majibu** kutoka kwa **ombi halali** la **mwathirika yatumwe kwa mshambuliaji**, au kwa **kuingiza maudhui yanayodhibitiwa na mshambuliaji kwenye majibu kwa mwathirika**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
### Kudukiza Safu ya Mpipelines ya HTTP
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
HTTP/1.1 inaruhusu kuomba **rasilimali tofauti bila kusubiri rasilimali za awali**. Kwa hivyo, ikiwa kuna **wakala** katikati, ni jukumu la wakala **kuweka usawazishaji wa ombi zilizotumwa kwa seva ya nyuma na majibu yanayotoka**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Walakini, kuna tatizo la kuduwaza safu za majibu. Ikiwa mshambuliaji anatuma shambulio la Kudukiza Majibu ya HTTP na majibu kwa **ombi la awali na lile lililodukizwa yanajibiwa mara moja**, majibu lililodukizwa halitawekwa kwenye safu ya majibu ya mwathirika lakini litakuwa **limefutwa kama kosa**.
2021-11-05 20:59:42 +00:00
2022-03-09 12:12:51 +00:00
![](<../.gitbook/assets/image (635) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kwa hivyo, inahitajika kwamba **ombi lililodukizwa** **lichukue muda zaidi kusindika** ndani ya seva ya nyuma. Kwa hivyo, wakati ombi lililodukizwa linasindika, mawasiliano na mshambuliaji yatakuwa yamekwisha.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Ikiwa katika hali hii maalum **mwathirika amepeleka ombi** na **ombi lililodukizwa linajibiwa kabla** ya ombi halali, **majibu lililodukizwa yatatumiwa kwa mwathirika**. Kwa hivyo, mshambuliaji atakuwa **anadhibiti ombi "lililotekelezwa" na mwathirika**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Zaidi ya hayo, ikiwa **mshambuliaji kisha anafanya ombi** na **majibu halali** kwa **ombi la mwathirika yanajibiwa** **kabla** ya ombi la mshambuliaji. **Majibu kwa mwathirika yatatumiwa kwa mshambuliaji**, **kuiba** majibu kwa mwathirika (ambayo inaweza kuwa na kichwa kama vile **Set-Cookie**).
2021-11-05 20:59:42 +00:00
2022-03-09 12:12:51 +00:00
![](<../.gitbook/assets/image (658) (1).png>)
2021-11-05 20:59:42 +00:00
2022-04-22 08:32:18 +00:00
![](<../.gitbook/assets/image (655) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
### Uingizaji wa Ndani Mbalimbali
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Tofauti nyingine **ya kuvutia** na kudukiza kawaida ya Ombi la HTTP ni kwamba, katika shambulio la kawaida la udanganyifu wa ombi, **lengo** ni **kubadilisha mwanzo wa ombi la mwathirika** ili ifanye hatua isiyotarajiwa. Katika shambulio la **kudukiza majibu ya HTTP**, kwa kuwa **unatuma ombi kamili**, unaweza **kuingiza katika malipo moja majibu mengi** ambayo yatakuwa **kuduwaza watumiaji wengi** ambao watakuwa **wakipokea** majibu **yaliyodukizwa**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Mbali na kuweza **kugawa kwa urahisi majaribio mengi** kwa watumiaji halali, hii pia inaweza kutumika kusababisha **DoS** kwenye seva.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
### Uendeshaji wa Shambulio
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kama ilivyoelezwa hapo awali, ili kutumia mbinu hii, inahitajika kwamba **ujumbe uliodukizwa wa kwanza** ndani ya seva **uchukue muda mwingi kusindika**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Ombi hili la kuchukua muda linatosha ikiwa tunataka tu **jaribu kuiba majibu ya mwathirika**. Lakini ikiwa unataka kufanya shambulio lenye utata zaidi, hii itakuwa muundo wa kawaida wa shambulio.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kwanza kabisa, **ombi la awali** likitumia **Kudukiza Ombi la HTTP**, kisha **ombi la kuchukua muda** na kisha **ombi 1 au zaidi ya malipo** ambayo majibu yake yatatumiwa kwa waathirika.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
## Kudukiza Safu ya Majibu ya HTTP
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
### Kukamata ombi za watumiaji wengine <a href="#capturing-other-users-requests" id="capturing-other-users-requests"></a>
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kama ilivyo na malipo yaliyofahamika ya Kudukiza Ombi la HTTP, unaweza **kuiba ombi la mwathirika** na tofauti muhimu: Katika kesi hii, unahitaji tu **kupeleka yaliyomo yanayorejelewa kwenye majibu**, **hakuna uhifadhi endelevu** unahitajika.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kwanza, mshambuliaji anapeleka malipo yaliyokuwa na **ombi la mwisho la POST na kipengele kilichorejelewa** mwishoni na Content-Length kubwa
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (625).png>)
2024-02-11 02:13:58 +00:00
Kisha, mara tu **ombi la awali** (buluu) liliposindika na **wakati** ombi la **kulala** linasindika (manjano) **ombi inayofuata inayofika kutoka
### Utata wa Yaliyomo
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kufuatia mfano uliopita, ukijua kuwa unaweza **kudhibiti mwili** wa ombi ambalo jibu lake linatarajiwa kupokelewa na mwathirika na kwamba jibu la **HEAD** kawaida lina **Content-Type na Content-Length** katika vichwa vyake, unaweza **kutuma ombi kama ifuatavyo** ili kusababisha XSS kwa mwathirika bila ukurasa kuwa na udhaifu wa XSS:
2021-11-05 20:59:42 +00:00
2022-03-21 17:37:28 +00:00
![](<../.gitbook/assets/image (654) (1) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
### Kuharibu Cache
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kwa kutumia shambulio la utata wa yaliyomo la majibu yaliyosawazishwa hapo awali, **ikiwa cache inahifadhi jibu kwa ombi lililofanywa na mwathirika na jibu hili ni moja linalosababisha XSS, basi cache imeharibiwa**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Ombi la nia mbaya linaloleta mzigo wa XSS:
2021-11-05 20:59:42 +00:00
2022-03-09 12:12:51 +00:00
![](<../.gitbook/assets/image (644) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Jibu la nia mbaya kwa mwathirika ambalo lina kichwa kinachoelekeza cache kuhifadhi jibu:
2021-11-05 20:59:42 +00:00
2022-02-02 15:35:20 +00:00
![](<../.gitbook/assets/image (629) (1).png>)
2021-11-05 20:59:42 +00:00
{% hint style="warning" %}
2024-02-11 02:13:58 +00:00
Tafadhali kumbuka kuwa katika kesi hii ikiwa **"mwathirika" ni mshambuliaji** anaweza sasa kufanya **uharibifu wa cache kwenye URL za kiholela** kwani anaweza **kudhibiti URL ambayo itahifadhiwa** na jibu la nia mbaya.
2021-11-05 20:59:42 +00:00
{% endhint %}
2024-02-11 02:13:58 +00:00
### Udanganyifu wa Cache ya Wavuti
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Shambulio hili ni kama lile lililopita, lakini **badala ya kuingiza mzigo ndani ya cache, mshambuliaji atahifadhi habari za mwathirika ndani ya cache:**
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (643) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
### Kugawanya Majibu
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Lengo la shambulio hili ni kutumia tena **usawazishaji wa majibu** ili **kufanya proksi itume majibu yaliyotengenezwa na mshambuliaji kwa 100%**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Ili kufanikisha hili, mshambuliaji anahitaji kupata mwisho wa programu ya wavuti ambao **unarejelea baadhi ya thamani ndani ya jibu** na **kujua urefu wa yaliyomo ya jibu la HEAD**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Atatuma **shambulio** kama hili:
2021-11-05 20:59:42 +00:00
2022-04-25 12:04:04 +00:00
![](<../.gitbook/assets/image (649) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Baada ya ombi la kwanza kutatuliwa na kutumwa kwa mshambuliaji, **ombi la mwathirika linaongezwa kwenye foleni**:
2021-11-05 20:59:42 +00:00
2022-04-05 22:13:36 +00:00
![](<../.gitbook/assets/image (661) (1) (1) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Mwathirika atapokea kama jibu **jibu la HEAD + yaliyomo ya jibu la pili (linaloonyesha sehemu ya data iliyorejelewa):**
2021-11-05 20:59:42 +00:00
2022-02-19 19:42:58 +00:00
![](<../.gitbook/assets/image (633) (1).png>)
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Hata hivyo, tafadhali kumbuka jinsi **data iliyorejelewa ilikuwa na ukubwa kulingana na Content-Length** ya jibu la **HEAD** ambalo **lilizalisha jibu la HTTP halali kwenye foleni ya majibu**.
2021-11-05 20:59:42 +00:00
2024-02-11 02:13:58 +00:00
Kwa hiyo, **ombi la pili la mwathirika** litakuwa **likipokea** kama **jibu kitu kilichotengenezwa kabisa na mshambuliaji**. Kwa kuwa jibu limeundwa kabisa na mshambuliaji, yeye pia anaweza **kufanya cache ya jibu**.
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:13:58 +00:00
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Njia nyingine za kusaidia HackTricks:
2023-12-31 01:25:17 +00:00
2024-02-11 02:13:58 +00:00
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>