【土木人自学网安Day3】文件上传漏洞介绍与绕过的简单应用

 前言(每日一遍):

“初闻不明劝离意,回头已是提桶人”

 (本贴为自学记录贴) 

  • 是什么:许多网站都允许用户进行文件上传功能,注入头像定制,文件提交等,但是不正当的文件上传将会导致一系列问题
  • 为什么要学:可以通过文件上传漏洞获得webshell实现远程代码控制RCE

 一、文件覆写

一般当文件上传到网站时,网站会对文件进行一系列检查,会将文件伴随其时间进行重命名,以确保不会发生同名的文件从而导致文件覆写,有的网站发现上传同名文件则会返回错误。总之,网站会确保发生同名文件的情况,但是实际上这也是一个在文件上传漏洞测试时值得注意的点。

二、远程代码执行RCE

顾名思义,这将允许我们在Web服务器上任意执行代码。虽然通常获得的是一个低权限的web账户(如linux系统中的www-data账户),但是其危害还是巨大的。
远程代码执行通常是通过上传和网站后端语言一致的代码文件所导致的,传统一般是php代码,但近年较普遍的是Python Django和Node. js形式的Javascript。
通常,实现RCE的的方式有两种:webshell和反弹shell,对攻击者而言反弹shell比较理想,因为如果对上传施加了文件长度限制,或者防火墙规则阻止任何基于网络的shell。一般情况下我们的方法是先上传文件到服务器,然后导航至文件处激活它,但是注意,在路由应用程序中(即路由文件是以编程方式定义的,而不是映射到文件系统的应用程序),这种攻击方法变得更加复杂,发生的可能性也大大降低,而大多数现代Web框架都是以编程方式路由的。因此这种情况只能通过其他方式强制让网页为我们运行上传的脚本(由于本文是对上传漏洞简单介绍应用,并不深入讨论)。

(一)反弹shell实验

首先先进行枚举扫描,目的是为了检测是否有上传点,以及上传后的文件存放地址是否可以找到(这里以写入本地dns的网站shell.uploadvulns.thm为例),经尝试,上传文件处于/resources位置。
随后上传一个功能齐全的反弹shell【此处可下载】,通过访问文件位置进行激活

 可看到通过netcat实现接受。

三、过滤

 上述实验的实现是网站没有任何防护的情况,但是实际情况中会出现各种针对文件上传的防护功能,基本可以概括为客户端过滤和服务器端过滤两种。当我们讨论在客户端上的过滤脚本是,这时的绕过是容易的,因为这种过滤发生在我们自己的电脑上,理论上这是一件我们可以解决的小事,而执行在服务器端的过滤往往不这么容易,一个原因是因为我们不知道服务器端所使用的代码类型,虽然通常我们见到的例子都是php类型的,但是近年来微软的IIS ASP、C#、Node.js、Python、Ruby on Rails和各种其他选项已经被更广泛使用,因此服务器端的绕过通常离不开诸如wappalyzer的工具的信息收集。

(一)文件后缀名的更改

一些网站通过文件后缀的黑名单或者白名单进行过滤,因此可以通过后缀名的更改实现绕过。

(二)文件类型过滤

1.MIME认证过滤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值