当前位置:网站首页>渗透测试-文件上传/下载/包含
渗透测试-文件上传/下载/包含
2022-06-27 03:58:00 【amingMM】
渗透测试-文件上传/下载/包含
概述
文件上传漏洞是指用户上传了一个可执行的脚本文件,
并通过此脚本文件获得了执行服务器端命令的能力。
常见场景是web服务器允许用户上传图片或者普通文本文件保存,
而用户绕过上传机制上传恶意代码并执行从而控制服务器。
这种漏洞是getshell最快最直接的方法之一
上传文件操作本身是没有问题的,问题在于文件上传到服务器后,服务器怎么处理和解释文件。
一.常见校验上传文件的方法
客户端校验
1.通过javascript来校验上传文件的后缀是否合法,可以采用白名单,也可以采用黑名单的方式
- 判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包 。
服务器端校验
1.校验请求头 content-type字段
- 用PHP检测

2. 正则匹配来判断文件幻数(文件头)内容是否符合要求
一般来说属于白名单的检测,常见的文件头(文件头标志位)如下
(1).JPEG;.JPE;.JPG,”JPGGraphicFile”(FFD8FFFE00)
(2).gif,”GIF89A”(474946383961)
(3).zip,”ZipCompressed”(504B0304)
(4).doc;.xls;.xlt;.ppt;.apr,”MSCompoundDocumentv1orLotusApproachAPRfile”(D0CF11E0A1B11AE1)
3. 文件加载检测:
一般是调用API或函数去进行文件加载测试,例如图像渲染测试,当测试结果正常的时候才允许上传
一次渲染(代码注入)
二次渲染
4. 后缀名黑名单、白名单 后缀名校验
5. 自定义
6. WAF校验
即使用不同的WAF产品来进行过滤,通常是独立与服务程序的一段中间程序或者硬件
二.对应校验的绕过方法
文件 包含 基本操作
https://www.hetianlab.com/expc.do?ec=ECIDef72-03b9-4edc-8626-d1e623989ecb



利用目录穿越反弹SHELL







































实战测试















- 一句话 不行



















---- 开机启动

- windows 10 的启动目录
- 注意免杀的 问题就可以
上传漏洞原理利用






































上传漏洞 挖掘分析

# 废话没有直接干货
# PHP $_FILES 函数

- 测试下


PHP move_uploaded_file() 函数
- ——将上传的文件移动到新位置。
若成功,则返回 true,否则返回 false。


- 上传 MIME 文件头/后缀 是否存在







02 文件上传漏洞原理与利用

第一章:文件上传漏洞原理与流程

1.1 文件上传漏洞原理


post urldecode发送 报文
上传文件 multipart
- php 特有 临时目录


编码形式 为 multipart/form-data 报文
放过


- 上传报文






- php 生命周期之后 删除几秒 特有 将 文件内容 写入 临时文件
利用phpinfo信息LFI临时文件 高级利用



- 本地文件包含 上传漏洞 利用
1.2 文件上传检测流程
- 绕过 检测点

文件名
文件内容 检测
恶意代码 webshell 检测
隔离区
*(跟解析漏洞 00截断配合)
读取文件内容 ----未知位置


答案:
1、正确答案:A
2、正确答案:B
3、正确答案:B
4、正确答案:A
5、正确答案:A
第二章:前端检测绕过
第一节 客户端检测绕过


- 提交包 校验 app 签名

ajax 检测
删除 检测函数 审查元素


ctrl + U


2.2 提交报文修改检测



打开代理
选择 白名单 类型 文件





可以对 历史 进行 重放

APP 下 burp 抓包











安卓 进行 代理 抓包




答案:
1、正确答案:D
2、正确答案:D
3、正确答案:B
4、正确答案:A
5、正确答案:A
第三章:服务端检测绕过
3.1 MIME类型检测绕过
服务端绕过 需要我们 去猜程序员的 检测方法
不像前端 很简单 操作 就绕过去

- 扩展名 黑白名单
- MIME/type 浏览器生成的 也是根据 拓展名
- 文件内容 图片 文本 evel system phpinfo 不是很正常内容的
找到盲点
组合 上传

w3school
关注 白名单 的 mime 类型
php里的 $_FILES数组 文件参数 MIMEtype
判断 是否为 图像类型


MIMEtype 浏览器自动生成
可以修改 不影响上传内容





3.2 文件内容检测绕过

检测 文件中 是否 有 恶意内容
开头 有 魔术标记

GIF89a







三位 的 16进制 3个字节
JPG
%ff %d8%ff
url 编码 形式


完整文件结构 检测








动态 混淆




测试 被 匹配的 关键字
替换 关键字
第三节 文件上传小技巧




小技巧
filename 多个
目录可控 穿越
禁止访问 php










查看 目录 是否被 禁止





文件夹 验证 避免 路径要打全
绕过 waf …/ …/
…/./…/


拿到后台 之后的 操作 白名单
- 允许上传的 参数 提示



答案
1、正确答案:A
2、正确答案:B
3、正确答案:A
4、正确答案:A
5、正确答案:B
第四章:解析漏洞
第一节 常见解析漏洞
服务器 访问 静态文件非动态文件 --解析成–> 动态文件 一种错误
iis/nginx + php fastcgi 取值错误 解析漏洞 (配置错误)

伪静态
默认配置
新版的fastcgi 默认 只有 默认 php 可以解析

环境 php7

图片 里有 phpinfo 检测了 图片 内容


新版的 fastcgi 不会出现 。
nginx 文件名逻辑漏洞 CVE-2013-4547

看版本 可以看 响应报文

加一个空格
C+S+U url解码


apache 解析漏洞

配置错误
也是 留后门 的 方法

IIS 5.x/6.0 解析漏洞

FckEditor



加 ;.jpg










可进行修改
第五章:文件上传高级利用
5.1 图片重绘




取到 temp_name
img_info 文件检测




清洗掉了 转换脚本






在上面 加上了 phpinfo
php 是 字节流 机械
unicode 合并 还是可以解析



5.2 PHPINFO与文件包含的利用
没有找到 上传点


多线程
垃圾数据

构造 上传报文 和 包含报文







5.3 在线解压缩漏洞利用





模板上传 等 解压上传到 固定文件夹
可以在 模板的基础上 进行修改





zip 目录穿越
安卓库 可以 写入文件 替换关键系统文件 命令执行
ios zip解压漏洞

软连接
当前文件 指向一个 绝对路径 类似于 快捷方式

symlinks 进行将 软连接 压缩








边栏推荐
- Installation of low code development platform nocobase
- ESP8266
- SAI钢笔工具如何使用,入门篇
- Career outlook, money outlook and happiness outlook
- Basic functions of promise [IV. promise source code]
- 再探Handler(下)(Handler核心原理最全解析)
- I found a JSON visualization tool artifact. I love it!
- 真xx相来了?测试/开发程序员为什么不愿意加班,这是个疯狂的状态......
- Mobilenet series (4): mobilenetv3 network details
- 语义化版本 2.0.0
猜你喜欢

JMeter takes the result of the previous request as the parameter of the next request

Pat grade a 1023 have fun with numbers

电商产品如何在知乎上进行推广和打广告?

Cultural tourism light show breaks the time and space constraints and shows the charm of night tour in the scenic spot

CVPR2021:Separating Skills and Concepts for Novel Visual Question Answering将技巧与概念分开的新视觉问答
![Promise [II. Promise source code] [detailed code comments / complete test cases]](/img/ac/abf3181fa7b3345efcc9abc046cea5.png)
Promise [II. Promise source code] [detailed code comments / complete test cases]

MobileNet系列(4):MobileNetv3网络详解

Facing the "industry, University and research" gap in AI talent training, how can shengteng AI enrich the black land of industrial talents?

Nignx configuring single IP current limiting

Games101 job 7 improvement - implementation process of micro surface material
随机推荐
Pat grade a 1019 general palindromic number
USB DRIVER
Implementation of window encryption shell
Nestjs environment variable configuration to solve the problem of how to inject services into interceptors
List of best reading materials for machine learning in communication
Common sense of Apple's unique map architecture
Argo workflows - getting started with kubernetes' workflow engine
Kotlin Compose 隐式传参 CompositionLocalProvider
2021:Graphhopper: Multi-Hop Scene Graph Reasoning for Visual Question Answering
2016Analyzing the Behavior of Visual Question Answering Models
Why does C throw exceptions when accessing null fields?
再探Handler(下)(Handler核心原理最全解析)
Mysql database foundation: DQL data query language
[array]bm94 rainwater connection problem - difficult
FastDDS的服务器记录-译-
Products change the world
Matlab | visualization of mathematical properties related to three interesting circles
Pat grade a 1020 tree Traversals
JMeter distributed pressure measurement
733. image rendering