close

Seguridad ofensiva Blog V2.0

Recientemente he tenido la necesidad de comunicarse con remotas Active Directory almacena y puesto que la mayoría de las organizaciones no quieren abrir sus repositorios de Active Directory directamente a través del servidor de seguridad (por lo general a través del puerto 389), Servicios web de Active Directory es ideal para dar cabida a este escenario. Por desgracia, tan pronto descubrí, la documentación que rodea Servicios web de Active Directory (ADWS) es extremadamente escasa. Estos fueron los únicos 2 artículos que he descubierto en él a través de una rápida búsqueda en Google:) Después de cavar a través del blog de Powershell, también me encontré con este artículo: Sin embargo, ninguno de los artículos comprendidos cualquier comentario u orientación sobre cómo utilizar ADWS a través de C # /.¡¡Red!! Bueno, después de horas y horas de estudio e investigación, finalmente me encontré con este artículo: Afortunadamente, se ofreció una pieza crucial de información: se indica que ADWS tenía un punto final Mex !! (Net.tcp: // localhost: 9389 / ActiveDirectoryWebServices / mex) Bueno, una vez que tenía ese pedazo de información, por fin pude crear unaServicio de referencia a él en Visual Studio: Una vez que he hecho clic en Aceptar, Visual Studio fue capaz de generar la clase proxy resultante y que podría entonces comenzar a utilizarlo en mi archivo de clase C #. Ahora en cuanto a la manera de utilizar correctamente la API, no parece que exista ningún agradables documentación y muestras de código de estilo .Net Framework, pero se encontró algunos ejemplos de protocolos que proporcionan entrada y salida WSDL: Por desgracia, es muy difícil de descifrar simplemente examinando los mensajes de entrada de jabón, pero usted puede conseguir un poco de una idea de los parámetros requeridos. Por ejemplo, para el método ChangePassword, la firma del método es el siguiente: ChangePassword (cadena de servidor, secuencia AccountDN, cadena nuevaContraseña, cadena contraseñaAntigua, cadena PartitionDN) Ahora bien, si nos fijamos en los ejemplos De Cuenta, en la solicitud SOAP, verá el los siguientes parámetros: servidor LDAP: 389 AccountDN-CN = huéspedes, CN = Users, DC = fabrikam, DC = com-nuevaContraseña Contraseña2 contraseñaAntigua-Contraseña1 PartitionDN-DC = fabrikam, DC = com Así, mientrasla documentación de la API es, sin duda mucho menos que perfecto, es viable (con mucho esfuerzo !! :-() Después de encontrar este artículo (), que también era capaz de conseguir el código de funcionar correctamente para mí: NetTcpBinding tcpBind = new NetTcpBinding ();             ADWSSvc.AccountManagementClient acctMgmt = new ADWSSvc.AccountManagementClient (tcpBind, nuevo EndpointAddress ( "net.tcp: // localhost: 9389 / ActiveDirectoryWebServices / Windows / De Cuenta"));             acctMgmt.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;             var = adPrincipal acctMgmt.GetADGroupMember ( "LDAP: 389", "CN = Administradores de dominio, CN = Users, DC = corp, DC = claimsauth, DC = com", "DC = corp, DC = claimsauth, DC = com", cierto);             foreach (var elemento en adPrincipal)             {                 Console.WriteLine (item.Name);                 Console.WriteLine (item.DistinguishedName);                 Console.WriteLine (item.SamAccountName);                              }Esperamos que ayuda a todos ustedes de aventurarse en el mundo de ADWS !!

Previous Post     Next Post


TAGS


CATEGORIES

.