私がよく聞くASPアップロードの脆弱性は、サフィックス名を変更し(画像ファイルの接尾辞に変更する)、それらをアップロードすることにより、いくつかのTrojanファイルをアップロードすることです。
この状況では、次の機能を使用して、次のことを区別します。
コードコピーは次のとおりです。
<%
'******************************************************************************
'CheckFileType関数は、ファイルが画像ファイルであるかどうかを確認するために使用されます
'パラメーターファイル名はローカルファイルへのパスです
'それがファイルjpeg、gif、bmp、png画像の場合、関数はtrueを返します。
'******************************************************************************
ConstadTypebinary = 1
dimjpg(1):jpg(0)= cbyte(&hff):jpg(1)= cbyte(&hd8)
dimbmp(1):bmp(0)= cbyte(&h42):bmp(1)= cbyte(&h4d)
dimpng(3):png(0)= cbyte(&h89):png(1)= cbyte(&h50):png(2)= cbyte(&h4e):png(3)= cbyte(&h47)
dimgif(5):gif(0)= cbyte(&h47):gif(1)= cbyte(&h49):gif(2)= cbyte(&h46):gif(3)= cbyte(&h39):gif(4)= cbyte(&h38):gif(5)= cbyte(&h61)
functioncheckfiletype(filename)
onerrorresumenext
checkfiletype = false
dimfstream、fileext、stamp、i
fileext = mid(filename、instrrev(filename、 "。")+1)
setfstream = server.createObject( "adodb.stream")
fstream.open
fstream.type = adtypebinary
fstream.loadfromfilefileName
fstream.position = 0
SelectCaseFileExt
ケース「JPG」、「JPEG」
スタンプ= fstream.read(2)
fori = 0to1
IFACB(MIDB(Stamp、I+1,1))= JPG(i)toncheckfiletype = trueElseCheckfileType = false
次
ケース「GIF」
スタンプ= fstream.read(6)
fori = 0to5
IFACB(MIDB(Stamp、I+1,1))= GIF(i)thenCheckfileType = trueElseCheckfileType = false
次
ケース「PNG」
スタンプ= fstream.read(4)
fori = 0to3
IFACB(MIDB(スタンプ、I+1,1))= PNG(i)thenCheckfileType = trueElseCheckfileType = false
次
ケース「BMP」
スタンプ= fstream.read(2)
fori = 0to1
IFACB(MIDB(Stamp、I+1,1))= BMP(i)toncheckfiletype = trueElseCheckfileType = false
次
EndSelect
fstream.close
setfsetem = Nothing
iferr.number <> 0thencheckfiletype = false
エンド機能
%>
その後、申請するとき
コードコピーは次のとおりです。CheckFileType(server.mappath( "cnbruce.jpg"))
または
CheckFileType( "f:/web/164/images/cnbruce.jpg")))
したがって、この状況は画像アップロードで使用されます。現在の方法は、最初に「擬似イメージ」ファイルのアップロードを許可し、上記のカスタム関数を使用して、ファイルが画像仕様に準拠しているかどうかを判断することです。トロイの木馬の変装した画像ファイルの場合、FSOはそれを削除します。たとえば
次のようにコードをコピーします:file.saveasserver.mappath(filename) 'ファイルを保存します
ifnotcheckfiletype(server.mappath(filename))then