posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

Enumerare i siti nel metabase di IIS

Grazie a System.DirectoryServices è possibile curiosare anche nel metabase di IIS. Il provider da usare è “IIS“.

Per esempio, volendo enumerare i siti web di un certo Server (localhost nell'esempio) si procede in questo modo.

   // Ottengo l'oggetto IIS Web Service
   DirectoryEntry deWebSites = new DirectoryEntry("IIS://localhost/w3svc");

   // enumero gli oggetti child
   foreach(DirectoryEntry deSite in deWebSites.Children)
   {
    // sotto Web Service ci sono i web ma anche gli Application Pools, etc.
    if(deSite.SchemaClassName != "IIsWebServer")
     continue;

    // prendo la collection ServerBindings che corrisponde al contenuto della
    // dialog “Web site identification“ - Advanced

    object[] oServerBindings = (object[])deSite.Invoke("Get", "ServerBindings");

    // enumero gli oggetti

    foreach(object oBinding in oServerBindings)
    {
     // ciascuno di questi oggetti è una stringa con tutti i valori separati da ':'
     // usando String.Split si separano le varie stringhe
     string strBinding = oBinding as string;
     Console.WriteLine(strBinding);
    }
   }

Per chi fosse affezionato alle vecchie ADSI, è sempre possibile usare l'oggetto COM ActiveDs.
L'accortezza è quella di usare Marshal.BindToMoniker per accedere all'oggetto Adsi di cui evidentemente non avrebbe senso farne una “new“.

ActiveDs.IADs deWebSites = (ActiveDs.IADs)Marshal.BindToMoniker("IIS://localhost/w3svc");

Il resto poi è del tutto analogo.

 

Info Aggiuntive:

Le info riportate da questo codice sono quelle presenti nella dialog di IIS. Nel default web site IIS non compila i vari campi della dialog e quindi queste informazioni non sono disponibili. Sta a noi 'dedurle' ma nel metabase di IIS non sono scritte.
Nelle web farm io suggerisco sempre:
1. lasciare inutilizzato il sito di default in modo che chi tenta di attaccare un sito web partendo dall'indirizzo IP finisca su questo finto sito.
2. di compilarle queste informazioni ad ogni creazione di sito in modo da amministrare più facilmente i siti.

Print | posted on martedì 12 luglio 2005 12:33 | Filed Under [ .NET [Italiano] ]

Feedback

Gravatar

# re: Enumerare i siti nel metabase di IIS

Ciao,
provengo da ugidotnet. Ho provato il tuo script ed eseguendolo ho notato che nell'oggetto oBinding ho solo :80: come se mi mancasse qualcosa.

Ora quello che mi viene da pensare è che essendo su winXp Pro magari IIS non è configurato al meglio ecc.

però sinceramente non ho riscontri quindi tu sei la mia ultima speranza per cercare di capire qualcosa su questo argomento.

Grazie
Daniele.
12/07/2005 12:53 | Daniele
Gravatar

# re: Enumerare i siti nel metabase di IIS

Ciao Daniele, ho aggiunto qualche info nel post. Dimmi se è tutto chiaro...
12/07/2005 13:01 | Raffaele Rialdi
Gravatar

# re: Enumerare i siti nel metabase di IIS

Ciao raffaele,
allora visto che sono una mezza sega con IIS, mi sono fatto aiutare da un amico che ci capisce di più e ho scoperto che alcune impostazioni tipo la configurazione della porta, dell'ip e dell'hostname, su ogni sito.

Visto che io sviluppo su winXp queste cose non le posso fare tranne per la defaul root, quindi è questo il motivo per cui non riesco a ricavare nulla.

Ti ringrazio per l'aiuto ora cercherò di testare il mio script su un win2003....a trovarlo.


PS. Puoi fare altri articoletti come questi. Sono bellissimi e chiarissimi.
12/07/2005 13:09 | Daniele
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET