apollosun original
Unabhängig davon, ob es sich um einen Komponenten- oder Nichtkomponenten-Upload handelt, gibt es diese Sicherheitslücke. Bitte lesen Sie den folgenden Code sorgfältig durch.
Hier sind am Beispiel des Hochladens der ASPUPLOAD-Komponente
die folgenden drei Schlüsselfunktionen:
function killext(byval s1) 'Töte illegale Dateisuffixe
dim erlaubenext
allowext=".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=ucase(s1)
wenn len(s1)=0 dann
killext=""
anders
Wenn nicht, dann chk(allowext,s1,","), dann
killext=".shit"
anders
killext=s1
Ende wenn
Ende wenn
end function
function chk(byval s1,byval s2,byval fuhao) 'Überprüfen Sie, ob die Zeichenfolge enthält
dimi,a
chk=false
a=split(s1,fuhao)
für i = 0 bis ubound(a)
wenn trim(a(i))=trim(s2), dann
chk=true
Ausgang für
Ende wenn
nächste
end function
function gname(byval n1) 'Verzeichnis- und Dateinamen automatisch basierend auf dem Datum generieren, Parameter 1 generiert das Verzeichnis, Parameter 2 generiert den Dateinamen (kein Suffix)
dim t,r
t=jetzt()
randomisieren (Timer)
r=int((rnd+1-1)*9999)
Wählen Sie Fall n1
Fall 1
gname=year(t)&right("00"&month(t),2)&right("00"&day(t),2)
Fall 2
gname=right("00"&Stunde(t),2)&right("00"&Minute(t),2)&right("00"&Sekunde(t),2)&right("0000"&r,4)
Ende auswählen
Funktionsaufrufmethode
beenden
:dim oup,ofile,ext,myfile
Set oup = Server.CreateObject("Persits.Upload")
oup.SetMaxSize 10000000, True
call oup.Save() 'Dies wird in den Serverspeicher hochgeladen und es wird keine eigentliche Datei generiert.
set ofile = oup.files(1)
ext=killext(ofile.ext)
myfile="/" & ganme(1) & "/" & gname(2) & ext
call ofile.saveas(server.mappath(myfile))
Zusätzlicher Hinweis:
Wenn ein Hacker nc verwendet, um illegale Dateien hochzuladen, sind die endgültigen Dateien, die er erhält, nur
„Scheiß“-Dateien wie
200511051234559103.shit
!