当前位置: 首页 > news >正文

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" 头用于指示浏览器重定向到指定的 URLheader("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)。 

相关文章:

  • SpringBoot电脑商城项目--显示购物车列表
  • 【无标题】使用 Chocolatey 安装 WSL 管理工具 LxRunOffline
  • win环境使用openssl创建p12证书
  • emscripten 编译 wasm 版本的 openssl
  • 启动hardhat 项目,下载依赖的npm问题
  • 【系统问题】解决 Windows10 点击任务栏的音量图标(喇叭)无效
  • 文生视频(Text-to-Video)
  • opencv try-catch
  • OCCT基础类库介绍:Modeling Algorithm - Features
  • 【STM32】STM32的中断系统寄存器NVIC、EXTI
  • Hologres 使用 FDW
  • 1、自然语言处理任务全流程
  • 内容搜索软件AnyTXT.Searcher忘记文件名也能搜,全文检索 1 秒定位文件
  • Snapchat矩阵运营新策略:亚矩阵云手机打造高效社交网络
  • 【好用但慎用】Windows 系统中将所有 WSL 发行版从 C 盘迁移到 非系统 盘的完整笔记(附 异常处理)
  • 文件上传优化(图片压缩)
  • 【StarRocks系列】join查询优化
  • 从0开始学习R语言--Day28--高维回归
  • Keil 安装 CMSIS-FreeRTOS 失败解决方案
  • ByteMD Markdown编辑器详细解释修改编辑器默认样式(高度300px)
  • 风水网站模板/百度100%秒收录
  • 郑州网站建设优化/网络宣传推广方案范文
  • 织梦做招聘网站/媒体宣传推广方案
  • 大连手机自适应网站建设公司/武汉seo网站排名
  • 做家居网站/百度知道一下首页
  • wordpress 是谁开发的/优化服务公司