免责声明
由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
01 目标
先看学校的域名ip地址
注意:这里我建议不要看主域名的,看二级域名的ip地址。因为一些地区的职业院校都是集中统一在一台服务器上的,只有一些二级域名才会搭建在学校的机房里面
如我们学校的二级域名:
creat..com 上面搭建的系统是智慧校园系统。IP归属地与学校地理位置符合。
那么开始找C段。
fofa关键词: 12.230..1/24
在12.230..194:8000下面找到一个系统。功能不详。
因为只有一个登录
类似系统有很多,比如OA等。这些系统开始都是一些登录,且是一个闭源程序,一没办法本地测试,二是不能代码审计。
我个人比较常用的方法:
查看HTML源代码-》提取特有文件名/路径等-》FOFA寻找相同网站-》猜测弱口令-》挖掘0day-》Getshell
因为程序本身就是闭源,开始的一个登录就让大部分人束手无策。无法探测到里面的内容
所以,遇到此类程序的第一种快捷方法:找相同程序的弱口令
在首页HTML源代码中,发现一处AJAX请求地址,
/Service/C.asmx/Get
那么我们就可以直接搜索这个文件名,就能获取到一些相同程序的站点
同样,搜索到的站点也是只有一个登录页面。那么我们可以挨个测一下弱口令
最终。发现一个类似于开发厂商的测试站点。admin /admin 成功登录进去
看到相应功能,就知道,这是啥了。。我们学校的大屏幕就是这玩意管理的
那么,废话不多说,开始测试功能
简单粗暴的来到个人中心(因为这里一般都会有更换头像的地方)
先试着穿一个jpg文件。
成功上传并返回一个地址:
然后更改文件名为:test.aspx
出现error,根据个人经验,出现这类问题,我一般喜欢在传一个ss.jpg。与成功上传的test.jpg同类型不同名
来判断是否为白名单。
发现ss.jpg也会出现error
那么,这里可以得出结论,之前的手法与白名单无关。
看了对应的参数:fileToUpload (上传的文件) directory(文件存储路径) ticket不详
当我将返回包更改为初始成功上传的状态的时候,更改了Ticket的内容。发现出现error
那么可以肯定,能否成功跟这个Ticket有关系。
将所有窗口关闭,一步一步对比。发现Ticket生成的请求包
多次测试。发现。生成Ticket的文件名必须要跟上传文件名相同才能成功上传。
那么生成一个test.ashx(个人喜欢) 得到的Ticket替换之前的
成功拿到shell。
那么这就是一个0day。有了这个系统的0day。我就可以拿去打自己学校的系统了
02 Getshell
将HOST地址改成自己学校的地址,发送数据包,发现直接rest了。。。。不用想,肯定是有狗。
asp,aspx,ashx,asmx,cshtml(不解析) 多个测试。发现都是直接rest
进行信息收集,知道了是奇安信WAF
。。。类型检测+内容检测。。。
玩nm!!!!!!!!!!!!!!
于是求助RG大哥的帮助,知道了NET平台下还有一个扩展名是SVC
https://github.com/ysrc/webshell-sample/blob/master/others/svcSmallSpy.svc
成功上传。。
但是访问地址出现了 500错误,也就是。。并没有被执行。。。
想到了之前自己发过的文章。。
用垃圾字符来绕。。。
Blog: www.websecuritys.cn/?p=274
经过测试发现。当内容字符逐渐变大,得到返回相应的时间也就越长。那么可以确定。后端在进行匹配。
Bypass原理。够多的垃圾字符可以消耗WAF的内存,导致Bypass
由于之前测试的结果。Ticket的文件名要跟上传的文件名相同
那么,先生成一个Ticket
这里用垃圾字符
我用了20w
内容{*.ashx}
得到文件的Ticket
那么,在上传的fileToUpload 的文件名,也要与Ticket的文件名相同,复制过来
同时,因为WAF自带内容检测。那么。将shell代码放在垃圾字符的末尾。
这里必须要注意:
由于垃圾字符太大。必须要用注释符号注释掉
<%--
dsadas垃圾字符
--%>
shell代码
成功Bypass。
拿到webshell
03 往期精彩
文章来源:昨日清风小雨
原文地址:https://www.websecuritys.cn/index.php/archives/54/
转载本样式风格、字体版权,请保留出处:李白你好