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

127 lines
8.9 KiB
Markdown
Raw Normal View History

# Kujibu Kwa Kupokea Kwa HTTP / Desync
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</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
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](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 kuvamia kwa kuwasilisha PRs 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>
**Mbinu ya chapisho hili ilitolewa kutoka kwenye 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
## Kupotosha Safu ya Ombi la HTTP
2024-02-06 03:10:38 +00:00
Kwanza kabisa, mbinu hii **inatumia udhaifu wa Kupotosha Ombi la HTTP**, kwa hivyo unahitaji kujua ni nini hicho:
2021-11-05 20:59:42 +00:00
**Tofauti kuu** kati ya mbinu hii na kupotosha kawaida ya ombi la HTTP ni kwamba **badala ya kushambulia ombi la mwathiriwa kwa kuongeza kipimo kwake**, tutakuwa **kufichua au kubadilisha jibu ambalo mwathiriwa anapokea**. Hii inafanywa kwa kutuma ombi 2 kamili badala ya ombi na nusu kwa kufanya upotoshaji wa ombi la HTTP, **tuma ombi 2 kamili kwa kudharau safu za majibu ya wakala**.
2021-11-05 20:59:42 +00:00
Hii ni kwa sababu tutaweza **kupotosha safu ya majibu** ili **jibu** kutoka kwa **ombi halali** la **mwathiriwa litumwe kwa muovu**, au kwa **kuingiza maudhui yanayodhibitiwa na muovu kwenye jibu kwa mwathiriwa**.
2021-11-05 20:59:42 +00:00
### Kupotosha Safu ya Mpipa ya HTTP
2021-11-05 20:59:42 +00:00
HTTP/1.1 inaruhusu kuomba **rasilimali tofauti bila kusubiri zile za awali**. Kwa hivyo, ikiwa kuna **wakala** katikati, ni jukumu la wakala **kuhifadhi mechi iliyosawazishwa ya maombi yanayotumwa kwa seva ya nyuma na majibu yanayokuja kutoka kwake**.
2021-11-05 20:59:42 +00:00
Walakini, kuna tatizo la kupotosha safu za majibu. Ikiwa muovu anatuma shambulio la Kupotosha Majibu ya HTTP na majibu kwa **ombi la awali na lile lililopotoshwa yanajibiwa mara moja**, jibu lililopotoshwa halitawekwa ndani ya safu ya jibu la mwathiriwa lakini litakuwa **tu linatupiliwa mbali kama kosa**.
2021-11-05 20:59:42 +00:00
Kwa hivyo, ni muhimu kwamba **ombi lililopotoshwa** **linachukua muda zaidi kusindika** ndani ya seva ya nyuma. Kwa hivyo, kufikia wakati ombi lililopotoshwa linasindika, mawasiliano na muovu yatakuwa yameisha.
2021-11-05 20:59:42 +00:00
Ikiwa katika hali hii maalum **mwathiriwa amepeleka ombi** na **ombi lililopotoshwa linajibiwa kabla** ya ombi halali, **jibu lililopotoshwa litatumwa kwa mwathiriwa**. Kwa hivyo, muovu atakuwa **anadhibiti ombi "lililofanywa" na mwathiriwa**.
2021-11-05 20:59:42 +00:00
Zaidi ya hayo, ikiwa **muovu kisha atafanya ombi** na **jibu halali** kwa **mwathiriwa** linajibiwa **kabla** ya ombi la muovu. **Jibu kwa mwathiriwa litatumwa kwa muovu**, **kuiba** jibu kwa mwathiriwa (ambalo linaweza kuwa na kichwa kama vile **Set-Cookie**).
2021-11-05 20:59:42 +00:00
### Uingizaji wa Ndani wa Mara nyingi
2021-11-05 20:59:42 +00:00
Tofauti nyingine **ya kuvutia** na **Kupotosha Kawaida ya Ombi la HTTP** ni kwamba, katika shambulio la kawaida la kupotosha, ** lengo** ni **kubadilisha mwanzo wa ombi la mwathiriwa** ili ifanye hatua isiyotarajiwa. Katika **shambulio la Kupotosha Majibu ya HTTP**, kwa kuwa **unatuma maombi kamili**, unaweza **kuingiza kwenye mzigo mmoja majibu kadhaa** ambayo yatakuwa **kupotosha mamia ya watumiaji** ambao watakuwa **wanapokea** **majibu** **yaliyoingizwa**.
2021-11-05 20:59:42 +00:00
Mbali na kuweza **kugawa kwa urahisi majibu kadhaa** kwa watumiaji halali, hii inaweza pia kutumika kusababisha **DoS** kwenye seva.
2021-11-05 20:59:42 +00:00
### Uendeshaji wa Shambulio
2021-11-05 20:59:42 +00:00
Kama ilivyoelezwa hapo awali, ili kutumia mbinu hii, ni muhimu kwamba **ujumbe wa kwanza uliopotoshwa** ndani ya seva **unachukua muda mwingi kusindika**.
2021-11-05 20:59:42 +00:00
Hii **ombi lenye kuchukua muda** ni ya kutosha ikiwa tunataka **jaribu kuiba jibu la mwathiriwa**. Lakini ikiwa unataka kufanya shambulio lenye utata zaidi hii itakuwa muundo wa kawaida wa shambulio.
2021-11-05 20:59:42 +00:00
Kwanza kabisa **ombi la kwanza** likitumia **Kupotosha Ombi la HTTP**, kisha **ombi lenye kuchukua muda** na kisha **ombi 1 au zaidi la mzigo** ambalo majibu yake yatatumiwa kwa waathiriwa.
2021-11-05 20:59:42 +00:00
## Kutumia Kupotosha Safu ya Majibu
### Kukamata maombi ya watumiaji wengine <a href="#capturing-other-users-requests" id="capturing-other-users-requests"></a>
Kama ilivyo na malipo yaliyofahamika ya Kupotosha Ombi la HTTP, unaweza **kuiba ombi la mwathiriwa** na tofauti muhimu: Katika kesi hii unahitaji **maudhui yaliyotumwa yarudi kwenye jibu**, **hakuna uhifadhi endelevu** unahitajika.
2021-11-05 20:59:42 +00:00
Kwanza, muovu anatuma mzigo unaotumia **ombi la mwisho la POST na parameta iliyorudiwa** mwishoni na Content-Length kubwa
2021-11-05 20:59:42 +00:00
Kisha, mara tu **ombi la awali** (buluu) liliposindika na **wakati** **wakati** **ombi lenye usingizi** linasindika (njano) **ombi linalofuata linalofika kutoka kwa mwathiriwa** litakuwa **kuongezwa kwenye foleni mara baada ya parameta iliyorudiwa**:
2021-11-05 20:59:42 +00:00
Kisha, **mwathiriwa** atapokea **jibu kwa ombi lenye usingizi** na ikiwa kwa wakati huo **muovu** **alituma** **ombi lingine**, **jibu kutoka kwa ombi la maudhui lililorudiwa litatumwa kwake**.
2021-11-05 20:59:42 +00:00
## Kupotosha Majibu
2021-11-05 20:59:42 +00:00
Mpaka sasa, tumepata jinsi ya kutumia mashambulio ya Kupotosha Ombi la HTTP kudhibiti **ombi** ambalo **jibu** mteja atapokea na jinsi unavyoweza kisha **kuiba jibu lililokusudiwa kwa mwathiriwa**.
2021-11-05 20:59:42 +00:00
Lakini bado inawezekana **kupotosha hata zaidi** majibu.
2021-11-05 20:59:42 +00:00
Kuna maombi ya kuvutia kama **ombi la KICHWA** ambayo yameelezwa kutokuwa na **maudhui yoyote ndani ya mwili wa majibu** na inapaswa (lazima) **iwe na Content-Length** ya ombi kama **kama ilivyokuwa ombi la GET**.
2021-11-05 20:59:42 +00:00
Kwa hivyo, ikiwa muovu **anaingiza** ombi la **KICHWA**, kama katika picha hizi:
2021-11-05 20:59:42 +00:00
Kisha, **mara tu lililokuwa buluu linajibiwa kwa muovu**, ombi la mwathiriwa linayofuata litawekwa kwenye foleni:
Kisha, **mwathiriwa** atapokea **jibu** kutoka kwa **ombi la KICHWA**, ambalo **litakuwa na Content-Length lakini hakuna maudhui kabisa**. Kwa hivyo, wakala **hautatuma jibu hili** kwa mwathiriwa, bali **utangoja** kwa **maudhui**, ambayo kimsingi itakuwa **jibu kwa ombi la njano** (pia lililoingizwa na muovu):
2024-02-11 02:13:58 +00:00
### Utata wa Yaliyomo
2021-11-05 20:59:42 +00:00
Kufuatia mfano uliopita, ukijua kwamba unaweza **kudhibiti mwili** wa ombi ambalo jibu lake linatarajiwa kupokea na muathiriwa na kwamba jibu la **HEAD** kawaida lina **Content-Type na Content-Length** katika vichwa vyake, unaweza **kutuma ombi kama ifuatavyo** kusababisha XSS kwa muathiriwa bila ukurasa kuwa na udhaifu wa XSS:
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (685).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
Kwa kutumia shambulio la Utata wa Yaliyomo lililopita la kudhoofisha majibu yaliyosafishwa, **ikiwa cache inahifadhi jibu kwa ombi lililofanywa na muathiriwa na jibu hili ni moja linalosababisha XSS, basi cache imechafuliwa**.
2021-11-05 20:59:42 +00:00
Ombi la uovu lenye mzigo wa XSS:
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (611).png>)
2021-11-05 20:59:42 +00:00
Jibu la uovu kwa muathiriwa linaloonyesha kichwa kinachoelekeza cache kuhifadhi jibu:
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (563).png>)
2021-11-05 20:59:42 +00:00
{% hint style="warning" %}
Tambua kwamba katika kesi hii ikiwa **"muathiriwa" ni mshambuliaji** anaweza sasa kufanya **kudhoofisha cache kwa URL za kupindukia** kwani anaweza **kudhibiti URL itakayohifadhiwa** na jibu la uovu.
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
Shambulio hili ni sawa na lile lililopita, lakini **badala ya kuingiza mzigo ndani ya cache, mshambuliaji atahifadhi habari za muathiriwa ndani ya cache:**
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (988).png>)
2021-11-05 20:59:42 +00:00
### Kugawanyika kwa Majibu
2021-11-05 20:59:42 +00:00
**Lengo** la shambulio hili ni kutumia tena **kudhoofisha majibu** **kwa lengo la kufanya proksi itume majibu yaliyotengenezwa 100% na mshambuliaji**.
2021-11-05 20:59:42 +00:00
Ili kufanikisha hili, mshambuliaji anahitaji kupata mwisho wa programu ya wavuti ambao **unarejea baadhi ya thamani ndani ya majibu** na **kujua urefu wa yaliyomo wa jibu la HEAD**.
2021-11-05 20:59:42 +00:00
Atatuma **exploit** kama:
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (908).png>)
2021-11-05 20:59:42 +00:00
Baada ya ombi la kwanza kutatuliwa na kutumwa kwa mshambuliaji, **ombi la muathiriwa linaongezwa kwenye foleni**:
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (734).png>)
2021-11-05 20:59:42 +00:00
Muathiriwa atapokea kama jibu **jibu la HEAD + yaliyomo ya jibu la pili (lenye sehemu ya data iliyorejelewa):**
2021-11-05 20:59:42 +00:00
![](<../.gitbook/assets/image (353).png>)
2021-11-05 20:59:42 +00:00
Hata hivyo, angalia jinsi **data iliyorejelewa ilikuwa na ukubwa kulingana na Content-Length** ya jibu la **HEAD** lililosababisha jibu la HTTP linalofaa katika foleni ya majibu**.
2022-04-28 16:01:33 +00:00
Kwa hivyo, **ombi la pili la muathiriwa** litakuwa **likipokea** kama **jibu kitu kilichoundwa kabisa na mshambuliaji**. Kwa kuwa jibu limeundwa kabisa na mshambuliaji, yeye pia **anaweza kufanya proksi kuhifadhi jibu**.