文件上传Upload 学习笔记
整理完自己还有点晕,看来还是得找点靶场自己练习练习Orz
1:客户端JavaScript校验
Burp改包即可
2:服务端对Content-Type进行校验
猜测后,修改对应Content-Type字段
.JPEG;.JPE;.JPG JPGGraphic File
.gif GIF 89A
.zip Zip Compressed
.doc;.xls;.xlt;.ppt;.apr MS Compound
3:文件头绕过
GIF89a<?php phpinfo();?>
或构造图片马,将恶意文本写入图片的二进制代码,避免破坏文件头和尾
一般文件内容的检测使用getimagesize()函数检测,会判断文件是否是有效的图片文件,如果是,则允许上传,否则的话,不允许上传,用下面的命令制作图片木马,如果上传成功改后缀名上传。
Copy xx.jpg/b + yy.txt/a xy.jpg
/b 即二进制模式
/a 即AscII模式 xx.jpg正常图片文件
4:文件后缀绕过
前提:黑名单绕过
黑名单检测一般有个专门的blacklist文件,里面会包含常见的危险脚本
绕过只能找扩展名的漏网之鱼(能被中间件解析) 比如asa和cer之类
可能存在大小写绕过漏洞-比如aSp和pHp之类
能被解析的文件拓展名列表
jsp jspx jspf
asp asa cer aspx cdx
php pht php4 php5
5:结合解析漏洞绕过
IIS
6.0版本中会将a.asp;xx.jpg解析成asp,原因是被;符号截断了。还存在一个目录解析,会将a.asp/目录下文件解析成asp文件,前提是本地确实存在这样的文件或环境
7.5版本中xyz.jpg/.php会被解析成php文件
例子:
目录解析(IIS 6.0)
形式:WWW.XXX.com/xxx.asp/xxx.jpg
原理:服务器默认会把.asp,,asp目录下的文件都解析成asp文件。
文件解析
形式:WWW.XXX.com/xx.asp/xxx.jpg
原理:服务器默认不解析;号后面的内容,因此xxx.asp;.jpg便被解析成asp文件了
APACHE
apache: webshel.php. XXX. XXA. XXB module方式解析php文件的情况下,由于mime. types配置里没有XX文件类型,不认识就往前遍历解析,直到解析到为止.php(1x,2x),
还有个关于 Addtype和 Addhandlere的配置问题, Addtype指令在给定的文件扩展名与特定的内容类型之间建立映射关系。MME-type指明了包含extension扩展名的文件的媒体类型。
而 Addhandler指令的作用是:在文件扩展名与特定的处理器之间建立映射比如: Addhandler php5-script.php就是指定扩展名为.php的文伶应被php5- srcipt处理器来处理。
Addtype是与类型表相关的,描述的是扩展名与文件类型之间的关系。
Addhandler说明什么样的疒展名使用什么样的程序来处理,描述的是扩展名与处理程序之间的关系.
Addtype中application/x-httpd-php.jpg后缓名ipg文件会被当成php解析而Addhandler php5-script.Jpg的话,只要文件名中包含jpg字符串就会被当成php解析
NGINX
在php配置为 fast-cgia的应用中,由于patino模式(参数cgi.fix_pathinfo)的开启,在映射URI的时候,如果是解析xxx/111.jpg/222.php.
其中 SCRIPT NAMES会是xxx/111jpg/222.php,当开启 fix_pathinfo的时候,由于222.php不存在,会被丢弃掉,所以111.jpg会被作为PHP脚本解析。(IIS也存在过相同问题,主要是后缀是
php就扔给php处理了).
6:配合操作系统命名规则
上传不符合windows文件命名规则的文件名
test.asp
test.asp(空格)
test.php:1.jpg
test.php::$DATA
shell.php::$DATA......
会被windows系统自动去掉不符合规则符号后面的内容
linux下后缀名大小写
在linux下,如果上传php不被解析,可以试试上传pHp后缀的文件名
7:分布式配置文件(文件重写) 绕过
htaccess文件(或者"分布式配置文件”)提供了针对目录改变配置的方法,即在一个特定的文栏目录中放置一个包含一个或多个指令的文件,
作用于此目录及其所有子目录。用户可以利用此文件定义解析文件的后缀,从而进行恶意利用。
口分布式配置文件上传漏洞的实例
1.建立 stance文件内容如下:
<FilesMatch "cimer" >
Sethandler application/x-httpd-php
</Files Match>
并将其上传至服务器中
2.上传php木马文件名包含cmer
8:0X00截断
目录路径检测一般就是检测上传的路径是否合法,一旦程序员在写程序的时候对文件的上传路径过滤不严格就很有可能产生0x00上传截断漏洞。
假设文件的上传路径为.http://x.x.x.x/upfiles/hello.php.gif
通过抓包截断将hello.php后面的换成0×O0,当上传的时候,当文件系统读到0X00的时候,会认为文件已经结束,从而将hello.php.gif中的内容写入到hello.php中从而达到攻击目的
文件上传Upload 学习笔记的更多相关文章
- Web文件上传靶场 - 通关笔记
Web应用程序通常会提供一些上传功能,比如上传头像,图片资源等,只要与资源传输有关的地方就可能存在上传漏洞,上传漏洞归根结底是程序员在对用户文件上传时控制不足或者是处理的缺陷导致的,文件上传漏洞在渗透 ...
- vue ----element-ui 文件上传upload 组件 实现 及其后台
1.前台 action 不用改 :https://jsonplaceholder.typicode.com/posts/ getFile: 获取文件 data(){ return { file: {} ...
- 文件上传Upload 漏洞挖掘思路
1:尽可能多的找出网站存在的上传点2:尝试使用如上各种绕过方法3:尝试 geshell4:无法上传webshel的情况下: 尝试上传html等,或可造成存储XSS漏洞 上传点构造XSS等,结合上传后的 ...
- 6.学习springmvc的文件上传
一.文件上传前提与原理分析 1.文件上传必要前提: 2.文件上传原理分析: 3.需要引入的jar包: 二.传统方式文件上传程序 1.pom.xml <dependency> <gro ...
- 功能强大的文件上传插件带上传进度-WebUploader
WebUploader是由Baidu WebFE(FEX)团队开发的一个以HTML5/FLASH构建的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用老 ...
- Struts2 单个文件上传/多文件上传
1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war 单个文件上传 upload.jsp <s:form action= ...
- Javascript Fromdata 与jQuery 实现Ajax文件上传以及文件的删除
前端HTML代码: <!DOCTYPE html> <html> <head> <title>ajax</title> <script ...
- Django之Ajax文件上传
请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: 1 application/x-www-form-urlencoded(看下图) 这应该是最常见的 P ...
- SpringBoot2 上传文件 上传多文件
项目结构: 1.单文件上传 upload.html <!DOCTYPE html> <html lang="en"> <head> <me ...
随机推荐
- python小游戏-水文
脚本不会,全都白费.所以就去学习了简单的python,结果不慎学了python中的pygame,浪费了不少时间,没啥用如果不做游戏个人觉得最好别学,学爬虫她不香吗?不过也有一点收获,打飞机小游戏,源码 ...
- GPO - Backup and Restore
Backup the GPO to a second server is very important. Restore a GPO if necessary. Note: WMI filter an ...
- noi-vim配置
colorscheme ron set t_Co=256 set mouse=a set ts=4 set sw=4 set nu set ru set ai set ci set cin set l ...
- javascript : 写一个类似于 jquery css() 的方法
我们知道,jquery css() 方法可以很方便的更改DOM的样式. 但从原理上,这个并不复杂,我们完全可以自己写一个. 上代码. updateDOMStyle(DOM, obj){ Object. ...
- java 成员变量和局部变量的区别
将对象的存储在数组中会报错 public static void main(String[] args) { ArrayList<Goods> arrayList = new ArrayL ...
- Monster Audio 使用教程(一)入门教程 + 常见问题
Monster Audio支持的操作系统: windows 7 64bit 至 windows 10 64bit 受支持的VST: Vst 64bit.Vst3 64bit 受支持的声卡驱动: ASI ...
- iPhone截长图的方法
iPhone手机暂没有长图截取功能,所以我们只能通过别的方式进行长图截取. (2020年4月10日更新) ios13目前可以截长图了,不过只能在Safari中进行长图截取,而且存储形式为pdf格式,下 ...
- PHP设计模式之----简单工厂模式
定义个抽象的类(或接口),让子类去继承(实现)它 abstract class Operation { abstract public function getValue($num1, $num2); ...
- Linux系统zabbix_agentd客户端安装与配置
标注:官网下载zabbix安装包(zabbix安装包里包含了zabbix_agentd客户端安装包,我们只选择zabbix_agentd客户端安装) zbbix官网下载地址: http://www. ...
- 第九章 Lambda&方法引用
9.1.Lambda表达式 9.1.1.标准格式 (形式参数) -> {代码块} 9.1.2.使用前提 有一个接口并且接口中有且仅有一个抽象方法 9.1.3.常见应用 9.1.3.1.无参无返回 ...