JSON注入—Web安全深度剖析(7)

发表于:2015-5-15 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张炳帅    来源:51Testing软件测试网原创

分享:
  (51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  10.4  URL跳转与钓鱼
  URL跳转事件是比较常见的,比如,登录网站后,从登录页面跳转到另一个页面,这就叫作URL跳转,但是URL跳转怎么和钓鱼联系在一起呢?下面将详细介绍URL跳转与钓鱼。
  10.4.1  URL跳转
  URL跳转一般分为两种,一种为客户端跳转,另一种为服务器端跳转。两种跳转对用户来说都是透明的,都是指向或跳转到另一个页面,页面发生了变化,但是对开发者来说,其区别是很大的。
  1.客户端跳转
  客户端跳转也被称为URL重定向,用户浏览器的地址栏URL会有明显的变化,比如,当前页面为http://www.xxser.com/new.php,当单击"登录"按钮后会指向http://www.xxser.com/ login.php,且页面发生了变化,这就是客户端跳转。
  比如Index.jsp中含有重定向语句,代码如下:
  <%
  response.sendRedirect("x.jsp");
  %>
  当我们在浏览器中打开Index.jsp时,执行到此语句,页面就会发生变化,且URL也会变化,在HTTP协议中表现如下:
GET /index.jsp HTTP/1.1
Host: www.xxser.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17 SE 2.X MetaSr 1.0
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=B996CBC60FE32DC22CC30579DC34A6BB
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://www.xxser.com/x.jsp
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 0
Date: Wed, 21 Aug 2013 06:33:50 GMT
GET /x.jsp HTTP/1.1
Host: www.xxser.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17 SE 2.X MetaSr 1.0
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=B996CBC60FE32DC22CC30579DC34A6BB
  当浏览器请求Index.jsp后,收到302指示(也叫重定向)就会立刻进行跳转,而用户是感觉不到的。
  2.服务器端跳转
  服务器端跳转也称为URL转发,服务器端跳转时,用户浏览的地址栏URL是不会变化的,比如,当前页面URL为http://www.xxser.com/new.php,当单击"登录"按钮后,浏览器地址栏的URL没变,但是页面会发生变化。
  在Java Servlet中跳转代码如下:
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  this.doPost(request, response);
  }
  public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  request.getRequestDispatcher("upload.jsp").forward(request, response);
  }
  服务端跳转在HTTP协议中表现形式如下:
GET /UrlFrowardServlet HTTP/1.1
Host: www.xxser.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17 SE 2.X MetaSr 1.0
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=B996CBC60FE32DC22CC30579DC34A6BB
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=gbk
Content-Length: 735
Date: Wed, 21 Aug 2013 06:46:32 GMT
<html>
<head>Upload Jsp</head>
.........
  还有一些跳转不属于转发,也不属于重定向,而是直接向服务器发送请求,比如,一个简单的<a>标签:
  <a href= "http://www.xxser.com/news.jsp" >新闻列表</a>
  10.4.2  钓鱼
  网络中的钓鱼是指钓鱼式攻击,比如,攻击者模拟腾讯网站,或者一些CS架构软件,当用户使用这些软件时,攻击者可以截获用户的账户信息,如图10-27所示,就是一款比较老的QQ密保钓鱼软件。QQ空间钓鱼软件如图10-28所示。
  这类钓鱼软件非常多,不仅针对盗取QQ号码,还有淘宝的钓鱼软件、YY的钓鱼软件、新浪的钓鱼软件等,只要与利益相关,都可能存在类似的钓鱼软件。
  到目前为止,钓鱼软件已经做得非常完善,几乎与官方的软件完全相同,连域名也非常相似,比如"item.taobao.shoptao.com"、"qq.guanjio.com"、"item.ta0bao0.com"等,这样用户很容易上当。
 
图10-27  密保钓鱼软件
  图10-28  QQ空间钓鱼软件
  攻击者的钓鱼网站的传播途径无非是电子邮箱、社交网站等信息交流渠道,时间长了,各厂商也有了防护措施,比如QQ的黑名单策略,攻击者在QQ群、QQ空间中发送恶意URL时,如果此URL不能被识别,或者是恶意URL,QQ将会提示是恶意网站、盗号网站等。这样用户的安全就有了进一步的保障。
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
43/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号