【渗透课程】第七篇-上传漏洞之绕过上传漏洞

前一篇我们已经讲过了上传漏洞的解析漏洞,在某些时候,知道网站存在哪个解析漏洞,那么我们就可以更好的利用上传漏洞

这个知识点在我们前面就有粗略说过了(http://www.yuntest.org/index.php/archives/765.html), http拦截也是上传漏洞的其中之一, 下面我们来对绕过上传漏洞进行更深的了解。

正文

管理员防止文件上传漏洞时可以分为两种,一种是客户端检测,一种是服务端检测:

客户端检测:使用JavaScript检测,在文件上传之前,就对文件进行验证

服务器端检测:服务端脚本一般会检测文件的MIME类型(这里大家先点过去了解一下mime类型)检测文件扩展名是否合法,甚至有些程序检测文件中是否嵌入恶意代码

图片一句话:

把一句话木马插入在图片文件中,而且并不损坏图片文件,这一方法可以躲过少许的防火墙检测。再利用解析漏洞得到webshell

推荐一款专业的制作软件:LEdjpgcom

一、客户端检测绕过方法:

FireBug插件:将用于检验文件扩展名的onsubmit事件删除。

中间人攻击:使用Burp Suite,首先把木马扩展名改为一张正常图片(图片木马的简介上一篇说过了,大家可以百度加以了解)的扩展名,比如JPG扩展名,,在上传时使用Burp Suite拦截上传数据,再将其中的扩展名JPG修改为PHP,就可以绕过客户端验证。也有可能还需要相应地修改Content-Length(Http知识点,看不明白跑回去看:http://www.yuntest.org/index.php/archives/686.html)

任何客户端验证都是不安全的,客户端验证是防止用户输入错误,减少服务器开销,而服务器端验证才可以真正防御攻击者。

注:从第一篇一直看到这里的,不理解的去面壁

二、服务器端检测

白名单与黑名单验证

黑名单过滤方法:定义不允许上传的文件扩展名

黑名单的绕过方法:

1.攻击者可以从黑名单中找到Web开发人员忽略的扩展名,如:cer

2.对文件的后缀名进行大小写转换,比如黑名单中有php,可以将文件的后缀改为pHp,仅限windows平台

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

白名单过滤方法:定义允许上传的文件扩展名

白名单的绕过方法:结合Web容器的解析漏洞

MIME验证

php中通过$_FILE[‘file‘][‘type‘]来检验

绕过方法:可以在Burp Suite中更改Content-Type的内容为image/jpeg

目录验证

在文件上传时,程序通常允许用户将文件放到指定的目录中,如果指定的目录存在,就将文件写入目录中,不存在的话则先建立目录,然后写入。

比如:在前端的HTML代码中,有一个隐藏标签<input type="hidden" name="Extension" value="up"/>

服务器端有如下代码

if(!is_dir($Extension)){ //如果文件夹不存在,就建立文件夹

mkdir($Extension);

}

攻击者可以利用工具将表单中value的值由“up”改为“pentest.asp”,并上传一句话图片木马文件。

程序在接收到文件后,对目录判断,如果服务器不存在pentest.asp目录,将会建立此目录,然后再将图片一句话密码文件写入pentest.asp目录,如果Web容器为IIS 6.0,那么网页木马会被解析。

截断上传攻击

在ASP程序中最常见,也就是%00将后面的字符都截断了,比如上传文件名为1.asp%00xxser.jpg。

实际操作过程中,利用Burp Suite的Repeater中的HEX选项卡可以进行这样的操作。

截断上传漏洞不仅出现在ASP程序上,在PHP、JSP程序中也存在这样的问题。

0x00不是针对所有基于白名单的后缀名检查都能绕过,代码的实现过程中必须存在截断上传漏洞。

时间: 2024-10-07 12:58:01

【渗透课程】第七篇-上传漏洞之绕过上传漏洞的相关文章

【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP请求信息由3部分组成: 1.请求方法(GET/POST) URI 协议/版本 2.请求头(Request Header) 3.请求正文 下面我们来分析一个http请求: POST http://xg.mediportal.com.cn/health/sms/verify/telephone HTTP

【渗透课程】特别篇-主流网站程序Oday大全以及拿shell思路

版权和内容说明: 这篇文章不是本站编写,是从网络上摘抄的,但是经过了本站的改写优化,并将内容,格式规范化. 本篇说明:这篇文章结合了前辈们前几年一路挖掘出来的主流程序漏洞以及思路, 小编写在前面是想让大家大致了解一下,因为<渗透课程>以后的内容,就是围绕着本篇所涉及的内容进行深度逻辑原理剖析. 这是一篇比较完全的基本渗透笔记.看不懂没关系,后面会一一讲解不过本章的内容读者们要尽量保存,可能会在拿站的时候应用到呢! 常见网站程序asp类: foosun(风讯) kesion(科汛) newasp

【渗透课程】第二篇上-http请求协议的简单描述

HTTP协议剖析 什么是HTTP协议?如何发起请求?我认为这样讲大家能够理解: 浏览器访问网站也是http请求的一个过程.当你打开浏览器,访问一个URL (协议://服务器IP:端口/路径/文件)的时候,相当于向服务器发送了一个http请求,然后服务器会根据你的请求,向你响应一个HTML数据.这个客户端与服务端交互的过程叫做http协议.那么这个协议的过程是什么样子的呢?(简版) 1:客户端向服务端发送请求 2:服务端向客户端响应html数据 3:连接自动切断 PS:这个请求只能由客户端发起,而

【渗透课程】第一篇-Web渗透需要接触的语言

---恢复内容开始--- 上一篇我们讲过了,Web渗透的基本原理,在原理中我们也提到了Web应用程序(脚本语言),本章就谈到了Web渗透要涉及的语言. 涉及语言: 1.html:是前段语言的其中一个,也是最常见的,涉及审查元素的修改以及自行构造界面(如构造上传点) 2.JavaScript:也是属于前段语言之一(掌握这个语言可以更了解xss跨站脚本攻击) 3.数据库:这里的数据库不止是一种语言,而是包含了多种数据库(如我们常见MySQL,mssql,db2),而我们要掌握的就是操控数据库的SQL

Spring课程 Spring入门篇 3-1 Spring bean装配(上)之bean的配置项及作用域

本节主要讲了四大块 1 bean的作用域 2 bean作用域代码演练 3 单例 多例应用场景 4 bean的配置项 1 bean的作用域 2 bean作用域代码演练 3 单例 多例应用场景 4 bean的配置项 原文地址:https://www.cnblogs.com/1446358788-qq/p/10422603.html

Spring课程 Spring入门篇 3-2 Spring bean装配(上)之bean的生命周期

本节主要讲了三大块内容 1 bean的生命周期概念 2 bean的初始化和销毁的三种方式对比(代码演练) 3 总结 1 bean的生命周期概念 1.1 bean的定义:xml中关于bean的配置,bean的id和bean的class等. 1.2 bean的初始化:ioc容器启动的时候加载xml文件中的bean生成实例. 1.3 bean的使用:bean容器中取出bean的实例并使用 1.4 bean销毁:指的是bean销毁时回收由这个bean创建的所有bean实例. 2 bean的初始化和销毁的

初试“七牛云”--零基础运用七牛云配合UEditor实现图片的上传和浏览(.NET篇)

(注册和建立存储空间就不介绍了,网上一把一把的资料,自己试着点点也能明白) 作为一个成熟的菜鸟,如果遇到一个新问题,第一步当然是先百度一下... 看了N个关于七牛云的使用的帖子,表示还是蒙圈的,看懂了一部分,但是不系统,理解的不连贯,作为一个凡是要弄个特别明白的死脑筋,于是开始从头看是研究文档....(以下都是来自http://developer.qiniu.com/article/index.html#quickstart,经过个人精简,如有不明,详情请参阅文档) 先弄明白原理,才能更好的看懂

文件上传漏洞(绕过姿势)

文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识.俗话说,知己知彼方能百战不殆,因此想要研究怎么防护漏洞,就要了解怎么去利用.此篇文章主要分三部分:总结一些常见的上传文件校验方式,以及绕过校验的各种姿势,最后对此漏洞提几点防护建议.(根据个人经验总结,欢迎补充纠错~~) 文件上传校验姿势 客户端javascript校验(一般只校验后缀名) 服务端校验 文件头content-type

如何利用”七牛云”在UEditor实现图片的上传和浏览

在学习之前,我参考了朋友些的一篇关于这个功能实现的文章,非常不错.大家可以参考:http://www.cnblogs.com/John-Marnoon/p/5818528.html#3501846 里面都写了具体的实现,我也是参照朋友的文章来操作的.现在我重新整理一下实现的步骤: 1 . 注册一个七牛云用户 2.  在七牛云网站中创建一个空间来存储图片,存储区域选择 华东或是 华北,请先记得上传到华东1区的域名为up.qiniu.com.up-z0.qiniu.com和upload.qiniu.