Archivo de configuración de IIS puerta trasera

  
                              

El contenido del texto es cómo construir puertas traseras utilizando algunas de las características de IIS. Por supuesto, esto es principalmente un documento "Conozca a su enemigo" para los administradores de red y el personal de seguridad de la red. El autor espera que este artículo le ayude a revisar y despejar la puerta trasera, y no recomienda ni acepta el uso de este artículo. Habilidades para actividades ilegales.

Primero, presentemos brevemente el archivo de configuración de IIS MetaBase.bin. Este archivo se encuentra en% SystemRoot% \\ system32 \\ inetsrv \\ MetaBase.bin y contiene información de configuración para casi todo IIS. Es un archivo de sistema muy importante. En pocas palabras, todo lo que configuramos en el "administrador de servicios de Internet" finalmente se guardará en MetaBase.bin. Además del funcionamiento de MetaBase.bin a través del "administrador de servicios de intenet" en la administración diaria del sistema, Windows también proporciona un script adsutil.vbs para operar en MetaBase.bin.

La estructura de MetaBase es similar al registro, también es una estructura de árbol, con el concepto de claves, valores y elementos similares. De hecho, en IIS3 y PWS, el contenido de MetaBase se almacena en el registro. MetaBase tiene dos claves principales: LM y esquema. Entre ellos, el esquema guarda algunas configuraciones predeterminadas del sistema, por lo general no necesita ser modificado, una vez que está mal, es muy peligroso, por lo que ni el "administrador de servicios de Internet" ni adsutil.vbs proporcionan el mecanismo para modificar el esquema. LM contiene información de configuración para el servicio HTTP de IIS, el servicio FTP y el servicio SMTP. Entre ellos, LM /W3SVC /es la información de configuración del servicio HTTP que queremos usar.

Algunos de los valores mencionados a continuación:

LM /W3SVC /InProcessIsapiApps, ISAPI se inicia en el proceso. Esta es una matriz que contiene un conjunto de rutas a algunas ISAPI. La ISAPI en esta matriz se inicia directamente con inetinfo.exe y hereda el permiso del sistema local de inetinfo.exe. La ISAPI no se inicia mediante el proceso dllhost.exe derivado de svchost.exe. La identidad es IWAM_NAME. Por supuesto, este es el nivel de seguridad predeterminado de IIS. Si se establece en bajo, todas las ISAPI se derivarán directamente de inetinfo.exe. Además, si no especifica una ruta cuando la configura, pero solo especifica una extensión, la ISAPI del mismo nombre en cualquier ruta se ejecutará con privilegios del sistema cuando se llame.

ScriptMaps, mapeo de script. Una vez que se establece el valor en un directorio, el archivo con la extensión específica solicitada desde el directorio se entrega a la ISAPI especificada para su ejecución. Se debe enfatizar que el directorio para configurar ScriptMaps no tiene que existir. Siempre que se cree una subclave bajo la clave raíz de una instancia HTTP en MetaBase, la solicitud HTTP para el mismo nombre de la clave de la palabra se considerará legal. Y será manejado por el ISAPI mapeado. Esto también es un problema con IIS.

CreateProcessAsUser, especificado en un directorio para cambiar el valor a 0, la aplicación bajo el directorio heredará los permisos del sistema local de inetinfo.exe.

AccessWrite determina si un directorio puede escribirse, es decir, el método PUT de WEBDAV.

AccessExecute determina si un directorio puede ejecutar una aplicación.

Backdoor Ideas:

Cree un mapa de script con una extensión específica, apunte a nuestra ISAPI y agregue la ISAPI a la lista InProcessIsapiApps. Luego, cuando solicitamos el archivo de tipo de extensión al servidor, la ISAPI se ejecutará en el servidor con el permiso del sistema local, y el archivo solicitado no necesita ser real.


Sugerencias:

1. Ya que realmente no necesita crear un directorio para configurar ScriptMaps, solo puede escribir una clave y agregar ScriptMaps a la clave. De esta manera, el directorio no es visible desde el "administrador de servicios de intenet", y los mapas de secuencia de comandos no son visibles.

2, aunque el "administrador de servicios de intenet" no se puede ver en el interior, pero los administradores experimentados se pueden usar para utilizar ocasionalmente adsutil.vbs enum /p para ver:

# adsutil. Vbs enum /p /w3svc /1 /root
Microsoft (R) Windows Script Host Versión 5.6
Copyright (C) Microsoft Corporation 1996-2001. Todos los derechos reservados.

[/w3svc /1 /root /_vti_bin]
[/w3svc /1 /root /evildir]

Esto está expuesto.

Debido a que la clave que configuramos no es un directorio virtual real, solo una cadena en el archivo de configuración, puede usar un carácter como 0x08 para hacer el valor de la clave. 0x08 es el valor hexadecimal correspondiente a la tecla Retroceso. El efecto que se muestra en la consola es eliminar un carácter a la izquierda. De hecho, se elimina "/":

# adsutil.vbs enum /p /w3svc /1 /root
Microsoft (R) Windows Script Host Versión 5.6
Copyright (C) Microsoft Corporation 1996-2001. Todos los derechos reservados.

[/w3svc /1 /root /_vti_bin]
[/w3svc /1 /root]

Frente a esta salida, la persona promedio no prestará atención.

Por supuesto, puede configurarse con un nombre como _vti_script, _vti_bin, siempre que no haya KeyType, es invisible en el "administrador de servicios de Internet".

Debido a que existe un \\ WINNT \\ System32 \\ msw3prt.dll en el propio sistema, InProcessIsapiApps es un mapeo .printer, generalmente no se usa. Podemos eliminar el valor de D: \\ WINNT \\ System32 \\ msw3prt.dll y reemplazarlo con \\ WINNT \\ System32 \\ inetsrv \\ msw3prt.dll.

3, la mosca en el ungüento es que las solicitudes HTTP dejarán huellas, pero HTTP también es bueno, es decir, puede usar un servidor proxy para hacer el trampolín. Además, también puede usar el método de inserción 0x0D 0x0A para falsificar el registro.
(Para más detalles, consulte "Apache, IIS y otros servidores http permiten registros falsos enviando retornos de carro") Esta es la técnica para construir directorios.

Implementación concreta:

Por supuesto, puede usar adsutil.vbs para agregar manualmente. Sin embargo, debe tenerse en cuenta que adsutil.vbs solo se puede configurar, no se puede cambiar, por lo que cuando usa adsutil.vbs, también debe agregar el original, de lo contrario, el original se perderá. Las diferentes entradas están separadas por espacios.

Primero use el siguiente comando para obtener la lista actual de InProcessIsapiApps:
adsutil.vbs get /W3SVC /InProcessIsapiApps

Después de agregar, agregue su propia ruta ISAPI.
adsutil.vbs set /W3SVC /InProcessIsapiApps " C: \\ WINNT \\ System32 \\ idq.dll " " C: \\ WINNT \\ System32 \\ inetsrv \\ httpext.dll " ..................

ScriptMaps está configurado con InProcessIsapiApps.

Por supuesto, esto es más problemático y es imposible escribir un valor de clave como 0x08, así que simplemente escribo un VBS a la vez. En cuanto a la ISAPI que hace la puerta trasera, las funciones que pueden lograrse dependen completamente de la imaginación. Aquí hay un ejemplo de copia de pantalla simple:

# nc 10.11.0.26 80
POST /%08/anything.tom

Microsoft Windows 2000 [Versión 5.00.2195]
(C) Copyright 1985-1998 Microsoft Corp.

C: \\ WINNT \\ system32 > whoami
NT AUTHORITY \\ SYSTEM

C: \\ WINNT \\ system32 > exit
HTTP /1.1 200 OK
Servidor: Microsoft-IIS /5.0
Fecha: Miercoles, 08 de enero de 2003 06:49:37 GMT

La forma más sutil es escribir un ISAPI especial y registrarse como Analizar asp. Normalmente, el programa reenvía la solicitud recibida al asp.dll original del sistema y devuelve el resultado. Cuando recibe una solicitud POST especial, inicia su propio código de puerta trasera, por lo que no se muestra en el registro. También es difícil de encontrar al revisar.

Además del método anterior de usar el mapeo de scripts, también puede otorgar permisos de acceso virtual a AccessWrite y al directorio virtual. Cuando necesite ejecutar la puerta trasera, use WEBDAV para cargar ISAPI, luego ejecútelo y luego elimínelo después de usarlo.
(¿Es posible eliminar? ¿Todavía necesito reiniciar W3SVC? No lo he probado.) Si la carga no es una DLL sino un archivo EXE, entonces el CreateSystemAsUser en este directorio puede configurarse en 0 para obtener el permiso del sistema local. Este método se ha escrito. Sin embargo, los cambios en AccessWrite y AccessExecute se pueden ver en el "administrador de servicios de Internet", y el ocultamiento es deficiente.

Copyright © Conocimiento de Windows All Rights Reserved