Web通用漏洞--文件包含

文件包含原理

在项目开发过程中,开发人员通常会将重复使用的函数写入单个文件中,在使用该类函数时,直接调用文件即可,无需重新编写,这种调用文件的过程成为文件包含。在文件包含过程中,如果用户可以控制所包含的文件,则为文件包含漏洞。

文件包含函数

PHP:include、require、include_once、require_once等

include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行

require函数出现错误的时候,会直接报错并退出程序的执行

Java:java.io.File、java.io.FileReader等

ASP.NET:System.IO.FileStream、System.IO.StreamReader等

LFI本地文件包含

LOCAL FILE INCLUDE(LFI)成为本地文件包含,顾名思义,包含文件为服务器本身的文件

  1. 配合文件上传进行文件包含,在进行文件包含时,可以配合文件上传,传入其他文件类型的文件,通过文件包含可以将文件进行PHP解析,从而帮助我们获取shell
  2. 包含本地文件,通过文件包含可以读取服务器上的文件。采用绝对路径读取或相对路径读取

    常见的敏感信息文件

    Windows:
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
C:\Windows\win.ini //Windows系统的一个基本系统配置文件

Linux:

/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数
  1. 包含日志文件

    在对网站进行访问时,中间件会记录访问者的相关信息,可以通过修改UA头或者其他地方将恶意代码插入日志文件中,利用文件包含对日志文件进行包含。

    Apahce默认日志文件位置
/var/log/apache/access.log

/var/log/apache2/access.log

/etc/httpd/logs/access_log
  1. 包含session文件

    通过修改session可控变量,将session文件中插入恶意代码,在对session文件进行包含

    Linux默认位置:
/var/lib/php/sess_PHPSESSID

/var/lib/php/sess_PHPSESSID

/tmp/sess_PHPSESSID

/tmp/sessions/sess_PHPSESSID

RFI远程文件包含

Remote File Include RFI远程文件包含

如果在PHP配置文件中,allow_url_include、allow_url_fopen两个选项打开的状态下可以进行远程文件包含,可以包含其他网站上的文件。

PHP伪协议

在进行文件包含时,还可以使用PHP中封装协议进行文件包含。

以上内容仅作学习,如有错误或瑕疵,欢迎批评指正,感谢阅读。

Web通用漏洞--文件包含的更多相关文章

  1. web安全原理-文件包含漏洞

    前言 起来吃完早饭就开始刷攻防世界的题,一个简单的文件包含题我竟然都做不出来我服了  拿出买的书开始从头学习总结文件包含漏洞! 一.文件包含漏洞 文件包含漏洞 文件包含函数的参数没有经过过滤或者严格的 ...

  2. 【web】php文件包含(利用phpinfo)

    Docker搭建复现环境 地址:https://github.com/vulhub/vulhub/tree/master/php/inclusion ps. github单独下载一个文件夹的方法: 安 ...

  3. 文件包含漏洞(pikachu)

    文件包含漏洞 在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用'包含'函数功能,比如把一系列功能函数都写进function.php中,之后当某个文件需要调用的时候,就直接在文 ...

  4. Tomcat AJP 文件包含漏洞复现(CVE-2020-1938)

    漏洞原理 Tomcat配置了两个Connecto,它们分别是HTTP和AJP. HTTP默认端口为8080,处理http请求:AJP默认端口8009,用于处理 AJP 协议的请求. AJP比http更 ...

  5. 文件包含(File Inclusion)

    什么是文件包含? 本室旨在为您提供利用文件包含漏洞的基本知识,包括本地文件包含 (LFI).远程文件包含 (RFI) 和目录遍历.此外,我们将讨论这些漏洞被发现后的风险以及所需的补救措施 在某些情况下 ...

  6. 小白日记37:kali渗透测试之Web渗透-手动漏洞挖掘(三)-目录遍历、文件包含

    手动漏洞挖掘 漏洞类型 #Directory traversal 目录遍历[本台机器操作系统上文件进行读取] 使用者可以通过浏览器/URL地址或者参数变量内容,可以读取web根目录[默认为:/var/ ...

  7. 风炫安全web安全学习第三十四节课 文件包含漏洞防御

    风炫安全web安全学习第三十四节课 文件包含漏洞防御 文件包含防御 在功能设计上不要把文件包含的对应文件放到前台去操作 过滤各种../,https://, http:// 配置php.ini文件 al ...

  8. 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击

    风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...

  9. 记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

    题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...

  10. WEB攻击与防御技术 pikachu——文件包含下载上传漏洞

    文件包含漏洞 一.LOCAL 上来就是一个选择,当我们选择一个球员的时候,如图所示,url会提交一个get请求 如果这个服务器架设在linux上我们就可以一直../../../../../到根目录然后 ...

随机推荐

  1. 2022-07-16:以下go语言代码输出什么?A:[];B:[5];C:[5 0 0 0 0];D:[0 0 0 0 0]。 package main import ( “fmt“ )

    2022-07-16:以下go语言代码输出什么?A:[]:B:[5]:C:[5 0 0 0 0]:D:[0 0 0 0 0]. package main import ( "fmt" ...

  2. 2022-04-20:小团去参加军训,军训快要结束了, 长官想要把大家一排n个人分成m组,然后让每组分别去参加阅兵仪式, 只能选择相邻的人一组,不能随意改变队伍中人的位置, 阅兵仪式上会进行打分,其中

    2022-04-20:小团去参加军训,军训快要结束了, 长官想要把大家一排n个人分成m组,然后让每组分别去参加阅兵仪式, 只能选择相邻的人一组,不能随意改变队伍中人的位置, 阅兵仪式上会进行打分,其中 ...

  3. Selenium - 元素操作(3) - 下拉框操作

    Selenium - 元素操作 下拉框才做可以分为两类: select标签的下拉框:使用Select类进行操作: 非select标签的下拉框:一般是 ul,li, div 等标签组成,使用元素定位的方 ...

  4. TestForPicGo

    如果显示,则为成功 否则,失败 同时为CN-BLOG的vscode插件进行测试

  5. [abc279 G] At Most 2 Colors

    G - At Most 2 Colors (atcoder.jp) 重点讲解方法三,因为方法三是蒟蒻都能想出来的方法一和方法二都可以借助方法三的思想推出 方法一 这是最简单的设置状态的方法,\(dp[ ...

  6. 【.NET源码解读】Configuration组件及自动更新

    Configuration组件是.NET中一个核心的.非常重要的组件.它提供了一种方便的机制,用于从配置文件.环境变量.命令行参数等各种数据源中读取和配置应用程序,以满足不同环境下应用程序的需求. 在 ...

  7. 从 Blast2GO 本地化聊一聊 Linux 下 MySQL 的源码安装

    Blast2GO 是一个基于序列相似性搜索的 GO 注释和功能分析工具,它可以直接统计分析基因功能信息,并可视化 GO 有向非循环图(DAG)上的相关功能特征,分析 BLAST.GO-mapping. ...

  8. [MAUI]写一个跨平台富文本编辑器

    @ 目录 原理 创建编辑器 定义 实现复合样式 选择范围 字号 字体颜色与背景色 字体下划线 字体加粗与斜体 序列化和反序列化 跨平台实现 集成至编辑器 创建控件 使用控件 最终效果 已知问题 项目地 ...

  9. LeetCode 周赛 350(2023/06/18)01 背包变型题

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 [BaguTree Pro] 知识星球提问. 往期回顾:LeetCode 单周赛第 348 场 · 数位 DP ...

  10. 一个高性能、低内存文件上传流.Net组件

    推荐一个用于轻松实现文件上传功能的组件. 项目简介 一个基于 .NET 平台的开源项目,提供了一个简单易用的 API,可以在 Web 应用程序中快速集成文件上传功能. 优化多部分流式文件上传性能:减少 ...