• 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

  • 相关阅读:
    Java总结篇系列:Java多线程(一)
    path方法总结
    Ember模板中的操作指向
    EmberJS路由详解
    观察器observes与对象初始化
    emberjs重写补充类之reopen方法和reopenClass方法
    emberjs创建类
    2014Ember带来怎样的变化?
    创建应用和模型和控制器
    自定义指令
  • 原文地址:https://www.cnblogs.com/xiaozi/p/10682199.html
Copyright © 2020-2023  润新知