<summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın(https://github.com/sponsors/carlospolop)!
* [**PEASS Ailesi**]'ni keşfedin(https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**]'in koleksiyonu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
3.**Sonuna özel karakterler eklemeyi deneyin.** Burp'u kullanarak tüm **ascii** ve **Unicode** karakterlerini **bruteforce** etmeyi deneyebilirsiniz. (_Not: Ayrıca **önceki** bahsedilen **uzantıları** da deneyebilirsiniz_)
4. Sunucu tarafındaki uzantı ayrıştırıcısını**yanıltarak korumaları atlatmaya çalışın**. **Uzantıyı ikiye katlama** veya **uzantılar arasına gereksiz veri** (**null** baytları) eklemek gibi tekniklerle. _Daha iyi bir payload hazırlamak için **önceki uzantıları** da kullanabilirsiniz._
6.**Geçerli uzantıdan önce exec uzantısını ekleyin** ve sunucunun yanlış yapılandırılmış olmasını umun. (Apache yan yapılandırmalarını sömürmek için faydalıdır, burada uzantısı_**.php**_ olan her şey çalışır, ancak .php ile bitmeyebilir):
7.**Windows'ta NTFS alternatif veri akışı (ADS)** kullanın. Bu durumda, yasaklı bir uzantıdan önce ve izin verilen bir uzantıdan sonra iki nokta karakteri “:” eklenir. Sonuç olarak, sunucuda yasaklı uzantılı**boş bir dosya** oluşturulur (örn. “file.asax:.jpg”). Bu dosya daha sonra kısa dosya adını kullanarak düzenlenebilir. “**::$data**” deseni ayrıca boş olmayan dosyalar oluşturmak için kullanılabilir. Bu nedenle, bu desenin ardından bir nokta karakteri eklemek, daha fazla kısıtlamayı atlamak için de yararlı olabilir (örn. “file.asp::$data.”)
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # burada 4 eksiltin ve .png ekleyin
* **Content-Type** denetimlerini atlatmak için **Content-Type****başlığının değerini** şu şekilde ayarlayın: _image/png_ , _text/plain , application/octet-stream_
* **Sihirli sayı** kontrolünü atlatmak için dosyanın başına **gerçek bir resmin baytlarını** ekleyerek (_file_ komutunu karıştırın). Veya **metadata** içine **shell** tanıtın:\
* Eğer **resminize sıkıştırma ekleniyorsa**, örneğin [PHP-GD](https://www.php.net/manual/fr/book.image.php) gibi bazı standart PHP kütüphanelerini kullanarak, önceki teknikler işe yaramaz olacaktır. Bununla birlikte, **PLTE chunk**'ı kullanarak [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) sıkıştırmayı**hayatta kalacak şekilde** metin eklemek için kullanabilirsiniz.
* Web sayfası ayrıca **resmi yeniden boyutlandırabilir**, örneğin PHP-GD fonksiyonları`imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, **IDAT chunk**'ı kullanarak [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) sıkıştırmayı**hayatta kalacak şekilde** metin eklemek için kullanabilirsiniz.
* Bir yükün **resmi yeniden boyutlandırmayı hayatta kalacak şekilde** yapmak için PHP-GD fonksiyonu `thumbnailImage` kullanılabilir. Ancak, **tEXt chunk**'ı kullanarak [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) sıkıştırmayı**hayatta kalacak şekilde** metin eklemek için kullanabilirsiniz.
1.**Aynı dosyayı** ve **aynı ada sahip dosyayı****birkaç kez** (ve **aynı anda**) yükleyin
2.**Zaten var olan bir dosya** veya **dizin** adına sahip bir dosya yükleyin
3. Adı**“.”, “..”, veya “…” olan bir dosya** yükleyin. Örneğin, Apache'de **Windows**'ta, uygulama yüklenen dosyaları “/www/uploads/” dizininde saklıyorsa, “.” dosya adı “/www/” dizininde “uploads” adında bir dosya oluşturacaktır.
4.**“…:.jpg”** gibi **kolayca silinmeyen** bir dosya yükleyin **NTFS**'de. (Windows)
5. Adında `|<>*?”` gibi **geçersiz karakterler** bulunan bir dosya yükleyin **Windows**'a. (Windows)
6. Yasaklanmış (**yasaklanmış**) **adlar** olan CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 ve LPT9 gibi **adlar** kullanarak **Windows**'a bir dosya yükleyin.
`.phar` dosyaları java için `.jar` gibi, ancak php için ve bir php dosyası gibi **kullanılabilir** (php ile çalıştırılarak veya bir betik içine dahil edilerek...)
`.inc` uzantısı bazen yalnızca dosyaları**ithal etmek** için kullanılan php dosyaları için kullanılır, bu nedenle, bir noktada, biri bu uzantının **çalıştırılmasına izin vermiş olabilir**.
Eğer bir XML dosyasını bir Jetty sunucusuna yükleyebilirseniz, [Yeni \*.xml ve \*.war dosyaları otomatik olarak işlendiği için RCE elde edebilirsiniz](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Bu nedenle, aşağıdaki resimde belirtildiği gibi, XML dosyasını`$JETTY_BASE/webapps/` dizinine yükleyin ve kabuk bekleyin!
Bu zafiyetin detaylı keşfi için orijinal araştırmaya göz atın: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
UWSGI sunucularında Uzaktan Komut Yürütme (RCE) zafiyetleri, `.ini` yapılandırma dosyasını değiştirme yeteneğine sahip olanlar tarafından sömürülebilir. UWSGI yapılandırma dosyaları, "sihirli" değişkenler, yer tutucular ve operatörler içeren belirli bir sözdizim kullanır. Özellikle, `@(filename)` olarak kullanılan '@' operatörü, bir dosyanın içeriğini dahil etmek için tasarlanmıştır. UWSGI'de desteklenen çeşitli şemalardan biri olan "exec" şeması özellikle güçlüdür, bir işlemin standart çıktısından veri okumayı sağlar. Bu özellik, `.ini` yapılandırma dosyası işlendiğinde Uzaktan Komut Yürütme veya Dosya Yazma/Okuma gibi kötü amaçlı amaçlar için manipüle edilebilir.
Payload'ın yürütülmesi, yapılandırma dosyasının ayrıştırılması sırasında gerçekleşir. Yapılandırmanın etkinleştirilmesi ve ayrıştırılması için uWSGI işlemi ya yeniden başlatılmalıdır (potansiyel olarak bir çökme sonrası veya Bir Hizmet Reddi saldırısından dolayı) ya da dosya otomatik yeniden yükleme olarak ayarlanmalıdır. Etkinleştirilmişse, otomatik yeniden yükleme özelliği, değişiklikler algılandığında belirli aralıklarla dosyayı yeniden yükler.
uWSGI'nin yapılandırma dosyası ayrıştırmasının gevşek doğasını anlamak son derece önemlidir. Özellikle, tartışılan payload, bir ikili dosyaya (örneğin bir resim veya PDF) yerleştirilebilir, potansiyel istismarın kapsamını daha da genişletir.
Bazı durumlarda sunucunun **`wget`** kullanarak **dosyaları indirdiğini** ve **URL**'yi **belirtebileceğinizi** fark edebilirsiniz. Bu durumlarda, kodun indirilen dosyaların uzantısının bir beyaz listeye dahil olduğunu kontrol edebileceğini ve yalnızca izin verilen dosyaların indirileceğini sağlamak için. Ancak, **bu kontrol atlatılabilir.**\
**Linux**'taki bir **dosya adının** maksimum uzunluğu **255** karakterdir, ancak **wget** dosya adlarını**236** karaktere kısaltır. **"A"\*232+".php"+".gif"** adında bir dosya indirebilirsiniz, bu dosya adı**kontrolü atlayacaktır** (bu örnekte **".gif"** geçerli bir uzantıdır) ancak `wget` dosyayı**"A"\*232+".php"** olarak yeniden adlandıracaktır.
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’
**Başka bir seçenek** olarak düşünebileceğiniz şey, bu kontrolü atlatmanın bir yolu olarak **HTTP sunucusunu farklı bir dosyaya yönlendirmesini sağlamaktır**, böylece başlangıçtaki URL kontrolü atlatırken wget daha sonra yönlendirilen dosyayı yeni adıyla indirecektir. Bu, wget'in `--trust-server-names`**parametresiyle kullanıldığı sürece çalışmayacaktır**, çünkü **wget yönlendirilen sayfayı orijinal URL'de belirtilen dosya adıyla indirecektir**.
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass), Pentesterlara ve Hata Avcılarına dosya yükleme mekanizmalarını test etmede yardımcı olmak için tasarlanmış güçlü bir araçtır. Çeşitli hata avcılığı tekniklerinden yararlanarak web uygulamalarının kapsamlı değerlendirmelerini sağlayarak zayıflıkları tanımlama ve sömürme sürecini basitleştirir.
* **Dosya adını** `<svg onload=alert(document.domain)>` olarak ayarlayarak bir XSS elde edin
* **Dosya adını** `; sleep 10;` olarak ayarlayarak bazı komut enjeksiyonlarını test edin (daha fazla [komut enjeksiyonu hilesi burada](../command-injection.md))
* Eğer **web sunucusunu bir URL'den bir resmi yakalamaya işaret edebilirseniz**, bir [SSRF'yi](../ssrf-server-side-request-forgery/) kötüye kullanmaya çalışabilirsiniz. Bu **resim** bir **genel** siteye **kaydedilecekse**, [https://iplogger.org/invisible/](https://iplogger.org/invisible/) adresinden bir URL belirtebilir ve **her ziyaretçinin bilgilerini çalabilirsiniz**.
* XSS için özel olarak oluşturulmuş PDF'ler: [Aşağıdaki sayfa, **JS yürütmek için PDF verilerini enjekte etmenin** nasıl yapılacağını göstermektedir](../xss-cross-site-scripting/pdf-injection.md). PDF'ler yükleyebiliyorsanız, verilen talimatları takip ederek keyfi JS yürütebilecek bir PDF hazırlayabilirsiniz.
* Sunucunun herhangi bir **antivirüs** olup olmadığını kontrol etmek için \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) içeriğini yükleyin
Diğer dosya türleri için [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en.wikipedia.org/wiki/List\_of\_file\_signatures) adresine başvurun.
Sıkıştırma sırasında dosyaların beklenmedik bir şekilde dizinlerde oluşturulması ciddi bir sorundur. Bu yapılandırmanın başlangıçtaki varsayımlarına rağmen, kötü niyetli dosya yüklemeleri aracılığıyla OS düzeyinde komut yürütmenin engellenebileceği düşünülse de, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin gezinme yetenekleri istismar edilebilir. Bu, saldırganların hedef uygulamanın açma işlevselliğini manipüle ederek kısıtlamaları atlamasına ve güvenli yükleme dizinlerinden kaçmasına olanak tanır.
Bu tür dosyaları oluşturmak için otomatik bir saldırı aracı [**GitHub'daki evilarc**](https://github.com/ptoomey3/evilarc) adresinde bulunmaktadır. Yardımcı program aşağıdaki gibi kullanılabilir:
Ayrıca, **evilarc ile sembolik bağlantı hilesi** bir seçenektir. Eğer `/flag.txt` gibi bir dosyayı hedeflemek isteniyorsa, o dosyaya bir sembolik bağlantı oluşturulmalıdır. Bu, evilarc'ın işlemi sırasında hata ile karşılaşmamasını sağlar.
Daha fazla detay için **orijinal yazıya bakın**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
3.**Hex Düzenleyici veya vi ile Değiştirme**: Zip içindeki dosyaların adları, "xxA"yı değiştirerek dizinleri gezmek için vi veya bir hex düzenleyici kullanılarak değiştirilir.
Bu içeriği bir resim uzantısıyla yükleyerek zafiyeti sömürün **(ImageMagick, 7.0.1-1)** (exploit'ten [exploit](https://www.exploit-db.com/exploits/39767))
Bir PNG dosyasının IDAT parçasına bir PHP shell gömmek, belirli görüntü işleme işlemlerini etkili bir şekilde atlayabilir. PHP-GD'den `imagecopyresized` ve `imagecopyresampled` işlevleri bu bağlamda özellikle önemlidir, çünkü genellikle görüntüleri yeniden boyutlandırma ve örnekleme için kullanılırlar. Gömülü PHP shell'in bu işlemlerden etkilenmeden kalabilmesi, belirli kullanım durumları için önemli bir avantajdır.
Bu teknik hakkında detaylı bir keşif, metodolojisi ve potansiyel uygulamaları dahil olmak üzere aşağıdaki makalede sunulmaktadır: ["PNG IDAT Parçalarında Web Shell Kodlarını Kodlama"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Bu kaynak, işlemin ve sonuçlarının kapsamlı bir anlayışını sunmaktadır.
Daha fazla bilgi için: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
Poliglot dosyalar, siber güvenlikte benzersiz bir araç olarak hizmet eder, aynı anda birden fazla dosya biçiminde geçerli olabilen kameleonlar olarak işlev görür. İlginç bir örnek [GIFAR](https://en.wikipedia.org/wiki/Gifar) adlı bir hibriddir, hem bir GIF hem de bir RAR arşivi olarak işlev gören. Bu tür dosyalar sadece bu eşleşmeyle sınırlı değildir; GIF ve JS veya PPT ve JS gibi kombinasyonlar da mümkündür.
Poliglot dosyaların temel faydası, dosyaları türlerine göre tarayan güvenlik önlemlerini atlatma kapasitelerindedir. Çeşitli uygulamalarda yaygın olan bir uygulama, yalnızca belirli dosya türlerine izin vermek - JPEG, GIF veya DOC gibi - potansiyel olarak zararlı biçimlerin (örneğin, JS, PHP veya Phar dosyaları) oluşturabileceği riski azaltmak içindir. Ancak, poliglot dosyalar, birden fazla dosya türünün yapısal kriterlerine uyarak bu kısıtlamaları gizlice atlayabilir.
Uyum sağlama yeteneklerine rağmen, poliglotlar bazı sınırlamalarla karşılaşabilir. Örneğin, bir poliglot aynı anda bir PHAR dosyasını (PHp ARşiv) ve bir JPEG dosyasını temsil edebilirken, yüklemenin başarısı platformun dosya uzantısı politikalarına bağlı olabilir. Sistem, izin verilen uzantılar konusunda katıysa, bir poliglotun yalnızca yapısal ikiliği yükleme garantisi sağlamayabilir.
Daha fazla bilgi için: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşma yapabilme yeteneği gereklidir_).
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**