HACK80

我们很年轻,但我们有信念、有梦想!

我们坚信只有今天付出了,才有机会看到明天的太阳!
现在!加入我们,给你一个气氛优秀的技术圈子

作者: djg222000
查看: 301|回复: 0

more +随机图赏Gallery

社工库查询工具1.1修改版社工库查询工具1.1修改版
可以手机远程控制电脑,手机远程控制手机的超强工具!可以手机远程控制电脑,手机远程控制手机的超强工具!
简单---两步--进暗网--更新之前的简单---两步--进暗网--更新之前的
2017年中旬WEB渗透系列课程-00前言2017年中旬WEB渗透系列课程-00前言
2017年中旬WEB渗透系列课程-25基于php参数开关的提权2017年中旬WEB渗透系列课程-25基于php参数开关的提权
2017年中旬WEB渗透系列课程-27HASH提权2017年中旬WEB渗透系列课程-27HASH提权
御剑后台扫描--自带10多兆后台数据库御剑后台扫描--自带10多兆后台数据库
国内高手浅蓝渗透视频,值得一看。国内高手浅蓝渗透视频,值得一看。
【重要公告】2017年中工作进展及最新课程发布【重要公告】2017年中工作进展及最新课程发布
二期公开课第6节-Linux下的爆破工具+爆破指定IP远程登陆二期公开课第6节-Linux下的爆破工具+爆破指定IP远程登陆

一个URL跳转引发的一系列“惨案”

[复制链接]
djg222000 发表于 2018-1-9 21:47:16 | 显示全部楼层 |阅读模式
查看: 301|回复: 0

马上注册,加入HACK80!与我们一起交流。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前言
在知乎的题目和答案中,插入的链接都会变成https://link.zhihu.com/target=xxx的形式进行URL跳转,如下图。然而这个看似简单的功能的实现上,曾引发过一系列的问题,过程挺精彩,所以我就来做个总结,以重新体验一下这个过程。声明:以下小节中提到的问题均来自WooYun已经公开的漏洞,复现的代码也是纯属我个人YY。
0x00 没有任何过滤
猜测知乎可能的实现方式:
在上面这个实现中,我们可以发现对于”并没有进行转义,因此我们可以传入”来闭合前面的双引号,然后再插入我们的JS代码。运行上面的程序python server.py,然后使用curl请求:
0x01 对参数做了urlencode编码
在上面的漏洞报告之后,(猜测)知乎的工程师按照了洞主给出的修复方案进行代码的修改,修改后的代码如下:
现在,我们如果在target参数中传入”,则先会被转义成%22插入在页面中,从而无法闭合之前的双引号。看似一个挺好的的解决方案吧,然而,却还不够。
强烈推荐仔细阅读这个案例哦,洞主的分析利用过程保证你看了会觉得很有收获。
0x02 使用WTForm进行URL校验
(猜测开发内心OS)既然如此,Python不是有个叫做WTForm的库可以帮我们校验用户的输入是否合法吗?我们可以利用里面的wtforms.validators.URL进行URL的检查,这样子用户的输入该合法了吧。
这里也有可能是开发自己写正则进行匹配,问题本质上都是一样的,正则写的不好。上面的写法虽然已经能过滤到前面提到的情况,然而,WTForm的正则过滤并没有写好,导致继续被XSS。如下的URL:
0x03 除了XSS之外的一个彩蛋
这里本身其实是一个任意URL调整,可以在某些实现不严格的OAuth2.0的过程中利用偷取用户的授权code,然后使用用户的身份进行登录哦。在我之前的博客已经分析过这个问题,这里就不再写了。案例:微博上你点我链接我就上你绑定过的知乎账号
总结
做一个程序员不容易啊!请善待我们。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|HACK80 ( 沪ICP备15007512号 )

GMT+8, 2018-1-24 13:53 , Processed in 0.057450 second(s), 24 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.