文件上传漏洞是web系统中常见的一种功能,通过文件上传能实现上传图片、视频,以及其他类型的文件,但是随着web中包含的功能越来越多,潜在的网络安全风险也就越大。
如果恶意用户上传了可执行的文件或者脚本,就会导致网站被其控制甚至会使其服务器沦陷,以至于引发恶意的网络安全事件。
文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。
通过来说文件上传功能是没有问题的,主要是服务器如何对上传的文件如何进行处理。
若WEB未对用户上传的文件进行有效的审查,若存在恶意用户对其上传一句话木马,从而实现控制WEB网站的目的。
上传文件和文件执行是两个东西
漏洞分类:上传漏洞,解析漏洞,编辑器漏洞,中间件漏洞
围绕常见文件上传,分享几个实战中遇到的案例,对个人绕过手法,进行文件上传漏洞复现讲解。
情况一:
路径被403禁止:
这种只能用在一些管理员修复存在问题的情况下绕过
这里可以看到访问路径后,URL自动在action前面加上了/
这个时候只需要在前面继续加个斜杠,添加异或操作符即可绕过
临床表现为,即使一个正常图片,都是无限转圈发包发不过去
这个时候你可以尝试下让他发送他本地网站的一些资源路径,一般就一些首页图片什么的
这个时候这个上传就会秒成功,那么这个就是网站不出网的症状
办法一:
找到ueditor编辑器图形化界面自行上传一个图片木马
然后这个图片马就已经进入服务器内了,属于是他本地资源了
然后把POC请求路径资源改为这个本地路径的图片马
然后getshell
该站点的WAF为最新版安全狗
Aspx ashx asmx秒死传不了
这个时候也差不多不用试其他后缀了,因为安全狗封的后缀比你想得到的更多
这个时候可以考虑asmx这类型木马,asmx和aspx ashx本质不一样,asmx是asp.net通过SOAP协议生成发送消息的功能。大概率能绕过正则
可以尝试将asmx变形为a?s?m?x
这里可以看到是成功上传了asmx
然后就可以用哥斯拉工具进行连接
这个时候又会出现一种情况 连接失败
那么你的马可以换成其他类型的asmx的马,直接发包的那种
使用发包机制过asmx的马我就不发出来了
不建议直接用burpsuite进行发包,不太专业,而且也不规范,很容易报错
推荐使用AWVSscaner soapui wsdler 三种工具
这里我使用AWVSscaner演示
成功getshell
SOAPUI效果图
案例一:
EDU某SRC实战:
240P画质处理
通过弱口令进入后台
进后台第一步就找上传点,这里有一个上传点
上传JPG
由于是java,修改为jsp进行上传
可以发现并不是filename控制后缀
那估计就是str控制后缀
事实证明是对的
访问地址后弹下载
一般遇到这种情况直接跑路
再观察下请求包,可以发现filename的随机数控制着返回路径的命名
改成test试试能不能控制文件名
那能控制文件名估计就可以跨目录
可以看到目录能跨越上传
访问http://xx.xx.xx.xx/test.jsp”
成功getshell
先从文件重命名来说吧,当上传一个文件的时候如果有参数更改文件名的时候,就要想到是不是调用cmd去重置文件名
比如这种通过name参数重命名。就有可能调用cmd命令rename
EDU xx大学案例:
问就是弱口令进入后台
第一步还是找文件上传位置
上传抓包改PHP一气呵成,看到响应数据就知道是雷池
熟悉的配方
试试双写filename
通过上图可以得知他只判断第一个filename
所以双写无解
去掉引号,不行
filename大小写,不行
继续尝试一些办法依旧无解
将后缀置空,发现能传
尝试拼接
可以上传2222.x
换成php试一下
又拦截
换行试试 不行
现在的情况是,可以在同一行双写filename 删除2222. 后面的双引号试试,可以看到雷池检测了下方的filename
这个时候想个骚操作
已知换行双写闭合不检测
2.已知同一行filename可双写
3.已知换行双写filename无闭合会检测
4.已知不闭合单filename可写入
成功绕过
总结:当filename无闭合时候,他会判断下面一行是否为不允许上传类型,如果不是,第一行filename内容就会上传过去。
下图是双写的黑名单,上图是双写的白名单,一看就懂,一学就废。
某场地市HW案例
正常图片能传【
Asp aspx ashx asmx****全部秒死
这里我就不放一些各种绕过手法的图了,有能绕的,但是这里只是单纯讲SOAP木马,我就不透露其他绕过手法了
但是发现这里可以上传soap后缀
看起来似乎没毛病
把内容换成soap的马,内容通过编码绕过
没任何毛病奥
在.net里soap和asmx使用了相同的构建器,所以基本上soap和asmx扩展名的webservice都差不多
容易失误区
在后缀加上?WSDL发现报错了
通过soapui也无法连接
Soap马必须存在网站根目录才会生效,所以也是看运气能不能跨目录,该站点是能跨目录的,可以看到传到更目录成功生效
我使用的soap马效果是发包后生成asmx木马到网站根目录,通过曲线救国方式上传shell
生成p.asmx进入网站更目录成功,代码我就不分享出来了
出现asmx界面,懂的都懂了
成功getshell
文件上传漏洞是世界上最好的漏洞