URL重定向漏洞

morick   ·   发表于 2021-03-09 15:15:33   ·   技术文章投稿区

我们不生产漏洞, 我们只是大佬挖洞后, 把挖出的土的推广向世界的那个, 俗称推土机…
最近学了一下URL重定向, 看社区没有类似的文章, 所以总结一下, 做个输出~~

URL重定向漏洞

什么是URL重定向?

我们点击一个网页内的外链时, 网页访问另一个网站


如上图, 这是一个简书网站, 跳转到另一个网站的URL重定向

URL漏洞呢?

进一步利用, 如果我们把上图简书访问的URL改为一个恶意网站, 那么就可以实现一次类似于反射型xss的攻击

举几个应用的例子,

  1. 把url改为和某大网站一模一样的钓鱼网站, 用户输入账号密码后就会被盗号
  2. 把URL改为一个内嵌csrf的攻击脚本, 就可以实现csrf攻击

感觉本质就是, 伪装恶意链接, 让目标用户访问

在哪里可以发现它?

黑盒测试

  • 用户登录、统一身份认证处,认证完后会跳转


这是我学校的一个登陆网站, 其中service=url, 就有可能存在URL重定向漏洞

  • 用户分享、收藏内容过后,会跳转

  • 跨站点认证、授权后,会跳转

  • 站内点击其它网址链接时,会跳转

白盒测试

这里就举一个php的例子, 其他的语言小伙伴们可以自己百度

常见的参数

这个黑盒白盒都可以用于快速定位, 发现可能的漏洞
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
link
linkto
domain

激动人心的攻防战开始了!!!

攻1:直接利用

下方虚构一个链接来举例子:
http://Baidu.com?url=http://hack.com
hack.com就是攻击性网站, Baidu代表正常网址
肉鸡点这个网站后, 自以为点的事baidu的站点, 结果跳转的黑客的网站

防1:协议一致性

个人感觉没啥用, 就是如果baidu用https协议, hack.com也要用https协议

防2: 域名字符串检测

就是检测 url= 后面的链接, 是否是自己的网站, 比如

  1. <?php
  2. $redirect_url = $_GET['url'];
  3. if(strstr($redirect_url,"www.baidu.com") !== false){
  4. header("Location: " . $redirect_url);}
  5. else{
  6. die("Forbidden");}
  7. ?>

上方代码可以实现, 如果你给的链接里面没有www.baidu.com 这个字符串, 那么就禁止访问

攻2

修改链接为:
http://baidu.com?url=www.baidu.com.hack.com
相当于组合域名

防3: 检测跳转URL末尾是否匹配

原理同防2, 改为检测末尾的域名

攻3:

有2个方法绕 防3

  1. 把域名改为: http://baidu.com?url=hack.com/baidu.com
    就是把白名单域名当做目录位置放到链接里面
  2. 直接买一个奇怪的域名: www.hack-baidu.com, 要是能买到类似的, 也是醉了….

攻&防4: 无限各种奇葩的正则匹配, 就是不让你加入恶意域名

二次跳板法, 先看代码
http://baidu.com?url=http://baidu.com?url=hack.com
这个先跳转到白名单网站, 再在后面加入一个恶意网站, 也之骚也~~

奇怪的绕过

还有很多奇怪的东西, 直接搬运过来的, 大家欣赏一下吧~


还有其他的绕过思路, 搬到下面了

最后听说点赞到一定数量有社区币奖励, 也麻烦各位点个赞把~

用户名金币积分时间理由
奖励系统 50.00 0 2021-03-10 21:09:32 投稿满 5 赞奖励
Track-聂风 50.00 0 2021-03-09 15:03:45 一个受益终生的帖子~~

打赏我,让我更有动力~

1 Reply   |  Until 2021-3-9 | 678 View

Track-聂风
发表于 2021-3-9

同学第一次写文章,值得鼓励,加油

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.