文件上传漏洞(1)------基础原理和分类

一,定义

文件上传漏洞是指用户上传了可执行的恶意脚本文件,并通过此脚本获得了控制服务器端的能力。

(1)文件上传漏洞的一般问题

  • 上传文件是web脚本语言,服务器的web容器解释并执行了这个恶意脚本,攻击者获得webshell
  • 上传文件是木马,病毒文件,诱骗用户或管理员下载执行
  • 上传钓鱼文件

(2)webshell

  • 恶意脚本文件
  • 也可以称为网页后门
  • 功能强大,比如查看服务器目录文件,执行系统命令等

二,常用的绕过姿势

(1)JS检测绕过(前端检测)

如果上传的文件的后缀不被允许,前端JS检测不合格,弹窗
【JS源码分析】

  • 在这里插入图片描述

    selectFile()函数 --> 获取后缀 --> 判断 --> 不合法弹窗

【如何判断】

  • 上传.php文件,只弹窗,不发包。☞证明为前端检测

【如何绕过】

  • 使用浏览器插件,删除检测文件后缀的JS代码
  • 修改恶意脚本的后缀为允许的后缀,JS检测后发包,用抓包工具抓包改后缀。

(2)文件后缀绕过

服务器端代码限制某些后缀不允许上传。
利用容器的解析漏洞绕过上传。

【源码分析】

  • 在这里插入图片描述
pathinfo()  --> 得到后缀  -->  判断合法

【绕过方法】

  • ①大写绕过(eg:.PHp)
  • ②找到黑名单扩展的漏网之鱼(eg:phtml,php3,php4…)

(3) content-type文件类型绕过

【原理】
后端通过前端http request包中的content-type判断文件类型,通过抓包修改。

【【实列】】
①只能上规定的图片格式

  • 在这里插入图片描述

②burp抓包修改content-type

  • 在这里插入图片描述

③发包

  • 在这里插入图片描述

④查看源码分析

  • 在这里插入图片描述

(4) 图片马原理

在php中存在相似文件的上传漏洞,PHP函数getimagesize()可以获取图片的长,宽,高等信息。
通过该函数判断是否为图片,若不是,不允许上传。

制作图片马,将webshell的代码追加到图片文件中上传绕过

利用图片马的前提:
Apache 的 conf 里添加一行配置 AddType application/x-httpd-php .png

  • 目的:png格式的文件也能运行php程序

【源码分析】

  • 在这里插入图片描述

(5)文件后缀截断绕过攻击

【原理】

  • 截断类型:PHP的 %00截断
  • 原理:截断符将后面的所有字符删
  • 条件: PHP版本小于5.3.4,PHP的magic_quotes_gpc为OFF状态

文件名XXX.PHP%00.png

通过截断的操作文件名为XXX.php

实验环境:php版本为5.2.17
①先上传.php测试

  • 在这里插入图片描述

②添加%00.png再次上传测试

  • 在这里插入图片描述

③通过URL访问这个文件

  • 由于%00截断作用,文件变为phpinfo.php
  • 注意:由于URL编码问题,要将% --> %25
  • 在这里插入图片描述

(6)文件头部内容验证绕过

【检验原理】

  • 后端通过上传文件的头部标识来识别文件类型
    .

【绕过思路】

  • 在一句话马文件的前面添加允许文件格式的头部

(7)配合文件包含漏洞绕

【应用环境】

  • WAF或者后端在当文件后缀为php时,检测文件内容
  • 站点存在文件包含漏洞时

【绕过思路】

分离

  • 1. 当允许php文件上传,不过会检测危险函数内容时
  • ①先上传 <?php include(XXX.txt) ?> 的A.php
  • ②上传木马后缀且命名为 XXX.txt
  • ③访问A.php
  • 2.当站点存在文件包含漏洞时
  • ①将php文件的后缀修改为.png;并上传
    在这里插入图片描述
  • ②访问尝试,无法执行
  • 在这里插入图片描述
  • ③利用文件包含漏洞执行php代码
    在这里插入图片描述

(8)配合服务器解析漏洞绕过

apache的从右往左

(9)利用配置错误绕过

当apache的配置文件中有如下时

  • AddType application/x-httpd-php . png ------文件后缀为png的文件可以以php方式执行
    .
  • AddHandler php5-script .php------只要文件名包含php,就会当中php文件执行
  • 在这里插入图片描述

(10)黑名单防护时配合.htaccess文件绕过

条件

  • httpd.conf中的设置允许读取.htaccess文件中的配置指令
  • 在这里插入图片描述

【exp】
①抓包修改为.htaccess

  • 在这里插入图片描述在这里插入图片描述

.
②在httpd.conf没有设置AddType application/x-httpd-php . png的前提下依然可以执行图片马等文件

  • 在这里插入图片描述

.
③若override None 或者管理员发现删除了.htaccess文件

  • 在这里插入图片描述

三,文件上传的防护

  • 添加白名单判断文件的后缀是否合法

  • 对上传的文件进行重命名

  • 文件上传的目录设置为不可执行

  • 使用随机数改写文件名和路径,使得攻击者无法访问

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值