zoukankan      html  css  js  c++  java
  • PHP代码审计笔记--URL跳转漏洞

    0x01 url任意跳转

      未做任何限制,传入任何网址即可进行跳转。

    漏洞示例代码:

    <?php  
        $redirect_url = $_GET['url'];
        header("Location: " . $redirect_url);
        exit;
    ?> 

    Payload:?url=http://www.baidu.com,即可跳转到百度首页

    0x02 编码解码

      之前黑盒测试遇到过一个案例,感觉有点意思,写个demo复现一下

    漏洞示例代码:

    <?php  
        $url = base64_decode($_GET['url']);
        header("Location: " . $url);
    ?> 

    将url进行base64编码,参数传递到服务端解码,然后进行url跳转。

    http://www.baidu.com   base64编码后   aHR0cDovL3d3dy5iYWlkdS5jb20=

    Paylod:?url=aHR0cDovL3d3dy5iYWlkdS5jb20=  

    0x03 白名单限制

    0x04 绕过姿势

    利用默认协议

    ?url=\www.baidu.com
    ?url=/www.baidu.com
    ?url=\\www.baidu.com 等价于:?url=http://www.baidu.com

    前缀式

        利用问号?: ?url=http://www.evil.com?www.aaa.com

        利用井号#:  http://www.aaa.com?returnUrl=http://www.evil.com#www.aaa.com

        其他形式:

          ?url=http://www.baidu.comaaa.com

          ?url=http://www.baidu.com\aaa.com

     后缀式

        利用@符号:?url=http://www.aaa.com@www.evil.com

        其他形式: http://www.aaa.com.evil.com

    其他思路: 使用IP地址、IPv6地址、更换ftp、gopher协议



    绕过案例:

    白名单限制

    ?redirect_uri=http://www.baidu.com

    利用问号绕过限制

    ?redirect_uri=http://www.baidu.com

    尝试进行跳转到其他网站时发现做了白名单限制,非QQ域名禁止跳转,会报错说跳转链接非法

    ?redirect_uri=http://www.baidu.com

    ?redirect_uri=http://www.qq.com?http://www.baidu.com 

    ?redirect_uri=http://www.baidu.com?&http://www.qq.com

    ?redirect_uri=http://www.baidu.com/test.html?&http://www.qq.com

    ?redirect_uri=http://www.baidu.com\test.html?&http://www.qq.com

    在代码中判断是否为目标域名,但开发小哥哥们喜欢用字符串包含来判断

    http://www.aaa.com?returnUrl=http://www.aaa.com.evil.com

    http://www.aaa.com?returnUrl=http://www.evil.com/www.aaa.com

    http://www.aaa.com?returnUrl=http://www.xxxaaa.com

    若再配合URL的各种特性符号,绕过姿势可是多种多样。比如

    利用反斜线:

    http://www.aaa.com?returnUrl=http://www.evil.comwww.aaa.com

    http://www.aaa.com?returnUrl=http://www.evil.comwww.aaa.com

    多次跳转,即aaa公司信任ccc公司,ccc公司同样存在漏洞或者提供跳转服务:

    http://www.aaa.com?returnUrl=http://www.ccc.com?jumpto=http://www.evil.com

    实际挖掘过程中还可以将上述方法混合使用,甚至使用URL编码、ip地址替代域名等手段。

    参考链接:

    web渗透基础案例——URL跳转绕过腾讯限制进行跳转

    http://www.apgy.club/temp/url.html

    分享几个绕过URL跳转限制的思路

    https://www.anquanke.com/post/id/94377

  • 相关阅读:
    Python基础23_os,sys,序列化,pickle,json
    Python基础22_模块,collections,time,random,functools
    Python基础21_类与类型, MRO, C3算法, super()
    Python基础20_类的约束,异常处理,MD5加密,日志
    python反射机制
    python 依赖关系 与关联关系
    python 类的常见的特殊成员
    类的成员(*变量与*方法)
    初识面向对象
    简说匿名函数与递归
  • 原文地址:https://www.cnblogs.com/xiaozi/p/10682199.html
Copyright © 2011-2022 走看看