web安全-7-文件上传和文件包含漏洞

笔记是根据马士兵教育2024HVV专题编写,作为学习记录来分享,如有错误的地方请指正,谢谢

免责声明
本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!

1、文件上传漏洞原理

1.1、文件上传漏洞介绍

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。比如一句话木马脚本

1.2、常见的上传点

上传头像、上传简历、上传论文、上传资源、上传图片,上传写作,总之,一切上传文件都可能是可以利用的上传点

1.3、完成入侵所需的条件

(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;蚁剑连接需要路径 能够访问到
(3)上传的木马能正常运行。

1.4、webshell

Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
在这里插入图片描述

1.5、一句话木马

根据对应的运行环境,生成相应的webshell。然后上传。(生成工具包括连接可以使用蚁剑或中国菜刀,里面功能有生成一句话木马和连接)
在这里插入图片描述
这些木马脚本分为三段:

  1. 标记脚本语言的开始
  2. 执行后面请求到的数据
  3. 请求用户端数据

2、文件上传漏洞攻击流程

2.1、信息收集

2.1.1、中间件版本

iis 6.x 5.x中存在以下漏洞
1、格式解析:
在上传文件时限制不能上传脚本文件,比如:.php .jsp .asp
这时候如果传的asa,ashx等,会被解析成对应语言,这是一种格式解析漏洞
在这里插入图片描述
2、目录解析:
如果在可以创建目录的前提下,比如编辑器fckeditor。
可以新建一个目录比如1.php。
那么我们在1.php目录下上传1.txt 1.png。相当于1.txt 1.png在1.php中,1.txt中写入一句话木马
我们去访问1.php会执行脚本

3、分号解析
我们在上传文件时,文件名改为1.php;.jpg。这时候后缀是jpg是可以上传,上传到后端时会被解析。
分号解析有时候不能用,比如重命名。传到后端会重命名为2023011132.jpg。

iis 7.x
1、图片码
在这里插入图片描述
一张图片在后面加上.php然后运行,如果出现乱码而不是403等,就是存在漏洞。这张图片会以php形式执行

2.2、找上传点

使用字典。以下是举例,自己可以收集,加入字典
/upload.jsp
upload/
FCKeditor/
editor/

2.3、上传绕过

防守可能有:黑名单、白名单、文件内容

黑名单:限制不能上传的类型。
绕过方法:

  1. 双写phpphp
  2. 大小写PhP
  3. 扩展名(php5)
  4. 编码
  5. 空格
  6. 可以把一句话木马和照片合并

白名单:只能上传文件的类型
绕过方法:

  1. 1.php%00.jpg(需要结合目录去使用)(目录 /update/1.php%00.jpg)(这个也称为00截断)
  2. 在文件前加一个图片码配合配置文件,简单点可以按下面的步骤
  3. 可以把一句话木马和照片合并

3、文件包含漏洞原理

3.1、文件包含漏洞介绍

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。
由于没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

文件包含分为两种,一种是本地文件包含漏洞(LFI)一种是远程文件包含漏洞(RFI)

3.1.1、本地文件包含漏洞(LFI)

仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击者更多的会包含一些固定的系统配置文件,从而读取系统敏感信息。

3.1.2、远程文件包含漏洞(RFI)

能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况很严重。

3.2、利用条件

(1)allow_url_include=On&&allow_url_fopen=On(两个选项同时开启)
(2)用户可以动态控制变量

3.3、文件包含函数

PHP:Include()、Require()、Include_once()、Require_once() https://www.kancloud.cn/sunwei056/phpbase/312803
在这里插入图片描述

4、文件包含漏洞利用方式

4.1、查看变量

首先我们可以看可以修改的变量有哪些,这里用pikachu靶场来做演示

在这里插入图片描述

4.2、进行爆破

这时候我们可以去爆破,一般1-100。当然在真实环境这个文件命名规则不会这么简单

把这个数字标记payload,进行爆破
在这里插入图片描述在这里插入图片描述

4.3、查看返回的内容进行判断

这时候我们可以根据长度的不同去读
在这里插入图片描述

比如6,响应内容是
在这里插入图片描述
说明就存在文件包含漏洞了

4.4、根据其他数据部分报错,可以继续读取敏感文件

在这里插入图片描述

4.5、本地文件包含

我们在根目录下写一个payload
1.php

<?php
phpinfo();
?>

在这里插入图片描述
在网页中去访问,成功
在这里插入图片描述

4.6、远程文件包含

这里很贴心的提示:
在这里插入图片描述
1、去打开一下allow_url_include
在这里插入图片描述

2、搭建一个站点
http://hs.com/
将刚刚1.php文件放在站点下

3、这时候去访问一下,访问成功
在这里插入图片描述

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值