WEB安全系列之如何挖掘任意文件读取漏洞

2023-11-03

0x01  前言         
   
     任意文件读取漏洞,从代码审计的角度讲一讲。

0x02  什么是任意文件下载漏洞
      一般的网站都提供读取文件功能,常规的思路是使用一个动态页面(php、jsp、aspx、asp等)将待下载文件作为参数一般参数名称为filename,如.php?filename/.jsp?filename等。一般实现过程是,在根据参数filename的值,获得该文件在网站上的绝对路径,读取文件。大部分情况下,与任意文件下载的危害性相同(都获取到了源代码里的包含的信息)。

0x03  任意文件下载漏洞的危害
      任意文件读取漏洞,是web安全里高危的漏洞,它可以泄露源码、数据库配置文件等等,导致网站处于极度不安全状态。

0x04  实战的案例
    我们来看看zzcms的任意文件读取漏洞,这是个能拿出来当教材的CMS(有兴趣的朋友可以下载看看)
     


    index.php
    参数$siteskin是通过$_request['skin']获取的,然后通过fread读取,最后echo出来。

  1. $file=dirname(__FILE__)."/template/".$siteskin."/index.htm";
  2. if (file_exists($file)==false){
  3. WriteErrMsg($file.'模板文件不存在');
  4. exit;
  5. }
  6. $fso = fopen($file,'r');
  7. $strout = fread($fso,filesize($file));
  8. 。。。。。。
  9. echo  $strout;
复制代码
http://127.0.0.1/index.php?skin=../inc/config.php%00(00截断)  


第二处:
/area/show.php
代码是一样的

  1. $fp="../template/".$siteskin."/area_show.htm";
  2. $f = fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  6. $strout=str_replace("{#sitename}",sitename,$strout) ;
  7. $strout=str_replace("{#siteurl}",siteurl,$strout) ;
  8. $strout=str_replace("{#pagetitle}",$province.sitetitle,$strout);
  9. $strout=str_replace("{#pagekeywords}",$province.sitekeyword,$strout);
  10. $strout=str_replace("{#pagedescription}",sitedescription,$strout);
  11. $strout=str_replace("{#province}",$province,$strout) ;
  12. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  13. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  14. $strout=showlabel($strout);
  15. echo  $strout;
复制代码
第三处: /company/company.php

  1. $fp="
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WEB安全系列之如何挖掘任意文件读取漏洞 的相关文章

  • Linux中vi的用法

    vi 有三种工作模式 普通模式 1 输入模式 2 命令模式 3 末行模式 ese 退出到普通模式 输入模式 a 光标处的后面切换到输入 A 光标跳转到当前行的最末端 i 光标处的前面输入 I 光标跳到当前行的最前端 r 替换光标处的一字母
  • 判断一个字符串中各个字符出现的次数

    我这里使用了两种方法 两种方法思路差不多 但是使用处理字符串的方法不一样 所以执行效率不一样 long xxx System nanoTime 这个方法用来标记执行方法前后的时间点 看最终执行完所用时间 纳秒 第一种方法效率高 时间快 不是
  • 基于Matlab GUI的形态学方法进行水果大小识别

    基于Matlab GUI的形态学方法进行水果大小识别 在本文中 我们将探讨如何使用Matlab的图形用户界面 GUI 和形态学方法来进行水果大小的识别 形态学是一种图像处理技术 主要用于提取和改善图像中的形状和结构信息 我们将使用Matla
  • YOLOX训练代码分析1-COCO与VOC训练

    1 YOLOX的网络结构图与代码YOLOv3 YOLOv4 YOLOv5 YOLOx的网络结构图 清晰版 YMilton的专栏 CSDN博客 https blog csdn net YMilton article details 12026
  • 最短路径(Dijkstra)算法

    目录 一 Dijkstra算法 二 核心思路 三 步骤 四 代码 一 Dijkstra算法 迪杰斯特拉 Dijkstra 算法是由荷兰计算机科学家狄克斯特拉于1959年提出的 是寻找从一个顶点到其余各顶点的最短路径算法 可用来解决最短路径问
  • 获取自定义弹出框的DialogResult的值以及返回用户输入的值

    在编写Winform程序时 有些情况下需要自己定义一个弹出框 获取用户选择的是YES还是NO 并且获取用户输入的数据 首先 自定义弹出框非常容易编写 利用Form可以制作成一个对话框样式 并且在主程序中以模态形式显示 ShowDialog
  • 如何安装多个node版本(使用nvm)

    1 卸载之前安装的所有node 2 下载nvm安装包 下载地址https nvm uihtm com 3 安装nvm 4 打开cmd 运行命令 nvm install node版本号 安装对应版本的node 5 打开nvm的安装路径 可以看
  • EMD 经验模态分解

    文章目录 1 本征模态函数 IMF 2 算法步骤 3 MATLAB代码 4 C代码 5 应用 缺点和改进 6 相关链接 EMD Empirical Mode Decomposition 是由美国国家宇航局的华裔科学家Norden e Hua
  • ​​insecure-configuration --复现

    有什么不对的地方希望大佬指导 也希望正在学习渗透的小伙伴加油 坚持下去 努力耕耘 总有收获 配置错误导致漏洞 insecure configuration 影响版本 全版本 启动环境 docker compose up d 运行成功后 环境
  • vue3+ts-数据自动滚动效果

    html
  • annconda 安装之后运行 conda 出现conda: command not found

    大概有两种方法 1 直接在终端运行export PATH anaconda的安装路径 bin PATH 但这样貌似只能 在这个终端使用 如果另开一个终端的话还会出现一样的问题 换句话说 直接运行 这个代码只是临时的 2 在home目录下运行
  • 数学符号大全(量词符号、代数符号等)

    量词符号 任意 存在 且 或 非 数学符号 alpha alfa 阿耳法 beta beta 贝塔 gamma gamma 伽马 deta delta 德耳塔 epsilon epsilon 艾普西隆 zeta zeta 截塔 eta et
  • 解决SQL语句警告提示

  • MySQL之mysqldump备份和恢复

    一 备份单个数据库 1 备份命令 mysqldump MySQL数据库自带的一个很好用的备份命令 是逻辑备份 导出 的是SQL语句 也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或生成备份的文件的过程 单实例语法 Syntax
  • 【深度学习】如何用PyTorch构建一个ResNet50网络?(附代码)

    ResNet Residual Network 是一种深度卷积神经网络 具有非常深的网络结构 并在ImageNet图像分类比赛中取得了很好的成绩 ResNet的一个关键点是增加了残差块 residual block 使网络更容易训练 Res
  • 用busybox构建最小根文件系统详解

    1 busybox源码获取 1 busybox官网下载地址 https busybox net 2 建议下载busybox的版本 尽量和你使用的编译环境 比如 Ubuntu 的版本相近 版本差太多可能需要解决一些编译时候的兼容问题 2 bu
  • 处理textarea的空格和换行

    刚发了一篇博客 然后发现csdn在发布用户的文章时好像没有处理输入的换行和空格 之前没有很在意 因为这次我辛苦缩进的代码居然显示一团糟 有点接受不了 鉴于最近做的需求遇到了这个问题 所以说一下这个问题 鉴于开发是在windows下的 lin
  • linux总结-vi、vim简介(3)

    什么是vim vim是从 vi 发展出来的一个文本编辑器 代码补完 编译及错误跳转等方便编程的功能特别丰富 在程序员中被广泛使用 vim键盘图 初次见面 看不懂上图没关系 不妨先继续学习vim 大致了解vim后再来细细品味它 vi vim
  • c语言字符串做为函数参数传递,c语言:字符串做为函数参数传递

    1 值传递 void swap int x int y int temp x x y y temp void main int a 10 b 20 swap a b 执行后 并不会交换 2 引用传递 void swap int x int
  • C# 连接mySQL数据库访问异常:“给定关键字不在字典中”解决方案

    在自己电脑上开发的软件连接本机mysql数据库一切正常 部署到客户那边 运行时报异常 给定关键字不在字典中 原因 本机MySql数据库和客户那边的数据库版本不一致 使用的mysql data dll版本太低导致的 解决 更换mysql da

随机推荐

  • 深入理解Java内存模型

    作者 谢照东 链接 https www zhihu com question 29037280 answer 43136323 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 我只是编码界的搬运工 深入理解J
  • 淘宝APP用户行为数据分析案例(附python代码及注释)

    淘宝APP用户行为数据分析案例 一 分析背景与目的 1 1背景与数据限制 电商平台的最核心的功能就是为买卖双方提供高效和体验良好的交易服务 得益于算法技术的发展 淘宝APP给买方提供了搜索 推荐及广告等系统和功能 使用户能高效地触达感兴趣或
  • 电力电子技术笔记-整流电路5

    电容滤波的不可控整流电路 在交 直 交变频器 不间断电源 开关电源等应用场合中 大量应用 最常用的是单相桥和三相桥两种接法 由于电路中的电力电子器件采用整流二极管 故也称这类电路为二极管整流电路 1 电容滤波的单相不可控整流电路 常用于小功
  • hugging face 官方文档——datasets、optimizer

    文章目录 一 Load dataset 1 1 Hugging Face Hub 1 2 本地和远程文件 1 2 1 CSV 1 2 2 JSON 1 2 3 text 1 2 4 Parquet 1 2 5 内存数据 python字典和D
  • 关于操作系统学习路线分析

    自己学习操作系统的时间也挺长了 虽然目前的成果还不是特别明显 但是在这段时间中还是学习了很多 今天想在这里和大家分享一下如何学习操作系统 以及如何制定学习操作系统的路线 以下是针对有过编程经历的 1 首先操作系统是人机交互的代理 那么作为操
  • 记录错误:cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\m

    使用Opencv时出现错误 cv2 error OpenCV 4 4 0 C Users appveyor AppData Local Temp 1 pip req build h4wtvo23 opencv modules imgproc
  • LTE学习笔记2:DMA多分址,制式,速率,性能指标

    1 DMA division multiple access 分多址 多址方式 TDMA 时分多址 FDMA 频分多址 CDMA 码分多址 SDMA 空分多址 PDMA 包分多址 3G技术 TD SCDMA TDD WCDMA FDD CD
  • windows通过wsl2安装ubuntu系统

    wsl Windows Subsystem for Linux 即用于Windows的安装Linux子系统 实现了在windows 10 或 windows 11上运行原生Linux系统的功能 wsl2 为其最新版本 可以更好的在Windo
  • 华为OD机试 - 消消乐游戏(Java)

    题目描述 游戏规则 输入一个只包含英文字母的字符串 字符串中的两个字母如果相邻且相同 就可以消除 在字符串上反复执行消除的动作 直到无法继续消除为止 此时游戏结束 输出最终得到的字符串长度 输入描述 输入原始字符串 str 只能包含大小写英
  • python音频分析工具_python – 鸟鸣音频分析 – 查找两个剪辑的匹配程度

    要做出这个答案 因为评论太久了 我基本上在这个领域工作 所以我觉得我有一些知识 显然 从我的立场来看 我建议使用音频而不是图像 我还建议使用MFCC作为特征提取 您可以将其视为总结 表征音频特定子带的系数 因为它们 GMM是去的 要执行此任
  • SSM入门—SpringMVC框架

    1 SpringMVC概述 Spring Web MVC 是一种基于Java的实现Web MVC设计模式的请求驱动类型的轻量级Web框架 2 MVC的设计模式 M model 模型 业务模型 数据模型 实体 业务代码 数据代码 V View
  • websocket(一)--握手

    最近在琢磨怎么实现服务端的消息推送 因为以前都是通过客户端请求来获取信息的 如果需要实时信息就得轮询 比如通过ajax不停的请求 websocket相当于对HTTP协议进行了升级 客户端和服务端通过websocket协议握手成功后 两者之间
  • 动态内存管理—(malloc、calloc、realloc、free)及常见使用错误

    目录 存在动态内存分配的意义 动态内存函数的介绍 malloc和free calloc realloc realloc在调整内存空间的是存在两种情况 由于上述的两种情况 realloc函数的使用就要注意一些 补充一点 常见的动态内存错误 对
  • 关于Q格式数据总结

    Q格式表示为 Qm n 表示数据用m比特表示整数部分 n比特表示小数部分 共需要 m n 1位来表示这个数据 多余的一位用作符合位 假设小数点在 n位的左边 从右向左数 从而确定小数的精度 例如Q15表示小数部分有15位 一个short 型
  • 为什么有些人年纪轻轻就赚到了很多钱?富人的底层逻辑是什么?

    在 史记 司马迁的书中 除开项羽本纪 秦始皇本纪 高祖本纪英雄的叙述以外 还有一个十分关键的章节目录 那便是 货殖列传 这一章节 十分详尽的纪录那时候商业服务 经济发展 买卖的状况 也体现了司马迁对财富和化学物质的观点 简言之 便是一部有关
  • 安全服务工程师面试题

    文章目录 你如何保护系统和网络免受恶意攻击 你会使用哪些工具和技术 你对密码安全有什么了解 你如何确保用户密码的安全 你如何保护敏感数据和机密信息的安全性 你会使用哪些技术 你如何识别和应对网络威胁 你使用哪些工具和技术 你如何进行网络安全
  • 运行应用程序,提示无法正常启动(0xc000007b)的解决办法

    本文转载自VBcom大牛的博客 感谢VBcom 最后更新 2019 2 28 如图 0xc000007b这个错误使无数玩家烦恼 问题描述 出现这个错误 可能是硬件的问题 也可能是软件的问题 但是 由于硬件引起该问题的概率很小 并且除了更换硬
  • Linux Kernel 编译流程 (一)

    1 config 文件产生 研究Linux Kernel config文件的产生 添加自己的配置 Linux Kernel 4 18 20 Source Insight 3 5 Ubuntu 18 04 arm linux gnueabi
  • FIFO的使用攻略(一看就会)

    一 IP核的方式 1 打开IP核 含义 FIFO是一个先进先出的存储队列 与其他RAM不同的是FIFO没有地址 先入先出 作用 作用就是作为数据的队列通道 让数据暂时缓存 以等待读取 用于异步FIFO模块来实现接口 接口双方都在自己的时钟下
  • WEB安全系列之如何挖掘任意文件读取漏洞

    0x01 前言 任意文件读取漏洞 从代码审计的角度讲一讲 0x02 什么是任意文件下载漏洞 一般的网站都提供读取文件功能 常规的思路是使用一个动态页面 php jsp aspx asp等 将待下载文件作为参数一般参数名称为filename