- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个学校的网站安全性测试.doc
-
我自从在学校维护学生会网站以后,就有了不小的权限,我只要上传一个“海阳顶端网ASP木马”就可以任意修改任何web页面了,因为学校里所有的站点都放在/里面,不过我可不敢这样做,也不会这样做。最近学习ASP挺上瘾,就看看学校自己写的ASP程序有什么隐患吧。 问题一 除了前台只有少量的ASP文件,就是用户注册(是学校的人才能注册)、登陆、忘记密码、个人信息修改这几个ASP文件,先看看忘记密码,lostpass.asp是一个提交页面,没有任何ASP语句,看看form里目标文件是lostpass1.asp,再查看原代码,没有发现问题(是我的水平有限),再看下一个lostpass2.asp,呵呵,发现了一句有毛病的语句: sql=select pwd,answer from [member] where userID=userID and answer=answer 这么低级的错误也会犯,此时,您只要根据sql构造一个特殊的用户名和密码,如: or 1=1 这样,程序将会变成这样: 程序代码: [ 复制代码到剪贴板 ] sql=select pwd,answer from [member] where userID=or1=1and pass=answer or是一个逻辑运算符,判断两个条件的时候,只要其中一个条件成立,那么等式将会成立,而在语言中,是以1来代表真的(成立),那么在这行语句中,原语句的and验证将不再继续,而因为1=1和or令语句返回为真值。这样的话我们从一开始就可以提交 or 1=1这个来饶过验证了,不管我们在什么文本框我们都提交 or 1=1这个都能顺利到达下一个页面,既然这样,我们用 or 1=1来作为用户名和密码登陆,会怎么样呢?实验证明登陆成功,因为显示个人资料修改的链接了,果然正常显示了个人资料,我发现真实姓名不可改,说明一定有什么ID之类的来识别用户,于是直接查看网页源代码发现这么一行重要的东西: input type=hidden name=hiddenField value=2001010001原来是靠这个hiddenField来辨别用户,那么如果我修改了value的值,那不是可以修改其他用户了吗?马上拿我以前注册的来试,把我的号码2001010XXX替换上去,然后修改form里的相对连接,另存为htm文件,然后提交我需要修改的资料。再看看我的资料,果然被修改了,这么说如果我我知道任何一个用户的hiddenField的值,就可以修改其资料,还不乱套?这个就搁在一边……这个问题可以写个函数禁止从外部提交数据得以解决。 不过这个漏洞有点局限性,如果想改某个用户的资料一定要知道hiddenField的值,否则只能乱改。不过既然这个文件这样了,我想后台入口验证程序应该也是这样,我试着登陆,成功了,所有会员的资料尽收眼底,而且任意添加和修改管理员,做什么都可以啊。 这个问题的防范方法其实很简单,处理输入字符就可以了,原来我还以为用replace()函数呢,请教了一下劲风,得知用mid()函数可以很好的解决,加一个判断就可以了: 程序代码: [ 复制代码到剪贴板 ] us=mid(input,i,1) if us= or us= or us=% or us= or us= or us= then response.redirect error_page.asp response.end 几行代码就可以检查用户所输入的字符了,当然,应该尽量多检查一些特殊字符。这行代码意思是检查输入的字符中,如果有空格、单引号、百分号和“”、“”就重定向到error_page.asp这个页面。 虽然“海阳顶端网ASP木马”具有黑掉学校服务器的能力,但我们还是要从学校的程序入手,否则就没有意义了,“海阳顶端网ASP木马”在这里只充当一个查看原代码的角色。 问题二 通常一些资料调用文件都会存在一些SQL injection漏洞,比如show.asp、showarticle.asp、shownews.asp、showuser.asp等等,因为这些文件很容易忽略检查变量,我看到一个shownews.asp文件。马上打开,其原代码如下(由于此文件太大,限于篇幅,我去掉了很多无关的HTML代码): 程序代码: [ 复制代码到剪贴板 ] % option explicit % !--#include file=conn.asp-- % dim sql,rs,rsc,thedate dim reviewable,aboutnews set rs=server.createobject(adodb.recordset) 查找显示
文档评论(0)