(.*?)', raw_html)
- title = match.group(1) if match else href
- except Exception as e:
- logger.debug(f'Error opening URL {href}: {e}')
- pass #nDont stop on broken link
+ if context['config']['preprocessor']['hacktricks']['env'] == 'dev':
+ pass
+ else:
+ try:
+ raw_html = str(urlopen(Request(href, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0'})).read())
+ match = re.search('(.*?)', raw_html)
+ title = match.group(1) if match else href
+ except Exception as e:
+ logger.debug(f'Error opening URL {href}: {e}')
+ pass #nDont stop on broken link
else:
try:
if href.endswith("/"):
@@ -90,7 +92,7 @@ if __name__ == '__main__':
context, book = json.load(sys.stdin)
logger.debug(f"Context: {context}")
-
+ logger.debug(f"Env: {context['config']['preprocessor']['hacktricks']['env']}")
for chapter in iterate_chapters(book['sections']):
logger.debug(f"Chapter: {chapter['path']}")
diff --git a/src/1911-pentesting-fox.md b/src/1911-pentesting-fox.md
index cfbbb6788..bf5fe9912 100644
--- a/src/1911-pentesting-fox.md
+++ b/src/1911-pentesting-fox.md
@@ -12,7 +12,7 @@ dht udp "DHT Düğümleri"
![]()
-![]()
+![]()
InfluxDB
@@ -24,6 +24,6 @@ InfluxDB
![]()
-![]()
+![]()
{{#include ./banners/hacktricks-training.md}}
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/README.md b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
index 64d0d8287..4d0d4a2d1 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/README.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
@@ -14,7 +14,7 @@ Eklenti düzenleri en iyi şekilde görselleştirildiğinde görünür ve üç b
### **İçerik Scriptleri**
-Her içerik scriptinin **tek bir web sayfasının** DOM'una doğrudan erişimi vardır ve bu nedenle **potansiyel olarak kötü niyetli girdilere** maruz kalır. Ancak, içerik scripti eklenti çekirdeğine mesaj gönderme yeteneği dışında hiçbir izne sahip değildir.
+Her içerik scriptinin **tek bir web sayfasının** DOM'una doğrudan erişimi vardır ve bu nedenle **potansiyel olarak kötü niyetli girdilere** maruz kalır. Ancak, içerik scripti eklenti çekirdeğine mesaj göndermenin dışında hiçbir izne sahip değildir.
### **Eklenti Çekirdeği**
@@ -27,7 +27,7 @@ Eklenti, kullanıcının tam ayrıcalıklarıyla **ana makineye erişebilen bir
### Sınırlar
> [!CAUTION]
-> Kullanıcının tam ayrıcalıklarını elde etmek için, bir saldırganın eklentiyi içerik scriptinden kötü niyetli girişi eklentinin çekirdeğine ve eklentinin çekirdeğinden yerel ikiliye geçirmesi için ikna etmesi gerekir.
+> Kullanıcının tam ayrıcalıklarını elde etmek için, bir saldırganın eklentiyi içerik scriptinden eklentinin çekirdeğine ve eklentinin çekirdeğinden yerel ikiliye kötü niyetli girdi geçirmesi için ikna etmesi gerekir.
Eklentinin her bir bileşeni, **güçlü koruyucu sınırlarla** birbirinden ayrılmıştır. Her bir bileşen, **ayrı bir işletim sistemi sürecinde** çalışır. İçerik scriptleri ve eklenti çekirdekleri, çoğu işletim sistemi hizmetine kapalı olan **sandbox süreçlerinde** çalışır.
@@ -61,7 +61,7 @@ Bir Chrome eklentisi, [.crx dosya uzantısına](https://www.lifewire.com/crx-fil
```
### `content_scripts`
-İçerik betikleri, kullanıcı **eşleşen bir sayfaya gittiğinde** **yüklenir**, bu durumda **`https://example.com/*`** ifadesine uyan ve **`*://*/*/business*`** regex'ine uymayan herhangi bir sayfa. Sayfanın [Belge Nesne Modeli (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model) üzerinde keyfi erişime sahip olarak **sayfanın kendi betikleri gibi** çalışırlar.
+İçerik betikleri, kullanıcı **eşleşen bir sayfaya gittiğinde** **yüklenir**, bu durumda **`https://example.com/*`** ifadesine uyan ve **`*://*/*/business*`** regex'ine uymayan herhangi bir sayfa. Sayfanın [Belge Nesne Modeline (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model) erişimi vardır ve **sayfanın kendi betikleri gibi** çalışırlar.
```json
"content_scripts": [
{
@@ -78,7 +78,7 @@ Bir Chrome eklentisi, [.crx dosya uzantısına](https://www.lifewire.com/crx-fil
```
Daha fazla URL eklemek veya çıkarmak için **`include_globs`** ve **`exclude_globs`** kullanmak da mümkündür.
-Bu, uzantının depolamasından `message` değerini almak için [depolama API'sini](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) kullanan bir açıklama butonu ekleyecek örnek bir içerik betiğidir.
+Bu, uzantının depolama alanından `message` değerini almak için [depolama API'sini](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) kullanan bir açıklama butonu ekleyecek örnek bir içerik betiğidir.
```js
chrome.storage.local.get("message", (result) => {
let div = document.createElement("div")
@@ -104,9 +104,9 @@ Geliştirici araçları görüntülendikten sonra, **Kaynak sekmesi** tıklanmal
### Enjekte Edilmiş İçerik Betikleri
> [!TIP]
-> **İçerik Betikleri zorunlu değildir**; ayrıca **dinamik olarak** **enjekte** betikleri ve web sayfalarına **programatik olarak enjekte** etmek de mümkündür; bu, **`tabs.executeScript`** aracılığıyla gerçekleştirilir. Bu, aslında daha **detaylı kontroller** sağlar.
+> **İçerik Betikleri zorunlu değildir**; ayrıca **dinamik olarak** **betik enjekte etmek** ve **programatik olarak** web sayfalarına enjekte etmek de mümkündür; bu, **`tabs.executeScript`** aracılığıyla gerçekleştirilir. Bu, aslında daha **detaylı kontroller** sağlar.
-Bir içerik betiğinin programatik olarak enjekte edilmesi için, uzantının betiklerin enjekte edileceği sayfa için [host permissions](https://developer.chrome.com/docs/extensions/reference/permissions) alması gerekmektedir. Bu izinler, uzantının manifestosunda **talep edilerek** veya geçici olarak [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab) aracılığıyla güvence altına alınabilir.
+Bir içerik betiğinin programatik olarak enjekte edilmesi için, uzantının betiklerin enjekte edileceği sayfa için [host izinlerine](https://developer.chrome.com/docs/extensions/reference/permissions) sahip olması gerekmektedir. Bu izinler, uzantının manifestosunda **talep edilerek** veya geçici olarak [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab) aracılığıyla güvence altına alınabilir.
#### Örnek activeTab tabanlı uzantı
```json:manifest.json
@@ -138,7 +138,7 @@ files: ["content-script.js"],
})
})
```
-- **Bir fonksiyon enjekte et** tıklandığında:
+- **Bir fonksiyonu** tıklama ile enjekte et:
```javascript
//service-worker.js - Inject a function
function injectedFunction() {
@@ -171,7 +171,7 @@ Daha fazla URL eklemek veya çıkarmak için **`include_globs`** ve **`exclude_g
### İçerik Scriptleri `run_at`
-`run_at` alanı **JavaScript dosyalarının web sayfasına ne zaman enjekte edileceğini** kontrol eder. Tercih edilen ve varsayılan değer `"document_idle"`dur.
+`run_at` alanı **JavaScript dosyalarının web sayfasına ne zaman enjekte edileceğini** kontrol eder. Tercih edilen ve varsayılan değer `"document_idle"`'dır.
Olası değerler şunlardır:
@@ -208,11 +208,11 @@ js: ["contentScript.js"],
```
### `background`
-İçerik betikleri tarafından gönderilen mesajlar, uzantının bileşenlerini koordine etmede merkezi bir rol oynayan **arka plan sayfası** tarafından alınır. Özellikle, arka plan sayfası uzantının ömrü boyunca devam eder, doğrudan kullanıcı etkileşimi olmadan gizlice çalışır. Kendi Belge Nesne Modeli (DOM) vardır, bu da karmaşık etkileşimler ve durum yönetimi sağlar.
+İçerik betikleri tarafından gönderilen mesajlar, uzantının bileşenlerini koordine eden merkezi bir rol üstlenen **arka plan sayfası** tarafından alınır. Özellikle, arka plan sayfası uzantının ömrü boyunca devam eder, doğrudan kullanıcı etkileşimi olmadan gizlice çalışır. Kendi Belge Nesne Modeli (DOM) vardır, bu da karmaşık etkileşimler ve durum yönetimi sağlar.
**Ana Noktalar**:
-- **Arka Plan Sayfası Rolü:** Uzantının sinir merkezi olarak hareket eder, uzantının çeşitli parçaları arasında iletişim ve koordinasyonu sağlar.
+- **Arka Plan Sayfası Rolü:** Uzantının sinir merkezi olarak işlev görür, uzantının çeşitli parçaları arasında iletişim ve koordinasyonu sağlar.
- **Süreklilik:** Kullanıcıya görünmez, ancak uzantının işlevselliği için hayati bir varlıktır.
- **Otomatik Oluşturma:** Açıkça tanımlanmadıysa, tarayıcı otomatik olarak bir arka plan sayfası oluşturur. Bu otomatik oluşturulan sayfa, uzantının manifestosunda belirtilen tüm arka plan betiklerini içerecek şekilde, uzantının arka plan görevlerinin kesintisiz çalışmasını sağlar.
@@ -238,7 +238,7 @@ Arka plan betiğini hata ayıklamak için **uzantı ayrıntılarına gidip hizme
Tarayıcı uzantıları çeşitli türde sayfalar içerebilir:
- **Eylem sayfaları**, uzantı simgesine tıklandığında **açılır menüde** görüntülenir.
-- Uzantının **yeni bir sekmede yükleyeceği sayfalar**.
+- Uzantının **yeni bir sekmede yükleyeceği** sayfalar.
- **Seçenek Sayfaları**: Bu sayfa tıklandığında uzantının üstünde görüntülenir. Önceki manifestoda bu sayfaya `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` adresinden veya tıklayarak erişebildim:
@@ -264,7 +264,7 @@ browext-permissions-and-host_permissions.md
Bir **içerik güvenlik politikası**, `manifest.json` içinde de tanımlanabilir. Eğer tanımlıysa, **açık bir şekilde savunmasız** olabilir.
-Tarayıcı uzantısı sayfaları için varsayılan ayar oldukça kısıtlayıcıdır:
+Tarayıcı uzantı sayfaları için varsayılan ayar oldukça kısıtlayıcıdır:
```bash
script-src 'self'; object-src 'self';
```
@@ -276,7 +276,7 @@ Daha fazla bilgi için CSP ve potansiyel bypass'lar hakkında kontrol edin:
### `web_accessible_resources`
-Bir web sayfasının bir Tarayıcı Eklentisi sayfasına, örneğin bir `.html` sayfasına erişebilmesi için, bu sayfanın `manifest.json` dosyasındaki **`web_accessible_resources`** alanında belirtilmesi gerekir.\
+Bir web sayfasının bir Tarayıcı Uzantısının sayfasına, örneğin bir `.html` sayfasına erişebilmesi için, bu sayfanın `manifest.json` dosyasındaki **`web_accessible_resources`** alanında belirtilmesi gerekir.\
Örneğin:
```javascript
{
@@ -314,7 +314,7 @@ browext-clickjacking.md
{{#endref}}
> [!TIP]
-> Bu sayfaların yalnızca uzantı tarafından ve rastgele URL'ler tarafından yüklenmesine izin verilmesi, ClickJacking saldırılarını önleyebilir.
+> Bu sayfaların yalnızca uzantı tarafından ve rastgele URL'ler tarafından yüklenmesine izin vermek, ClickJacking saldırılarını önleyebilir.
> [!CAUTION]
> **`web_accessible_resources`** ve uzantının diğer sayfalarının da **arka plan betikleriyle iletişim kurma** yeteneğine sahip olduğunu unutmayın. Bu nedenle, bu sayfalardan biri **XSS**'ye karşı savunmasızsa, daha büyük bir güvenlik açığı açabilir.
@@ -333,12 +333,12 @@ browext-clickjacking.md
"https://*.google.com/*",
"*://*.chromium.org/*",
```
-- Eğer boş olarak belirtilmişse: **`"externally_connectable": {}`**, hiçbir uygulama veya web bağlantı kuramayacaktır.
+- Eğer boş olarak belirtilmişse: **`"externally_connectable": {}`**, hiçbir uygulama veya web bağlanamayacaktır.
-Burada belirtilen **daha az uzantı ve URL**, **saldırı yüzeyinin** daha küçük olacağı anlamına gelir.
+Burada belirtilen **daha az uzantı ve URL**, **saldırı yüzeyini** **daha küçük** hale getirecektir.
> [!CAUTION]
-> Eğer bir web sayfası **XSS veya ele geçirme** için **`externally_connectable`** içinde belirtilmişse, bir saldırgan **arka plan scriptine doğrudan mesaj gönderebilir**, İçerik Scriptini ve CSP'yi tamamen atlayarak.
+> Eğer bir web sayfası **XSS veya ele geçirme** için **`externally_connectable`** içinde belirtilmişse, bir saldırgan **arka plan scriptine doğrudan mesaj gönderebilir**, Content Script ve CSP'yi tamamen atlayarak.
>
> Bu nedenle, bu **çok güçlü bir atlatmadır**.
>
@@ -348,13 +348,13 @@ Burada belirtilen **daha az uzantı ve URL**, **saldırı yüzeyinin** daha kü
### Uzantı <--> Web Uygulaması
-İçerik scripti ile web sayfası arasında iletişim kurmak için genellikle post mesajları kullanılır. Bu nedenle, web uygulamasında genellikle **`window.postMessage`** fonksiyonuna yapılan çağrılar ve içerik scriptinde **`window.addEventListener`** gibi dinleyiciler bulacaksınız. Ancak, uzantının ayrıca **bir Post Message göndererek web uygulaması ile iletişim kurabileceğini** ve bu nedenle webin bunu beklemesi gerektiğini unutmayın veya sadece webin yeni bir script yüklemesini sağlayabilir.
+İçerik scripti ile web sayfası arasında iletişim kurmak için genellikle post mesajları kullanılır. Bu nedenle, web uygulamasında genellikle **`window.postMessage`** fonksiyonuna yapılan çağrılar ve içerik scriptinde **`window.addEventListener`** gibi dinleyiciler bulacaksınız. Ancak, uzantının ayrıca **bir Post Message göndererek web uygulaması ile iletişim kurabileceğini** (bu nedenle webin bunu beklemesi gerektiğini) veya sadece webin yeni bir script yüklemesini sağlayabileceğini unutmayın.
### Uzantının içinde
Genellikle **`chrome.runtime.sendMessage`** fonksiyonu uzantı içinde bir mesaj göndermek için kullanılır (genellikle `background` scripti tarafından işlenir) ve bunu almak ve işlemek için bir dinleyici **`chrome.runtime.onMessage.addListener`** çağrısı ile tanımlanır.
-Ayrıca, tekil mesajlar göndermek yerine sürekli bir bağlantı kurmak için **`chrome.runtime.connect()`** kullanmak da mümkündür, bu, aşağıdaki örnekte olduğu gibi **mesajlar** **göndermek** ve **almak** için kullanılabilir:
+Ayrıca, tekil mesajlar göndermek yerine sürekli bir bağlantı sağlamak için **`chrome.runtime.connect()`** kullanmak da mümkündür, bu, aşağıdaki örnekte olduğu gibi **mesajlar** **göndermek** ve **almak** için kullanılabilir:
@@ -393,7 +393,7 @@ Belirli bir sekmede bulunan bir içerik betiğine arka plan betiğinden mesaj g
### İzin verilen `externally_connectable`'dan uzantıya
-`externally_connectable` yapılandırmasında **izin verilen web uygulamaları ve harici tarayıcı uzantıları** istek gönderebilir:
+`externally_connectable` yapılandırmasında **izin verilen web uygulamaları ve harici tarayıcı uzantıları** aşağıdaki gibi istek gönderebilir:
```javascript
chrome.runtime.sendMessage(extensionId, ...
```
@@ -401,7 +401,7 @@ chrome.runtime.sendMessage(extensionId, ...
### Yerel Mesajlaşma
-Arka plan betiklerinin sistem içindeki ikili dosyalarla iletişim kurması mümkündür; bu iletişim düzgün bir şekilde güvence altına alınmazsa **RCE'ler gibi kritik güvenlik açıklarına** maruz kalabilir. [Bununla ilgili daha fazla bilgi](./#native-messaging).
+Arka plan betiklerinin, bu iletişim düzgün bir şekilde güvence altına alınmazsa **RCE'ler gibi kritik güvenlik açıklarına** eğilimli olabilecek sistem içindeki ikili dosyalarla iletişim kurması mümkündür. [Bununla ilgili daha fazla bilgi](./#native-messaging).
```javascript
chrome.runtime.sendNativeMessage(
"com.my_company.my_application",
@@ -413,7 +413,7 @@ console.log("Received " + response)
```
## Web **↔︎** İçerik Scripti İletişimi
-**İçerik scriptlerinin** çalıştığı ortamlar ve ana sayfaların bulunduğu yerler birbirinden **ayrıdır**, bu da **izolasyon** sağlar. Bu izolasyona rağmen, her ikisi de sayfanın **Belge Nesne Modeli (DOM)** ile etkileşimde bulunma yeteneğine sahiptir, bu da paylaşılan bir kaynaktır. Ana sayfanın **içerik scripti** ile veya içerik scripti aracılığıyla uzantı ile dolaylı olarak iletişim kurabilmesi için, her iki tarafın da erişebileceği **DOM**'u iletişim kanalı olarak kullanması gerekmektedir.
+**İçerik scriptlerinin** çalıştığı ortamlar ve ana sayfaların bulunduğu yerler **birbirinden ayrıdır**, bu da **izolasyon** sağlar. Bu izolasyona rağmen, her ikisi de sayfanın **Belge Nesne Modeli (DOM)** ile etkileşimde bulunma yeteneğine sahiptir, bu da paylaşılan bir kaynaktır. Ana sayfanın **içerik scripti** ile veya içerik scripti aracılığıyla uzantı ile dolaylı olarak iletişim kurabilmesi için, her iki tarafın da erişebildiği **DOM**'u iletişim kanalı olarak kullanması gerekmektedir.
### Post Mesajları
```javascript:content-script.js
@@ -452,9 +452,9 @@ false
```
Güvenli bir Post Message iletişimi, alınan mesajın doğruluğunu kontrol etmelidir, bu şu şekilde yapılabilir:
-- **`event.isTrusted`**: Bu, yalnızca olay bir kullanıcı eylemi tarafından tetiklendiğinde Doğrudur.
+- **`event.isTrusted`**: Bu, yalnızca olay bir kullanıcı eylemi tarafından tetiklendiğinde Doğru'dur.
- İçerik betiği, yalnızca kullanıcı bir eylem gerçekleştirdiğinde bir mesaj bekliyor olabilir.
-- **origin domain**: yalnızca izin verilen alanlar listesi ile bir mesaj bekliyor olabilir.
+- **origin domain**: yalnızca izin verilen alanlar listesinden bir mesaj bekliyor olabilir.
- Bir regex kullanılıyorsa, çok dikkatli olun.
- **Source**: `received_message.source !== window` mesajın **Content Script'in dinlediği aynı pencereden** gelip gelmediğini kontrol etmek için kullanılabilir.
@@ -466,7 +466,7 @@ Güvenli bir Post Message iletişimi, alınan mesajın doğruluğunu kontrol etm
### Iframe
-İletişim için başka bir olası yol **Iframe URL'leri** aracılığıyla olabilir, bir örneği burada bulabilirsiniz:
+İletişim için başka bir olası yol **Iframe URL'leri** aracılığıyla olabilir, bir örneği şurada bulabilirsiniz:
{{#ref}}
browext-xss-example.md
@@ -474,9 +474,9 @@ browext-xss-example.md
### DOM
-Bu "tam olarak" bir iletişim yolu değildir, ancak **web ve içerik betiği web DOM'una erişim sağlayacaktır**. Yani, eğer **içerik betiği** ondan bazı bilgileri okuyorsa, **web DOM'una güvenerek**, web bu veriyi **değiştirebilir** (çünkü web güvenilir olmamalıdır veya çünkü web XSS'e karşı savunmasızdır) ve **Content Script'i tehlikeye atabilir**.
+Bu "tam olarak" bir iletişim yolu değildir, ancak **web ve içerik betiği web DOM'una erişim sağlayacaktır**. Yani, eğer **içerik betiği** ondan bazı bilgileri okuyorsa, **web DOM'una güveniyorsa**, web bu veriyi **değiştirebilir** (çünkü web güvenilir olmamalıdır veya çünkü web XSS'e karşı savunmasızdır) ve **Content Script'i tehlikeye atabilir**.
-Ayrıca, bir **DOM tabanlı XSS ile bir tarayıcı uzantısını tehlikeye atma** örneğini burada bulabilirsiniz:
+Ayrıca, bir **tarayıcı uzantısını tehlikeye atmak için DOM tabanlı bir XSS örneğini** şurada bulabilirsiniz:
{{#ref}}
browext-xss-example.md
@@ -486,7 +486,7 @@ browext-xss-example.md
Bir İçerik Betiği, [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **veya** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) fonksiyonlarını kullanarak **bir kerelik JSON-serializable** bir mesaj gönderebilir.
-**Yanıtı** işlemek için döndürülen **Promise**'i kullanın. Ancak, geriye dönük uyumluluk için, son argüman olarak hala bir **callback** geçebilirsiniz.
+**Yanıtı** işlemek için döndürülen **Promise**'ı kullanın. Ancak, geriye dönük uyumluluk için, son argüman olarak hala bir **callback** geçebilirsiniz.
Bir **içerik betiğinden** bir istek göndermek şöyle görünür:
```javascript
@@ -539,14 +539,14 @@ Tarayıcı uzantıları ayrıca **sistemdeki ikili dosyalarla stdin üzerinden i
"allowed_origins": ["chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/"]
}
```
-`name`, [`runtime.connectNative()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-connectNative) veya [`runtime.sendNativeMessage()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-sendNativeMessage) ile arka plan betiklerinden uygulama ile iletişim kurmak için geçirilen dizedir. `path`, ikili dosyanın yoludur, yalnızca 1 geçerli `type` vardır, o da stdio'dur (stdin ve stdout kullanın) ve `allowed_origins`, buna erişebilen uzantıları belirtir (ve joker karakter olamaz).
+`name`, [`runtime.connectNative()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-connectNative) veya [`runtime.sendNativeMessage()`](https://developer.chrome.com/docs/extensions/reference/api/runtime#method-sendNativeMessage) ile arka plan betiklerinden uygulama ile iletişim kurmak için geçirilen dizedir. `path`, ikili dosyanın yoludur, yalnızca 1 geçerli `type` vardır, bu da stdio'dur (stdin ve stdout kullanın) ve `allowed_origins`, buna erişebilecek uzantıları belirtir (ve joker karakter olamaz).
-Chrome/Chromium, bu json'u bazı Windows kayıt defterlerinde ve macOS ile Linux'taki bazı yollarda arayacaktır (daha fazla bilgi için [**docs**](https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging) bakın).
+Chrome/Chromium, bu json'u bazı Windows kayıt defterlerinde ve macOS ile Linux'taki bazı yollarda arayacaktır (daha fazla bilgi için [**docs**](https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging) bölümüne bakın).
> [!TIP]
> Tarayıcı uzantısının bu iletişimi kullanabilmesi için `nativeMessaing` izninin de tanımlanması gerekir.
-İşte bazı arka plan betiği kodunun yerel bir uygulamaya mesaj göndermesi:
+İşte bazı arka plan betiği kodunun yerel bir uygulamaya mesaj göndermesi şöyle görünür:
```javascript
chrome.runtime.sendNativeMessage(
"com.my_company.my_application",
@@ -556,30 +556,30 @@ console.log("Received " + response)
}
)
```
-[**bu blog yazısında**](https://spaceraccoon.dev/universal-code-execution-browser-extensions/) yerel mesajları kötüye kullanan bir zayıf desen önerilmektedir:
+[**Bu blog yazısında**](https://spaceraccoon.dev/universal-code-execution-browser-extensions/) yerel mesajları kötüye kullanan bir zayıf desen önerilmektedir:
1. Tarayıcı uzantısı içerik betiği için bir joker karakter deseni vardır.
2. İçerik betiği `sendMessage` kullanarak arka plan betiğine `postMessage` mesajları gönderir.
3. Arka plan betiği mesajı `sendNativeMessage` kullanarak yerel uygulamaya iletir.
-4. Yerel uygulama mesajı tehlikeli bir şekilde işler ve bu da kod yürütmeye yol açar.
+4. Yerel uygulama mesajı tehlikeli bir şekilde işler, bu da kod yürütmeye yol açar.
Ve bunun içinde **herhangi bir sayfadan RCE'ye geçiş yapma örneği bir tarayıcı uzantısını kötüye kullanarak açıklanmaktadır**.
-## Bellekte/Kodda/Panoda Hassas Bilgiler
+## Bellek/Kod/Panoya Duyarlı Bilgiler
-Eğer bir Tarayıcı Uzantısı **hassas bilgileri belleğinde saklıyorsa**, bu **dökülebilir** (özellikle Windows makinelerinde) ve bu bilgiler için **arama yapılabilir**.
+Eğer bir Tarayıcı Uzantısı **duyarlı bilgileri belleğinde saklıyorsa**, bu **dökülebilir** (özellikle Windows makinelerinde) ve bu bilgiler için **arama yapılabilir**.
-Bu nedenle, Tarayıcı Uzantısının belleği **güvenli olarak kabul edilmemelidir** ve **hassas bilgiler** (kimlik bilgileri veya mnemonik ifadeler gibi) **saklanmamalıdır**.
+Bu nedenle, Tarayıcı Uzantısının belleği **güvenli olarak kabul edilmemelidir** ve **duyarlı bilgiler** (kimlik bilgileri veya mnemonik ifadeler gibi) **saklanmamalıdır**.
-Elbette, **hassas bilgileri kodda bulundurmayın**, çünkü bu **kamusal** olacaktır.
+Elbette, **duyarlı bilgileri kodda saklamayın**, çünkü bu **kamusal** olacaktır.
-Tarayıcıdan bellek dökmek için **işlem belleğini dökebilir** veya tarayıcı uzantısının **ayarlarına** gitmek için **`Inspect pop-up`** üzerine tıklayın -> **`Memory`** bölümünde -> **`Take a snaphost`** ve **`CTRL+F`** ile anlık görüntüde hassas bilgileri arayın.
+Tarayıcıdan bellek dökmek için **işlem belleğini dökebilir** veya tarayıcı uzantısının **ayarlarına** gitmek için **`Inspect pop-up`** üzerine tıklayın -> **`Memory`** bölümünde -> **`Take a snapshot`** ve duyarlı bilgileri bulmak için anlık görüntü içinde **`CTRL+F`** ile arama yapın.
-Ayrıca, mnemonik anahtarlar veya şifreler gibi son derece hassas bilgilerin **panoya kopyalanmasına izin verilmemelidir** (veya en azından birkaç saniye içinde panodan kaldırılmalıdır) çünkü bu durumda panoyu izleyen işlemler bunları alabilecektir.
+Ayrıca, mnemonik anahtarlar veya şifreler gibi son derece duyarlı bilgilerin **panoya kopyalanmasına izin verilmemelidir** (veya en azından birkaç saniye içinde panodan kaldırılmalıdır) çünkü bu durumda panoyu izleyen işlemler bunları alabilecektir.
## Tarayıcıda Bir Uzantı Yükleme
-1. **Tarayıcı Uzantısını İndirin** ve açın
+1. Tarayıcı Uzantısını **indirin** ve açın
2. **`chrome://extensions/`** adresine gidin ve `Geliştirici Modu`nu **etkinleştirin**
3. **`Load unpacked`** butonuna tıklayın
@@ -612,7 +612,7 @@ Başka bir pratik yöntem, açık kaynaklı bir proje olan Chrome Extension Sour
Yerel olarak yüklenmiş Chrome uzantıları da incelenebilir. İşte nasıl:
-1. `chrome://version/` adresine giderek Chrome yerel profil dizininize erişin ve "Profil Yolu" alanını bulun.
+1. `chrome://version/` adresine giderek Chrome yerel profil dizininize erişin ve "Profile Path" alanını bulun.
2. Profil dizinindeki `Extensions/` alt klasörüne gidin.
3. Bu klasör, genellikle okunabilir formatta kaynak kodlarıyla birlikte tüm yüklenmiş uzantıları içerir.
@@ -627,11 +627,11 @@ Chrome Web Store'a gidin ve uzantıyı indirin. Dosya `.crx` uzantısına sahip
### Chrome'da Geliştirici Modunu kullanın
-Chrome'u açın ve `chrome://extensions/` adresine gidin. Sağ üstte "Geliştirici modunu" etkinleştirin. "Paketlenmemiş uzantıyı yükle..." seçeneğine tıklayın. Uzantınızın dizinine gidin. Bu, kaynak kodunu indirmez, ancak zaten indirilmiş veya geliştirilmiş bir uzantının kodunu görüntülemek ve değiştirmek için faydalıdır.
+Chrome'u açın ve `chrome://extensions/` adresine gidin. Sağ üstte "Geliştirici modu"nu etkinleştirin. "Paketlenmemiş uzantıyı yükle..." seçeneğine tıklayın. Uzantınızın dizinine gidin. Bu, kaynak kodunu indirmez, ancak zaten indirilmiş veya geliştirilmiş bir uzantının kodunu görüntülemek ve değiştirmek için faydalıdır.
## Chrome uzantı manifest veri seti
-Zayıf tarayıcı uzantılarını tespit etmeye çalışmak için [https://github.com/palant/chrome-extension-manifests-dataset](https://github.com/palant/chrome-extension-manifests-dataset) adresini kullanabilir ve manifest dosyalarını potansiyel olarak zayıf işaretler için kontrol edebilirsiniz. Örneğin, 25000'den fazla kullanıcısı olan, `content_scripts` ve `nativeMessaing` iznine sahip uzantıları kontrol etmek için:
+Zayıf tarayıcı uzantılarını tespit etmeye çalışmak için [https://github.com/palant/chrome-extension-manifests-dataset](https://github.com/palant/chrome-extension-manifests-dataset) kullanabilir ve manifest dosyalarını potansiyel olarak zayıf işaretler için kontrol edebilirsiniz. Örneğin, 25000'den fazla kullanıcısı olan, `content_scripts` ve `nativeMessaging` iznine sahip uzantıları kontrol etmek için:
```bash
# Query example from https://spaceraccoon.dev/universal-code-execution-browser-extensions/
node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.length > 0 && manifest.permissions?.includes('nativeMessaging')"
@@ -644,7 +644,7 @@ Tarayıcı Uzantıları **sınırlı bir saldırı yüzeyine** sahip olsalar da,
- [ ] **`host_permissions`**'ı mümkün olduğunca **sınırlayın**
- [ ] **Güçlü** bir **`content_security_policy`** kullanın
- [ ] **`externally_connectable`**'ı mümkün olduğunca **sınırlayın**, eğer gerek yoksa ve mümkünse varsayılan olarak bırakmayın, **`{}`** belirtin
-- [ ] Eğer burada **XSS veya ele geçirme için zayıf URL** belirtilmişse, bir saldırgan **arka plan betiklerine doğrudan mesaj gönderebilir**. Çok güçlü bir atlatma.
+- [ ] Eğer burada **XSS veya ele geçirme** için zayıf bir URL belirtilmişse, bir saldırgan **arka plan betiklerine doğrudan mesaj gönderebilir**. Çok güçlü bir atlatma.
- [ ] **`web_accessible_resources`**'ı mümkün olduğunca **sınırlayın**, mümkünse boş bırakın.
- [ ] Eğer **`web_accessible_resources`** yoksa, [**ClickJacking**](browext-clickjacking.md) için kontrol edin
- [ ] Eğer **uzantı** ile **web sayfası** arasında herhangi bir **iletişim** oluyorsa, iletişimde oluşan [**XSS**](browext-xss-example.md) **zayıflıklarını** kontrol edin.
@@ -654,7 +654,7 @@ Tarayıcı Uzantıları **sınırlı bir saldırı yüzeyine** sahip olsalar da,
- [ ] Eğer arka plan betiği **yerel mesajlaşma** aracılığıyla iletişim kuruyorsa, iletişimin güvenli ve temiz olduğundan emin olun
- [ ] **Hassas bilgiler** Tarayıcı Uzantısı **kodunun** içinde **saklanmamalıdır**
- [ ] **Hassas bilgiler** Tarayıcı Uzantısı **belleğinin** içinde **saklanmamalıdır**
-- [ ] **Hassas bilgiler** **korumasız dosya sisteminde** **saklanmamalıdır**
+- [ ] **Hassas bilgiler** **dosya sisteminde korumasız** olarak **saklanmamalıdır**
## Tarayıcı Uzantısı Riskleri
@@ -665,8 +665,8 @@ Tarayıcı Uzantıları **sınırlı bir saldırı yüzeyine** sahip olsalar da,
### [**Tarnish**](https://thehackerblog.com/tarnish/)
- Verilen bir Chrome webstore bağlantısından herhangi bir Chrome uzantısını çeker.
-- [**manifest.json**](https://developer.chrome.com/extensions/manifest) **görüntüleyici**: uzantının manifestosunun JSON formatında düzenlenmiş bir versiyonunu basitçe görüntüler.
-- **Parmak İzi Analizi**: [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) tespiti ve Chrome uzantısı parmak izi oluşturma JavaScript'inin otomatik olarak üretilmesi.
+- [**manifest.json**](https://developer.chrome.com/extensions/manifest) **görüntüleyici**: uzantının manifestosunun JSON formatında düzenlenmiş bir versiyonunu basitçe gösterir.
+- **Parmak İzi Analizi**: [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) tespiti ve Chrome uzantısı parmak izini oluşturmak için otomatik JavaScript üretimi.
- **Potansiyel Clickjacking Analizi**: [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) direktifi ayarlanmış uzantı HTML sayfalarının tespiti. Bu sayfaların amacı doğrultusunda clickjacking'e karşı potansiyel olarak zayıf olabilirler.
- **İzin Uyarısı görüntüleyici**: uzantıyı yüklemeye çalışan bir kullanıcıya gösterilecek tüm Chrome izin istem uyarılarının listesini gösterir.
- **Tehlikeli Fonksiyon(lar)**: bir saldırgan tarafından potansiyel olarak istismar edilebilecek tehlikeli fonksiyonların yerini gösterir (örneğin, innerHTML, chrome.tabs.executeScript gibi fonksiyonlar).
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md b/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md
index 8440e93d4..4dadd0f3e 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md
@@ -11,9 +11,9 @@ ClickJacking'in ne olduğunu bilmiyorsanız kontrol edin:
../clickjacking.md
{{#endref}}
-Uzantılar, **`manifest.json`** dosyasını içerir ve bu JSON dosyasında `web_accessible_resources` alanı vardır. İşte [Chrome belgelerinde](https://developer.chrome.com/extensions/manifest/web_accessible_resources) bununla ilgili söylenenler:
+Uzantılar, **`manifest.json`** dosyasını içerir ve bu JSON dosyası `web_accessible_resources` alanına sahiptir. İşte [Chrome belgelerinde](https://developer.chrome.com/extensions/manifest/web_accessible_resources) bununla ilgili söylenenler:
-> Bu kaynaklar, **`chrome-extension://[PACKAGE ID]/[PATH]`** URL'si aracılığıyla bir web sayfasında mevcut olacaktır; bu, **`extension.getURL method`** ile oluşturulabilir. Beyaz listeye alınmış kaynaklar uygun CORS başlıkları ile sunulur, bu nedenle XHR gibi mekanizmalar aracılığıyla erişilebilirler.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
+> Bu kaynaklar, **`chrome-extension://[PACKAGE ID]/[PATH]`** URL'si aracılığıyla bir web sayfasında mevcut olacaktır; bu URL, **`extension.getURL method`** ile oluşturulabilir. Beyaz listeye alınmış kaynaklar uygun CORS başlıkları ile sunulur, bu nedenle XHR gibi mekanizmalar aracılığıyla erişilebilirler.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
Bir tarayıcı uzantısındaki **`web_accessible_resources`**, yalnızca web üzerinden erişilebilir değildir; aynı zamanda uzantının doğal ayrıcalıklarıyla da çalışır. Bu, aşağıdakileri yapabilme yeteneğine sahip oldukları anlamına gelir:
@@ -32,7 +32,7 @@ PrivacyBadger uzantısında, `skin/` dizininin aşağıdaki şekilde `web_access
"icons/*"
]
```
-Bu yapılandırma potansiyel bir güvenlik sorununa yol açtı. Özellikle, tarayıcıdaki PrivacyBadger simgesi ile etkileşimde bulunulduğunda render edilen `skin/popup.html` dosyası, bir `iframe` içinde gömülebilir. Bu gömme, kullanıcıları "Bu Web Sitesi için PrivacyBadger'ı Devre Dışı Bırak" butonuna yanlışlıkla tıklamaya kandırmak için sömürülebilir. Böyle bir eylem, PrivacyBadger korumasını devre dışı bırakarak kullanıcının gizliliğini tehlikeye atar ve kullanıcıyı artan izlemeye maruz bırakabilir. Bu istismarın görsel bir gösterimi, [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm) adresinde sağlanan bir ClickJacking video örneğinde görülebilir.
+Bu yapılandırma, potansiyel bir güvenlik sorununa yol açtı. Özellikle, tarayıcıdaki PrivacyBadger simgesi ile etkileşimde bulunulduğunda render edilen `skin/popup.html` dosyası, bir `iframe` içinde gömülebilir. Bu gömme, kullanıcıları "Bu Web Sitesi için PrivacyBadger'ı Devre Dışı Bırak" butonuna yanlışlıkla tıklamaya kandırmak için sömürülebilir. Böyle bir eylem, PrivacyBadger korumasını devre dışı bırakarak kullanıcının gizliliğini tehlikeye atar ve kullanıcıyı artan izlemeye maruz bırakabilir. Bu istismarın görsel bir gösterimi, [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm) adresinde sağlanan bir ClickJacking video örneğinde görülebilir.
Bu güvenlik açığını gidermek için basit bir çözüm uygulandı: `/skin/*`'in `web_accessible_resources` listesinden kaldırılması. Bu değişiklik, `skin/` dizininin içeriğinin web erişilebilir kaynaklar aracılığıyla erişilemez veya manipüle edilemez olmasını sağlayarak riski etkili bir şekilde azalttı.
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md b/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md
index d448a8eff..bf10114ae 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md
@@ -10,7 +10,7 @@
Önceki manifest, uzantının `storage` iznine ihtiyaç duyduğunu belirtir. Bu, verilerini kalıcı olarak depolamak için [depolama API'sini](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) kullanabileceği anlamına gelir. Kullanıcılara belirli bir kontrol seviyesi veren çerezler veya `localStorage` API'lerinin aksine, **uzantı depolaması genellikle yalnızca uzantıyı kaldırarak temizlenebilir**.
-Bir uzantı, **`manifest.json`** dosyasında belirtilen izinleri talep edecektir ve uzantıyı yükledikten sonra, **her zaman tarayıcınızdaki izinlerini kontrol edebilirsiniz**, bu resimde gösterildiği gibi:
+Bir uzantı, **`manifest.json`** dosyasında belirtilen izinleri talep edecektir ve uzantıyı yükledikten sonra, **her zaman tarayıcınızda izinlerini kontrol edebilirsiniz**, bu resimde gösterildiği gibi:
@@ -18,7 +18,7 @@ Bir Chromium Tarayıcı Uzantısının talep edebileceği [**tam izin listesine
### `host_permissions`
-İsteğe bağlı ancak güçlü bir ayar olan **`host_permissions`**, uzantının [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) ve [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) gibi API'ler aracılığıyla hangi hostlarla etkileşimde bulunabileceğini belirtir.
+İsteğe bağlı ancak güçlü bir ayar olan **`host_permissions`**, uzantının [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) ve [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) gibi API'ler aracılığıyla hangi ana bilgisayarlarla etkileşimde bulunabileceğini belirtir.
Aşağıdaki `host_permissions` temelde her web'e izin verir:
```json
@@ -37,13 +37,13 @@ Aşağıdaki `host_permissions` temelde her web'e izin verir:
""
]
```
-Bu, tarayıcı uzantısının serbestçe erişebileceği hostlardır. Bunun nedeni, bir tarayıcı uzantısı **`fetch("https://gmail.com/")`** çağrısı yaptığında CORS tarafından kısıtlanmamasıdır.
+Bu, tarayıcı uzantısının serbestçe erişebileceği ana bilgisayarlardır. Bunun nedeni, bir tarayıcı uzantısı **`fetch("https://gmail.com/")`** çağrısı yaptığında CORS tarafından kısıtlanmamasıdır.
## `permissions` ve `host_permissions` istismar etme
### Sekmeler
-Ayrıca, **`host_permissions`** “gelişmiş” [**sekme API'si**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) **işlevselliğini de açar.** Uzantının [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) çağrısını yapmasına ve yalnızca **kullanıcının tarayıcı sekmelerinin listesini** almakla kalmayıp aynı zamanda hangi **web sayfasının (adres ve başlık anlamında) yüklü olduğunu öğrenmesine** olanak tanır.
+Ayrıca, **`host_permissions`** “gelişmiş” [**tabs API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) **işlevselliğini de açar.** Uzantının [tabs.query()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query) çağrısını yapmasına ve yalnızca **kullanıcının tarayıcı sekmelerinin listesini** almakla kalmayıp aynı zamanda hangi **web sayfasının (adres ve başlık anlamında) yüklü olduğunu öğrenmesine** olanak tanır.
> [!CAUTION]
> Bununla kalmaz, [**tabs.onUpdated**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated) **gibi dinleyiciler de çok daha kullanışlı hale gelir.** Bu dinleyiciler, yeni bir sayfa bir sekmeye yüklendiğinde bildirim alır.
@@ -52,38 +52,38 @@ Ayrıca, **`host_permissions`** “gelişmiş” [**sekme API'si**](https://deve
İçerik betikleri, uzantı manifestosuna statik olarak yazılmak zorunda değildir. Yeterli **`host_permissions`** verildiğinde, **uzantılar bunları dinamik olarak yükleyebilir** [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **veya** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript) çağrısını yaparak.
-Her iki API de yalnızca uzantılarda içerik betiği olarak bulunan dosyaları değil, aynı zamanda **rastgele kodu** da çalıştırmaya olanak tanır. İlki, JavaScript kodunu bir dize olarak geçmeye izin verirken, ikincisi, enjekte edilebilirlik açıklarını azaltan bir JavaScript fonksiyonu bekler. Yine de, her iki API de kötüye kullanıldığında büyük zararlara yol açabilir.
+Her iki API de yalnızca uzantılarda içerik betiği olarak bulunan dosyaları değil, aynı zamanda **rastgele kodu** da çalıştırmaya olanak tanır. İlki, JavaScript kodunu bir dize olarak geçmeye izin verirken, ikincisi, enjeksiyon güvenlik açıklarına daha az eğilimli olan bir JavaScript fonksiyonu bekler. Yine de, her iki API de kötüye kullanıldığında büyük zararlara yol açabilir.
> [!CAUTION]
-> Yukarıdaki yeteneklere ek olarak, içerik betikleri örneğin **kimlik bilgilerini** web sayfalarına girildiğinde **yakalayabilir.** Onları kötüye kullanmanın bir başka klasik yolu, her bir web sitesine **reklam enjekte etmektir.** Haber sitelerinin güvenilirliğini kötüye kullanmak için **dolandırıcılık mesajları** eklemek de mümkündür. Son olarak, **banka** web sitelerini **manipüle ederek para transferlerini yönlendirebilirler.**
+> Yukarıdaki yeteneklere ek olarak, içerik betikleri örneğin **kimlik bilgilerini** web sayfalarına girildiğinde **yakalayabilir.** Onları kötüye kullanmanın bir başka klasik yolu, her bir web sitesine **reklam enjekte etmektir.** Haber sitelerinin güvenilirliğini kötüye kullanmak için **dolandırıcılık mesajları** eklemek de mümkündür. Son olarak, **banka** web sitelerini para transferlerini yönlendirmek için **manipüle edebilirler.**
### Dolaylı ayrıcalıklar
-Bazı uzantı ayrıcalıkları **açıkça beyan edilmek zorunda değildir.** Bir örnek, [sekme API'si](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): temel işlevselliği herhangi bir ayrıcalık olmaksızın erişilebilir. Herhangi bir uzantı, sekmeleri açtığınızda ve kapattığınızda bildirim alabilir, yalnızca bu sekmelerin hangi web siteleriyle ilişkili olduğunu bilmeyecektir.
+Bazı uzantı ayrıcalıkları **açıkça beyan edilmek zorunda değildir.** Bir örnek, [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): temel işlevselliği herhangi bir ayrıcalık olmaksızın erişilebilir. Herhangi bir uzantı, sekmeleri açtığınızda ve kapattığınızda bildirim alabilir, yalnızca bu sekmelerin hangi web siteleriyle ilişkili olduğunu bilmeyecektir.
-Görünüşte zararsız mı? [tabs.create() API'si](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) biraz daha az zararsızdır. **Yeni bir sekme oluşturmak için kullanılabilir,** bu da [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) ile temelde aynıdır ve herhangi bir web sitesi tarafından çağrılabilir. Ancak `window.open()` **açılır pencere engelleyicisine tabi iken, `tabs.create()` değildir.**
+Görünüşte zararsız mı? [tabs.create() API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) biraz daha az zararsızdır. Bu, **yeni bir sekme oluşturmak için** kullanılabilir, temelde [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) ile aynı işlevi görür ve herhangi bir web sitesi tarafından çağrılabilir. Ancak `window.open()` **açılır pencere engelleyicisine tabi iken, `tabs.create()` değildir.**
> [!CAUTION]
> Bir uzantı istediği zaman herhangi bir sayıda sekme oluşturabilir.
-`tabs.create()` parametrelerine göz attığınızda, yeteneklerinin `window.open()`'un kontrol edebileceğinden çok daha öteye gittiğini de göreceksiniz. Ve Firefox, bu API ile `data:` URI'lerinin kullanılmasına izin vermezken, Chrome'un böyle bir koruması yoktur. **Bu tür URI'lerin üst düzeyde kullanımı,** [**oltalama için kötüye kullanıldığı gerekçesiyle yasaklanmıştır**](https://bugzilla.mozilla.org/show_bug.cgi?id=1331351)**.**
+Olası `tabs.create()` parametrelerine göz attığınızda, yeteneklerinin `window.open()`'un kontrol edebileceğinden çok daha öteye gittiğini de fark edeceksiniz. Ve Firefox, bu API ile `data:` URI'lerinin kullanılmasına izin vermezken, Chrome'un böyle bir koruması yoktur. **Bu tür URI'lerin üst düzeyde kullanımı,** [**oltalama için kötüye kullanıldığı gerekçesiyle yasaklanmıştır**](https://bugzilla.mozilla.org/show_bug.cgi?id=1331351)**.**
[**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) `tabs.create()` ile çok benzer, ancak **mevcut bir sekmeyi değiştirir.** Yani, kötü niyetli bir uzantı örneğin rastgele bir reklam sayfasını sekmelerinizden birine yükleyebilir ve ilgili sekmeyi de etkinleştirebilir.
-### Webcam, konum ve arkadaşları
+### Web kamerası, coğrafi konum ve arkadaşlar
-Web sitelerinin özel izinler talep edebileceğini muhtemelen biliyorsunuzdur, örneğin webcam'inize (video konferans araçları) veya coğrafi konumunuza (haritalar) erişmek için. Bu, kötüye kullanma potansiyeli yüksek olan bir özelliktir, bu nedenle kullanıcıların her seferinde bunu hala istediklerini onaylamaları gerekir.
+Web sitelerinin özel izinler talep edebileceğini muhtemelen biliyorsunuzdur, örneğin web kameranızı (video konferans araçları) veya coğrafi konumunuzu (haritalar) erişmek için. Bu, kötüye kullanma potansiyeli olan özelliklerdir, bu nedenle kullanıcıların her seferinde bunu hala istediklerini onaylamaları gerekir.
> [!CAUTION]
-> Tarayıcı uzantıları için durum böyle değil. **Eğer bir tarayıcı uzantısı** [**webcam'inize veya mikrofonunuza erişim istiyorsa**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, yalnızca bir kez izin istemesi gerekir.**
+> Tarayıcı uzantıları için durum böyle değildir. **Eğer bir tarayıcı uzantısı** [**web kameranıza veya mikrofonunuza erişim istiyorsa**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, yalnızca bir kez izin istemesi gerekir.**
-Tipik olarak, bir uzantı bunu kurulduktan hemen sonra yapar. Bu istem kabul edildiğinde, **webcam erişimi her zaman mümkündür**, kullanıcı bu noktada uzantıyla etkileşimde bulunmasa bile. Evet, bir kullanıcı yalnızca uzantının gerçekten webcam erişimine ihtiyacı varsa bu istemi kabul eder. Ancak bundan sonra, uzantının gizlice hiçbir şey kaydetmemesi için ona güvenmeleri gerekir.
+Tipik olarak, bir uzantı bunu kurulduktan hemen sonra yapar. Bu istem kabul edildiğinde, **web kamera erişimi her zaman mümkündür**, kullanıcı bu noktada uzantıyla etkileşimde bulunmasa bile. Evet, bir kullanıcı yalnızca uzantının gerçekten web kamera erişimine ihtiyacı varsa bu istemi kabul eder. Ancak bundan sonra, uzantının gizlice hiçbir şey kaydetmemesi için ona güvenmeleri gerekir.
-[**Tam coğrafi konumunuza**](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) veya [panonuzun içeriğine](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API) erişim sağlamak için açıkça izin vermek tamamen gereksizdir. **Bir uzantı, manifestosunun** [**izinler bölümüne**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **`geolocation` veya `clipboard` ekler.** Bu erişim ayrıcalıkları, uzantı yüklendiğinde dolaylı olarak verilir. Bu nedenle, bu ayrıcalıklara sahip kötü niyetli veya tehlikeye atılmış bir uzantı, hareket profilinizi oluşturabilir veya kopyalanan şifreler için panonuzu izleyebilir, siz hiçbir şey fark etmeden.
+[**Tam coğrafi konumunuza**](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) veya [panonuzun içeriğine](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API) erişim sağlamak için açıkça izin vermek tamamen gereksizdir. **Bir uzantı, manifestosunun** [**izinler girişine**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **`geolocation` veya `clipboard` ekler.** Bu erişim ayrıcalıkları, uzantı yüklendiğinde dolaylı olarak verilir. Böylece, bu ayrıcalıklara sahip kötü niyetli veya tehlikeye atılmış bir uzantı, hareket profilinizi oluşturabilir veya kopyalanan şifreler için panonuzu izleyebilir, siz hiçbir şey fark etmeden.
-**`history`** anahtar kelimesinin uzantı manifestosunun [izinler bölümüne](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) eklenmesi, **`history API'sine** [**erişim sağlar**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Bu, kullanıcının tüm tarayıcı geçmişini bir seferde almasına olanak tanır, kullanıcının bu web sitelerini tekrar ziyaret etmesini beklemeden.
+**`history`** anahtar kelimesinin uzantı manifestosunun [izinler girişine](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) eklenmesi, **`history API`**'ye [**erişim sağlar**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Bu, kullanıcının tüm tarayıcı geçmişini bir seferde almasına olanak tanır, kullanıcının bu web sitelerini tekrar ziyaret etmesini beklemeden.
-**`bookmarks`** **izinleri** benzer kötüye kullanma potansiyeline sahiptir, bu, **tüm yer imlerini** [**yer imleri API'si**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks) aracılığıyla okumaya olanak tanır.
+**`bookmarks`** **izinleri** benzer kötüye kullanma potansiyeline sahiptir, bu, **tüm yer imlerini** [**bookmarks API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks) aracılığıyla okumaya olanak tanır.
### Depolama izni
@@ -97,11 +97,11 @@ Bir Chromium Tarayıcı Uzantısının talep edebileceği [**tam izinler listesi
## Önleme
-Google'ın geliştirici politikası, uzantıların işlevselliği için gerekli olandan daha fazla ayrıcalık talep etmesini açıkça yasaklar, bu da aşırı izin taleplerini etkili bir şekilde azaltır. Bir tarayıcı uzantısının bu sınırı aştığı bir örnek, uzantının bir eklenti mağazası yerine tarayıcı ile birlikte dağıtılmasıdır.
+Google'ın geliştirici politikası, uzantıların işlevselliği için gerekli olandan daha fazla ayrıcalık talep etmesini açıkça yasaklar ve böylece aşırı izin taleplerini etkili bir şekilde azaltır. Bir tarayıcı uzantısının bu sınırı aştığı bir örnek, uzantının bir eklenti mağazası yerine tarayıcı ile birlikte dağıtılmasıdır.
Tarayıcılar, uzantı ayrıcalıklarının kötüye kullanılmasını daha da sınırlayabilir. Örneğin, ekran kaydı için kullanılan Chrome'un [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) ve [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) API'leri, kötüye kullanımı en aza indirmek için tasarlanmıştır. tabCapture API'si yalnızca uzantı simgesine tıklamak gibi doğrudan kullanıcı etkileşimi ile etkinleştirilebilirken, desktopCapture, kaydedilecek pencere için kullanıcı onayı gerektirir ve gizli kayıt faaliyetlerini önler.
-Ancak, güvenlik önlemlerinin sıkılaştırılması genellikle uzantıların esnekliğini ve kullanıcı dostluğunu azaltır. [activeTab izni](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab_permission) bu dengeyi göstermektedir. Uzantıların tüm internet üzerinde host ayrıcalıkları talep etme gereğini ortadan kaldırmak için tanıtılmıştır, bu da uzantıların yalnızca kullanıcı tarafından açıkça etkinleştirildiğinde mevcut sekmeye erişmesine olanak tanır. Bu model, kullanıcı tarafından başlatılan eylemler gerektiren uzantılar için etkili olsa da, otomatik veya önleyici eylemler gerektirenler için yetersiz kalır ve bu da kullanım kolaylığını ve anlık yanıt verme yeteneğini tehlikeye atar.
+Ancak, güvenlik önlemlerinin sıkılaştırılması genellikle uzantıların esnekliğini ve kullanıcı dostluğunu azaltır. [activeTab izni](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab_permission) bu dengeyi göstermektedir. Bu, uzantıların tüm internet üzerinde ana bilgisayar ayrıcalıkları talep etme gereğini ortadan kaldırmak için tanıtılmıştır ve uzantıların yalnızca kullanıcı tarafından açıkça etkinleştirildiğinde mevcut sekmeye erişmesine izin verir. Bu model, kullanıcı tarafından başlatılan eylemler gerektiren uzantılar için etkili olsa da, otomatik veya önleyici eylemler gerektirenler için yetersiz kalır ve böylece kullanım kolaylığını ve anında yanıt verme yeteneğini tehlikeye atar.
## **Referanslar**
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md b/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md
index 01aa7f9b3..cb29f7fab 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/browext-xss-example.md
@@ -4,7 +4,7 @@
## Iframe Üzerinden Cross-Site Scripting (XSS)
-Bu yapılandırmada, bir **içerik scripti** bir Iframe oluşturmak için uygulanır ve Iframe'in kaynağı olarak sorgu parametreleri içeren bir URL kullanılır:
+Bu yapılandırmada, bir **içerik betiği** bir Iframe oluşturmak için uygulanır ve Iframe'in kaynağı olarak sorgu parametreleri içeren bir URL kullanılır:
```javascript
chrome.storage.local.get("message", (result) => {
let constructedURL =
@@ -46,7 +46,7 @@ Aşırı izin veren bir İçerik Güvenlik Politikası, örneğin:
```
JavaScript'in çalıştırılmasına izin verir, bu da sistemi XSS saldırılarına karşı savunmasız hale getirir.
-XSS'i tetiklemek için alternatif bir yaklaşım, bir Iframe öğesi oluşturmak ve kaynağını zararlı scripti `content` parametresi olarak içerecek şekilde ayarlamaktır:
+XSS'i tetiklemek için alternatif bir yaklaşım, bir Iframe öğesi oluşturmak ve kaynağını `content` parametresi olarak zararlı scripti içerecek şekilde ayarlamaktır:
```javascript
let newFrame = document.createElement("iframe")
newFrame.src =
@@ -94,7 +94,7 @@ Bu zafiyeti artırmak için, ikincil bir **clickjacking** zafiyeti istismar edil
[...]
],
```
-Özellikle, **`/html/bookmarks.html`** sayfası çerçevelemeye karşı hassastır, bu nedenle **clickjacking**'e karşı savunmasızdır. Bu zafiyet, sayfayı bir saldırganın sitesinin içinde çerçevelemek için kullanılır ve arayüzü yanıltıcı bir şekilde yeniden tasarlamak için DOM öğeleri ile örtülür. Bu manipülasyon, kurbanların alttaki uzantı ile istemeden etkileşimde bulunmasına yol açar.
+Özellikle, **`/html/bookmarks.html`** sayfası çerçevelemeye karşı hassastır, bu nedenle **clickjacking**'e karşı savunmasızdır. Bu zafiyet, sayfayı bir saldırganın sitesinin içinde çerçevelemek için kullanılır ve arayüzü yanıltıcı bir şekilde yeniden tasarlamak için DOM öğeleri ile örtülür. Bu manipülasyon, kurbanların alttaki uzantıyla istemeden etkileşimde bulunmasına yol açar.
## Referanslar
diff --git a/src/pentesting-web/cache-deception/README.md b/src/pentesting-web/cache-deception/README.md
index 024ac6317..8f06e76f3 100644
--- a/src/pentesting-web/cache-deception/README.md
+++ b/src/pentesting-web/cache-deception/README.md
@@ -16,8 +16,8 @@ Cache zehirleme, istemci tarafı önbelleğini manipüle ederek istemcilerin bek
Cache zehirleme saldırısının gerçekleştirilmesi birkaç adım içerir:
1. **Anahtarsız Girdilerin Belirlenmesi**: Bunlar, bir isteğin önbelleğe alınması için gerekli olmasa da, sunucunun döndürdüğü yanıtı değiştirebilen parametrelerdir. Bu girdilerin belirlenmesi, önbelleği manipüle etmek için sömürülebileceğinden kritik öneme sahiptir.
-2. **Anahtarsız Girdilerin Sömürülmesi**: Anahtarsız girdiler belirlendikten sonra, bir sonraki adım bu parametreleri saldırganın yararına sunucunun yanıtını değiştirmek için nasıl kötüye kullanacağını bulmaktır.
-3. **Zehirlenmiş Yanıtın Önbelleğe Alındığının Garantilenmesi**: Son adım, manipüle edilmiş yanıtın önbelleğe kaydedildiğinden emin olmaktır. Bu şekilde, önbellek zehirlendiği sürede etkilenen sayfaya erişen herhangi bir kullanıcı kirlenmiş yanıtı alacaktır.
+2. **Anahtarsız Girdilerin Sömürülmesi**: Anahtarsız girdiler belirlendikten sonra, bir sonraki adım bu parametreleri saldırgana fayda sağlayacak şekilde sunucunun yanıtını değiştirmek için nasıl kötüye kullanılacağını bulmaktır.
+3. **Zehirlenmiş Yanıtın Önbelleğe Alındığının Garantilenmesi**: Son adım, manipüle edilmiş yanıtın önbelleğe kaydedildiğinden emin olmaktır. Bu şekilde, önbellek zehirlenirken etkilenen sayfaya erişen herhangi bir kullanıcı kirlenmiş yanıtı alacaktır.
### Keşif: HTTP başlıklarını kontrol et
@@ -25,7 +25,7 @@ Genellikle, bir yanıt **önbelleğe kaydedildiğinde** bununla ilgili bir **ba
### Keşif: Önbellek hata kodları
-Eğer yanıtın bir önbelleğe kaydedildiğini düşünüyorsanız, **kötü bir başlıkla istek göndermeyi** deneyebilirsiniz, bu da **400 durum kodu** ile yanıtlanmalıdır. Ardından isteği normal bir şekilde erişmeyi deneyin ve eğer **yanıt 400 durum kodu ise**, bunun zayıf olduğunu bilirsiniz (ve hatta bir DoS gerçekleştirebilirsiniz).
+Eğer yanıtın bir önbelleğe kaydedildiğini düşünüyorsanız, **kötü bir başlıkla istek göndermeyi** deneyebilirsiniz, bu da **400 durum kodu** ile yanıtlanmalıdır. Ardından isteği normal bir şekilde erişmeye çalışın ve eğer **yanıt 400 durum koduysa**, bunun zayıf olduğunu bilirsiniz (ve hatta bir DoS gerçekleştirebilirsiniz).
Daha fazla seçenek bulabilirsiniz:
@@ -43,22 +43,22 @@ Yanıtı değiştirebilecek **parametreleri ve başlıkları zorlamak için** [*
```
### Arka uç sunucudan zararlı bir yanıt elde etme
-Parametre/başlık belirlendikten sonra, **temizlenme** şekline ve **nerede** **yansıtıldığına** veya başlıktan gelen yanıtı nasıl etkilediğine bakın. Bunu herhangi bir şekilde kötüye kullanabilir misiniz (XSS gerçekleştirmek veya kontrolünüzde bir JS kodu yüklemek? DoS yapmak?...)
+Parametre/başlık belirlendikten sonra, **temizlenme** şekline ve **nerede** **yansıtıldığına** veya başlıktan gelen yanıtı nasıl etkilediğine bakın. Bunu herhangi bir şekilde kötüye kullanabilir misiniz (bir XSS gerçekleştirmek veya kontrolünüzde bir JS kodu yüklemek? bir DoS gerçekleştirmek?...)
### Yanıtı önbelleğe alma
-Kötüye kullanılabilecek **sayfayı** **belirledikten** sonra, hangi **parametre**/**başlık** kullanılacağını ve **nasıl** kötüye kullanılacağını belirledikten sonra, sayfayı önbelleğe almanız gerekir. Önbelleğe almak istediğiniz kaynağa bağlı olarak bu biraz zaman alabilir, birkaç saniye boyunca denemek zorunda kalabilirsiniz.
+Kötüye kullanılabilecek **sayfayı** **belirledikten** sonra, hangi **parametre**/**başlık** kullanılacağını ve **nasıl** kötüye kullanılacağını belirledikten sonra, sayfanın önbelleğe alınmasını sağlamanız gerekir. Önbelleğe almak istediğiniz kaynağa bağlı olarak bu biraz zaman alabilir, birkaç saniye boyunca denemeye devam etmeniz gerekebilir.
-Yanıttaki **`X-Cache`** başlığı çok faydalı olabilir çünkü istek önbelleğe alınmadığında değeri **`miss`** ve önbelleğe alındığında değeri **`hit`** olabilir.\
+Yanıttaki **`X-Cache`** başlığı çok faydalı olabilir çünkü istek önbelleğe alınmadığında **`miss`** değerine ve önbelleğe alındığında **`hit`** değerine sahip olabilir.\
**`Cache-Control`** başlığı da bir kaynağın önbelleğe alınıp alınmadığını ve kaynağın bir sonraki ne zaman önbelleğe alınacağını bilmek için ilginçtir: `Cache-Control: public, max-age=1800`
-Bir diğer ilginç başlık **`Vary`**. Bu başlık genellikle **önbellek anahtarı** olarak **işlem gören ek başlıkları** **belirtmek için** kullanılır, normalde anahtarsız olsalar bile. Bu nedenle, kullanıcı hedeflediği kurbanın `User-Agent`'ını biliyorsa, o belirli `User-Agent`'ı kullanan kullanıcılar için önbelleği zehirleyebilir.
+Bir diğer ilginç başlık **`Vary`**. Bu başlık genellikle **önbellek anahtarı** olarak **işlem gören ek başlıkları** **belirtmek** için kullanılır, normalde anahtarsız olsalar bile. Bu nedenle, kullanıcı hedeflediği kurbanın `User-Agent`'ını biliyorsa, o belirli `User-Agent`'ı kullanan kullanıcılar için önbelleği zehirleyebilir.
-Önbellekle ilgili bir başlık daha **`Age`**. Bu, nesnenin proxy önbelleğinde kaç saniye kaldığını tanımlar.
+Önbellek ile ilgili bir başlık daha **`Age`**. Bu, nesnenin proxy önbelleğinde kaç saniye kaldığını tanımlar.
-Bir isteği önbelleğe alırken, kullandığınız başlıklarla **dikkatli olun** çünkü bazıları **beklenmedik şekilde** **anahtarlı** olarak kullanılabilir ve **kurbanın o aynı başlığı kullanması gerekecektir**. Her zaman **farklı tarayıcılarla** bir Cache Poisoning'i **test edin** ve çalışıp çalışmadığını kontrol edin.
+Bir isteği önbelleğe alırken, kullandığınız başlıklarla **dikkatli olun** çünkü bazıları **beklenmedik şekilde** **anahtarlı** olarak kullanılabilir ve **kurbanın o aynı başlığı kullanması gerekecektir**. Her zaman **farklı tarayıcılarla** bir Cache Poisoning **testi** yapın ve çalışıp çalışmadığını kontrol edin.
-## Sömürü Örnekleri
+## Kötüye Kullanım Örnekleri
### En kolay örnek
@@ -97,9 +97,9 @@ cache-poisoning-via-url-discrepancies.md
### API anahtarını çalmak için yol geçişi ile önbellek zehirleme
-[**Bu yazı**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` gibi bir URL ile bir OpenAI API anahtarının nasıl çalındığını açıklıyor çünkü `/share/*` ile eşleşen her şey, istek web sunucusuna ulaştığında Cloudflare URL'yi normalleştirmeden önbelleğe alınacaktır.
+[**Bu yazı**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` gibi bir URL ile bir OpenAI API anahtarının nasıl çalındığını açıklamaktadır çünkü `/share/*` ile eşleşen her şey, istek web sunucusuna ulaştığında Cloudflare URL'yi normalleştirmeden önbelleğe alınacaktır.
-Bu, daha iyi bir şekilde de açıklanmıştır:
+Bu, daha iyi bir şekilde de açıklanmaktadır:
{{#ref}}
cache-poisoning-via-url-discrepancies.md
@@ -107,7 +107,7 @@ cache-poisoning-via-url-discrepancies.md
### Web önbellek zehirleme zafiyetlerini istismar etmek için birden fazla başlık kullanma
-Bazen bir önbelleği istismar edebilmek için **birden fazla anahtarsız girişi** **istismar etmeniz** gerekecektir. Örneğin, `X-Forwarded-Host` başlığını sizin kontrolünüzdeki bir alan adına ve `X-Forwarded-Scheme` başlığını `http` olarak ayarlarsanız bir **Açık yönlendirme** bulabilirsiniz. **Eğer** **sunucu** tüm **HTTP** isteklerini **HTTPS**'ye **yönlendiriyorsa** ve `X-Forwarded-Scheme` başlığını yönlendirme için alan adı olarak kullanıyorsa, yönlendirme ile sayfanın nereye yönlendirileceğini kontrol edebilirsiniz.
+Bazen bir önbelleği istismar edebilmek için **birden fazla anahtarsız girişi** **istismar etmeniz** gerekecektir. Örneğin, `X-Forwarded-Host` başlığını sizin kontrolünüzdeki bir alan adına ve `X-Forwarded-Scheme` başlığını `http` olarak ayarlarsanız bir **Açık yönlendirme** bulabilirsiniz. **Eğer** **sunucu** tüm **HTTP** isteklerini **HTTPS**'ye **yönlendiriyorsa** ve yönlendirme için alan adı olarak `X-Forwarded-Scheme` başlığını kullanıyorsa, sayfanın yönlendirme ile nereye işaret ettiğini kontrol edebilirsiniz.
```markup
GET /resources/js/tracking.js HTTP/1.1
Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net
@@ -125,7 +125,7 @@ X-Host: attacker.com
```
### Fat Get
-URL'deki ve gövdedeki isteği içeren bir GET isteği gönderin. Eğer web sunucusu gövdedekini kullanıyorsa ama önbellek sunucusu URL'dekini önbelleğe alıyorsa, o URL'ye erişen herkes aslında gövdedeki parametreyi kullanacaktır. Github web sitesinde James Kettle'ın bulduğu zafiyet gibi:
+URL'deki isteği ve gövdedeki isteği içeren bir GET isteği gönderin. Eğer web sunucusu gövdedekini kullanıyorsa ama önbellek sunucusu URL'dekini önbelleğe alıyorsa, o URL'ye erişen herkes aslında gövdedeki parametreyi kullanacaktır. Github web sitesinde James Kettle'ın bulduğu zafiyet gibi:
```
GET /contact/report-abuse?report=albinowax HTTP/1.1
Host: github.com
@@ -142,9 +142,9 @@ There it a portswigger lab about this: [https://portswigger.net/web-security/web
Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking)
-### HTTP Cache Zehirlemesini HTTP Request Smuggling ile Kötüye Kullanma
+### HTTP Cache Zehirlemesini HTTP İstek Kaçırma ile Kötüye Kullanma
-[Cache Poisoning saldırılarını HTTP Request Smuggling'i kötüye kullanarak nasıl gerçekleştireceğinizi](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning) burada öğrenin.
+[Cache Poisoning saldırılarını HTTP İstek Kaçırma ile nasıl gerçekleştireceğinizi](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning) burada öğrenin.
### Web Cache Zehirlemesi için Otomatik Test
@@ -156,7 +156,7 @@ Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/explo
### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577))
-ATS, URL içindeki parçayı kesmeden iletti ve yalnızca ana bilgisayar, yol ve sorgu kullanarak önbellek anahtarını oluşturdu (parçayı göz ardı ederek). Bu nedenle, `/#/../?r=javascript:alert(1)` isteği arka uca `/#/../?r=javascript:alert(1)` olarak gönderildi ve önbellek anahtarında yük bulunmadı, yalnızca ana bilgisayar, yol ve sorgu vardı.
+ATS, URL içindeki parçayı kesmeden iletti ve yalnızca ana bilgisayar, yol ve sorgu kullanarak önbellek anahtarını oluşturdu (parçayı göz ardı ederek). Bu nedenle `/#/../?r=javascript:alert(1)` isteği arka uca `/#/../?r=javascript:alert(1)` olarak gönderildi ve önbellek anahtarında yük bulunmadı, yalnızca ana bilgisayar, yol ve sorgu vardı.
### GitHub CP-DoS
@@ -180,7 +180,7 @@ Cloudflare daha önce 403 yanıtlarını önbelleğe alıyordu. Yanlış Yetkile
### Kullanıcı Aracı Kuralları
-Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi yüksek trafikli araçların kullanıcı ajanlarıyla eşleşen istekleri engeller. Ironik bir şekilde, bu yaklaşım önbellek zehirlenmesi ve DoS gibi güvenlik açıkları oluşturabilir.
+Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi yüksek trafikli araçların kullanıcı ajanlarıyla eşleşen istekleri engeller. Ironik bir şekilde, bu yaklaşım önbellek zehirlenmesi ve DoS gibi güvenlik açıklarını ortaya çıkarabilir.
### Geçersiz Başlık Alanları
@@ -192,9 +192,9 @@ Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi y
## Önbellek Aldatmacası
-Önbellek Aldatmacası'nın amacı, istemcilerin **önbellek tarafından kaydedilecek kaynakları hassas bilgileriyle yüklemelerini sağlamaktır**.
+Önbellek Aldatmacası'nın amacı, istemcilerin **önbellek tarafından kaydedilecek hassas bilgileri içeren kaynakları yüklemelerini sağlamaktır**.
-Öncelikle, **.css**, **.js**, **.png** gibi **uzantıların** genellikle **önbelleğe** **kaydedilmek** üzere **yapılandırıldığını** unutmayın. Bu nedenle, `www.example.com/profile.php/nonexistent.js` adresine erişirseniz, önbellek muhtemelen yanıtı kaydedecektir çünkü `.js` **uzantısını** görmektedir. Ancak, eğer **uygulama**, _www.example.com/profile.php_ içinde saklanan **hassas** kullanıcı içerikleriyle **tekrar oynuyorsa**, bu içerikleri diğer kullanıcılardan **çalmış** olursunuz.
+Öncelikle, **.css**, **.js**, **.png** gibi **uzantıların** genellikle **önbelleğe** **kaydedilmek** üzere **yapılandırıldığını** unutmayın. Bu nedenle, `www.example.com/profile.php/nonexistent.js` adresine erişirseniz, önbellek muhtemelen yanıtı kaydedecektir çünkü `.js` **uzantısını** görmektedir. Ancak, eğer **uygulama**, _www.example.com/profile.php_ içinde saklanan **hassas** kullanıcı içerikleri ile **tekrar** yanıt veriyorsa, bu içerikleri diğer kullanıcılardan **çalıp** alabilirsiniz.
Test edilecek diğer şeyler:
@@ -203,7 +203,7 @@ Test edilecek diğer şeyler:
- _www.example.com/profile.php/test.js_
- _www.example.com/profile.php/../test.js_
- _www.example.com/profile.php/%2e%2e/test.js_
-- _Daha az bilinen uzantılar kullanın, örneğin_ `.avif`
+- _Daha az bilinen uzantıları kullanın, örneğin_ `.avif`
Başka çok net bir örnek bu yazıda bulunabilir: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\
Örnekte, _http://www.example.com/home.php/non-existent.css_ gibi var olmayan bir sayfayı yüklediğinizde, _http://www.example.com/home.php_ (**kullanıcının hassas bilgileriyle**) içeriğin döneceği ve önbellek sunucusunun sonucu kaydedeceği açıklanmaktadır.\
@@ -211,7 +211,7 @@ Daha sonra, **saldırgan**, kendi tarayıcısında _http://www.example.com/home.
**Önbellek proxy'sinin**, dosyaları **uzantıya** (_css_) göre **önbelleğe alacak** şekilde **yapılandırılması** gerektiğini unutmayın ve içerik türüne göre değil. Örneğin, _http://www.example.com/home.php/non-existent.css_ adresinin `text/html` içerik türü olacak, bu da bir _.css_ dosyası için beklenen `text/css` mime türü değildir.
-[Cache Deceptions saldırılarını HTTP Request Smuggling'i kötüye kullanarak nasıl gerçekleştireceğinizi](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception) burada öğrenin.
+[Cache Deceptions saldırılarını HTTP İstek Kaçırma ile kötüye kullanarak nasıl gerçekleştireceğinizi](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception) burada öğrenin.
## Otomatik Araçlar
diff --git a/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md b/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md
index d07b8d2a9..173bf140e 100644
--- a/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md
+++ b/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md
@@ -13,7 +13,7 @@ GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
```
-- **HTTP Meta Karakteri (HMC) ve Beklenmeyen Değerler**
+- **HTTP Meta Karakteri (HMC) & Beklenmeyen Değerler**
Bazı **zararlı meta karakterler** içeren bir başlık gönderin, örneğin ve . Saldırının çalışması için önce önbelleği atlatmalısınız.
```
@@ -44,7 +44,7 @@ Invalid Header
```
- **HTTP Yöntem Aşımı Saldırısı (HMO)**
-Eğer sunucu `X-HTTP-Method-Override`, `X-HTTP-Method` veya `X-Method-Override` gibi başlıklarla HTTP yöntemini değiştirmeyi destekliyorsa, sunucunun desteklemediği bir yöntemi değiştirerek geçerli bir sayfa talep etmek mümkündür, böylece kötü bir yanıt önbelleğe alınır:
+Eğer sunucu `X-HTTP-Method-Override`, `X-HTTP-Method` veya `X-Method-Override` gibi başlıklarla HTTP yöntemini değiştirmeyi destekliyorsa, yöntemi değiştirerek geçerli bir sayfa talep etmek mümkündür, böylece sunucu bunu desteklemediği için kötü bir yanıt önbelleğe alınır:
```
GET /blogs HTTP/1.1
Host: redacted.com
diff --git a/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md b/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md
index 7c6673d70..f7a7444d6 100644
--- a/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md
+++ b/src/pentesting-web/cache-deception/cache-poisoning-via-url-discrepancies.md
@@ -5,11 +5,11 @@
Bu, önbellek zehirleme saldırıları gerçekleştirmek için önerilen tekniklerin bir özetidir **önbellek proxy'leri ve web sunucuları arasındaki tutarsızlıklardan yararlanarak.**
> [!NOTE]
-> Bu saldırının amacı, **önbellek sunucusunun statik bir kaynağın yüklendiğini düşünmesini sağlamak** ve böylece onu önbelleğe alırken, önbellek sunucusu yolun bir kısmını önbellek anahtarı olarak saklarken web sunucusunun başka bir yolu çözümlemesidir. Web sunucusu, kullanıcının hassas bilgilerini, XSS gibi kötü niyetli bir yükü veya örneğin saldırganın web sitesinden bir JS dosyası yüklemek için yönlendiren dinamik bir sayfayı yükleyecek gerçek yolu çözecektir.
+> Bu saldırının amacı **önbellek sunucusunun statik bir kaynağın yüklendiğini düşünmesini sağlamak** böylece önbelleğe alırken, önbellek sunucusu yolun bir kısmını anahtar olarak saklarken web sunucusu başka bir yolu yanıtlamaktadır. Web sunucusu, kullanıcının hassas bilgilerini, XSS gibi kötü niyetli bir yükü veya örneğin saldırganın web sitesinden bir JS dosyası yüklemek için yönlendiren dinamik bir sayfayı yükleyecek gerçek yolu çözecektir.
## Ayırıcılar
-**URL ayırıcıları**, çerçeve ve sunucuya göre değişir, isteklerin nasıl yönlendirildiğini ve yanıtların nasıl işlendiğini etkiler. Bazı yaygın köken ayırıcıları şunlardır:
+**URL ayırıcıları** çerçeve ve sunucuya göre değişir, isteklerin nasıl yönlendirildiğini ve yanıtların nasıl işlendiğini etkiler. Bazı yaygın köken ayırıcıları şunlardır:
- **Noktalı virgül**: Matris değişkenleri için Spring'de kullanılır (örneğin, `/hello;var=a/world;var1=b;var2=c` → `/hello/world`).
- **Nokta**: Ruby on Rails'de yanıt formatını belirtir (örneğin, `/MyAccount.css` → `/MyAccount`).
@@ -18,9 +18,9 @@ Bu, önbellek zehirleme saldırıları gerçekleştirmek için önerilen teknikl
Bu süreçten sonra diğer özel ayırıcılar bulunabilir:
-- **Adım 1**: Önbelleğe alınamayan istekleri tanımlayın ve bunları potansiyel ayırıcıları olan URL'lerin nasıl işlendiğini izlemek için kullanın.
+- **Adım 1**: Önbelleğe alınamayan istekleri tanımlayın ve bunları potansiyel ayırıcıların nasıl işlendiğini izlemek için kullanın.
- **Adım 2**: Yollara rastgele ekler ekleyin ve sunucunun yanıtını karşılaştırarak bir karakterin ayırıcı olarak işlev görüp görmediğini belirleyin.
-- **Adım 3**: Yanıtın değişip değişmediğini görmek için rastgele ekin öncesinde potansiyel ayırıcılar tanıtın, bu ayırıcı kullanımını gösterir.
+- **Adım 3**: Yanıtın değişip değişmediğini görmek için rastgele ekin önüne potansiyel ayırıcılar ekleyin, bu ayırıcı kullanımını gösterir.
## Normalizasyon & Kodlamalar
@@ -29,18 +29,18 @@ Bu süreçten sonra diğer özel ayırıcılar bulunabilir:
### **Kodlamalar**
-Farklı HTTP sunucuları ve proxy'leri, Nginx, Node ve CloudFront gibi, ayırıcıları farklı şekilde çözer, bu da CDNs ve köken sunucuları arasında tutarsızlıklara yol açar. Örneğin, web sunucusu bu dönüşümü gerçekleştirirse `/myAccount%3Fparam` → `/myAccount?param` ancak önbellek sunucusu anahtar olarak yolu `/myAccount%3Fparam` olarak saklarsa, bir tutarsızlık vardır.
+Farklı HTTP sunucuları ve proxy'ler, Nginx, Node ve CloudFront gibi, ayırıcıları farklı şekilde çözer, bu da CDNs ve köken sunucuları arasında tutarsızlıklara yol açar. Örneğin, web sunucusu bu dönüşümü gerçekleştirirse `/myAccount%3Fparam` → `/myAccount?param` ancak önbellek sunucusu anahtar olarak yolu `/myAccount%3Fparam` olarak saklarsa, bir tutarsızlık vardır.
-Bu tutarsızlıkları kontrol etmenin bir yolu, yolu herhangi bir kodlama olmadan yükledikten sonra farklı karakterleri URL kodlaması ile istekler göndermek ve kodlanmış yol yanıtının önbellek yanıtından gelip gelmediğini kontrol etmektir.
+Bu tutarsızlıkları kontrol etmenin bir yolu, yolu herhangi bir kodlama olmadan yükledikten sonra farklı karakterleri URL kodlayarak istekler göndermek ve kodlanmış yol yanıtının önbellek yanıtından gelip gelmediğini kontrol etmektir.
### Nokta segmenti
-Noktaların dahil olduğu yol normalizasyonu, önbellek zehirleme saldırıları için de oldukça ilginçtir. Örneğin, `/static/../home/index` veya `/aaa..\home/index`, bazı önbellek sunucuları bu yolları kendileri anahtar olarak önbelleğe alırken, diğerleri yolu çözebilir ve `/home/index`'i önbellek anahtarı olarak kullanabilir.\
+Noktaların dahil olduğu yol normalizasyonu, önbellek zehirleme saldırıları için de oldukça ilginçtir. Örneğin, `/static/../home/index` veya `/aaa..\home/index`, bazı önbellek sunucuları bu yolları kendileri anahtar olarak önbelleğe alırken, diğerleri yolu çözüp `/home/index`'i önbellek anahtarı olarak kullanabilir.\
Daha önce olduğu gibi, bu tür istekler göndermek ve yanıtın önbellekten toplanıp toplanmadığını kontrol etmek, `/home/index`'e verilen yanıtın bu yollar istendiğinde gönderilen yanıt olup olmadığını belirlemeye yardımcı olur.
## Statik Kaynaklar
-Birçok önbellek sunucusu, bir yanıt statik olarak tanımlandığında her zaman önbelleğe alır. Bu, şu nedenlerden olabilir:
+Birçok önbellek sunucusu, yanıt statik olarak tanımlanırsa her zaman bir yanıtı önbelleğe alır. Bu, şu nedenlerden olabilir:
- **Uzantı**: Cloudflare, aşağıdaki uzantılara sahip dosyaları her zaman önbelleğe alır: 7z, csv, gif, midi, png, tif, zip, avi, doc, gz, mkv, ppt, tiff, zst, avif, docx, ico, mp3, pptx, ttf, apk, dmg, iso, mp4, ps, webm, bin, ejs, jar, ogg, rar, webp, bmp, eot, jpg, otf, svg, woff, bz2, eps, jpeg, pdf, svgz, woff2, class, exe, js, pict, swf, xls, css, flac, mid, pls, tar, xlsx
- Dinamik bir yanıtı önbelleğe almak için bir ayırıcı ve statik bir uzantı kullanarak, `/home$image.png` isteği `/home$image.png`'i önbelleğe alacak ve köken sunucusu `/home` ile yanıt verecektir.
diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md
index 3ea681ef1..10681a0f3 100644
--- a/src/pentesting-web/content-security-policy-csp-bypass/README.md
+++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md
@@ -1,4 +1,4 @@
-# İçerik Güvenlik Politikası (CSP) Atlatma
+# İçerik Güvenlik Politikası (CSP) Bypass
{{#include ../../banners/hacktricks-training.md}}
@@ -6,7 +6,7 @@
İçerik Güvenlik Politikası (CSP), esasen **cross-site scripting (XSS)** gibi saldırılara karşı koruma sağlamak amacıyla tanınan bir tarayıcı teknolojisidir. Tarayıcı tarafından güvenli bir şekilde yüklenebilecek kaynakların yollarını ve kaynaklarını tanımlayarak çalışır. Bu kaynaklar, resimler, çerçeveler ve JavaScript gibi çeşitli öğeleri kapsar. Örneğin, bir politika, aynı alan adından (self) kaynakların yüklenmesine ve çalıştırılmasına izin verebilir; bu, satır içi kaynakları ve `eval`, `setTimeout` veya `setInterval` gibi fonksiyonlar aracılığıyla dize kodunun çalıştırılmasını içerir.
-CSP'nin uygulanması, **yanıt başlıkları** aracılığıyla veya **HTML sayfasına meta öğeleri ekleyerek** gerçekleştirilir. Bu politikaya uyarak, tarayıcılar bu şartları proaktif bir şekilde uygular ve tespit edilen ihlalleri hemen engeller.
+CSP'nin uygulanması, **yanıt başlıkları** aracılığıyla veya **HTML sayfasına meta öğeleri ekleyerek** gerçekleştirilir. Bu politikayı izleyen tarayıcılar, bu şartları proaktif bir şekilde uygular ve tespit edilen ihlalleri hemen engeller.
- Yanıt başlığı aracılığıyla uygulanmıştır:
```
@@ -18,14 +18,14 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com;
```
### Headers
-CSP, bu başlıklar kullanılarak uygulanabilir veya izlenebilir:
+CSP bu başlıklar kullanılarak uygulanabilir veya izlenebilir:
- `Content-Security-Policy`: CSP'yi uygular; tarayıcı herhangi bir ihlali engeller.
- `Content-Security-Policy-Report-Only`: İzleme için kullanılır; ihlalleri engellemeden raporlar. Ön üretim ortamlarında test etmek için idealdir.
### Defining Resources
-CSP, hem aktif hem de pasif içeriğin yüklenmesi için kaynakları kısıtlar, inline JavaScript yürütmesi ve `eval()` kullanımı gibi yönleri kontrol eder. Bir örnek politika:
+CSP, hem aktif hem de pasif içeriğin yüklenmesi için kökenleri kısıtlar, inline JavaScript yürütmesi ve `eval()` kullanımı gibi yönleri kontrol eder. Bir örnek politika:
```bash
default-src 'none';
img-src 'self';
@@ -39,7 +39,7 @@ object-src 'none';
```
### Direktifler
-- **script-src**: JavaScript için belirli kaynaklara izin verir, URL'ler, satır içi betikler ve olay işleyicileri veya XSLT stilleri tarafından tetiklenen betikler dahil.
+- **script-src**: JavaScript için belirli kaynaklara izin verir, URL'ler, satır içi scriptler ve olay işleyicileri veya XSLT stilleri tarafından tetiklenen scriptler dahil.
- **default-src**: Belirli fetch direktifleri yoksa kaynakları almak için varsayılan bir politika belirler.
- **child-src**: Web işçileri ve gömülü çerçeve içerikleri için izin verilen kaynakları belirtir.
- **connect-src**: fetch, WebSocket, XMLHttpRequest gibi arayüzler kullanılarak yüklenebilecek URL'leri kısıtlar.
@@ -50,13 +50,13 @@ object-src 'none';
- **manifest-src**: Uygulama manifest dosyalarının izin verilen kaynaklarını tanımlar.
- **media-src**: Medya nesnelerini yüklemek için izin verilen kaynakları tanımlar.
- **object-src**: `