文件上传知识

文件上传漏洞原理

一句话木马

<?php@eval($_POST['wuya']);?>

POST用来接收前端的post的请求里面的一个变量值

eval作用把一串字符串作为php的代码去执行,允许执行任意代码

@符号的意思是不报错,即使执行错误,也不报错。

system函数,用来执行操作系统命令

wuya为密码

文件上传漏洞是指用户上传了一个可执行的脚本文件,而且通过这个脚本文件获得了执行服务器端命令的能力。

文件上传前提:

(1)网站上传功能能正常使用  (2)文件类型允许上传  (3)上传路径可以确定   (4)文件可以被访问,可以被执行或者被包含

黑客会上传什么?

后门文件简介

WebShell:网站后门

WebShell就是以asp,php,jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其成为一种网页后门。黑客在入侵了一个网站后,通常会将asp或者php后门文件与网站服务器WEB目录下正常的网页文件混在一起,以达到控制网站服务亲的目的。

了解后门文件WebShell

WebShell分为大马,小马,一句话木马。

大马:体积小,功能全,会调用系统的关键函数,以代码加密进行隐藏

小马:体积小,功能少,只有一个上传功能

一句话木马:代码短,只有一行代码,使用场景大,可单独生成可插入文件,安全性高,隐匿性强,可变形免杀,框架不便,数据执行

了解后门文件 PHP一句话木马

<?php eval($_GET['pass'];?>

防御

uniqid 更改文件名

文件上传绕过

(1)本地限制

(2)突破上传:修改MIME类型检测;修改目录路径检测;修改文件扩展名检测;修改文件内容检测;

(3)服务端防御:服务MIME类型检测;服务端目录路径检测;服务端文件扩展名检测;服务端文件内容检测;

绕过客户端的检测:

原理:通常在上传页面里含有专门检测文件上传的JavaScript代码,最常见的就是检测文件类型和扩展名是否合法

方法:在本地浏览器客户端禁用JS即可

测试题:upload-labs/Pass-01

绕过服务端检测:

服务端的代码通常检测三个点:MIME类型,文件后缀(分为黑名单和白名单),文件内容(文件幻数,文件相关信息,图片渲染,二次渲染)

常见MIME类型:

超文本标记语言。html文件:text/html

普通文本.txt文件:text/plain

PDF文档.pdf:application/pdf

Microsoft.word文档:application/msword

PNG图像.png:image/png

GIF图像.gif:image/gif

MPEG文件.mpg:video/mpeg

AVI文件.avi:video/x-msvideo

绕过文件后缀检查-黑名单

文件扩展名在黑名单中为不合法,一般有个专门的黑名单列表,里面会包含常见的危险脚本文件。

1.后缀大小写绕过:(.Php)

2.空格绕过:(.php )

3.点绕过:(.php.)

4.::$DATA绕过:

如果黑名单没有对后缀名进行去::$DATA处理,可以在后缀名加上::$DATA,绕过黑名单

5.配合Apache漏洞(现在基本没有了)

Apache解析有一个特点,解析文件时是从右往左判断,如果为不可识别解析再往左判断,例如aa.php.owf.rar文件,Apache不可以识别解析‘.owf’和‘.rar’这两种后缀,会解析成.php文件

6.  .htaccess文件

配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测(可以自己规定文件解析成什么样子)

.htaccess文件(或者 分布式配置文件),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法,即,在一个特定的文档目录中一个包含一个会多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。

SetHandler application/x-httpd-php //所有的文件当做php文件来解析

AddType application/x-httpd-php .png //.png文件当作php文件解析

7.通过上传特殊文件名来绕过黑名单检测。

如php,php2,php3,php5,phtml,asp,aspx,ascx,ashx,cer,jsp,jspx这些特殊文件名能否被解析,关键查看apache的conf/httpd.conf文件,如果包含AddType application/x-httpd-php.php.phtml.phps.php5.pht等,则这些特殊文件可以被解析。

绕过文件后缀检测-白名单(基本无解,目前最安全)

白名单策略:文件扩展名不在白名单中为不合法

绕过方法:

服务端判断文件类型是从后往前解析,而对文件解析是从前往后解析,可以利用00截断的方式进行绕过,包括%00截断与0x00截断。(00截断的一个条件是PHP必须小于5.3)

绕过文件内容检测:

主要通过两种方法来判断上传文件内容是否合法:

1.通过检测上传文件内容开始处的文件幻数来判断。

通常情况下,通过判断前10个字节,基本就能判断出一个文件的真实类型

2.文件加载检测

一般是调用API或者函数对文件进行加载测试。常见的是图像渲染测试,在严格点的是进行二次渲染。

绕过文件内容检测-文件幻数检测

常见图片类型的文件幻数如下:

1.要绕过jpg文件幻数检测就要在其文件十六进制开头写上下面的值:

Value=FF D8 FF E0 00 10 4A 46 49 46

2.要绕过gif文件幻数检测就要在其文件十六进制开头写上下面的值:

Value=47 49 46 38 39 61

3.要绕过png文件幻数检测就要在开头写下下面的值:

Value=89 50 4E 47

然后在文件幻数后面加上自己的一句话木马代码就行了

绕过文件内容检测-文件加载检测

一般是调用API或者函数对文件进行加载测试。常见的是图像渲染测试,在严格点的是进行二次渲染。

对渲染/加载测试的攻击方式是:代码注入绕过

对二次渲染的攻击方式是:攻击文件加载器自身

1.对渲染/加载测试攻击 - 代码注入绕过

可以用图像处理软件对一张图片进行代码注入

这类攻击的原理是:在不破坏文件本身的渲染情况下找一个空白区进行填充代码,一般是图片的注释区,这样能保证本身文件结构是完整的,对于渲染测试基本上都能绕过。

2.二次渲染的攻击方式 - 攻击文件加载器自身

这种情况下无法用代码注入绕过,二次渲染相当于把原本属于图片数据的部分抓出来,再用自己的API或者函数进行重新渲染,而非图像数据部分直接被隔离开了。

我们可以用溢出攻击对文件加载器进行攻击,上传自己的恶意文件后,服务器上的文件加载器会主动进行加载测试,加载测试时被溢出攻击执行shellcode。

(另外方法:1.用一张大的gif图片找到一个空白的地方写shell然后绕过;2.复制下面这段

#define test_width 16

#define test_height 7

<?php echo 'it worke';?>

static char test_bite[ ]={

0x13, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80, 0x00, 0x60};) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576444.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RAG原理及本地化实践

基于LLM的应用在问题回答、信息获取上发挥出了巨大作用。这些通用大模型训练的数据主要来源于互联网上的会话或者个别机构提供的数据&#xff0c;虽然能够提供类似人的交互对答&#xff0c;但是在针对某个特定领域的时候就显得不足。通用大模型在应用中主要有以下问题&#xff…

【DINO】环境配置

1. DINO简介 作为一款基于Transformer性能强劲的计算机视觉算法&#xff0c;一经发布即受追捧&#xff0c;本文记录下在DINO官方代码在集群上的环境配置及训练自己的数据集过程。 DINO原文&#xff1a;https://arxiv.org/abs/2203.03605 DINO源代码&#xff1a;https://github.…

ssm084基于ssm的大型商场会员管理系统+jsp

大型商场会员管理系统的设计与实现 摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管理困扰。比如耗时长&#xff0c;成本高&#xff0c;维护数据困难&#xff0c;数据易丢失等缺点。本次使用数据库工具MySQL和编…

【C语言必刷题】7. 百钱百鸡

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

《汇编语言》- 读书笔记 - 综合研究

《汇编语言》- 读书笔记 - 综合研究 研究试验 1 搭建一个精简的 C 语言开发环境1. 下载2. 配置3. 编译4. 连接 研究试验 2 使用寄存器1. 编一个程序 ur1.c &#xff08; tcc 用法&#xff09;tcc 编译连接多个源文件tlink 手动连接 2.用 Debug 加载 ur1.exe&#xff0c;用u命令…

数据转换 | Matlab基于RP递归图一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 Matlab基于RP递归图一维数据转二维图像方法 基于RP&#xff08;Recurrence Plot&#xff09;递归图的方法可以将一维数据转换为二维图像&#xff0c;以可视化数据的动态特征。RP递归图是一种表示时间序列相…

android 去除桌面谷歌搜索框

注&#xff1a; 本文只是博主学习记录分享&#xff0c;仅供参考。如有错误请指出来&#xff0c;谢谢&#xff01; 一、问题描述 去除 android 系统桌面谷歌搜索栏&#xff0c;前后对比如下图&#xff1a; 系统版本&#xff1a;android12 平台&#xff1a;rk3568 二、…

【小浩算法cpp题解】判断环形链表

目录 前言我的思路思路一 &#xff08;哈希表记录链表的访问&#xff09;&#xff1a;思路二 &#xff08;双指针&#xff0c;快指针在前&#xff0c;慢指针在后&#xff09;&#xff1a; 我的代码运行结果 前言 前几天我写的代码&#xff0c;都是把所有的内容写在main函数里&…

Veeam配置备份oracle实例

Veeam是一家专门提供数据管理和数据保护解决方案的软件公司。他们的产品主要包括备份、复制和虚拟化管理等功能&#xff0c;旨在帮助企业保护其数据、应用程序和系统&#xff1b;NBU&#xff0c;COMMVALT&#xff0c;Veeam 国际三大知名备份软件厂商。本文介绍使用Veaam 备份Li…

【nodejs状态库mobx之computed规则】

The above example nicely demonstrates the benefits of a computed value, it acts as a caching point. Even though we change the amount, and this will trigger the total to recompute, it won’t trigger the autorun, as total will detect its output hasn’t been …

行人属性AI识别/人体结构化属性AI识别算法的原理及应用场景介绍

行人属性AI识别技术是一种基于人工智能技术的图像识别技术&#xff0c;通过对行人的图像或视频进行处理和分析&#xff0c;提取出其中的结构化信息&#xff0c;如人体姿态、关键点位置、行人属性&#xff08;性别、年龄、服装等&#xff09;等。 行人结构化数据分析的方法包括…

LORA详解

第一章、lora论文解析 参考论文&#xff1a; low rank adaption of llm 背景介绍&#xff1a; 自然语言处理的一个重要范式包括对一般领域数据的大规模预训练和对特定任务或领域的适应处理。在自然语言处理中的许多应用依赖于将一个大规模的预训练语言模型适配到多个下游应用…

小程序变更主体还要重新备案吗?

小程序迁移变更主体有什么作用&#xff1f;小程序迁移变更主体的作用可不止变更主体这一个哦&#xff01;还可以解决一些历史遗留问题&#xff0c;比如小程序申请时主体不准确&#xff0c;或者主体发生合并、分立或业务调整等情况。这样一来&#xff0c;账号在认证或年审时就不…

五一~感恩回馈,SolidKits工具折扣来袭!

SOLIDWORKS插件多样且丰富&#xff0c;有着不同的种类和用途&#xff0c;可以为SOLIDWORKS软件本身提升使用效率&#xff0c;更快速的响应你的操作方式。SolidKits自主设计研发多款SOLIDWORKS增效插件&#xff0c;包括&#xff1a;自动化参数设计插件、高级BOM插件、批量编码器…

【leetcode面试经典150题】75. 二叉树展开为链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

Weblogic JMS

简介 全称:WebLogic Server的Java Messaging Service(JMS) WebLogic JMS 是与 WebLogic Server 平台紧密集成的企业级消息传递系统。 Java Message Service (JMS) API 是一种消息传递标准,允许基于 Java Platform Enterprise Edition (Java EE) 的应用程序组件创建、发送、…

基于STC12C5A60S2系列1T 8051单片机正常模式或移位模式控制数码管某位闪烁后单击长按增加或减少数值应用

基于STC12C5A60S2系列1T 8051单片机正常模式或移位模式控制数码管某位闪烁后单击长按增加或减少数值应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍基于STC12C5A6…

MySQL Workbench 数据库常用操作

大家好哦&#xff0c;我是程序员徐师兄&#xff0c;今天为大家打来的是MySQL Workbench 数据库常用操作。 文章目录 一、连接数据库二、进入数据库三、创建数据库四、设置默认数据库五、创建数据表六、查看表数据七、查看数据表 一、连接数据库 二、进入数据库 三、创建数据库 …

【Leetcode】vector刷题

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;Leetcode刷题 目录 1.只出现一次的数字2.杨辉三角3.删除有序数组中的重复项4.只出现一次的数字II5.只出现一次的数字III6.电话号码的字母组合 1.只出现一次的数字 题目链接&#xff1a;136.只出现一…

vivado 创建和运行链路清扫

创建和运行链路清扫 要分析给定链路的裕度 &#xff0c; 利用不同 MGT 设置来多次运行链路扫描是很有效的。这样有助于判定最佳设置。 Vivado Serial I/O Analyzer 功能支持您定义、运行、保存和重新调用链路清扫 &#xff0c; 链路清扫是由多次链路扫描集合而成的。 每条…