pikachu靶场通关笔记42 不安全的URL重定向

目录

一、URL重定向

二、不安全的重定向

三、源码分析

四、渗透实战

1、进入靶场

2、依次点击4个链接

(1)链接1无变化

(2)链接2无变化

(3)链接3重定向成功

(4)链接4的URL出现重定向

3、原理分析

4、渗透实战

(1)访问DVWA靶场

(2)访问百度


本系列为通过《pikachu靶场通关笔记》的URL重定向关卡的渗透实战,通过对URL重定向关卡源码的代码审计找到安全风险的真实原因,讲解URL重定向安全风险的原理并进行渗透实践。

一、URL重定向

URL 重定向是指当客户端向服务器请求某个 URL 时,服务器返回一个新的 URL,让客户端重新发起对新 URL 的请求 。它通过 HTTP 协议中的状态码(如 301 永久重定向、302 临时重定向)来实现。在实际应用中,URL 重定向常用于网站改版迁移、错误页面引导、流量分发等场景。

然而,若对 URL 重定向处理不当,会存在安全风险。恶意攻击者可构造恶意的重定向链接,诱导用户访问钓鱼网站,窃取用户信息。比如,将重定向链接伪装成正常网站,欺骗用户点击,当用户点击后就会被引导至恶意页面,从而遭受损失。因此,需要对重定向目标进行严格校验,防止被恶意利用。

类别 详情
定义 客户端向服务器请求某 URL 时,服务器返回一个新的 URL,指示客户端重新发起对新 URL 的请求
常见类型 301 永久重定向:表示原资源已永久转移到新的 URL,搜索引擎会更新索引; 302 临时重定向:原资源临时转移到新 URL,搜索引擎不会更新索引; 307 临时重定向:和 302 类似,不允许改变请求方法; 308 永久重定向:和 301 类似,不允许改变请求方法
应用场景 网站改版迁移:将旧网址的流量导向新网址; 错误页面引导:如用户访问不存在页面时重定向到首页或错误提示页; 流量分发:根据不同条件将用户重定向到不同服务器或页面; 用户认证后跳转:登录成功后重定向到用户主页
存在风险 网络钓鱼:攻击者构造恶意重定向链接,诱使用户访问钓鱼网站,窃取用户账号密码等信息; 绕过安全限制:通过重定向绕过一些安全防护机制,访问受限制资源; 影响用户体验:错误或恶意的重定向导致用户无法访问预期内容
防范措施 严格校验重定向目标 URL:对重定向目标进行合法性检查,避免使用用户可控参数直接作为目标; 采用白名单机制:只允许重定向到预先定义好的合法域名或 URL; 对用户提示:在进行重定向操作前,给予用户提示,告知即将跳转到的地址

二、不安全的重定向

不安全的重定向(URL 重定向安全风险)是指 Web 应用程序在实现 URL 重定向功能时,未对目标 URL 进行有效验证和过滤,导致攻击者可利用该功能将用户重定向到恶意网站。攻击者通过构造包含恶意 URL 的链接,诱使用户点击。当用户访问存在URL重定向安全风险的页面时,会被自动跳转至钓鱼网站、恶意下载页面等,进而可能遭受账号密码窃取、恶意软件感染等风险。此外,该安全风险还可用于实施网络钓鱼攻击、绕过安全防护机制等。为防范此类安全风险,开发人员应严格校验重定向目标 URL,采用白名单机制限制合法重定向地址,避免直接使用用户可控参数作为重定向目标。

三、源码分析

进入到pikachu靶场的命令执行URL重定向关卡,找到源码urlredirect.php文件进行分析。

复制代码
http://127.0.0.1/pikachu/vul/urlredirect/urlredirect.php

这段 PHP 代码的主要功能是处理通过 GET 方式传递的 url 参数。如果 url 参数的值为 i,则会在页面上显示一段提示信息;如果 url 参数的值不为 i,则会将用户重定向到该参数所指定的 URL经过详细注释的源码如下所示。

复制代码
// 初始化一个空字符串变量 $html,用于存储后续要输出的 HTML 内容
$html = "";

// 检查是否通过 GET 方式传递了名为 'url' 的参数,并且该参数不为空
if (isset($_GET['url']) && $_GET['url'] != null) {
    // 从 GET 请求中获取 'url' 参数的值,并将其赋值给变量 $url
    $url = $_GET['url'];

    // 检查 $url 的值是否等于 'i'
    if ($url == 'i') {
        // 如果 $url 的值为 'i',则将一段提示信息追加到 $html 变量中
        $html .= "<p>好的,希望你能坚持做你自己!</p>";
    } else {
        // 如果 $url 的值不为 'i',则使用 header 函数将用户重定向到 $url 所指定的 URL
        // header 函数用于发送原始的 HTTP 头信息,这里的 "location" 头用于指示浏览器重定向到指定的 URL
        header("location:{$url}");
    }
}

此代码存在 URL 重定向安全风险的原因在于,它直接使用了用户通过 GET 请求传递的 url 参数作为重定向的目标,而没有对该参数进行任何有效的验证和过滤。这意味着攻击者可以构造任意的 URL 作为 url 参数的值,从而将用户重定向到恶意网站。

四、渗透实战

1、进入靶场

打开pikachu靶场的命令执行URL重定向关卡,同时bp开启inception off抓包功能,如下图所示页面有四个链接,具体参考下图红框。

复制代码
http://127.0.0.1/pikachu/vul/urlredirect/urlredirect.php

2、依次点击4个链接

按照顺序点击页面中的四个链接,同时关注URL地址的变化,具体如下所示。

(1)链接1无变化

复制代码
http://127.0.0.1/pikachu/vul/urlredirect/urlredirect.php

(2)链接2无变化

复制代码
http://127.0.0.1/pikachu/vul/urlredirect/urlredirect.php

(3)链接3重定向成功

复制代码
http://127.0.0.1/pikachu/vul/urlredirect/unsafere.php

通过burpsuite抓包可以看到跳转过程,HTTP状态码302表示重定向(下图序号3374),重定向后转向的是/pikachu/vul/urlredirect/unsafere.php(下图序号3375)。

(4)链接4的URL出现重定向

点击第四个则页面显示一段文件同时 URL 中多了一个 url=i 参数。

复制代码
http://127.0.0.1/pikachu/vul/urlredirect/urlredirect.php?url=i

3、原理分析

打开源码根目录,找到urlredirect.php的位置,查看urlredirect.php源码,如下所示。

找到上图四个链接的位置,可以发现url重定向是通过 urlredirect.php?url= 来实现的。为什么会有这个安全风险呢?这是因为用户可控的参数url的输入没有被好好过滤。

4、渗透实战

(1)访问DVWA靶场

尝试修改最后一条连接的网址,使访问DVWA靶场,url= http://127.0.0.1/DVWA,具体如下所示。

复制代码
127.0.0.1/pikachu/vul/urlredirect/urlredirect.php?url=http://127.0.0.1/DVWA

通过burpsuite抓包可以看到跳转过程,HTTP状态码302表示重定向(下图序号3382),重定向后转向的是?url=http://127.0.0.1/DVWA(下图序号3383)

(2)访问百度

更改参数为url=http://www.baidu.com,具体如下所示。

复制代码
http://127.0.0.1/pikachu/vul/urlredirect/urlredirect.php?url=http://www.baidu.com

通过burpsuite抓包可以看到跳转过程,HTTP状态码302表示重定向(下图序号3406),重定向后转向的是?url=http://www.baidu.com(下图序号3407)。

相关推荐
失因6 小时前
SELinux 安全机制详解与管理
linux·运维·安全·centos
CtrlZ学习录7 小时前
安全引导功能及ATF的启动过程(五)
linux·安全·架构·开源·可信计算技术
蝸牛ちゃん8 小时前
《计算机信息系统安全保护等级划分准则》(GB17859-1999):中国信息安全等级保护的基石
安全·信息安全·系统安全·gb17859-1999·信息安全等级·安全等级划分
峥嵘life11 小时前
Android14 通过AMS 实例获取前台Activity 信息
android·安全
清咖啡16 小时前
安全生产基础知识(一)
安全·学习方法
Xasxxs17 小时前
【网络安全】SQL注入——无列名注入
sql·安全·web安全
ZLlllllll020 小时前
Vulhub靶场组件漏洞(XStream,fastjson,Jackson)
安全·web安全·fastjson·xstream·vulhub
掉头发的王富贵20 小时前
涉及第三方Api加密通信,我连夜设计了一套让领导满意的方案
后端·安全·api
白帽小野1 天前
CEH、OSCP、CISP、CISSP 四大网络安全认证攻略
安全·认证
烷烯1 天前
安全基础DAY1-安全概述
linux·服务器·安全·常见网路攻击