Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

IIS, security, HTTP upload

Îåêßíçóå áðü ôï ìÝëïò cap. Τελευταία δημοσίευση από το μέλος cap στις 19-05-2005, 13:11. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-05-2005, 11:04 2072

    IIS, security, HTTP upload

    Κάνω post εδώ ελλείψει καταλληλότερου topic.

    Μια πρόσφατη δυσάρεστη εμπειρία που είχα με ένα (μικρό, ευτυχώς) defacement attack με έβαλε σε σκέψεις. Δύο πράγματα λοιπόν θα ηθελα να ρωτήσω:

    (Backgound)
    Εχουμε εναν IIS ο οποίος μπορεί να φιλοξενεί από απλά html pages, asp 3.0 ή / και asp.net pages. Πολλά sites, ή αν θέλετε, πολλά virtual folders (δεν έχει σημασία, θα αναφέρομαι σε αυτά σαν "sites" από εδώ και στο εξής). Υπάρχει μια ιεραρχία φακέλων σε κάθε ένα από αυτά, όπως είναι φυσικό.
    Σε ορισμένα sites έχουν δοθεί μέσω κάποιου component στο server δυνατότητες http upload σε συγκεκριμένα folders (π.χ. για να ανεβαίνουν εικόνες ή pdf documents). Σε κάθε site υπάρχει allow anonymous στον iis (μιλάμε για public πράγματα), είτε με τον IUSR είτε με κάποιον άλλον mapped χρήστη. Συνεπώς στα συγκεκριμένα folder ο χρήστης που χαρακτηρίζεται "anonymous" έχει write permissions. Τα folders είναι προσπελάσιμα μέσω web.

    Η πρώτη ερώτηση:
    Ειναι δυνατόν κάποιος "κακός" να μπορέσει να ανεβάσει δικά του πράγματα στα συγκεκριμένα folders ΧΩΡΙΣ να χρησιμοποιήσει το component που βρίσκεται στο server, και αν ναι, πώς θα μπορούσε να το επιτύχει;

    Η δεύτερη ερώτηση:
    Για να είμαι πιό ασφαλής, έκανα το εξής: Πήγα στα folders τα οποία έχουν write permissions και από τον iis έβαλα execute permissions -> None ωστε να μην μπορουν να τρέξουν custom scripts εκεί που κάποιος κατάφερε να ανεβάσει. Μήηηηπως υπάρχει κανένα utilitaki που να κάνει αυτή τη δουλειά για μένα; Να μου βρίσκει δηλαδή per site ποιά folders έχουν write access στον "anonymous user" οποιος και αν είναι αυτός και να μου επιτρέπει επιλεκτικά να θέσω σε αυτά τα execute permissions του IIS?






    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  19-05-2005, 12:19 2076 σε απάντηση της 2072

    Re: IIS, security, HTTP upload

    Όλα τα αρχεία που θα ανεβούν στον server ανεβαίνουν με ένα τρόπο. Από την πόρτα 80. Το component είναι αυτό που πέρνει το stream που έρχεται, και από ακολουθία byte το κάνει αρχείο και το αποθηκεύει στο δίσκο. Αφού η σελίδα τρέχει κάτω από τον ανώνυμο χρήστη, ο ανώνυμος χρήστης είναι αυτός που θα γράψει το αρχείο στο δίσκο.

    Από την στιγμή που και να ανεβάσει ο χρήστης εκτελέσιμο αρχείο στο folder δεν έχει permisions να το εκτελέσει ο IIS δεv κινδυνεύεις να σου τρέξουν κώδικα. Από την αλλη μεριά καλό θα ήταν κάνεις και deny execute στο file system, να σταματήσεις οτι μπορεί να ανεβεί κάτι σε στυλ tftp και αρχίσουν να μπαίνουν από άλλη πόρτα στο μηχάνημα. Βέβαια εννοείται ότι έχεις τρέξει το IISLockdown και έχεις εγκαταστήσεις το URLScan αν μιλάμε για IIS 5.x...

    Λογικότερο θα ήταν, το component να έμπαινε μέσα στα Component Services και να έκανες εκεί το elevate στα privileges για να μπορεί να γράφεται το αρχείο στο δίσκο, και να μην έχει και write δικαιώματα ο IUSR_* χρήστης.

    Θετικό θα ήταν, τα directories που γίνονται upload τα αρχεία να μην είναι κάτω από την δομή των directories του IIS για να μην μπορεί να υπολογίσει κάποιος σχετικά path και κάνει ζαβολιές, αλλά virtual directories. Θα διευκόλυνε και το backup του περιεχομένου σου.

    Τέλος ένας ωραίος, καθαρός τρόπος είναι να φτιάξεις μόνος σου το "upload component" χρησιμοποιόντας ένα ADO Stream. Έχεις τον απόλυτο έλεγχο και δεν θα σε φοβίζει τίποτα! Smile

    Scriptaκι που να κάνεις τέτοιο πράγμα δεν έχω υπόψη μου έτοιμο, αλλά δεν ξέρω κατά πόσο είναι δυνατό να φτιαχτεί κιόλας ένα τετοιο...

    George  J.



    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  19-05-2005, 12:33 2079 σε απάντηση της 2076

    Re: IIS, security, HTTP upload

    Γιώργο χρήσιμα αυτά που λες, δεν απαντάς όμως στην πρώτη τουλάχιστον ερώτηση που έθεσα:

    Η πρώτη ερώτηση:
    Ειναι δυνατόν κάποιος "κακός" να μπορέσει να ανεβάσει δικά του πράγματα στα συγκεκριμένα folders ΧΩΡΙΣ να χρησιμοποιήσει το component που βρίσκεται στο server, και αν ναι, πώς θα μπορούσε να το επιτύχει;

    Μου λές οτι θα μπορούσε να ανεβάσει κάποιος κάτι σε ftp. Ας πούμε οτι δεν έχει ftp. Αλλος τρόπος υπάρχει; Για τα permissions του file system έχεις δίκιο.


    Λες επίσης:
     gcapnias wrote:

    Θετικό θα ήταν, τα directories που γίνονται upload τα αρχεία να μην είναι κάτω από την δομή των directories του IIS για να μην μπορεί να υπολογίσει κάποιος σχετικά path και κάνει ζαβολιές, αλλά virtual directories. Θα διευκόλυνε και το backup του περιεχομένου σου.



    Αυτό δεν το πολυκατάλαβα. Εννοείς να μην είναι κάτω από τη δομή των directories του file system αλλά να γίνονται map virtual folders τα οποία να *φαινονται* οτι ανήκουν στη δομή των folders του iis αλλά στην πραγματικότητα να είναι αλλού;

    Οκ, μιλάμε για πράγματα τα οποία όμως θα πρέπει να "τραβιούνται" μέσα από το site. Π.χ. εικόνες που εμφανίζονται σε σελίδες. Τι θα κερδίσω αν έχω virtual directory? Δεν κατάλαβα πώς θα μπορούσε να υπολογίσει κάποιος σχετικά paths (στο file system εννοείς)? Και πως θα διευκόλυνε το backup?


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  19-05-2005, 13:03 2080 σε απάντηση της 2079

    Re: IIS, security, HTTP upload

    Για να δοκιμάσω ξανά:

     cap wrote:

    Η πρώτη ερώτηση:
    Ειναι δυνατόν κάποιος "κακός" να μπορέσει να ανεβάσει δικά του πράγματα στα συγκεκριμένα folders ΧΩΡΙΣ να χρησιμοποιήσει το component που βρίσκεται στο server, και αν ναι, πώς θα μπορούσε να το επιτύχει;


    N A I!
    Αρκεί να τρέξει κάτι στο server που έχει ανεβάσει με το component σου!


     cap wrote:

    Μου λές οτι θα μπορούσε να ανεβάσει κάποιος κάτι σε ftp. Ας πούμε οτι δεν έχει ftp. Αλλος τρόπος υπάρχει; Για τα permissions του file system έχεις δίκιο.


    Δεν είπα ftp - είπα t-f-t-p. Είναι διαφορετικό, είναι από μέσα προς τα έξω και δεν χρησιμοποιεί την πόρτα 25. Αν σου ανεβάσουν ένα client βαζουν ότι θέλουν στο server σου.

     cap wrote:

     gcapnias wrote:

    Θετικό θα ήταν, τα directories που γίνονται upload τα αρχεία να μην είναι κάτω από την δομή των directories του IIS για να μην μπορεί να υπολογίσει κάποιος σχετικά path και κάνει ζαβολιές, αλλά virtual directories. Θα διευκόλυνε και το backup του περιεχομένου σου.



    Αυτό δεν το πολυκατάλαβα. Εννοείς να μην είναι κάτω από τη δομή των directories του file system αλλά να γίνονται map virtual folders τα οποία να *φαινονται* οτι ανήκουν στη δομή των folders του iis αλλά στην πραγματικότητα να είναι αλλού;



    Τα "φυσικά directories" που γίνονται upload τα αρχεία να μην είναι κάτω από την ιεραρχία των folders του IIS, c:\inetpub\wwwroot αν εκεί είναι το root του IIS σου. Να είναι πχ στο d:\content και να είναι virtual directories για τον IIS.


     cap wrote:

    Οκ, μιλάμε για πράγματα τα οποία όμως θα πρέπει να "τραβιούνται" μέσα από το site. Π.χ. εικόνες που εμφανίζονται σε σελίδες. Τι θα κερδίσω αν έχω virtual directory? Δεν κατάλαβα πώς θα μπορούσε να υπολογίσει κάποιος σχετικά paths (στο file system εννοείς)? Και πως θα διευκόλυνε το backup?


    Από τα virtual directories κερδίζουμε ότι μπορούμε να έχουμε μια ιεραρχία που είναι λειτουργική για μας, και όχι για το site, συγκεντρωμένα όλα τα αρχεία μαζί, προσφέροντας ταυτόχρονα εύκολη πρόσβαση στο backup.

    Ναι, τα σχετικά path στο file system εννοώ για να μπορέσει να αποθηκεύσει (π.χ. στο %temp% σου) κάποια αρχεία, ή να τρέχει κάποια πράγματα που ήδη υπάρχουν στο %windιr% σου.

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  19-05-2005, 13:11 2082 σε απάντηση της 2080

    Re: IIS, security, HTTP upload

     gcapnias wrote:

    Για να δοκιμάσω ξανά:

     cap wrote:

    Η πρώτη ερώτηση:
    Ειναι δυνατόν κάποιος "κακός" να μπορέσει να ανεβάσει δικά του πράγματα στα συγκεκριμένα folders ΧΩΡΙΣ να χρησιμοποιήσει το component που βρίσκεται στο server, και αν ναι, πώς θα μπορούσε να το επιτύχει;


    N A I!
    Αρκεί να τρέξει κάτι στο server που έχει ανεβάσει με το component σου!



    Χαχα...μαλλον απέτυχε και η δεύτερη προσπάθεια Smile Εκλαμβάνω την απάντηση στην ερώτηση που έκανα ως "οχι, δεν μπορεί".

     gcapnias wrote:


    Τα "φυσικά directories" που γίνονται upload τα αρχεία να μην είναι κάτω από την ιεραρχία των folders του IIS, c:\inetpub\wwwroot αν εκεί είναι το root του IIS σου. Να είναι πχ στο d:\content και να είναι virtual directories για τον IIS.

    Από τα virtual directories κερδίζουμε ότι μπορούμε να έχουμε μια ιεραρχία που είναι λειτουργική για μας, και όχι για το site, συγκεντρωμένα όλα τα αρχεία μαζί, προσφέροντας ταυτόχρονα εύκολη πρόσβαση στο backup.



    Α, μιλάς για τους άτυχους που επιμένουν στο c:\inetpub\wwwroot....μπα, το έχω σκοτώσει από καιρό. Σε άλλο ΔΙΣΚΟ (οχι απλά άλλο folder) τα sites. Αρα by default είμαι virtual...

    Τώρα πως θα έχω ευκολία στο backup αν "σκορπίσω" τα folders σε περισσότερες φυσικες θέσεις συνεχίζω να μην το καταλαβαίνω. Αλλα μάλλον δεν κάνει apply στην περίπτωσή μου, δεδομένων των σχολίων της αμέσως προηγούμενης παραγράφου.

    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems