这些让程序员头秃的bug,竟然只要一分钟就能找到?

近年来,大数据技术飞速发展,但同时也暴露出一个严重的问题——企业不重视安全技术。

这种不重视可能会导致用户隐私信息被不法分子盗取,对企业造成致命性的打击。

好在多数企业都逐渐注意到了这个问题,并开始加强网络安全建设。

那么对我们来说,为什么要选择网络安全?

很简单,薪资高,竞争小。

然而,我们在刚开始学习 Web 安全的时候苦于技术和经验有限,难以挖到实际项目中的漏洞。

于是心情苦闷,抓耳挠腮,甚至对学习 Web 安全丧失信心。

别急,今天我来教你一个一分钟就能挖到的漏洞。

01

一分钟能挖到什么样的洞?

URL 跳转漏洞

URL 跳转本身并不是漏洞,而是正常的业务功能,基本上每个网站都有进行 URL 跳转的需求。

但是,如果需要跳转的 URL 是用户可控的,那么就有可能存在 URL 跳转漏洞。

攻击者可以利用该漏洞,使程序跳转到钓鱼网站上进行盗取用户账号信息等操作。

对于新手来说,URL 跳转基本上算是测试难度最小且具有真实危害的漏洞。

那我们如何挖到这个漏洞呢?

Step1. 寻找漏洞功能点

1、用户登录、统一身份认证处

2、用户分享、收藏内容

3、跨站点认证、授权

4、站内点击其它网址链接时

这些功能点都有可能存在 URL 跳转漏洞,可以分别测试。

如果你找不到目标,你可以在搜索引擎中输入: inurl: +下面的参数名,会有意外发现~

redirect

redirect_to

redirect_url

url

jump

jump_to

target

to

link

linkto

Domain

...

Step2. 构造 payload

1、模糊检查式。即程序在跳转之前会对该参数进行判断,根据参数是否是以特定字符开头或结尾判断 URL 是否合法。

这种一般构造 URL 为:foo.com.evil.com

即可绕过检查机制。

2、特殊防护式。由于代码框架和语言的差异,可能的防护方式也不同,这就让绕过方式变得千奇百怪起来。

一般来说,可以使用不同的特殊符号来进行绕过防护, 比如后缀多个 /// ,域名前加 @、#&” 等字符。

下面,我们用实例来演示一下漏洞的挖掘过程。

02

实际案例分享

1、直接加后缀

以百度某业务登录处 URL 跳转为例:

首先可以看到 URL 的 fromu 参数指向登陆成功后跳转的网址。

然后我把这个参数修改为 :

http://baidu.com.evil.com

确认后登录账号,登录成功跳转到我搭建的钓鱼站,一分钟挖洞成就get!

2、中文符号特殊解析导致的URL跳转

这里以京东某业务的登录功能为例:

首先我们先得到完整的URL:

http://jd.com/?returnurl=http://jd.com

%E2%80%9C.pr1s0n.com

这里的 returnurl 参数即为登录成功后跳转的地址,是用户可控的。

在最开始的挖掘过程中,我已经对这个参数进行了一些常规的变形。

发现京东对这个防护比较严格,常规的payload在这里不能生效。

但是,在测试到中文字符双引号的时候发现它跳转到了一个奇怪的域名:

jd.xn--com-5o0a.pr1s0n.com

接着我在云解析平台添加了 jd.xn--com-5o0a 这个前缀,得到:

这里需要注意一下,直接输入含有双引号的前缀是不能添加成功的。

也就是说现在的完整域为:

jd.com”.pr1s0n.com

双引号在执行过程中会被 URL 编码为:"%E2%80%9C"

此时的程序的执行逻辑为:

登录成功->

跳转到 jd.xn--com-5o0a.pr1s0n.com->

解析到 jd.com”.pr1s0n.com->

跳转到 www.pr1s0n.com

即完成了 URL 跳转漏洞的利用,用户从正常的登陆页面跳转到攻击者可控的网站。

另外在该业务中,用户如果在已登录的状态下访问:

http://*.*.jd.com/&returnurl=http://jd.com%E2%80%9C.pr1s0n.com

可直接跳转到目标站。

这个已经属于稍复杂一点的跳转了,不通用,但是一个不错的新思路。

相对于复杂的漏洞来说,URL跳转漏洞的学习难度更小,更容易使web安全初学者在挖洞中找到自信和乐趣。

但是想要系统学习Web安全,URL跳转这类漏洞只是敲门砖。

原文发布于微信公众号 - Java研发军团(ityuancheng)

原文发表时间:2019-07-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券