四、任意文件读取漏洞

一、介绍

解释:任意文件读取漏洞就其本身来说就是,攻击者绕过网站防御者设置的防御,读取到了正常使用者不应该读取到的内容。网站开发者使用不同的语言,任意文件读取漏洞利用方式就不同

二、不同开发语言的不同漏洞点

1.PHP

介绍:PHP的任意文件读取漏洞主要通过下面这些函数错误使用导致

1.1 PHP常用文件包含函数

  1. require():找不到被包含的文件会产生致命错误,并停止脚本运行
  2. include():找不到被包含的文件只会产生警告,脚本继续执行
  3. require_once()与require()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含
  4. include_once()与include()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含

1.2 伪协议

解释:PHP内置了很多伪协议,其可能会造成任意文件读取,执行任意命令等问题,这样的知识点是PHP“任意文件读取漏洞”的关键

文章在此:二、PHP伪协议

1.3 目录穿越

解释:因为include对内容的解析问题,存在该漏洞,包括在window上面有类似但不同的情况(如下图),下面例子cd到一个不存在的目录11515,然后../返回上一级目录,此时相当于原地踏步,这种情况可能就会导致攻击能够绕过一些正则进行目录穿越来暴力访问文件

在这里插入图片描述

<?php
include 'dwadawdaw?/../a.php';
?>
上面的例子相当于先cd 进入了dwadawdaw?这个目录发现其不存在,然后执行../a.php,翻译过来相当于include 'a.php';include 'dwadawdaw?/../../a.php'; 等价于include '../a.php';

1.4 任意代码执行

解释:在php里面include函数,在执行的时候,如果可以将被包含文件里面的内容当做php代码执行,也就是说,比如include包含了一个png文件,但是里面写的都是php代码,这个png就会被当作php代码去执行,如果此时png里面是一句话木马的话,此时网站就被攻击者植入了webshell

例如:
在这里插入图片描述
解释:从上图文件可知道,page对应include加载的文件,a文件内容如下,其并非php后缀文件但是却被当作php执行了

<?php
echo 'odwadawdwak';
?>

1.5 远程文件包含

解释:当php配置项allow_url_includeallow_url_fopen状态为ON的话,则include/require函数是可以加载远程文件,远程文件->其它服务器上的php文件,这种设置如果代码存在文件包含漏洞可能会造成致命的威胁

三、重要文件的作用

解释:当我们发现文件读取漏洞,一般会对重要文件进行读取,例如/etc/passwd,下面就会说我们能够从这些文件中获取哪些有用的信息

  • /etc/passwd:Linux系统保存用户信息及其工作目录的文件,读到这个文件我们就可以知道系统存在哪些用户、他们所属的组是什么、工作目录是什么;其中目录为/home/xxx一般是普通用户,其它一般是软件用户(权限:所有用户/组可读)
    在这里插入图片描述

  • /etc/shadow:Linux系统保存用户信息及密码(hash)的文件,比/etc/passwd更加具备价值;其中有用户的哈希密码,如果获取可能在本地进行碰撞获取明文(权限:所有者具有读写权限,属组(shadow)具有只读权限,其他用户没有任何权限)
    在这里插入图片描述

  • /etc/apache2/:apache的配置文件保存在此目录下面,/etc/apache2/apache2.conf是主配置文件,/etc/apache2/sites-enabled下面有具体的包括网站路径端口域名等配置(如下图)
    在这里插入图片描述

  • /etc/nginx/:nginx的配置文件保存在此目录下面,/etc/nginx/nginx.conf是主配置文件,/etc/nginx/sites-enabled下面有具体的包括网站路径端口域名等配置(如下图)
    在这里插入图片描述

  • /proc:通常存储着进程动态运行的各种信息,本质上是一种虚拟目录,如果遇到文件读取漏洞,可以通过读取

    • /proc/self/cmdline读取一些敏感信息(可能有当前项目启动时,启动命令例如:python3 app.py);
    • /proc/[pid]/cmdline则与上面类似,读取pid号对应进行的一些敏感信息
    • /proc/self/mem:其是一个特殊文件,它提供对当前进程地址空间的访问,例如在Flask里面启动项目加载一个密钥,其就存在于此文件中,可以先通过/proc/self/maps(其里面包含进程相关的启动地址、结束地址、权限、内存区域对应文件的路径),下面演示相关代码由于篇幅问题在另一篇文章:Flask存储在内存中的密钥被读取

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速更改flutter已有项目的项目名称和id等

如果你使用了别人已有的仓库模板或者想更改现有项目的名称&#xff0c;是一件非常繁琐的工作&#xff0c;需要修改全平台的文件还是相当麻烦的&#xff0c;所以这里推荐一个小工具&#xff0c;可以帮助大家快速实现更改项目名称的目的&#xff0c;这个工具地址&#xff1a;rena…

threejs中点击物体事件

// 定义点击事件 document.addEventListener(click, event > {// 鼠标控制对象const mouse new THREE.Vector2(); // 得到鼠标相对于容器的坐标mouse.x ( event.clientX / window.innerWidth ) * 2 - 1;mouse.y - ( event.clientY / window.innerHeight ) * 2 1;// 执行…

【Maven】009-Maven 简单父子工程搭建

【Maven】009-Maven 简单父子工程搭建 文章目录 【Maven】009-Maven 简单父子工程搭建一、需求说明1、结构2、第三方库 二、工程搭建1、父工程第一步&#xff1a;创建父工程第二步&#xff1a;引入公共依赖 lombok 和管理 hutool 依赖版本 2、公共子模块第一步&#xff1a;创建…

vue2 el-table行悬停时弹出提示信息el-popover

实现方法&#xff0c;用到了cell-mouse-enter、cell-mouse-leave两个事件&#xff0c;然后在表格的首列字段中&#xff0c;加个el-popover组件&#xff0c;当然你也可以选择在其他字段的位置来显示提示框&#xff0c;看自己的需求了。 示例代码&#xff1a; <el-table cell…

2024年【危险化学品生产单位主要负责人】免费试题及危险化学品生产单位主要负责人实操考试视频

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位主要负责人免费试题考前必练&#xff01;安全生产模拟考试一点通每个月更新危险化学品生产单位主要负责人实操考试视频题目及答案&#xff01;多做几遍&#xff0c;其实通过危险化学品生产单位主要…

rust跟我学三:文件时间属性获得方法

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎样获得杀毒软件的病毒库时间的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址…

微信小程序防止截屏录屏

一、使用css添加水印 使用微信小程序原生的view和css给屏幕添加水印这样可以防止用户将小程序内的隐私数据进行截图或者录屏分享导致信息泄露&#xff0c;给小程序添加一个水印浮层。这样即使被截图或者拍照&#xff0c;也能轻松地确定泄露的源头。效果图如下&#xff1a; 代码…

OpenHarmony4.0适配LVDS屏幕驱动

1.概述 手头有一块RK3568的开发板OK3568-C&#xff0c;但是还没有适配OpenHarmony&#xff0c;用的还是LVDS屏幕&#xff0c;但是官方和网上好像还没有OpenHarmony4.0的LVDS屏幕驱动的通用实现&#xff0c;所以决定尝试了一下适配该开发板&#xff0c;完成LVDS屏幕驱动的适配&…

MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)

目录 一、MongoDB 1.1、简介 a&#xff09;MongoDB 是什么&#xff1f;为什么要使用 MongoDB&#xff1f; b&#xff09;应用场景 c&#xff09;MongoDB 这么强大&#xff0c;是不是可以直接代替 MySQL &#xff1f; d&#xff09;MongoDB 中的一些概念 e&#xff09;Do…

meter报OOM错误,如何解决?

根据在之前的压测过程碰到的问题&#xff0c;今天稍微总结总结&#xff0c;以后方便自己查找。 一、单台Mac进行压测时候&#xff0c;压测客户端Jmeter启动超过2000个线程&#xff0c;Jmeter报OOM错误&#xff0c;如何解决&#xff1f; 解答&#xff1a;单台Mac配置内存为8G&…

ATA-1222A宽带放大器在二极管测试中的应用有哪些

宽带放大器是一种用于放大高频信号的电子设备&#xff0c;它在二极管测试中有多种应用。下面安泰电子将介绍宽带放大器在二极管测试中的几种常见应用。 宽带放大器可以用于二极管参数测试。二极管是一种常见的半导体器件&#xff0c;有正向电压-电流特性和反向电压-电流特性。为…

SpringBoot-Starter 自动锁组件

在日常业务开发的过程中&#xff0c;我们经常会遇到存在高并发的场景&#xff0c;这个时候都会选择使用redis来实现一个锁&#xff0c;来防止并发。 但是很多时候&#xff0c;我们可能业务完成后&#xff0c;就需要把锁释放掉&#xff0c;给下一个线程用&#xff0c;但是如果我…