web安全学习-文件上传


文件上传 漏洞:
Upload_Attack_Framework.pdf

学习记录:
https://blog.csdn.net/Kevinhanser/article/details/81612997

webshell的原理

<?php @eval($_post[''c]);?>

@ :一直错误信息的返回
eval: 把字符串当作PHP代码执行
$_POST[‘c’] :POST接收一个c=xxx的指令,c时可以自由更改的
eg: c=pgpinfo() 那么通过eval执行phpinfo()函数




简单

基于客户端的js检测

  1. 简介
    这类检测通常在上传页面中含有专门检测文件上传的js代码
    通常见到的就是检测扩展名是否合法
    通常这种检测都伴随着页面弹框,检测流程实在本地的,不会上传流量到服务器
    检测内容:
    在这里插入图片描述

  2. 测试
    上传文件:test.php
    发现有弹框报错
    可以用firebox的插件禁止检测报错或者brup代理工具进行绕过提交

  3. 使用bp代理抓包
    在本地将扩展名改成.jpg
    文件名:test.php -> test.jpg
    bp抓包在显示文件名字段是test.jpg
    在bp里将filename = “test.jpg” 改成fileanme= “test.php”



服务器检测绕过(目录路径检测)

1.简介
目录路径检测,一般就是检测路径是否合法,但稍微特殊一点的都没有防御。
检测内容:
在这里插入图片描述

  1. 绕过
    1、主要是利用%00截断攻击
    比如POST的是 test.php%00.jpg
    服务器端的php代码未进行检测就被直接写入系统了
    此时的 content-type 还是image/jpeg,但是文件名已经被截断了,最后上传到服务器的文件是test.php

    2、 修改上传目录(IIS 6.0)
    如果html中有一个隐藏标签,这是文件上传时默认的文件夹,而我们对这个参数时可控的
    使用bp将value的值改为test.php,并提交一句话木马,如果此时不存在此目录,则会先创建目录,然后将一句话写入该目录,而如果是IIS 6.0,则会解析网页的木马。



MIME-type绕过

  1. 简介
    检测上传到服务器的文件类型在bp抓包看到类似于 Content-Type:image/gif
    检测内容

在这里插入图片描述

  1. 绕过
    利用bp,抓取http请求,在repeater重放修改MIME-type绕过验证 image/jepg


文件扩展名绕过

1.简介
通常是针对文件的扩展名后缀进行检测
检测内容:
在这里插入图片描述

黑名单验证绕过
总的来说,用bp工具截断HTTP请求,利用intruder模块进行枚举,找出黑名单中没有过滤的后缀名。

一、htaccess文件绕过
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。
通过htaccess文件可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名

白名单验证**

00截断绕过
**原理:**0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个函数当作结束符,就会以为读取结束

在PHP5.3之后的版本中完全修复了00截断。并且00截断受限与GPC,addslashes函数



服务端检测绕过(文件内容检测)

  1. 简介
    如果文件内容检测设置的比较严格,那么上传攻击将变得非常的困难,也可以说它是在代码层检测的最后一道关卡
    如果他被突破了,结算没有代码层的漏洞,也给后面利用应用层的解析漏洞带来了机会
    以图像类型内容检测来举例
    检测内容:
    在这里插入图片描述

  2. 文件幻术检测
    比如jpg文件的文件头value= FF D8 FF E0
    gif文件头 Value = 47 49 46 38 39 61
    png 文件幻数检测就要在文件开头写上下 Value = 89 50 4E 47
    然后再文件幻术后面加上一句话代码就好
    3.文件相关信息检测
    图像文件相关信息检测常用的就是getimagesize()函数
    只要把文件头部分伪造好就行,就是在幻术的基础上再加入一些图片信息使它能通过检测

  3. 文件加载检测
    一般是调用API或函数加载测试
    常见的时图像渲染测试,在还有的甚至是进行二次渲染
    对渲染/加载测试的攻击方式是代码注入绕过
    对二次渲染的攻击方式是攻击文件加载器自身

  4. 对渲染/加载测试攻击-代码注入绕过
    可以用图像处理软件对一张图片进行代码注入,其原理是在不破坏文件本身的渲染情况下找一个空白区进行填充代码。
    如果是二次渲染,基本没法绕过

    二次渲染相当于是把原本属于图像数据的部分抓了出来,再用自己的API 或函数进行重新渲染

在这个过程中非图像数据的部分直接就被隔离开了




解析攻击

:利用解析器漏洞

Apache解析漏洞

  • Apache在解析 一个文件时又一个原则 :当碰到不认识的扩展名时,将会从后向前解析,知道碰到认识的扩展名为止。
    -test.php.xx
  • 在Apache1.x和Apache2.x中都存在解析漏洞。

IIS解析漏洞

  • 如果一个目录以“xxx.asp"的形式命名,那么该目录下的所有类型文件都会被当作asp文件来进行解析执行。
  • 如果一个文件的扩展名采用 “.asp;*jpg” 的形式,那么该文件也会被当作asp文件解析执行。



上传攻击框架

图片webshell上传

在服务器端php代码中,可能还会对文件做文件类型检查,检查文件二进制前几个字符,从而判断文件是否为正确类型。

文件上传过程:服务器获取文件–》保存上传为临时文件(使用重命名函数,准备移动)–》重命名移动零时文件



复杂(二次渲染)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值