mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/pentesting-web/account-takeover.md'] to tr
This commit is contained in:
		
							parent
							
								
									ff23b8fd10
								
							
						
					
					
						commit
						f0f222e730
					
				| @ -16,8 +16,8 @@ Bir hesabın e-posta adresinin değiştirilmesi denenmeli ve onay süreci **ince | ||||
| 
 | ||||
| - Kurbanın e-posta adresine benzer bir e-posta ile üçüncü taraf kimlik sağlayıcısında bir hesap oluşturun, bazı unicode karakterleri kullanarak (`vićtim@company.com`). | ||||
| - Üçüncü taraf sağlayıcı e-postayı doğrulamamalıdır. | ||||
| - Eğer kimlik sağlayıcı e-postayı doğruluyorsa, belki de `victim@ćompany.com` gibi alan kısmına saldırabilir ve o alanı kaydedip kimlik sağlayıcının alanın ascii versiyonunu oluşturmasını umabilirsiniz, kurban platformu alan adını normalize ederken. | ||||
| - Bu kimlik sağlayıcı aracılığıyla kurban platformuna giriş yapın, bu platform unicode karakterini normalize etmeli ve kurban hesabına erişmenize izin vermelidir. | ||||
| - Eğer kimlik sağlayıcı e-postayı doğruluyorsa, belki de alan kısmını saldırıya uğratabilirsiniz: `victim@ćompany.com` ve o alanı kaydedip kimlik sağlayıcının alanın ascii versiyonunu oluşturmasını umabilirsiniz, kurban platformu alan adını normalize ederken. | ||||
| - Bu kimlik sağlayıcı aracılığıyla kurban platformuna giriş yapın, kimlik sağlayıcı unicode karakterini normalize etmeli ve kurban hesabına erişmenize izin vermelidir. | ||||
| 
 | ||||
| Daha fazla ayrıntı için Unicode Normalizasyonu belgesine bakın: | ||||
| 
 | ||||
| @ -45,7 +45,7 @@ cors-bypass.md | ||||
| 
 | ||||
| ## **CSRF ile Hesap Ele Geçirme** | ||||
| 
 | ||||
| Sayfa CSRF'ye karşı savunmasızsa, **kullanıcının şifresini**, e-posta adresini veya kimlik doğrulamasını değiştirmesini sağlayabilir ve böylece erişim sağlayabilirsiniz: | ||||
| Sayfa CSRF'ye karşı savunmasızsa, **kullanıcının şifresini**, e-posta adresini veya kimlik doğrulamasını değiştirmesini sağlayabilir ve ardından buna erişebilirsiniz: | ||||
| 
 | ||||
| {{#ref}} | ||||
| csrf-cross-site-request-forgery.md | ||||
| @ -67,7 +67,7 @@ Sınırlı bir XSS veya bir alt alan ele geçirme bulursanız, çerezlerle oynam | ||||
| hacking-with-cookies/ | ||||
| {{#endref}} | ||||
| 
 | ||||
| ## **Şifre Sıfırlama Mekanizmasına Saldırma** | ||||
| ## **Şifre Sıfırlama Mekanizmasına Saldırı** | ||||
| 
 | ||||
| {{#ref}} | ||||
| reset-password.md | ||||
| @ -75,7 +75,7 @@ reset-password.md | ||||
| 
 | ||||
| ## **Yanıt Manipülasyonu** | ||||
| 
 | ||||
| Eğer kimlik doğrulama yanıtı **basit bir boolean'a indirgenebiliyorsa, false'u true olarak değiştirmeyi deneyin** ve erişim elde edip edemediğinizi görün. | ||||
| Eğer kimlik doğrulama yanıtı **basit bir boolean'a indirgenebiliyorsa, false'u true olarak değiştirmeyi deneyin** ve herhangi bir erişim elde edip edemediğinizi görün. | ||||
| 
 | ||||
| ## OAuth ile Hesap Ele Geçirme | ||||
| 
 | ||||
| @ -88,7 +88,7 @@ oauth-to-account-takeover.md | ||||
| 1. Şifre sıfırlama isteği başlatıldıktan sonra Host başlığı değiştirilir. | ||||
| 2. `X-Forwarded-For` proxy başlığı `attacker.com` olarak değiştirilir. | ||||
| 3. Host, Referrer ve Origin başlıkları aynı anda `attacker.com` olarak değiştirilir. | ||||
| 4. Şifre sıfırlama başlatıldıktan sonra, e-postayı yeniden göndermeyi seçerek, yukarıda belirtilen üç yöntem de kullanılır. | ||||
| 4. Şifre sıfırlama başlatıldıktan sonra, e-postayı yeniden göndermeyi seçerken, yukarıda belirtilen üç yöntem de kullanılır. | ||||
| 
 | ||||
| ## Yanıt Manipülasyonu | ||||
| 
 | ||||
| @ -99,7 +99,7 @@ oauth-to-account-takeover.md | ||||
| 
 | ||||
| Bu manipülasyon teknikleri, JSON'un veri iletimi ve alımı için kullanıldığı senaryolarda etkilidir. | ||||
| 
 | ||||
| ## Mevcut oturumun e-posta adresini değiştirme | ||||
| ## Mevcut Oturumun E-posta Adresini Değiştirme | ||||
| 
 | ||||
| [bu rapordan](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea): | ||||
| 
 | ||||
| @ -113,13 +113,13 @@ Bu, [**bu raporda**](https://dynnyd20.medium.com/one-click-account-take-over-e50 | ||||
| 
 | ||||
| ### Hesap Ele Geçirme için E-posta Doğrulamasını Atlatma | ||||
| - Saldırgan attacker@test.com ile giriş yapar ve kaydolduğunda e-postayı doğrular. | ||||
| - Saldırgan doğrulanan e-postayı victim@test.com olarak değiştirir (e-posta değişikliği için ikinci bir doğrulama yok). | ||||
| - Saldırgan doğrulanmış e-postayı victim@test.com olarak değiştirir (e-posta değişikliği için ikinci bir doğrulama yoktur). | ||||
| - Artık web sitesi victim@test.com ile giriş yapmaya izin verir ve kurban kullanıcının e-posta doğrulamasını atlatmış oluruz. | ||||
| 
 | ||||
| ### Eski Çerezler | ||||
| 
 | ||||
| [**bu yazıda**](https://medium.com/@niraj1mahajan/uncovering-the-hidden-vulnerability-how-i-found-an-authentication-bypass-on-shopifys-exchange-cc2729ea31a9) açıklandığı gibi, bir hesaba giriş yapmak, çerezleri kimlik doğrulaması yapılmış bir kullanıcı olarak kaydetmek, çıkış yapmak ve sonra tekrar giriş yapmak mümkündü.\ | ||||
| Yeni girişle, farklı çerezler oluşturulsa da eski çerezler tekrar çalışmaya başladı. | ||||
| [**bu yazıda**](https://medium.com/@niraj1mahajan/uncovering-the-hidden-vulnerability-how-i-found-an-authentication-bypass-on-shopifys-exchange-cc2729ea31a9) açıklandığı gibi, bir hesaba giriş yapmak, çerezleri kimlik doğrulaması yapılmış bir kullanıcı olarak kaydetmek, çıkış yapmak ve ardından tekrar giriş yapmak mümkündü.\ | ||||
| Yeni girişle, farklı çerezler oluşturulmuş olsa da, eski çerezler tekrar çalışmaya başladı. | ||||
| 
 | ||||
| ## Referanslar | ||||
| 
 | ||||
|  | ||||
| @ -471,16 +471,66 @@ window.search = window.search || {}; | ||||
|         showResults(true); | ||||
|     } | ||||
| 
 | ||||
|     var branch = lang === "en" ? "master" : lang | ||||
|     fetch(`https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.json`) | ||||
|         .then(response => response.json()) | ||||
|         .then(json => init(json))         | ||||
|         .catch(error => { // Try to load searchindex.js if fetch failed
 | ||||
|             var script = document.createElement('script'); | ||||
|             script.src = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.js`; | ||||
|             script.onload = () => init(window.search); | ||||
|             document.head.appendChild(script); | ||||
|         }); | ||||
|     (async function loadSearchIndex(lang = window.lang || 'en') { | ||||
|         /* ───────── paths ───────── */ | ||||
|         const branch      = lang === 'en' ? 'master' : lang; | ||||
|         const baseRemote  = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/${branch}`; | ||||
|         const remoteJson  = `${baseRemote}/searchindex.json`; | ||||
|         const remoteJs    = `${baseRemote}/searchindex.js`; | ||||
|         const localJson   = './searchindex.json'; | ||||
|         const localJs     = './searchindex.js'; | ||||
|         const TIMEOUT_MS  = 5_000; | ||||
|          | ||||
|         /* ───────── helpers ───────── */ | ||||
|         const fetchWithTimeout = (url, opt = {}) => | ||||
|             Promise.race([ | ||||
|             fetch(url, opt), | ||||
|             new Promise((_, r) => setTimeout(() => r(new Error('timeout')), TIMEOUT_MS)) | ||||
|             ]); | ||||
|          | ||||
|         const loadScript = src => | ||||
|             new Promise((resolve, reject) => { | ||||
|             const s = document.createElement('script'); | ||||
|             s.src      = src; | ||||
|             s.onload   = resolve; | ||||
|             s.onerror  = reject; | ||||
|             document.head.appendChild(s); | ||||
|             }); | ||||
|          | ||||
|         /* ───────── 1. remote JSON ───────── */ | ||||
|         try { | ||||
|             const r = await fetchWithTimeout(remoteJson); | ||||
|             if (!r.ok) throw new Error(r.status); | ||||
|             return init(await r.json()); | ||||
|         } catch (e) { | ||||
|             console.warn('Remote JSON failed →', e); | ||||
|         } | ||||
|          | ||||
|         /* ───────── 2. remote JS ───────── */ | ||||
|         try { | ||||
|             await loadScript(remoteJs); | ||||
|             return init(window.search); | ||||
|         } catch (e) { | ||||
|             console.warn('Remote JS failed →', e); | ||||
|         } | ||||
|          | ||||
|         /* ───────── 3. local JSON ───────── */ | ||||
|         try { | ||||
|             const r = await fetch(localJson); | ||||
|             if (!r.ok) throw new Error(r.status); | ||||
|             return init(await r.json()); | ||||
|         } catch (e) { | ||||
|             console.warn('Local JSON failed →', e); | ||||
|         } | ||||
|          | ||||
|         /* ───────── 4. local JS ───────── */ | ||||
|         try { | ||||
|             await loadScript(localJs); | ||||
|             return init(window.search); | ||||
|         } catch (e) { | ||||
|             console.error('Local JS failed →', e); | ||||
|         } | ||||
|     })(); | ||||
| 
 | ||||
|     // Exported functions
 | ||||
|     search.hasFocus = hasFocus; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user