42、WEB攻防——通用漏洞文件包含LFIRFI伪协议编码算法代码审计

文章目录

  • 文件包含
    • 文件包含原理
    • 攻击思路
    • 文件包含分类
  • session
  • PHP伪协议进行文件包含

在这里插入图片描述

在这里插入图片描述

文件包含

文件包含原理

文件包含其实就是引用,相当于C语言中的include <stdio.h>。文件包含漏洞常出现于php脚本中,当include($file)中的$file变量用户可控,就造成了文件包含漏洞。**注意被包含的文件中只要存在php代码,就可以被php解释器解析,不受文件后缀名的影响。**例如?file=1.txt1.txt中的php代码也会被解析。

攻击思路

  1. 配合文件上传进行获取webshell。上传图片(带有脚本后门),包含这个文件,脚本代码就会被执行;
  2. 利用php伪协议直接读取文件或者直接执行php代码;
  3. 配合日志文件进行获取webshell。日志文件记录访问者UA信息,修改UA信息为后门代码,包含就会触发后门代码;
  4. 配合会话文件进行获取webshell。

在这里插入图片描述

黑盒测试中,当URL中出现?x=文件名,修改为文件路径测试文件包含漏洞。

文件包含分类

本地包含(LFI)和远程包含(RFI)的区别:一个只能包含本地文件,一个可以远程加载文件(可以使用php伪协议中的http://https://协议)。具体形成原因是由代码和环境配置文件决定。在php中可以通过配置php.ini文件来禁止远程文件包含,allow_url_fopen=Onallow_url_include=On

远程文件包含示例?file=http://www.baidu.com,使用http://https://协议加载百度。
在这里插入图片描述

  1. 在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。
  2. php伪协议资料:php伪协议、php伪协议

session

linux下,默认保存session的文件路径/tmp/var/lib/php/session;Windows下session文件的路径不固定。
关于session,只要你与一个网站建立连接,网站某个文件夹下就会产生session文件,关闭浏览器或者过了一段时间,session就会失效,再次建立连接的话就会产生新的session文件。

服务器端的session文件命名如下,尝试简单爆破是几乎不可能的。
在这里插入图片描述
实际上,数据包中的cookie中有个PHPSESSID的值,服务端将sess_PHPSESSID的值进行拼接,就是当前会话session的文件名。
在这里插入图片描述

如何通过session文件进行文件包含?(以php为例)
利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含,简单来说,上传一个文件名为PHP_SESSION_UPLOAD_PROGRESS的文件,服务器将使用sess_和这个数据包的cookie字段的PHPSESSID生成一个session文件,session文件的文件内容就是<?php system('ls');?>

在这里插入图片描述
注意:php中session.upload_progress.cleanup默认是开启的,这个东西一旦开启,就是说当文件上传结束后,php将会立即清空对应session文件中的内容。要用到条件竞争写入后门文件,防止上传的后门代码直接失效。浅谈 SESSION_UPLOAD_PROGRESS 的利用

PHP伪协议进行文件包含

在包含文件的时候,通常include('conn/'.$file),也就是给你固定到一个目录下,这时候使用..进行跳转,?file=../../xxx。但是使用伪协议的时候就会使得php伪协议失效。因此,要想使用php伪协议,文件包含代码必须为include($file)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
除此之外,不同的协议,需要开不同的开关。如http://https://协议:
在这里插入图片描述
填充垃圾字符,绕过文件后缀。
在这里插入图片描述

参考:文件包含截断的3种方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle笔记-为表空间新增磁盘(ORA-01691)

如下报错&#xff1a; 原因是Oracle表空间满了&#xff0c;最好是新增一个存储盘。 #查XXX命名空间目前占用了多大的空间 select FILE_NAME,BYTES/1024/1024 from dba_data_files where tablespace_name XXXX #这里的FILE_NAME能查到DBF的存储位置#将对应的datafile设置为30g…

C++中的析构函数

一、析构函数概念 析构函数不是完成对象的销毁&#xff0c;对象的销毁是由编译器完成的。析构函数完成的是对象中资源的清理工作。通常是对对象中动态开辟的空间进行清理。 二、析构函数特性 1.析构函数的函数名是 ~类名 2.析构函数无参数无返回值 3.一个类中只能有一个析…

如何让 Pages 文字分为两栏或更多栏?

通常一份文件都是由上往下仅有「一栏」而已&#xff0c;但在某些情况的排版&#xff0c;我们需要两栏甚至三栏的设计&#xff0c;在Pages 要如何做到呢&#xff1f;来看看吧。 将 Pages 文件改为双栏式设计 点一下「格式」>「布局」&#xff0c;就可以看到预设的「直栏」数…

很容易感到疲惫,怎么办?

最近&#xff0c;经常听到一些朋友诉苦&#xff0c;说&#xff1a;总觉得每天下来都特别累&#xff0c;也没干什么&#xff0c;就觉得无精打采&#xff0c;没有动力&#xff0c;提不起劲&#xff0c;什么都不想干…… 这种疲惫不是身体层面的&#xff0c;而是精神层面的。身体不…

外汇天眼:外汇天眼:注意,19个外汇平台因诈骗被监管拉黑!

近年来&#xff0c;全球金融市场出现了众多非法投资平台&#xff0c;这些平台利用虚假宣传和高回报承诺欺骗投资者&#xff0c;造成了严重的经济损失。为了保护投资者利益&#xff0c;监管机构也在加大力度打击这些非法平台。就在最近&#xff0c;又有19个外汇交易平台因涉嫌诈…

redis下载与安装教程(centos下)

文章目录 一&#xff0c;redis下载1.1上传到linux服务器上 二&#xff0c;redis安装2.1 安装依赖2.2 解压包2.3 编译并安装2.4 指定配置启动2.5 设置redis开机自启 一&#xff0c;redis下载 官网&#xff1a; https://redis.io1.1上传到linux服务器上 我用filezila上传到/us…

【AWS】step-functions服务编排

文章目录 step-functionsState machine typeStandard workflowsExpress workflows design skillsError handlingsaga Transaction processing控制分布式系统中的并发性 收费 作为AWS Serverless无服务器的一个重要一环 使用step-functions方法将 AWS 服务链接在一起 step-funct…

跟着cherno手搓游戏引擎【22】CameraController

前置&#xff1a; YOTO.h: #pragma once//用于YOTO APP#include "YOTO/Application.h" #include"YOTO/Layer.h" #include "YOTO/Log.h"#include"YOTO/Core/Timestep.h"#include"YOTO/Input.h" #include"YOTO/KeyCod…

基于最新koa的Node.js后端API架构与MVC模式

Koa 是一个由 Express 原班人马打造的现代 Web 框架&#xff0c;用于 Node.js。它旨在提供一个更小、更富有表现力和更强大的基础&#xff0c;用于 Web 应用和 API 开发。Koa 不捆绑任何中间件&#xff0c;它提供了一个优雅的方法以组合不同的中间件来处理请求和响应。 Koa 的核…

Golang与Erlang有什么差异

Golang和Erlang是两种备受关注的编程语言&#xff0c;它们各自具有独特的特点和优势。下面我将简单的探讨一下Golang和Erlang之间的差异&#xff0c;并且分析它们在并发模型、运行环境、函数式编程和领域特性等多个方面的不同之处。 并发模型 Golang使用goroutines和channels…

从 AGP 4.1.2 升级到 7.5.1——动态添加仓库

AGP 升级问题 Build was configured to prefer settings repositories over project repositories but repository ‘maven4’ was added by plugin ‘***’ 添加仓库警告信息说&#xff1a; 依赖查找以你在 setting.gradle 文件配置的仓库为准&#xff08;因为你配置了 PRE…

『运维备忘录』之 Yum 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

【多模态大模型】视觉大模型SAM:如何使模型能够处理任意图像的分割任务?

SAM&#xff1a;如何使模型能够处理任意图像的分割任务&#xff1f; 核心思想起始问题: 如何使模型能够处理任意图像的分割任务&#xff1f;5why分析5so分析 总结子问题1: 如何编码输入图像以适应分割任务&#xff1f;子问题2: 如何处理各种形式的分割提示&#xff1f;子问题3:…

Redis服务

目录 介绍 特点 缓存 安装 安装单机版redis实例 1、创建工作目录 2、下载对应的redis包 3、解压到创建好的工作目录 4、安装编译工具 5、进入解压后的目录执行make编译 6、配置环境变量 7、备份配置文件 8、修改配置文件 9、创建存放数据的目录 配置redis为syste…

Django连接Mysql

修改setting.py配置文件 连接前&#xff0c;需要创建数据库 安装mysql客户端 因为连接需要一个客户端&#xff0c;而python没有客户端&#xff0c;所以就需要一个客户端来接收你填写的参数 pip install mysqlclient

【知识图谱+大模型的紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph&#xff1a;解决大模型在医疗、法律、金融等垂直领域的幻觉 Think-on-Graph 原理ToG 算法步骤&#xff1a;想想再查&#xff0c;查查再想实验结果 论文&#xff1a;https://arxiv.org/abs/2307.07697 代码&#xff1a;https://github.com/IDEA-FinAI/ToG Think…

JAVA面试汇总总结更新中ing

本人面试积累面试题 多线程微服务JVMKAFKAMYSQLRedisSpringBoot/Spring 1.面向对象的三个特征 封装&#xff0c;继承&#xff0c;多态&#xff0c;有时候也会加上抽象。 2.多态的好处 允许不同类对象对同一消息做出响应&#xff0c;即同一消息可以根据发送对象的不同而采用多种…

GPIO结构

GPIO简介 GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V,部分引脚可容忍5V 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电平或电压&#x…

Linux实验记录:使用DHCP动态管理主机地址

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 动态主机配置协议&#xff08;DHCP&…

MongoDB从入门到实战之Docker快速安装MongoDB

前言 在上一篇文章中带领带同学们快速入门MongoDB这个文档型的NoSQL数据库&#xff0c;让大家快速的了解了MongoDB的基本概念。这一章开始我们就开始实战篇教程&#xff0c;为了快速把MongoDB使用起来我将会把MongoDB在Docker容器中安装起来作为开发环境使用。然后我这边MongoD…