[关闭]
@1kbfree 2019-05-21T16:41:09.000000Z 字数 1888 阅读 2783

对web安全的一些经验分享[url跳转篇]

漏洞挖掘


今年是挖洞的一年了,也对web安全产生了感情,之前盲目于一直挖洞每天技术都没什么增长,多的仅是那么一点点的经验,而且通过这次的护网行动,也看出了自己的很多不足,说白了就是很菜然后自己还没看清自己,所以接下来的日子里,自己都会尽量去接触一些自己的知识盲区来扩大自己的知识面。

都是自己的一些心得,并非炒作于哪儿

针对url跳转漏洞

1、在登录\注册\找回密码\退出处
2、站内跳(如在当前页面下写一个链接,然后我们点击的话就会以这种形式<a href='http://www.站内.com/?tourl=写下的链接'>写下的链接</a>)还有404页面跳,成功执行某操作的跳
3、退回(比如有些页面有返回的功能,就是跳转到上一个页面,而且是根据referer值来跳的)

登录\注册\找回密码\退出

这些点我们可以考虑利用fuzz来对其进行探查出跳转漏洞

我的fuzz中理解为分 2 种

  1. fuzz来找跳转参数
  2. 针对性找跳转参数

一个栗子(登陆处fuzz

这是一个登陆系统

  1. https://www.xxx.xxx/account/signin

那么我们可以选择第一种办法来对其进行fuzz来爆破出跳转参数,比如urlgore等,但是这种不一定有效而且高效,所以我一般会先尝试第二种办法 针对性 找跳转参数

1.审查源代码

因为很多跳转参数都是在前端构造的

2.查询hiddenurl之类的参数(因为很多系统都会把要跳转的参数放在input上,并且设置其为隐藏,这样子可以不影响界面美观,然后把value的值作为跳转参数,登陆后读取其值来确认要跳转的地儿~)

image_1dbb97vek84rs4defr1s9u1so49.png-33.3kB

那么我们就提取出这个returnUrl构造在url

  1. https://www.xxx.abc/account/signin?returnUrl=http://www.xxx.abc/123321

这里第一步测试的时候是先填他的主域名(因为如果你一上来就填写你想跳转的url他可能有过滤的可能直接将其替换为空或者是主站域名),后面的123321是个人的日常习惯,用户定位源代码处的,这个小小小技巧也可以用在测试xss漏洞上,快速定位源代码的回显处

3.查看效果

image_1dbb9i97d6g7ebn125opad1elj1g.png-383.2kB

4.尝试直接输入想跳转的url,看他是否有过滤

image_1dbb9higs1kbteiomrh11o8158613.png-54kB

然后登陆后就成功跳转了~

再举一个栗子

一个管理员才可以登录的系统,可是俺没有账号密码如何判断他是否存在url跳转呢o v o~,(我爆破不出来,我捡你一个洞总可以吧╭(╯^╰)╮)

如下是一个管理员的登录系统(只要不能注册的界面,俺都叫他管理员的登录系统)

  1. http://xxx.admin.xxx/supplier_web/login?returnUrl=http%3A%2F%2F127.0.0.1

image_1dbba30kobs81ko31k6asq6avj2d.png-198.7kB

可以看到这里不能注册,我们也不知道密码,那么怎么测试他是否可以跳转?

其实很简单

  1. 登录的时候抓包
  2. 修改状态码(把flase改成true这些)
  3. 然后就会跳转,因为这里的逻辑是,服务器通过判断状态码来给你构造一个登录流程,而这个登录流程支持跳转,那么就可以成功的测试出来啦~

image_1dbbaa6pj16of9974ep2rnv0b2q.png-53.9kB

本来服务器返回的statusCode500的,我将其修改为200

接着就有这么一个请求过来

image_1dbbacav275upnn1k09f4v1fse37.png-74.6kB

成功跳转~

然后还有站内跳,成功提示后跳都是一样的,对参数进行fuzz,然后绕过,如果绕不过就砸电脑一气呵成即可;

还有一个是adrian师傅和我分享过的,把登录处的login改成logout,然后对跳转参数进行过滤的功能就不存在了,因为开发者都不会想到在logout参数那里做参数过滤,然后就导致了可以直接导致url跳转漏洞的产生

退回功能的跳转导致了反射xss

之前遇到过,但是忘记记录了,也是比较好玩的我大概讲解一下

1、打开http://www.111.com/back他会跳转到referer的值(而且这里可以解析html,并且referer值在script脚本里<script>url = 'referer值';window.location.href=url</script>
2、我在自己的网站创建了一个文件(only_free.php),然后其功能是跳转到www.111.com/back,那么我可以这样子请求

  1. http://www.only_free.com/only_free.php?name=';alert(1);b='1

最后http://www.111.com/back里的js代码就变成

  1. url = '';alert(1);b='1';window.location.href=url

然后就成功弹窗了。

作者qq: 1900065568

有兴趣的朋友可以加我一起交流

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注