农夫安全学习——文件上传漏洞

学习自农夫安全A14



定义

由于程序员在对用户文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。

成因

web页面常有的上传头像等可以由用户上传文件的功能,有些程序员没有对于用户的上传行为做任何限制,导致用户可以上传可执行的脚本文件并且得到了脚本文件的路径从而获得网站的控制权,比如php为后台的网站,被上传了shell.php里面写着

<?php @eval($_POST[pass]);?>

那么攻击者再获得了上传文件的路径后,就可以通过Cknife、御剑等工具获得网站的控制权或者开展后续的攻击动作

这里面不仅是上传文件的动作很重要,获得上传文件后的路径也很重要,不然不知道怎么访问上传的文件,工具就不能连接后台服务器

危害

获得网站的控制权,随意删改翻阅网站的文件,危害极大。

攻击流程

DVWA(low)
1、随意选择一张图片上传成功并且从下方红字处获得了文件路径

http://192.168.48.137/hackable/uploads/2023-03-22_19-09.png

在这里插入图片描述
2、访问图片路径成功
3、直接试试上传一句话木马文件,成功
在这里插入图片描述
4、访问shell.php成功
5、使用Cknife连接目标主机,成功(md,这里做的时候一开始一句话写错了,死活连不上

红线处填文件的访问路径,红圈处填一句话木马中的密码

在这里插入图片描述
在这里插入图片描述

防护和绕过

DVWA(Medium)
1、分别上传.jpg文件(成功)和.php文件(失败),然后利用burp抓包在Comparer模块对比数据包,红线处为重点关注对象,寻找.php文件上传失败的原因,以及绕过的方式。
在这里插入图片描述
2、通过控制变量法,观察返回包后发现,将.php文件的数据报的content-Type字段更改为image/png就可以绕过,也可以将图片文件的内容抓包后替换为一句话木马。后一种方法需要在上传后再寻找漏洞将服务器中的.png文件的后缀名改为.php。

观察源码

$uploaded_name = $_FILES[ ‘uploaded’ ][ ‘name’ ]; 获取上传文件的名称
$uploaded_type = $_FILES[ ‘uploaded’ ][ ‘type’ ]; 获取上传文件的类型
$uploaded_size = $_FILES[ ‘uploaded’ ][ ‘size’ ]; 获取上传文件的大小
if( ( $uploaded_type == “image/jpeg” || $uploaded_type == “image/png” ) && ( $uploaded_size < 100000 ) )

发现对上传文件的类型和大小进行了判断。只允许上传JPEG或PNG图像,并且文件不能大于100000字节
由于HTTP中的Content-Type可以被伪造,我们可以通过修改Content-Type的值来绕过判断。

一切在前端的判断都有办法绕过,都不安全

DVWA(high)
判断图片一般是判断文件头,我们伪造一个图片的文件头,然后插入脚本代码。 首先使用记事本对正常图片文件编辑,将php一句话代码写到图片最下面,保存。这样就可以欺骗文件类型的检测。
在这里插入图片描述
这个时候文件上传的漏洞我们已经利用得不能再利用了,在high模式下,需要用到其他漏洞,以达到更改已上传图片马的后缀名的目的。

解析漏洞

定义
通过各种字符拼接的方式,利用前后端检测的不同步,以达到绕过限定的文件类型之后服务器将攻击者上传的文件解析为攻击者希望的文件类型。
➡参考文章⬅

问题和思考

1、一个网站只能上传HTML页面的危害?
答:制作钓鱼页面上传后,引诱用户访问从而获得账户密码。还可以制作不适宜的内容(反党反社会)上传后,导致网站吃挂落。
2、为什么medium level限制了文件大小
答:一开始以为是防止上传文件过大占据过大的服务器的硬盘,不过,对于公司来说硬盘的数据空间不值钱,值钱的是带宽,如果没有限制用户上传数据的大小,用户上传过大的数据占据了过大的带宽导致网站的服务器直接挂了,这不就是一次合理合法的DDos攻击嘛。

后记

2023.3.25 | 1:04

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值