1.前言
朋友前几天发来个地址,让一块儿给看一下。。于是就有了这一次苦逼的测试经历。。
2.初步探测
朋友说只有这一个地址可以碰,其他的别动。。大体看了一下,是一个什么自来水的公司的平台。心想:像这样的公司,其实还是比较好做的,资产比较少,也没什么防护。直到后面才发现,脸都被抽肿了。
![图片[1]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113810.png)
比较幸运的是,没有验证码,可爆破。既然能提示,那就爆破试试吧。。看运气
![null 图片[2]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113813.png)
![null 图片[3]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113817.png)
既然是MD5加密,那就直接跑跑看,top500直接show hand
![null 图片[4]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113822.png)
比较幸运,进来了。
因为不知道具体框架是什么,所以只能找慢慢找漏洞点,不过总算是进来了。
![图片[5]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113825.png)
3.尝试利用
后台嘛,一开始想的就是最直接的方式还是上传。。最开始找到了头像的位置,想看看能不能直接上传,发现是可以的。
![图片[6]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113826.png)
看到回显后感觉还能再尝试一下,编码cb65a4a0-b3e0-4a16-8dca-188222dc4f10
这样的值在测试里很常见,虽然这图片的显示方式是以DownloadFile?filed=encode
进行,但文件落地还是在某些目录下,最开始以为这就是文件名,于是尝试一下常见目录,然而并没什么用。
![图片[7]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113829.png)
![null 图片[8]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113834.png)
此路不通,只能再找找看其他地方,兜兜转转找到了一个资料上传的地方,测试发现是可上传内容的
![图片[9]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113836.png)
本以为获取列表、下载的时候会有路径,结果看到数据包后。脑子都大了
![图片[10]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113839.png)
![图片[11]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113842.png)
再找找其他地方呗
数据表管理。。本以为进闺房得撬锁,结果门是透明的。。这多尴尬。
既然是数据库,那么网站内容在数据库中都能找到具体位置。翻翻看,万一呢。。
PS:这里有个数据库备份功能,别问我为啥不动。。。我只想说:外面的世界很精彩。
![图片[12]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113849.png)
![图片[13]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113851.png)
翻了一会儿,果然跟我之前猜测的一样,文件确实落地在服务器的某个位置。
![图片[14]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113852.png)
这的数据构造比较有意思,固定目录/Resource/DocumentFile/
+/encode1/
+/time/
+/encode2+后缀/
这样看,前面的都比较好猜测,其中encode1
=CreateUserId
,time
=年月日
,麻烦的是encode2
不知道是啥算法。。改天再瞧瞧。
既然路径有了剩下的就是上传内容了。
4.痛苦
本以为就这么结束了,没想到这仅仅是个开始。
起初在上传的时候,非常规后缀是可以上传的,就上图的.a
,.p
后缀。但真要上传脚本后缀的时,发现存在防护,而且防护相当严苛,而且不清楚具体是什么防护。不过,不幸中的万幸是,这个平台是部署在windows上的。。
4.1.Content-Dispositions上的尝试
我们在尝试进行绕过时,对Content-Disposition
的改造是永远不会缺席滴。这次也不意外
大小写done
![图片[15]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113853.png)
超长字符串done
![图片[16]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113856.png)
windows下对于文件的命名有些要求,禁止使用下列符号:“?”、“、”、“/”、“_”、“*”、“<”、“>”、“|”,猜测在服务器写入时开发者可能没没有考虑这样的问题。。结果不出意外,done
![图片[17]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113864.png)
更改filename
的边界,让防护匹配不到呢?又done
![图片[18]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113867.png)
多次使用filename
?又又done
![图片[19]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113869.png)
篇幅有限,以上仅仅是绕过的一小部分,后面还尝试过双文件构造、参数间添加特殊字符、位置变换、多写等等等等等等种方法。均以失败告终。
4.2.重新构造
既然文件上传中Content-Dispositions
尝试了这么多,都以失败告终,那么还有没有其他位置可以利用?答案是有的。
曾经看到过《从commons-fileupload源码看文件上传绕waf》,文末提到了dotnet也有这种问题,而此时环境就是donet,于是就找了一下donet的资料。之前大佬的研究
资料显示boundary
的处理存在一些问题,分号逗号和等于号作为分隔符,并根据字符集忽略一些空白字符,form-data字段可以不要,可以随便在filename
和name
前随意填充字段,但是filename
和name
后必须跟随等号,并且末尾有分号标识结束。
于是构造的思路一下子就拓宽了。大致思路有以下几种:
Content-Disposition:u0;;;;!@#$%^&*(;asdasu0085d;085filename=11.aspx
Content-Disposition:filename=11.aspx
Content-Disposition:aaaaaaaaaaafilename=11.aspx;aaaaaaaaa
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3ah8K0kGYGlF1wE4
Content-Type: multipart/form-data; boundary = ----WebKitFormBoundary3ah8K0kGYGlF1wE4
Content-Type: multipart/form-dataas,;,;;;;;; boundary=----WebKitFormBoundary3ah8K0kGYGlF1wE4
Content-Type: multipart/form-datau0085,;;,,,,,;;, boundary = WebKitFormBoundary3ah8K0kGYGlF1wE4
于是重新构造
![图片[20]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113873.png)
done
![图片[21]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113879.png)
又done
经历了N多不知道多少次失败的尝试之后,终于还是是成功了。。。
![图片[22]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113883.png)
最终的格式如下:
Content-Type: multipart/form-datau0085,;,,,,; boundary = ----WebKitFormBoundary3ah8K0kGYGlF1wE4Content-Disposition: u0;;;;!@#$%^&*(;asdasu008name="file"; filename==test.aspContent-Type: !!!
最后也是开心交shell
![null 图片[23]-头疼的上传绕过waf-NGC660 安全实验室](https://secpulseoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-198782-1681113891.png)
5.后记
针对文件上传是存在规范的例如:
- • 基于表单的文件上传: RFC1867
- • multipart/form-data: RFC7578
- • Multipart Media Type: RFC2046#section-5.1
而各个语言对于规范的遵守就不一定了,waf的匹配也是存在缺陷的,两者相结合,就给我们绕过提供了空间。
绕过waf这东西就是个体力活,多试试,万一呢是吧
往期推荐
E
N
D
本文作者:TideSec
本文为安全脉搏专栏作者发布:https://www.secpulse.com/archives/198782.html
昶之琴![资深玩家 徽章-资深玩家-NGC660 安全实验室](http://ngc660.cn/wp-content/themes/zibll/img/thumbnail-null.svg)
2年前0
我以为只要提交就行了好想告诉你![备受喜爱 徽章-备受喜爱-NGC660 安全实验室](http://ngc660.cn/wp-content/themes/zibll/img/thumbnail-null.svg)
2年前0
花巨资看一下