Na verdade, seja um upload de componente ou não, existe essa vulnerabilidade. Leia o código a seguir com atenção, desde que você entenda o código, você poderá entendê-lo.
Aqui tomamos o upload do componente ASPUPLOAD como exemplo.
As seguintes 3 funções principais:
function killext(byval s1) 'Elimina 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
função final
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
função final
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)&direita(00&mês(t),2)&direita(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
função final
Método de chamada:
dim oup,ofile,ext,meuarquivo
Configuração = 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) & ext
chame ofile.saveas(server.mappath(meuarquivo))
Notas adicionais:
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!