diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ef5322f3e..d902fdb93 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -435,6 +435,7 @@ - [PrestaShop](network-services-pentesting/pentesting-web/prestashop.md) - [Python](network-services-pentesting/pentesting-web/python.md) - [Rocket Chat](network-services-pentesting/pentesting-web/rocket-chat.md) + - [Ruby Tricks](network-services-pentesting/pentesting-web/ruby-tricks.md) - [Special HTTP headers$$external:network-services-pentesting/pentesting-web/special-http-headers.md$$]() - [Source code Review / SAST Tools](network-services-pentesting/pentesting-web/code-review-tools.md) - [Spring Actuators](network-services-pentesting/pentesting-web/spring-actuators.md) diff --git a/src/network-services-pentesting/pentesting-web/ruby-tricks.md b/src/network-services-pentesting/pentesting-web/ruby-tricks.md new file mode 100644 index 000000000..b5ddf3321 --- /dev/null +++ b/src/network-services-pentesting/pentesting-web/ruby-tricks.md @@ -0,0 +1,9 @@ +# Ruby Tricks + +{{#include ../../banners/hacktricks-training.md}} + +## Učitavanje fajlova za RCE + +Kao što je objašnjeno u [ovom članku](https://www.offsec.com/blog/cve-2024-46986/), učitavanje `.rb` fajla u osetljive direktorijume kao što su `config/initializers/` može dovesti do daljinskog izvršavanja koda (RCE) u Ruby on Rails aplikacijama. + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/clickjacking.md b/src/pentesting-web/clickjacking.md index 5fc157415..f67e3a464 100644 --- a/src/pentesting-web/clickjacking.md +++ b/src/pentesting-web/clickjacking.md @@ -92,7 +92,7 @@ background: #F00; Ako ste identifikovali **XSS napad koji zahteva da korisnik klikne** na neki element da bi **pokrenuo** XSS i stranica je **ranjiva na clickjacking**, mogli biste to iskoristiti da prevarite korisnika da klikne na dugme/link.\ Primer:\ Pronašli ste **self XSS** u nekim privatnim podacima naloga (podaci koje **samo vi možete postaviti i čitati**). Stranica sa **formom** za postavljanje ovih podataka je **ranjiva** na **Clickjacking** i možete **prepopuniti** **formu** sa GET parametrima.\ -Napadač bi mogao pripremiti **Clickjacking** napad na tu stranicu **prepopunjavajući** **formu** sa **XSS payload-om** i **prevariti** **korisnika** da **pošalje** formu. Tako, **kada se forma pošalje** i vrednosti su izmenjene, **korisnik će izvršiti XSS**. +Napadač bi mogao pripremiti **Clickjacking** napad na tu stranicu **prepopunjavajući** **formu** sa **XSS payload-om** i **varajući** **korisnika** da **pošalje** formu. Tako, **kada se forma pošalje** i vrednosti su izmenjene, **korisnik će izvršiti XSS**. ### DoubleClickjacking @@ -119,7 +119,7 @@ Skripte koje se izvršavaju na klijentskoj strani mogu izvesti radnje da spreče Međutim, ovi skripti za razbijanje okvira mogu biti zaobiđeni: - **Bezbednosne postavke pregledača:** Neki pregledači mogu blokirati ove skripte na osnovu svojih bezbednosnih postavki ili nedostatka podrške za JavaScript. -- **HTML5 iframe `sandbox` atribut:** Napadač može neutralisati skripte za razbijanje okvira postavljanjem `sandbox` atributa sa `allow-forms` ili `allow-scripts` vrednostima bez `allow-top-navigation`. Ovo sprečava iframe da verifikuje da li je on gornji prozor, npr., +- **HTML5 iframe `sandbox` atribut:** Napadač može neutralisati skripte za razbijanje okvira postavljanjem `sandbox` atributa sa `allow-forms` ili `allow-scripts` vrednostima bez `allow-top-navigation`. Ovo sprečava iframe da proveri da li je on gornji prozor, npr., ```html #### X-Frame-Options -**`X-Frame-Options` HTTP odgovor header** obaveštava pretraživače o legitimnosti renderovanja stranice u `` ili ` ``` +### Credentialless iframes + +Kao što je objašnjeno u [ovom članku](https://blog.slonser.info/posts/make-self-xss-great-again/), `credentialless` oznaka u iframe-u se koristi za učitavanje stranice unutar iframe-a bez slanja kredencijala u zahtevu, dok se održava politika istog porekla (SOP) učitane stranice u iframe-u. + +Ovo omogućava iframe-u da pristupi osetljivim informacijama iz drugog iframe-a u istom SOP-u učitanom na roditeljskoj stranici: +```javascript +window.top[1].document.body.innerHTML = 'Hi from credentialless'; +alert(window.top[1].document.cookie); +``` +- Primer eksploatacije: Self-XSS + CSRF + +U ovom napadu, napadač priprema zloćudnu veb stranicu sa 2 iframe-a: + +- Iframe koji učitava stranicu žrtve sa `credentialless` oznakom sa CSRF-om koji pokreće XSS (Zamislite Self-XSS u korisničkom imenu korisnika): +```html + + +
+ + + +
+ + + +``` + +- Drugi iframe koji zapravo ima korisnika prijavljenog (bez `credentialless` oznake). + +Zatim, iz XSS-a je moguće pristupiti drugom iframe-u jer imaju isti SOP i ukrasti kolačić, na primer izvršavanjem: +```javascript +alert(window.top[1].document.cookie); +``` +### fetchLater Attack + +Kao što je navedeno u [ovom članku](https://blog.slonser.info/posts/make-self-xss-great-again/), API `fetchLater` omogućava konfiguraciju zahteva koji će biti izvršen kasnije (nakon određenog vremena). Stoga, ovo se može zloupotrebiti da, na primer, prijavi žrtvu unutar napadačeve sesije (sa Self-XSS), postavi `fetchLater` zahtev (da promeni lozinku trenutnog korisnika, na primer) i odjavi se iz napadačeve sesije. Zatim, žrtva se prijavljuje u svoju sesiju i `fetchLater` zahtev će biti izvršen, menjajući lozinku žrtve na onu koju je postavio napadač. + +Na ovaj način, čak i ako URL žrtve ne može biti učitan u iframe (zbog CSP-a ili drugih ograničenja), napadač i dalje može izvršiti zahtev u sesiji žrtve. +```javascript +var req = new Request("/change_rights",{method:"POST",body:JSON.stringify({username:"victim", rights: "admin"}),credentials:"include"}) +const minute = 60000 +let arr = [minute, minute * 60, minute * 60 * 24, ...] +for (let timeout of arr) +fetchLater(req,{activateAfter: timeout}) +``` ## Iframes u SOP Proverite sledeće stranice: