文件上传漏洞

一、漏洞概念

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器。

二、漏洞原理

网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护。

三、漏洞危害

  1. 如果 Web应用程序存在上传漏洞,攻击者上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。
  2. 如果上传的文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为。
  3. 如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。甚至攻击者可以直接上传一个webshell到服务器上 完全控制系统或致使系统瘫痪。

四、修复思路

1.上传文件的存储目录禁用执行权限
2.文件的后缀白名单,注意0x00截断攻击
3.不能有本地文件包含漏洞
4.及时修复web上的代码
5.升级web server

五、学习练习

(一)编写PHP一句话木马

<?php eval($_GET['cmd']); ?> ;<?php eval($_POST['cmd']); ?>
<?php eval($_REQUEST['cmd']); ?>

浏览器访问当前一句话木马,并通过木马执行phpinfo()函数
(二) upload-labs靶场1-12关
1.第一关
1)利用burp截取上传的图片,更改图片后缀为php后上传
2)打开上传的图片得到结果

2.第二关
1)利用burp截取上传的图片,更改图片后缀为php后上传
2)打开上传的图片得到结果

3.第三关
1)查看源码
2)上传特殊解析后缀绕过常见特殊解析后缀有asp:asa,cer,cdx;aspx:ashx,asmx,ascx;php:php2、php3、php4、php5、phps、phtml;jsp:jspx,jspf
3)后缀改成php2后上传,得到结果

4.第四关
1)配置浏览器代理
2)确认BurpSuite监听端口正确
3)切换回拦截界面,保持拦截按钮呈释放状态(Intercept is off)
4)编写一句话木马,文件名为shell.php
5)直接上传php木马,发现报错

6)点击显示源码,发现源码中对扩展名进行了黑名单限制,所限制的文件类型不全,可上传.htaccess文件。
7)编写文件名为x.htaccess文件,内容如下,上传.htaccess文件,在BurpSuite中更改文件名


8)更改一句话木马shell.php文件名后缀php为abc并上传
9)得到结果
5.第五关
1)点击显示源码,通过源码我们发现这里面并没有进行大小写转换,代码里面限制的是以小写php为扩展名的文件。如果上传一个文件,它的扩展名是大写的PHP,程序就不会进行着阻拦。

2)将扩展名改为大写,上传shell.PHP文件

6.第六关
1)配置浏览器代理
确认BurpSuite监听端口正确
2)切换回拦截界面,保持拦截按钮呈释放状态(Intercept is off)
3)编写一句话木马,文件名为shell.php,内容如下:

4)Burp Suite打开拦截后,前端正常上传shell.php木马文件,Burp Suite 改包,在请求报文中将php扩展名后面添加一个空格,然后放包

5)得到结果

7.第七关
1)配置浏览器代理
2)确认BurpSuite监听端口正确
3)切换回拦截界面,保持拦截按钮呈释放状态(Intercept is off)
4)编写一句话木马,文件名为shell.php
5)查看源代码

6)Burp Suite打开拦截后,前端正常上传shell.php木马文件。
Burp Suite 改包,在请求报文中将php扩展名后面添加一个点号(.),然后放包

7)得到结果

8.第八关
1)配置浏览器代理
2)确认BurpSuite监听端口正确
3)切换回拦截界面,保持拦截按钮呈释放状态(Intercept is off)
4)编写一句话木马,文件名为shell.php
5)查看源代码

6)Burp Suite打开拦截后,前端正常上传shell.php木马文件,Burp Suite 改包,在请求报文中将php扩展名后面添加::$DATA,然后点击放包

7)在火狐浏览器当中打开图片,发现无法访问
8)将地址中的::$DATA去掉再次访问,可以看见上传的木马都已经执行并显示“I’VE GOT A SHELL!”。

9.第九关
1)Burp Suite打开拦截后,前端正常上传shell.php木马文件,Burp Suite 改包,在请求报文中将php扩展名后面添加. .,然后点击放包

2)在火狐浏览器当中打开图片
10.第十关
1)Burp Suite打开拦截后,前端正常上传shell.php木马文件,Burp Suite 改包,在请求报文中将php扩展名后面添加php,然后点击放包

2)在火狐浏览器当中打开图片
11.第十一关
1)Burp Suite打开拦截后,前端正常上传shell.php木马文件,Burp Suite 改包,在请求报文中将php扩展名改为jpg,并将url地址后添加shell.php%00,然后点击放包

2)在火狐浏览器当中打开图片
12.第十二关
1)Burp Suite打开拦截后,前端正常上传shell.php木马文件,Burp Suite 改包,在请求报文中将php扩展名改为jpg,然后点击放包

7.在火狐浏览器当中打开图片

漏洞利用方法总结:

  • 文件名大小写绕过
  • 名单列表绕过
  • 特殊文件名绕过
  • htaccess 文件
  • 写入方法
  • 00截断绕过上传

国信安web安全——文件上传漏洞相关推荐

  1. 公司项目重构-Web安全-文件上传漏洞

    目录 1.背景介绍 2.攻击原理 3.防范手段 1).做好文件类型检查(重要) 2).最好对图片进行压缩或resize 3).使用随机数改写文件名和文件路径(根据公司需求) 4).设置单独文件服务器和 ...

  2. Web安全—文件上传漏洞

    文件上传漏洞 提要:文件上传漏洞属于服务端漏洞,可归纳为文件操作类型中的漏洞. 漏洞简介:文件上传漏洞是Web安全中对数据与代码分离原理的一种攻击方法,顾名思义,攻击者上传了一个可执行文件(木马,病毒 ...

  3. Web安全——文件上传漏洞

    文件上传漏洞 绕过JS验证 通过表单上传时,可能存在JS对文件类型.大小的检验 使用BurpSuite剔除相应JS 上传WebShell,使用菜刀连接 <?php @eval($_POST[&q ...

  4. Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)

    文件上传漏洞的概括 现在大多的网站和Web应用系统都会有上传功能(比如:文档,图片,头像,视频上传等.),而程序员在开发文件上传功能时,没有对代码做严格校验上传文件的后缀和文件类型. 此时攻击者就可以 ...

  5. Web安全-文件上传漏洞与WAF绕过

    文章目录 概述 Webshell简述 上传漏洞原理 上传漏洞绕过 解析漏洞 IIS 6.0解析漏洞 Apache解析漏洞 Nginx解析漏洞 Windows文件命名 客户端检测绕过 更改前端JS代码 ...

  6. Web安全--文件上传漏洞

    前言:本文参考了一些文章,如有侵权请留言删除. 该文章基于upload-labs基础靶场进行编写 0x00 任意文件上传漏洞原理 由于服务端代码未对客户端上传的文件进行严格的验证和过滤,导致攻击者可以 ...

  7. 海康威视iVMS综合安防系统任意文件上传漏洞复现(0day)

    0x01 产品简介 海康威视iVMS集中监控应用管理平台,是以安全防范业务应用为导向,以视频图像应用为基础手段,综合视频监控.联网报警.智能分析.运维管理等多种安全防范应用系统,构建的多业务应用综合管 ...

  8. 文件上传漏洞原理/方式/防护

    文件上传漏洞是获取服务器权限最快也是最直接的一个漏洞 原理 文件上传漏洞是指用户上传可执行脚本文件 , 并通过脚本文件控制Web服务器 利用方式 文件上传漏洞的利用分为客户端和服务端 客户端主通过JS ...

  9. 【合天网安】FCKeditor 2.4.3文件上传漏洞

    [合天网安实验室]FCKeditor 2.4.3文件上传漏洞 编辑器漏洞 常见的文本编辑器有FCKeditor.Ewebeditor.UEditor.KindEditor.XHeditor等,它们包含 ...

  10. 网安基础学习之“文件上传漏洞原理与实现”

    网安基础学习之"文件上传漏洞原理与实现" 近期新闻头条上报出了"长沙市场监管局网站被上传了黄色页面",经过长沙市公安局网技支队的排查,该门户网站后台编辑器存在* ...

最新文章

  1. 电子与计算机工程 加拿大,加拿大本科热门专业:电子与计算机工程
  2. bat 调用python
  3. ios - 使用@try、catch捕获异常:
  4. php记录网站访问,PHP简单实现记录网站访问量的功能
  5. struts2配置文件(简单)
  6. mysql 5.7 循环语句_MySQL循环语句|mysql|loop|delimiter|procedure|调用_网易订阅
  7. 合法练习黑客技术?这15个网站也许可以帮到你
  8. mybatis入门案例
  9. Winfrom 线程实现 http、https 文件下载 显示下载进度详情
  10. 【无标题】手机扩容或更换字库后的指纹. 基带. 账号 .解锁等故障分析
  11. 【数学建模】数学建模指导:建模常用算法应用场景解析
  12. 2020 春节集五福最详细收集攻略
  13. Linux内核的WRITE_ONCE函数分析
  14. 给定一个仅包含大小写字母和空格 ‘ ‘ 的字符串 s,
  15. c语言读文件时 fgetc,[求助]用fgetc()读取文件时遇到的问题~~
  16. 今天拿到软件设计师证书
  17. 微信公共号分享链接配置
  18. 记录一次神奇的大物实验——用模拟法测绘静电场——别人都是打铁~我们打孔~~~
  19. 在中国人群中感染率最高的高危型HPV病毒是HPV16、HPV52和HPV58
  20. 公开在线视频流(rtsp、stmp)

热门文章

  1. webpack5css抽离和压缩
  2. Hive_数据建模工具EZDML
  3. SiliconLab zigbee host移植到IPQ 807X平台
  4. 基于Android的模拟手机银行的开发与设计
  5. 内存溢出(OutOfMemoryError)与栈溢出(StackOverflowError)
  6. 指针生成网络(Pointer-Generator Networks)的实现
  7. PSENet原理与代码解析
  8. HDS存储给主机扩容步骤
  9. Android热修复技术——QQ空间补丁方案解析(1)
  10. python Beautiful Soup解析html页面table标签