diff --git a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md index f332c8091..3226e6114 100644 --- a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md +++ b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md @@ -189,13 +189,13 @@ python3 -m ROPGadget --binary /proc/$(pgrep srop)/mem --only "svc #0" 2>/dev/nul # With rp++ ≥ 1.0.9 (arm64 support) rp++ -f ./binary --unique -r | grep "mov\s\+x8, #0x8b" # 0x8b = __NR_rt_sigreturn ``` -Oba alata razumeju **AArch64** kodiranja i će navesti kandidate `mov x8, 0x8b ; svc #0` sekvence koje se mogu koristiti kao *SROP gadget*. +Oba alata razumeju **AArch64** kodiranja i će navesti kandidate za sekvence `mov x8, 0x8b ; svc #0` koje se mogu koristiti kao *SROP gadget*. -> Napomena: Kada su binarni fajlovi kompajlirani sa **BTI**, prva instrukcija svake važeće mete indirektne grane je `bti c`. `sigreturn` trampolini koje postavlja linker već uključuju ispravnu BTI platformu, tako da gadget ostaje upotrebljiv iz neprivilegovanog koda. +> Napomena: Kada su binarni fajlovi kompajlirani sa **BTI**, prva instrukcija svake važeće mete indirektne grane je `bti c`. `sigreturn` trampolini koje postavlja linker već uključuju ispravnu BTI platformu za sletanje, tako da gadget ostaje upotrebljiv iz neprivilegovanog koda. ## Povezivanje SROP-a sa ROP-om (pivot preko `mprotect`) -`rt_sigreturn` nam omogućava kontrolu *svih* opštih registara i `pstate`. Uobičajen obrazac na x86 je: 1) koristiti SROP za pozivanje `mprotect`, 2) pivotirati na novu izvršnu stek koja sadrži shell-code. Ista ideja funkcioniše na ARM64: +`rt_sigreturn` nam omogućava kontrolu *svih* registara opšte namene i `pstate`. Uobičajen obrazac na x86 je: 1) koristiti SROP za pozivanje `mprotect`, 2) pivotirati na novu izvršnu stek koja sadrži shell-code. Ista ideja funkcioniše na ARM64: ```python frame = SigreturnFrame() frame.x8 = constants.SYS_mprotect # 226 @@ -207,7 +207,7 @@ frame.pc = svc_call # will re-enter kernel ``` Nakon slanja okvira možete poslati drugu fazu koja sadrži sirovi shell-kod na `0x400000+0x100`. Pošto **AArch64** koristi *PC-relative* adresiranje, ovo je često pogodnije od izgradnje velikih ROP lanaca. -## Validacija kernela, PAC i Shadow-Stacks +## Validacija kernela, PAC & Shadow-Stacks Linux 5.16 je uveo strožu validaciju korisničkih signalnih okvira (commit `36f5a6c73096`). Kernel sada proverava: @@ -217,7 +217,7 @@ Linux 5.16 je uveo strožu validaciju korisničkih signalnih okvira (commit `36f `pwntools>=4.10` automatski kreira usklađene okvire, ali ako ih pravite ručno, obavezno inicijalizujte *rezervisano* na nulu i izostavite SVE zapis osim ako vam zaista nije potreban—inače će `rt_sigreturn` isporučiti `SIGSEGV` umesto da se vrati. -Počevši od mainstream Android 14 i Fedora 38, korisnički prostor se kompajlira sa **PAC** (*Pointer Authentication*) i **BTI** omogućeno po defaultu (`-mbranch-protection=standard`). *SROP* sam po sebi nije pogođen jer kernel direktno prepisuje `PC` iz kreiranog okvira, zaobilazeći autentifikovani LR sačuvan na steku; međutim, svaki **sledeći ROP lanac** koji vrši indirektne granice mora skakati na BTI-omogućene instrukcije ili PACed adrese. Imajte to na umu prilikom odabira gadgeta. +Počevši od mainstream Android 14 i Fedora 38, korisnički prostor se kompajlira sa **PAC** (*Pointer Authentication*) i **BTI** omogućeni po defaultu (`-mbranch-protection=standard`). *SROP* sam po sebi nije pogođen jer kernel direktno prepisuje `PC` iz kreiranog okvira, zaobilazeći autentifikovani LR sačuvan na steku; međutim, svaki **sledeći ROP lanac** koji vrši indirektne granice mora skakati na BTI-omogućene instrukcije ili PACed adrese. Imajte to na umu prilikom izbora gadgeta. Shadow-Call-Stacks uvedeni u ARMv8.9 (i već omogućeni na ChromeOS 1.27+) su mitigacija na nivou kompajlera i *ne ometaju* SROP jer se ne izvršavaju instrukcije povratka—tok kontrole se prenosi od strane kernela. diff --git a/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md b/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md index 2fe4e0a74..60a9558e6 100644 --- a/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md +++ b/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md @@ -10,7 +10,7 @@ Postoje 3 načina da se označi sadržaj stranice unutar iframe-a: - Putem `src` koji označava sadržaj koristeći `data:` protokol - Putem `srcdoc` koji označava sadržaj -**Pristupanje Parent & Child varijablama** +**Pristupanje roditeljskim i dečijim varijablama** ```html ``` Ako pristupite prethodnom html-u putem http servera (kao što je `python3 -m http.server`), primetićete da će svi skripti biti izvršeni (pošto ne postoji CSP koji to sprečava). **roditelj neće moći da pristupi `secret` varijabli unutar bilo kog iframe-a** i **samo iframe-ovi if2 i if3 (koji se smatraju istim sajtom) mogu pristupiti tajni** u originalnom prozoru.\ -Obratite pažnju kako se if4 smatra da ima `null` poreklo. +Obratite pažnju na to kako se if4 smatra da ima `null` poreklo. ### Iframes sa CSP > [!TIP] -> Molimo vas, obratite pažnju kako u sledećim zaobilaženjima odgovor na iframed stranicu ne sadrži nijedan CSP header koji sprečava izvršavanje JS-a. +> Molimo vas, obratite pažnju na to kako u sledećim zaobilaženjima odgovor na iframed stranicu ne sadrži nijedan CSP header koji sprečava izvršavanje JS-a. `self` vrednost `script-src` neće dozvoliti izvršavanje JS koda koristeći `data:` protokol ili `srcdoc` atribut.\ Međutim, čak i `none` vrednost CSP-a će dozvoliti izvršavanje iframe-ova koji stavljaju URL (potpun ili samo putanju) u `src` atribut.\ @@ -105,9 +105,9 @@ app.run() ``` #### Nove (2023-2025) CSP bypass tehnike sa iframovima -Istraživačka zajednica nastavlja da otkriva kreativne načine zloupotrebe iframova kako bi prevazišla restriktivne politike. Ispod možete pronaći najznačajnije tehnike objavljene tokom poslednjih nekoliko godina: +Istraživačka zajednica nastavlja da otkriva kreativne načine zloupotrebe iframova kako bi se savladale restriktivne politike. Ispod možete pronaći najznačajnije tehnike objavljene tokom poslednjih nekoliko godina: -* **Dangling-markup / named-iframe data-exfiltration (PortSwigger 2023)** – Kada aplikacija reflektuje HTML, ali jaka CSP blokira izvršavanje skripti, još uvek možete iscuriti osetljive tokene injektovanjem *dangling* `