apollosun original
De hecho, ya sea que se cargue un componente o no, existe esta vulnerabilidad. Lea atentamente el siguiente código, siempre que comprenda el código.
Aquí, tomando como ejemplo la carga del componente ASPUPLOAD,
las siguientes tres funciones clave son:
función killext(byval s1) 'Eliminar sufijos de archivos ilegales
texto permitido tenue
permitirext=".JPG,.JPEG,.GIF,.BMP,.PNG,.SWF,.RM,.MP3,.WAV,.MID,.MIDI,.RA,.
AVI,.MPG,.MPEG,.ASF,.ASX,.WMA,.MOV,.RAR,.ZIP,.EXE,.DOC,.XLS,.CHM,.HLP,.PDF"
s1=caso(s1)
si len(s1)=0 entonces
matartext=""
demás
si no chk(allowext,s1,",") entonces
Killext=".mierda"
demás
matartexto=s1
terminar si
terminar si
final function
chk(byval s1,byval s2,byval fuhao) 'Comprueba que la cadena contiene
dimi,a
chk=falso
a=dividir(s1,fuhao)
para i = 0 a ulimitado(a)
si recortar(a(i))=recortar(s2) entonces
chk=verdadero
salida para
terminar si
próximo
función final
función gname(byval n1) 'Genera automáticamente nombres de directorios y archivos según la fecha, el parámetro 1 genera el directorio, el parámetro 2 genera el nombre del archivo (sin sufijo)
tenue t, r
t=ahora()
aleatorizar (temporizador)
r=int((rnd+1-1)*9999)
seleccione el caso n1
caso 1
gname=año(t)&right("00"&mes(t),2)&right("00"&día(t),2)
caso 2
gname=right("00"&hora(t),2)&right("00"&minuto(t),2)&right("00"&segundo(t),2)&right("0000"&r,4)
finalizar seleccionar
método de llamada
de función final
:dim oup,ofile,ext,myfile
Set oup = Server.CreateObject("Persits.Upload")
oup.SetMaxSize 10000000, verdadero
call oup.Save() 'Esto se carga en la memoria del servidor y no se genera ningún archivo real.
conjunto de archivos = oup.files(1)
ext=killext(ofile.ext)
miarchivo="/" & ganme(1) & "/" & gname(2) & ext
llamada ofile.saveas(server.mappath(miarchivo))
Nota adicional:
si un hacker usa nc para cargar archivos ilegales, los archivos finales que obtiene son simplemente
archivos de "mierda" como
200511051234559103.shit
.