A-A+

跨站漏洞的测试案例

2013年01月21日 计算机技术 暂无评论 阅读 54 views 次

造成跨站攻击的原因,主要是由于网站服务端的程序,对客户的输入不进行有效验证,于是攻击者就可能会输入一些恶意的 Script 程序代码,由于网站程序保存攻击者的输入,并将它们展示给所有的浏览者,因此已输入的恶意代码就可能会对浏览者造成危害。

下面,我们来看一个仅有两个网页文件的网站,感性认识一下跨站攻击。

第一个网页名为“page1.asp”,通过使用一个提交表单或者 Cookie 信息来获取用户名,其代码如下:

<%@ language=vbscript %>

<% if request.cookies("username")<>"" then

dim strredirecturl

strredirecturl="page2.asp?username="

strredirecturlstrredirecturl=strredirecturl & response.cookies("username")

response.redirect(strredirecturl)

else %>

<form method="post" action="page2.asp">

请输入登录用户名:

<input type="text" name="username">

<input type="submit" name="submit" value="提交">

</form>

<% end if %>

第二个网页文件名为“page2.asp”,返回用户名并显示欢迎信息,其代码如下:

<%@ language=vbscript %>

<% dim strusername

if request.querystring("username")<>"" then

strusername = request.querystring("username")

else

response.cookies("username") = request.form("username")

strusername = request.form("username")

end if %>

<h3 align="center">欢迎<%= strusername %></h3>

在浏览器中打开第一个网页,随便输入一个用户名,可以看到在第二个网页中显示了欢迎信息。

现在,来做一个小试验,在用户名中输入前面的跨站代码:

<script>alert("这是一个跨站漏洞的测试")</script>

提交进入第二个网页后,将会看到弹出一个警告对话框。在下一次访问时,就算输入正常的用户名,这个警示标签同样会出现。这是因为上面的

Script 代码,在你第一次访问时后就已经写入在 Cookie 中了。

上面是一个简单的跨站攻击的范例。如果网页程序对用户输入的用户名过滤不严,因此用户可输入任意代码,那么攻击者可以提交 Script 语句,而网站程序都将它作为正常的用户名执行程序。

这里程序只是将 Script 语句代码写入了用户的 Cookie 信息中,但如果代码被保存并显示在网页中呢?那么岂不是所有的浏览者都会弹出这个警告框吗?如果攻击写入的不是弹出对话框代码,而是一段更具攻击性的语句呢?--跨站攻击,就是由此产生的。

标签:

给我留言