任意文件上传漏洞syr
任意文件上传漏洞
先来几个一句话木马看看
<%execute(request("value"))%> #asp木马
<?php eval($_POST["value"]);?> #php木马
<%@ Page Language="Jscript"%> <%eval(Request.Item["value"])%> #aspx木马
<?php echo file_get_contents('/path/to/target/file'); ?> #读取服务器中的敏感文件
<?php echo system($_GET['command']); ?> #利用command参数执行系统命令
漏洞原理
web应用程序没有对可上传的文件类型,文件内容等作严格过滤,或者web服务器的解析漏洞没有及时修复,导致攻击者可上传恶意的脚本文件,获得执行服务端命令的能力。
漏洞利用
1.如果没有对上传的文件名进行严格验证,或者对上传的文件进行重命名,攻击者就可以上传同名文件,对原有文件进行覆盖。
2.未验证上传文件的大小,攻击者可以上传巨大的文件,占用可利用磁盘空间。
3.上传一句话木马,利用蚁箭等工具进行远程连接,从而控制服务器。
检测机制
客户端js验证:这种不可靠,可以用来提示用户可上传的文件类型,攻击者可以直接通过抓包工具进行绕过。
MIME类型检测:通过检测MIME类型,判断用户上传的文件是否合法,但是攻击者可以抓包修改Content-Type:字段来绕过。
文件后缀检测:检测文件的后缀名,如果不是合法的后缀,禁止上传,最好用白名单进行过滤可上传的文件后缀。如果是黑名单检测,就有很多绕过方式:00截断;大小写绕过 ;双写绕过,如果后端验证时,直接将检测到的不合法后缀去掉,我们就可以双写来绕过;.htaccess文件上传,首先上传一个.htaccess文件,让服务器可以解析我们上传的指定文件名,之后将我们的木马文件名设置为.htaccess中指定的文件名,上传以后,就可以在服务端执行。
文件内容检测:服务端检测文件的内容,通常会检查文件头,可以构造图片码绕过。
绕过方式
黑名单绕过
1. 00截断:
抓包我们上传的文件,将请求包中的文件名修改为test.php%00.jpg,在许多语言的函数中,字符串处理函数中会将0x00识别为终止符,会将00后的.jpg去掉,导致攻击者上传成功木马文件。
如果文件名是get方式传输的,直接在文件名中加%00,如果是post方式提交数据的,需要在16进制中加00 ,因为post中直接加%00不会被自动url解码。
2. 黑名单过滤不全:
上传.php3、.php5、index.html、等文件,这种情况发生在,如果黑名单对可执行的文件过滤不全的情况下,可以上传。
3. 特殊文件名绕过:
在文件的后缀名后加点或者空格,Windows系统会自动将最后面的点或者空格去掉,导致上传成功,但是Linux系统这种方法不行。
4. 大小写、双写绕过、url编码绕过:
将文件名中的点、斜杠、反斜杠url编码或者二次url编码,如果验证文件扩展名时没有进行url解码,但是在服务器端进行url解码了,我们就可以绕过限制。例如上传 test%2Ephp
5. .htaccess文件攻击:
只在apache服务中,存在该文件。这种方法可以绕过白名单检测。
<FilesMatch "aa">
SetHandler application/x-httpd-php
</FilesMatch>
我们首先上传一个.htaccess文件,文件中指定任意的文件名当做代码文件来解析,之后上传指定文件名的文件,就可以执行文件中的代码。
白名单绕过
1.htaccess文件攻击
2. 00截断
3. 寻找其他测试的上传文件接口:
如果可上传的文件是白名单验证的,我们就可以找一些其他的上传接口,通常一些测试接口是没有做限制的,可上传任意文件。
MIME类型检测绕过
通过指定MIME类型,让浏览器遇到该扩展名的文件时,知道使用指定的应用程序来打开该文件。
如果上传时提示文件类型不正确,我们可以抓包修改Content-Type字段值,修改为对应的值,就可以上传木马文件。
服务器解析漏洞
1. Apache解析漏洞:apache 2.0-2.2版本可能存在该漏洞。
Apache解析文件的顺序是从右往左进行的,如果后面不存在能够解析的后缀,默认会向前解析,直至遇到能够解析的后缀。
文件名设置为 test.php.abo.ddd.eee,当我们成功上传这个文件后,访问它,服务器就会把它当做php文件来执行。
2.IIS 6.0解析漏洞
(1). 目录解析:
3. nginx解析漏洞
当url中有不存在的文件时,php默认向前解析,并且是以不存在的文件后缀去解析前一个文件的。
我们访问www.213.com/test.jpg/1.php ,当不存在1.php时,会向前解析,解析test.php。
文件内容检测绕过
把代码文件和图片合成二进制文件,保存为新的图片,但是上传时,还要上传为.php的后缀,才能够被解析。
Windows系统中,打开cmd命令框,输入:
copy /b 1.png+test.php = 2.png
或者利用ExifTool工具来制做图片码
exiftool -Comment="<?php echo 'START ' . file_get_contents('/home/carlos/secret') . ' END'; ?>" <YOUR-INPUT-IMAGE>.jpg -o polyglot.php
PUT方法写入文件
某些web服务器配置支持PUT方法来提交数据。如果没有防御措施,那么攻击者就可以利用PUT方法来向服务器写入恶意文件。
PUT /images/exploit.php HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-httpd-php
Content-Length: 49 <?php echo file_get_contents('/path/to/file'); ?>
防御方法
1.上传文件的存储目录,不给执行权限。(但是也要防止将源代码回显到前端页面,这样会造成信息泄露)也要防止攻击者通过目录遍历../ 将恶意文件上传到上一级目录,有可能上一级目录有执行权限。
2. 上传的文件进行重命名。
3. 对可上传的文件类型进行白名单校验,只允许上传可靠的文件类型。
4.及时更新web应用软件,防止解析漏洞的发生。
5.不能存在本地文件包含漏洞:如果存在本地文件包含漏洞,攻击者就可以上传任意的文件,再结合本地文件包含漏洞,去执行上传的文件。
任意文件上传漏洞syr的更多相关文章
- 【原创】JEECMS v6~v7任意文件上传漏洞(1)
文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定 ...
- 中国电信某站点JBOSS任意文件上传漏洞
1.目标站点 http://125.69.112.239/login.jsp 2.简单测试 发现是jboss,HEAD请求头绕过失败,猜测弱口令失败,发现没有删除 http://125.69.112. ...
- CKFinder 1.4.3 任意文件上传漏洞
CKFinder 是国外一款非常流行的所见即所得文字编辑器,其1.4.3 asp.net版本存在任意文件上传漏洞,攻击者可以利用该漏洞上传任意文件. CKFinder在上传文件的时候,强制将文件名(不 ...
- WordPress Contact Form 7插件任意文件上传漏洞
漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...
- WordPress Suco Themes ‘themify-ajax.php’任意文件上传漏洞
漏洞名称: WordPress Suco Themes ‘themify-ajax.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-403 发布时间: 2013-11-28 更新 ...
- WordPress Kernel Theme ‘upload-handler.php’任意文件上传漏洞
漏洞名称: WordPress Kernel Theme ‘upload-handler.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-127 发布时间: 2013-11-12 ...
- WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞
漏洞名称: WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-06 ...
- WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞
漏洞名称: WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞 CNNVD编号: CNNVD-201311-015 发布时间: 2013-11-04 更新时间: 2013-11-0 ...
- WordPress Lazy SEO插件lazyseo.php脚本任意文件上传漏洞
漏洞名称: WordPress Lazy SEO插件lazyseo.php脚本任意文件上传漏洞 CNNVD编号: CNNVD-201309-446 发布时间: 2013-09-26 更新时间: 201 ...
随机推荐
- Windows环境下使用Linux命令
1.说明 如何在Windows环境下使用Linux命令, 这是一个屡见不鲜的问题, 而且已经有很多解决方法, 下面仅推荐几个我觉得好用的工具, 这些工具可能就是我们常用的软件, 而且已经在Window ...
- Zookeeper集群安装(开启kerberos)
安装规划 zookeeper集群模式,安装到如下三台机器 10.43.159.237 zdh-237 10.43.159.238 zdh-238 10.43.159.239 zdh-239 Kerbe ...
- RabbitMQ开启SSL与SpringBoot连接测试
楔子 近期公司程序被安全扫描出 远程主机允许明文身份验证 中风险漏洞,查了下修复方案,RabbitMQ官方提供了SSL连接方式,而且 SpringBoot AMQP 也支持 SSL 连接.以下将配置R ...
- 华为云 Kubernetes 管理员实训 三 课后作业
Exercise 1 通过Deployment方式,使用redis镜像创建一个pod.通过kubectl获得redis启动日志. Deployment的名称为<hwcka-003-1-你的华为云 ...
- 利用python绘制分析路易斯安那州巴吞鲁日市的人口密度格局
前言 数据来源于王法辉教授的GIS和数量方法,以后有空,我会利用python来实现里面的案例,这里向王法辉教授致敬. 绘制普查人口密度格局 使用属性查询提取区边界 import numpy as np ...
- 【从小白到专家】Istio技术实践专题(四):应用接入Istio的正确姿势
上一篇文章中,我们介绍了Istio针对单集群的三种主流部署安装方式:使用Istioctl安装.使用Helm自定义安装.独立Operator安装.本文将向大家介绍kubernetes中的应用接入Isti ...
- java基础04-数据类型扩展及面试题
java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...
- k个鸡蛋从N楼层摔,如果确定刚好摔碎的那个楼层,最坏情况下最少要试验x次?
题目 k个鸡蛋从N楼层摔,如果确定刚好摔碎的那个楼层,最坏情况下最少要试验x次? 换个说法: k个鸡蛋试验x次最多可以检测N层楼.计算出N? 逆向思维和数学公式解. 分析 定义N(k,x) 如果第k个 ...
- 将待授权的数据库的dbowner指派给该用户
USE 数据库goEXEC dbo.sp_changedbowner N'账号'
- 一些Markdown扩展语法
相信很多人跟我一样,对Markdown是"一知半解",会打一点,知道一点,但是其实从没花哪怕一分钟了解过.其实除了标题粗体插入代码,Markdown还有很多有趣的基础语法和扩展语法 ...