Pikachu靶场——目录遍历漏洞和敏感信息泄露

news2024/11/28 19:25:28

文章目录

  • 1. 目录遍历漏洞
    • 1.1 源码分析
    • 1.2 漏洞防御
  • 2. 敏感信息泄露
    • 2.1 漏洞防御

1. 目录遍历漏洞

漏洞描述

目录遍历漏洞发生在应用程序未能正确限制用户输入的情况下。攻击者可以利用这个漏洞,通过在请求中使用特殊的文件路径字符(如 …/ 或 %2e%2e/)来绕过应用程序的访问控制机制,访问应用程序所不应该暴露的文件或目录。

漏洞原理

应用程序的文件操作功能通常会接收用户提供的文件路径作为输入,并从文件系统中读取或写入文件。如果应用程序在处理用户输入时没有进行充分的验证和过滤,攻击者可以通过构造恶意的文件路径来访问任意文件或目录。

image-20230909152930401

分别点击这两个连接,会显示其他内容。与之对应的URL中的title的值也会发生改变。

第一个链接

image-20230909153125827

第二个链接

image-20230909153153600

根据目录遍历的原理,攻击者主要通过…/来返回上一级目录, 从而导致所有目录的暴露。

构造URL

http://192.168.188.183/pikachu/vul/dir/dir_list.php?title=../../../../../../../../windows\system32\drivers\etc\hosts

image-20230909153526328

1.1 源码分析

image-20230916155827012

说明:在PHP中,使用require语句可以将指定文件的内容包含到当前脚本中。对$filename参数没有进行任何的过滤从而导致漏洞的产生。

1.2 漏洞防御

修改源码进行防御

if(isset($_GET['title'])){
    $filename=$_GET['title'];
    //这里直接把传进来的内容进行了require(),造成问题
    //代码防御
    $filename = str_replace("../","",$filename);

    require "soup/$filename";
//    echo $html;
}

说明str_replace 是 PHP 中的字符串替换函数,可用于将字符串中指定的子串替换为另一个子串。这里是将../替换为空字符串。

image-20231001165959817

访问hosts文件

image-20231001170313242

防御成功,但是这样的防御是可以使用..\进行绕过。

http://127.0.0.1/pikachu/vul/dir/dir_list.php?title=..\..\..\..\..\..\..\..\windows\system32\drivers\etc\hosts

image-20231001170416027

观察发现在进行访问的时候URL中的title的值分别是jarheads.php和truman.php这两个php文件。那么我们可以添加白名单进行防御。

防御代码如下:

if(isset($_GET['title'])){
    $filename=$_GET['title'];
    //这里直接把传进来的内容进行了require(),造成问题
    //代码防御
    if($filename == 'jarheads.php' or $filename == 'truman.php'){
        require "soup/$filename";
    }else{
        die("黑客!!!");
    }
    // require "soup/$filename";
//    echo $html;
}

重新访问页面

image-20231001171242604

防御成功!

目录遍历漏洞防御

  • 输入验证与过滤:对于接收用户输入的文件路径,要进行严格的输入验证和过滤,只允许合法的文件路径字符和文件名,拒绝或替换任何非法字符。
  • 白名单限制:限制应用程序可以访问的文件目录范围,使用白名单机制只允许特定的文件或目录被访问。
  • 文件权限控制:确保文件系统中的文件和目录设置了适当的权限,限制对敏感文件的访问。

2. 敏感信息泄露

由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。

例如:

  • 通过访问url下的目录,可以直接列出目录下的文件列表。
  • 输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息。
  • 前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等

查看页面源代码,发现了测试账户

image-20230909153914076

使用测试账户进行登录

image-20230909153953000

登录成功。

2.1 漏洞防御

  • 尽可能避免存储敏感数据,或存储时间超过所需时间。
  • 对于网站目录定期扫描。
  • 对于所有需要存储的静态数据进行加密。
  • 安全地处理用户输入:对用户输入的敏感信息进行严格而细致的验证和过滤,以防止恶意输入或攻击例如SQL注入、跨站脚本(XSS)等。
  • 强化访问控制机制:实施强密码策略、多因素身份验证、单点登录(SSO)等访问控制机制,以增加攻击者获取敏感信息的难度。
  • 合理设计权限和访问控制:确保只有授权用户或角色可以访问和处理敏感信息。使用最小权限原则,即每个用户/角色只能获得完成其工作所需的最低限度的访问权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Acwing 838. 堆排序

Acwing 838. 堆排序 题目描述思路讲解代码展示 题目描述 思路讲解 堆是一颗完全二叉树,除了最下面一层,其余是满的,最后一层从左到右排列 小根堆:每个点小于等于左右两堆,所以根节点就是最小值 大根堆:每个…

2021-06-18 51蛋骗鸡实现流水灯累积点亮全亮后闪烁从头开始循环

缘由怎么在单片机上实现这个功能呢_有问必答-CSDN问答 #include "REG52.h" sbit K1 P1^5; sbit K2 P1^6; sbit K3 P1^7; sbit K4 P1^4; //sbit LED1P1^0; //sbit LED2P1^1; //sbit LED3P1^2; //sbit LED4P1^3; bit k1; unsigned char code SmZiFu[]{63,6,91,79,…

【U8+】用友U8建立账套,提示准备模板文件出错。

【问题描述】 用友U8在新建账套的过程中, 初始化环境,提示准备模板文件出错, SQL Server 阻止了对组件xp_cmdshell的过程sys.xp cmdshell的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。 【解决方法】 出现这种错误…

【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(下)

一、发布进度条类型通知 进度条通知也是常见的通知类型,主要应用于文件下载、事务处理进度显示。HarmonyOS提供了进度条模板,发布通知应用设置好进度条模板的属性值,如模板名、模板数据,通过通知子系统发送到通知栏显示。 目前系统…

Java基础---第十一篇

系列文章目录 文章目录 系列文章目录一、说说List,Set,Map三者的区别?二、Object 有哪些常用方法?大致说一下每个方法的含义三、Java 创建对象有几种方式?一、说说List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象…

28272-2012 米制超细牙螺纹 系列和基本尺寸

声明 本文是学习GB-T 28272-2012 米制超细牙螺纹 系列和基本尺寸. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了米制超细牙螺纹的基本牙型、直径与螺距系列和基本尺寸。 本标准适用于精密仪器和电子设备等领域的螺纹连接。 2…

Linux软硬连接与动静态库

硬链接 我们可以通过命令 ln myproc myproc-h 创建硬链接。 很容易发现 test(源文件) 和 mytest (硬链接)的文件大小是一样的,mytest的硬链接数从 1-> 2 通过 ls -i 文件名 我们还会发现,test 和 myte…

10以内字符与数字的转化(与ASCII码无关)

字符转整型数字 char a3; int ba1; cout<<b; 这样打印出的结果是51&#xff1b;显然我们想打印出的结果是4&#xff1b; 那么下面介绍一种极其简单的方法&#xff1b; 1.利用“ -0 ” char a6; int ba-01; cout<<b; 输出结果就是7&#xff1b; 不过这种方…

Vue--Axios详解

一、Axios是什么&#xff1f; Axios是一种异步请求技术&#xff0c;核心作用就是用来给页面 发送异步请求的&#xff0c;并获取对应数据在页面中的渲染&#xff0c;是页面局部更新的Ajax封装来的。 特性 从浏览器创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise A…

【Vue3】兄弟组件传参

1. 借助父组件传参 A 组件派发一个事件&#xff0c;修改 flag 的值&#xff0c;先传递给父组件&#xff0c;然后由父组件传递给 B 组件。 缺点&#xff1a;必须由 App.vue 处理中间逻辑。 A.vue <template><div class"A"><h1>A组件</h1>…

Tomcat8 任意写文件PUT方法 (CVE-2017-12615)

Tomcat 任意写文件PUT方法 (CVE-2017-12615) 文章目录 Tomcat 任意写文件PUT方法 (CVE-2017-12615)1 在线漏洞解读:2 版本影响3 环境搭建4 漏洞复现4.1 访问4.2 POC攻击点4.2.1 直接发送以下数据包&#xff0c;然后shell将被写入Web根目录。4.2.2 访问是否通&#xff0c;可以访…

零基础Linux_10(进程)进程终止(main函数的返回值)+进程等待

目录 1. 进程终止 1.1 main函数的返回值 1.2 进程退出码和错误码 1.3 进程终止的常见方法 2. 进程等待 2.1 进程等待的原因 2.2 wait 函数 2.3 waitpid 函数 2.4 int* status参数 2.5 int options非阻塞等待 本篇完。 1. 进程终止 进程终止指的就是程序执行结束了&…

Linux命令之查看用户登录信息命令

一、命令简介 linux系统查看用户登录信息的命令有很多&#xff0c;包括w、who、whoami、users、last、lastb、lastlog、id、finger等。每个命令都可以查看当前登录的用户&#xff0c;但是又各有侧重点。w还可以查看用户正在执行的命令&#xff1b;who可以查看系统的启动时间&am…

Linux学习[21]账号与群组1---linux中/etc/passwd与/etc/shadow字段说明

文章目录 前言1. passwd字段说明2. shadow字段说明总结 前言 修改树莓派某个用户的权限到管理员权限的时候&#xff0c;涉及到了对/etc/passwd文件的修改&#xff0c;其中的字段具体含义当时也是模棱两可的&#xff0c;最近看了看相关书籍之后&#xff0c;这里做一个说明。 同…

AIGC Midjourney 机器人绘画案例演示

输入提示词后,点击生成图片即可。 根据描述生成了高清图像。 AIGC ChatGPT 职场案例60集, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu<

39 对称二叉树

对称二叉树 理解题意&#xff1a;如果同时满足下面的条件&#xff0c;两个树互为镜像&#xff1a;题解1 【栈】递归——DFS题解2 【队列】迭代——BFS 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 提示&#xff1a; 树中节点数目在范围 [1, 1000] 内-100 &l…

Acwing 240. 食物链

Acwing 240. 食物链 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 #include <iostream>using namespace std;const int N 50010;int n, m; int p[N], d[N]; //p[]是并查集的father,d[]是距离int find(int x) {if (p[x] ! x) { //如果说x不是树根的话int t f…

【VIM】VIM配合使用的工具

6-1 课程总结-vim虐我千百遍&#xff0c;我待 vim 如初恋_哔哩哔哩_bilibili

吐槽挡不住iPhone15的热销,这就是苹果的实力,库克笑开怀

从某电商平台可以看到苹果的iPhone15Pro max的评论已高达200万条&#xff0c;对比之下竞争对手的某款手机评论仅仅只有200条&#xff0c;可以看出虽然一些人士指出该款手机狙击了iPhone15&#xff0c;而iPhone15在销售方面并未受到影响。 iPhone15在发布前后引发了诸多风波&…