免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4021 | 回复: 0
打印 上一主题 下一主题

浅释跳转漏洞 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-27 22:08 |只看该作者 |倒序浏览
浅释跳转漏洞
如题,这个漏洞原理的确很浅,所以只能浅释了。构造这种漏洞并不需要什么技术含量,本来不想提出来的。不过CSDN上面的下载资源分已经用完了,又懒得再申请一个帐号来下载资源,碰巧发现了一个CSDN的跳转漏洞,就写出来赚点资源分吧。\r\n跳转漏洞的形成\r\n很多网站的很多功能只对注册用户或部分vip用户开发,当没有登录的用户试图使用这个功能时,网站程序会自动跳转到登录的页面,待登录验证成功后再跳转会前一步的操作。这里面如果没有对参数做签名的话就容易产生跳转漏洞了。\r\nCSDN为例,如果要下载资源的话,随便下载一个文档什么的,如果没有登录就会看到一下提示:\r\n
1 CSDN提示登录
点击登录,就会跳转到如下一个url\r\nhttp://passport.csdn.net/UserLogin.aspx?from=http://d.download.csdn.net/down/357656/chenxhcc\r\n当你输入你的帐号、密码之后就会自动跳转到上面url中的:\r\nhttp://d.download.csdn.net/down/357656/chenxhcc\r\n如果把上面的回调url修改一下,也是可以成功的。比如:\r\nhttp://passport.csdn.net/UserLogin.aspx?from=http://www.baidu.com\r\n也是会顺利的跳转到百度的。\r\n
2 提示跳转到百度
跳转漏洞的危害\r\n如果一个电子商务的网址(比如说:http://www.some_site.com)存在着这样的漏洞的话将会造成很严重的危机的,最直接简单的危害就是构造一个恶意网站(比如说是:http://212.20.43.155/login.php),页面跟该电子商务网站的因密码错误而导致登录失败,得重新登录的页面一样。然后攻击者就可以在各个论坛发帖子说:XX网站网上购物返回30%的现金啊,详情点击:\r\nhttp://www.some_site.com/UserLogin.php?from= http://212.20.43.155/login.php\r\n当用户在官方网站登录过一次后就会跳转到恶意的网站,而这个恶意网站却跟官方网站一样,而且要求重新登录,相信不少用户会上当把自己的帐号和密码重新输入一次的(当然,CSDN的用户都是比较聪明的,估计不会上这样的当的)。\r\n跳转漏洞可能引发的XSS漏洞\r\n有些网站考虑有些浏览器可能不支持自动跳转,于是在用户输入完帐号和密码后会有类似提示:\r\n…..将会跳转到前一个页面 http://www.pre_site.com \r\n如果你的浏览器不支持自动跳转,请点击此……\r\n如果没有对那个页面的网址进行转义输出的话就可能产生XSS漏洞,以CSDN为例:\r\n首先把需要回调的url改为:’’;!—“<XSS>={()}\r\n跳转页面如下:\r\n
3 CSDN跳转页面
查看页面源代码:\r\n
4 CSDN漏洞源码
观察发现一共有4处出现测试字符串,其中一个没做过滤。于是轻易的可以构造弹出框的XSS注入语句,观察发现成功。\r\n
5 CSDN弹出框
漏洞预防\r\n由于在我的前一篇介绍搜索框XSS漏洞的文章中已经简单的介绍过怎么预防XSS漏洞了,所以XSS漏洞的预防在这里就不重复了,这里只讲述跳转漏洞预防。\r\n这里以一个抽象的例子的来说明怎么预防跳转漏洞。\r\n比如有个博客社区,一共普通用户点击社区首页的写博客,调用write_blog.php,其一般逻辑一般先检验登录,如果校验成功则继续,如果不成功则跳转到登录页面user_login.php,当用户在user_login.php正确的输入自己的帐号、密码后就会自动跳转到前一个页面。user_login.php之所以能够跳转到write_blog.php而不会跳转到 download.php往往需要在调用user_login.php的时候给他传递回调url作为参数。例如CSDN是:\r\nhttp://passport.csdn.net/UserLogin.aspx?from=http://d.download.csdn.net/down/357656/chenxhcc\r\n正如前文所说,单单传递一个回调url作为参数是不安全的,这里需要一个机制保证回调url不被修改,最简单的方法就是增加一个参数签名。比如可以在write_blog.phpuser_login.php之间约定一个key,然后对回调的url根据key进行加密,产生一个checksum作为校验码。这样就可以保证回调url不被篡改了。当然,也可以约定一些接口,比如site_id=1时表示写博客,site_id=2表示下载......\r\n
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP