一、客户端检测

1,客户端校验:一般是在网页上写一段Js脚本,用Js去检测,校验上传文件的后缀名,有白名单也有黑名单。
2,判断方式:通过抓包来判断,如果还未抓住包,就弹出不准上传,那么就是前端验证,否则一般就是服务端验证
3,突破方法前端验证非常不可靠,通常可通过两种方式绕过:~关闭JS尝试绕过~传正常文件通过burp修改数据包就可以绕过(推荐)
4,黑白名单机制:黑名单:不允许上传什么白名单:只允许上传什么白名单比黑名单更安全

二、服务端检测

1,服务端检测几个常见的手段:检查Content-Type (内容类型)检查后缀  (检查后缀是主流)检查文件头2,制作图片马(隐写)~找一张正常的照片(最好用小图片,越小越好)例如:1.jpg~新建一个文本文档(内容<?php eval($_REQUEST['a']);?>一句马)例如:1.txt~打开cmd运行下边命令代码:copy 1.jpg/b + 1.txt 123.jpg/b的意思是以二进制加载,最后会合成一个名为123.jpg的图片另外:如何拿出源文件?改123.jpg为123.zip直接解压即可,很多ctf的初级隐写难度一句话木马的核心:就是用户传参的数据当作代码执行webshell 管理工具:   (网站木马)webshell =>网站会话[拥有网站权限]getshell =>获取会话能被解析的文件扩展名列表:php: php、 phtml、php3、php4、php5jsp: jap、jspx、jspfasp: asa、cer、aspxext: exee先判断是否前端检测-然后在检测是不是后缀检测-在看是不是黑名单

三、文件上传绕过类型:

1.前端检测使用burp抓包,上传一个非法文件,如果抓到数据包,说明是后端校验,如果没抓到数据包,说明是前端校验。2.Content-Type方式绕过使用burp,上传图片马,直接更改类型php
3.黑名单绕过使用burp,上传图片马,直接更改类型,如上传不成功,可以phtml大部分可以使用::$DATA绕过
4..htaccess文件绕过这个文件是中间件看的。.htaccess是什么?.htaccess文件也被称为分布式配置文件,提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令到的文件,以作用于次目录及其所有子目录。.htaccess功能:文件夹密码保护、用户自定义重定向、自定义404页面,扩展伪静态话、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,很可惜,这个功能默认是不开启的。例如:AddType application/x-httpd-php .jpg 这个指令代表有.jpg文件会当做php解析将这句代码放进txt文件,将文件名修改成功.htaccess,然后上传它就可以了。我们无法将文件名命名为.htaccess,那么应该怎么办?使用cmd的重命名ren  1.txt .htaccess
5.后缀大小写绕过windows后缀是不区分大小写的。解析时一般也不区分大小写。Web容器除非非常老,不然都不区分大小写
6.文件后缀(空/空格)绕过在文件名后留一个空格,然后上传上去空格会自动的省略,在系统操作中,php空格=php但是在字符串匹配的时候php空格!=php7.文件后缀(点)绕过windows有一个特性,会自动去掉后缀名留最后的.8.::$DATA(Windows文件流绕过)(这里利用到了NTFS交换数据流(ADS),ADS是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其他文件可以“寄宿”在某个文件身上,而在资源管理器中却只能看到宿主文件,找不到寄宿文件。)肯定不懂这个意思是什么吧,现在cmd运行一个(藏文件的小福利)echo abcd>>a.txt:b.txt 将abcd写入a.txt:b.txt,很明显生成一个a.txt,将b.txt寄宿到a.txt文件上。使用notepad 1.txt:b.txt,将寄宿文件揪出来   然后在试试a.txt::$DATA   ::$DATA就是默认不修改文件流的情况,所以生成一个正常的a.txt。利用windows特性,可在后缀名中加::$DATA 绕过。
9.构造文件后缀绕过php. .
10.双写文件后缀绕过会出现删后缀,,,所以要双写后缀,,不会出现删文件。

四、实战注意(主要黑名单)

1,简单的前端黑白名单限制可以通过上边的两种方法
2,图片马burp抓包改回后缀进行绕过
3,服务端黑名单,将后缀改为    php.  php_  php4 phptml php空格 在上传
4,htaccess文件绕过简单的说,htaccess文件就是web容器的配置文件,web容器会根据htaccess文件的内容去执行,我们可以改内容:例如:    AddType application/x-httpd-php .jpg这个代码指令代表着.jpg文件会当做php来解析,但是仅限于当前文件夹用法:新建1.txt文件,将代码写入,打开cmd,运行下列命令:ren 1.txt .htaccess        //更名后是没有文件名字的注意:但是这个功能是默认不开启的,可以试试,但是伪静态网页一定会开5,win系统后缀是不分大小写,而且解析容器也一般不分。可以改一下后缀大小写
6,win文件流绕过(隐写)打开cmd:echo abcd                   //输出abcdecho abcd >> 1.txt            //新建1.txt,内容为abcdecho abcd >> 1.txt:b.txt  //新建b.txt,内容为abcd,且藏在1.txt中//系统中只能看到1.txt打开b.txt:(cmd中)notepad                       //打开记事本notepad 1.txt                //用记事本打开1.txtnotepad 2.txt:b.txt            //打开隐藏在1.txt中的b.txt注意:此时的1.txt中必须为空,不能保存东西扩展:(1)事实上,新建的文件夹,完整的语句是这样的:echo abcd >> 2.txt::$DATA      这是建立一个2.txt文件,平时写echo abcd >> 1.txt    系统默认补全(2)echo abcd >> 1.txt       没有1.txt新建,若有则将abcd追加至元文件(3)如何结合上传文件:上传1.jpg,burp抓包,改为1.php::$DATA,保存在服务器为1.php7,实战中,不知道什么检测,建议直接用图片马,可以避免很多麻烦
8,       连接自己的一句马:url/上传马.php?a=phpinfo();           //“;”不要忘记,经典一句马内容:<?php @eval($_REQUEST['a']);?>

文件上传常见问题汇总

1.文件上传对渗透测试的意义
文件上传属于获取Getshell的一种方法,属于最常规获取webshell的方法,所以寻找上传点比进入后台还重要,如果前台上传点你直接上传上去一个一句话木马,整个站你就拿下来了。2.文件上传需要做信息收集吗?
当然需要信息收集,信息收集中对web容器和用的动态语言和动态语言版本对文件上传非常有用,一个ASP的站,你传一个PHP的马,如果说没有特殊设置,那么这个马是不可能执行(但是有些情况下,他设置了解析,也是可以解析的)然后web容器也会存在一些解析漏洞,如iis6.0畸形解析、CGI解析漏洞3.文件上传是不是只会检测后缀?
并不是,有些文件上传还会去检测文件内容4.黑名单和白名单哪个安全?
相对而言,白名单更安全一点5.如果只能上传图片,这个上传点是不是没用?
并不是,好歹你还是有文件上传上去的,如果网站存在本地包含或者解析漏洞,你传上去的图片马就可以大放光彩了。6.只是windows有::$DATA吗?
是的呀7.windows忽略大小写,linux?
Linux并不会忽略大小写,比如访问一个网站,将URL里面文件夹得名字改一个小写字母为大写,如果正常访问那一般是windows,如果访问出现问题一般是linux(快速检测不一定准)8.双写绕过常见吗?
双写绕过并不是特别常见,但是也是遇到过,你上传得文件得文件名就可以看出来能否双写绕过9.没有源码怎么测试文件上传漏洞?
这个可能是同学们最关心的问题,因为大多数情况下,都不会有目标站点的源码。所以黑盒怎么测试妮?先传一个正常图片,然后看看这个地方上传是否有用,然后再传一个jpg后缀的图片马,看看对内容会不会检测,然后再尝试改包,看看是不是前端验证,然后尝试下看看是黑名单还是白名单机制,然后最后尝试条件竞争。10..htaccess文件绕过这个常见吗?
虽然这个默认不是开启的,但是开启了伪静态的网站都会开启,所以遇到伪静态可以直接尝试,不过没用遇到也是可以尝试的,也许管理员开启了妮~多尝试11.后缀大小写绕过可能存在吗?
当然可能啦,老的ASP站比较容易遇到12.文件后缀(空和点)绕过适用于什么环境?
仅仅用于windows13.00截断和%00截断有区别吗?
没有任何区别,%00 仅仅是00的URL编码而已14.00截断有限制条件吗?
高版本php不存在,5.4.45以上似乎就没有了15.有没有把图片打成base64保存到数据库的操作?
有这个操作,但是我试过,我做开发的时候干过这个操作,但是这样会让数据库超级大,而且感觉影响了数据库的性能16.条件竞争实战可行性?
实战是可以行的,之前遇到过一个非法网站,然后他就存在条件竞争(不过一般5分钟没跑出来就放弃把)17.IIs6.0畸形解析漏洞(一)怎么利用?
Asa cer 这个很明显是绕过黑名单机制的18.IIs6.0畸形解析漏洞(二)怎么利用?
这里是绕过白名单机制的,利用;进行绕过19.IIs6.0畸形解析漏洞(三)怎么利用?
当你拥有建立文件夹且可以命名的时候利用20.IIS6.0感觉很老呀现在还多吗?
ASP的站大部分都是这个版本,也有些IIS6.0修复了解析漏洞,也不用太执着21.CGI解析漏洞仅仅用于Nginx吗?
不是这样子额的,CGI解析漏洞在IIS7.5、IIS7.0中也存在,我实战遇到过的大部分都是IIS7.X比较多22.文件上传漏洞就只有靶场的这23个吗?
当然不是啦,只不过这23个是比较常见的啦23.文件上传是不是必须要图片马?
也并不是必须,但是我建议使用图片马,因为图片马可以绕过好多防护机制24.我图片马做了,但是上传上去连接不了怎么办?
你先看看你的图片马是不是太大了,图片马大了会影响执行,所以我建议使用小图片做图片马,我自己真的用的图片马,都是QQ表情,一个图片才10kb.第二个要检测的就是看看图片马是否正常运行,建议在本地先试试25.动态脚本语言不同,他们的一句话木马可以通用吗?
当然不可以啦,难道你觉得英语和中文还有日语可以通用吗?每个动态脚本语言都有自己的一句话木马,函数可能连名字都是差不多的,但是语句肯定不一样(百度查一查就有了)

web安全入门(第七章-1)文件上传漏洞--解析、验证、伪造相关推荐

  1. 文件上传漏洞-解析、验证、伪造1

    文章目录 文件上传漏洞: webshell: 文件上传漏洞的原因: 文件上传常见检测: 靶场实战 1.前端验证绕过 2.Content-Type方式绕过 3.黑名单绕过 4. .htaccess文件绕 ...

  2. 文件上传漏洞 解析、验证、伪造(二)

    注意:仅用于本人学习的笔记记录,禁止进行传播分享,一旦造成严重后果与本人无关!!! 后端校验的黑名单机制比较危险 1.大小写绕过 2.点空绕过 3.NTFS文件流绕过::$DATA 4.htacces ...

  3. 文件上传漏洞 解析、验证、伪造(一)

    注意:仅用于本人学习的笔记记录,禁止进行传播分享,一旦造成严重后果与本人无关!!! 文件上传:把自己电脑上的文件传到服务器上 文件上传是个功能 任意文件上传就是漏洞了 一句话木马<?php  e ...

  4. 文件上传漏洞 解析、验证、伪造(三)

    注意:仅用于本人学习的笔记记录,禁止进行传播分享,一旦造成严重后果与本人无关!!! 1.文件上传是个功能,任意文件上传(漏洞) 2.无法提交shell但是可以提交其他的文件,例如HTML(上传存储型x ...

  5. 文件上传漏洞-解析、验证、伪造2

    我们接着上一篇博客文章对upload_labs上传漏洞的讲解: 文章目录 %00截断绕过 %00截断绕过(二) 图片马绕过 getimagesize图片类型绕过 php_exif模块图片类型绕过 二次 ...

  6. 文件上传漏洞 — 解析、验证、伪造

    绕过黑名单 前端验证绕过 看看前段白名单允许上传什么后缀名的文件 写个一句话木马,后缀名改成白名单里的后缀名 <?php eval($_REQUEST['a'])?> 上传时抓包修改后缀名 ...

  7. 文件上传漏洞-解析、验证、伪造3

    接上一篇内容 IIS6.0解析漏洞(一) 我们现在要讲的第一个是IIS6.0的解析问题: iis6.0除了将ASP后缀当成ASP进行解析的同时,当文件后缀名字为.asa .cer .cdx也会当做as ...

  8. Flask Web开发入门(十)之图片上传(使用Flask-Upload)

    在Flask Web开发入门(八)之文件上传中,我们探讨了Flask框架下的文件上传,本章我们将使用Flask插件Flask-Uploads示例说明的图片上传与展现如何实现 开始之前,我们先简单看下F ...

  9. kindeditor在服务器上上传图片显示叉叉,什么原因?,kindeditor=4.1.5 文件上传漏洞利用...

    kindeditor<=4.1.5 文件上传漏洞 - Kindeditor <=4.1.5 file upload vulnerability and use 漏洞存影响版本:小于等于4. ...

最新文章

  1. java获取get请求返回_Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理...
  2. [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载
  3. mysql中的G标志实现纵向显示
  4. Samsung Pay体验札记:或推支付新浪潮
  5. 微信小程序:生命周期
  6. html打开自动点击,如何把一段JS点击触发改为页面打开后就自动触发?
  7. 如何用Pygame写游戏(二十二)
  8. python学习day-4 集合与函数
  9. linux ip onboot,linux onboot no
  10. Python 解决面试题47 不用加减乘除做加法
  11. 数学建模之层次分析法
  12. 写大数据简历的黄金法则及项目经验
  13. 97. ExtJS之EditorGridPanel afteredit属性
  14. 通达信自编的选股公式如何使用
  15. Android 选择国家对应区号 中英双版
  16. mysql汽车租赁管理系统
  17. 39个大数据可视化工具 数据研究必备
  18. 安卓结构能转换成苹果借口吗_别错过!这可能是苹果近几年最精彩的发布会了...
  19. 今天开始做战斗,回合制战斗代码实现第一篇,从头开始,简单的2d回合制游戏
  20. mount卡住不动解决思路

热门文章

  1. Mysql8.0.28-winx64安装
  2. 常用逻辑门电路及其运算表达式
  3. 阅读笔记 - 20220409
  4. 基于JAVA传统文化知识竞赛系统计算机毕业设计源码+系统+数据库+lw文档+部署
  5. 使用IE浏览器,禁止访问,显示 Internet Explorer增强安全配置正在阻止来自下列网站的从应用程序中的内容
  6. 给文火慢炖的“少儿美术”加点料
  7. [Win10+Excel365]尽管已启用VBA宏,Excel还是无法运行宏
  8. 产业区块链发展周报(10.11—10.16)| 陀螺研究院
  9. oracle截取6位,Oracle函数获取IDCARD中年龄
  10. 百度推广系列之广告词编写必杀技