apollosun original
Na verdade, seja um upload de componente ou não, existe essa vulnerabilidade. Leia o código a seguir com atenção.
Aqui, tomando o upload do componente ASPUPLOAD como exemplo,
as três funções principais a seguir são:
function killext(byval s1) 'Eliminar sufixos de arquivos ilegais
dim permitirext
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)
se len(s1)=0 então
killext=""
outro
se não chk(allowext,s1,",") então
killext=".merda"
outro
killext = s1
terminar se
terminar se
end function
function chk(byval s1,byval s2,byval fuhao) 'Verifica se a string contém
dimi,a
verificar=falso
a=dividir(s1,fuhao)
para i = 0 para ubound (a)
se aparar(a(i))=aparar(s2) então
verificar = verdadeiro
saída para
terminar se
próximo
end function
function gname(byval n1) 'Gera automaticamente nomes de diretórios e arquivos com base na data, o parâmetro 1 gera o diretório, o parâmetro 2 gera o nome do arquivo (sem sufixo)
escurecer t,r
t=agora()
randomizar (temporizador)
r=int((rnd+1-1)*9999)
selecione o caso n1
caso 1
gname=ano(t)&right("00"&mês(t),2)&right("00"&dia(t),2)
caso 2
gname=direita("00"&hora(t),2)&direita("00"&minuto(t),2)&direita("00"&segundo(t),2)&direita("0000"&r,4)
final selecionar
método de chamada
de função final
:dim oup,ofile,ext,myfile
Set oup = Server.CreateObject("Persits.Upload")
ouup.SetMaxSize 10000000, Verdadeiro
call oup.Save() 'Isso é carregado na memória do servidor e nenhum arquivo real é gerado.
conjunto de arquivo = ouup.files(1)
ext=killext(ofile.ext)
meuarquivo="/" & ganme(1) & "/" & gname(2) &
chamada ext ofile.saveas(server.mappath(meuarquivo))
Nota adicional:
se um hacker usa nc para fazer upload de arquivos ilegais, os arquivos finais que ele obtém são apenas
arquivos de "merda", como
200511051234559103.shit
!