记一次SRC漏洞挖掘的Getshell
注:微信公众号,csdn,freebuf原创以及本博客,都为我本人。 转载请邮件告知!
免责声明:由于传播、利用本文所发布的而造成的任何直接或者间接的后果及损失,均由使用者本人承担
挖src过程中一次巧妙的getshell
直接打穿了某985高校,大概有惊人的五万多人的身份证人脸和个人信息数据…..
听朋友说某证书改版了,最近闲来无事,也刚好想换一个
最后一次交漏洞,这已经是2021年了,有漏洞次数但是rank还不够,直接开干
START
涉及敏感内容已经高度马赛克,逻辑漏洞+文件上传的绕过
寻找目标
举例:
这个语法简单粗暴,是我平时用过最多的了
首先说一下这种语法的优与劣(个人经验,是否正确因人而异):
好处
- 可以发现目标的ip站点,就是比如标题是xxxx管理,ip:22.22.22.22类似这种,因为平常域名防护的话是比较好的(不绝对),ip就不 如,而且ip直接绕过了云waf,包括c段,扫端口(留意是不是云服务器),也比域名的方便,况且拿到域名有时候还要找到真实ip不是吗?例如↓
如果你用host domain之类的语法 就是针对于域名的搜索了,不是很容易发现ip的资产
坏处
- 最重要的就是会 偏离攻击目标 也就是打偏,刚开始的朋友比较容易犯这个错误,大佬装看不到,例如↓
比如这种,只是一些引流的广告,把同济当标题的一个噱头,或者说一些报考院校咨询站的标题 之类的,如下↓就是目标外的站点
这样的话用title岂不是浪费了自己的精力和时间,大家在实战中一定要信息观察,避免白忙活。
还有呢就是body的语法,这个筛选难度太复杂,就不说了。
简而言之,打点或者说是搜集资产,尽量使用多个语法配合逻辑符拼接整合,去搜索和筛选,这样以确保收集的站点更全更多。
锁定目标
爽,一眼有
看到这种目标,首先分析一下指纹
vue前端框架,看到这种框架,就看一下源码,一般前端信息特别特别多的
然后就去测试未授权,看js,抓包看接口之类的漏洞,至少我遇到的vue百分之七八十或多或少都有不同程度的逻辑漏洞和未授权,涉及到了一个路由守卫的东西
因为已经验证有漏洞, 多余的就不赘述。
漏洞细节
逻辑漏洞
留意一下token是空
返回包1改成0。
进去一瞬间,然后直接弹出来,拦截不放包的话也是不能点那些功能的,不拦截就闪退。
当时对js看了很久,但是没有截图就不细说了。
重新抓包测试
这次发现 token默认有了一个值 undefined 也就是未赋值的声明。
然后重复改包1变成0,居然发现不闪退了。
猜测是token起码是要有一个值的,undefined也是一个值,这里应该是设计有逻辑缺陷,按理说未赋值undefined不应该作为一个值,这里token不能是空的,黑盒测试嘛,就是大胆猜一猜,我的推测是这样的,空就主页面闪退,有值的话主页不闪退,功能点触发再去鉴定这个token是否正确。
f12给它一个值
至于为什么随便赋一个值,而不去使用undefined呢,我就是担心万一后端有”!=”这种 对undefined的检测
然后改包进入,居然可以随便点点点了,不再去闪退到登录。
点击这个查看活动
抓包,看到我添加的token=yydz了
看一下返回包,触发闪退,这里和前面的猜测差不多,触发功能点时再去验证token的正确与否
显然错误的token会提示未登录,返回值是1就直接闪退到登录界面,所以改0 留下来
文件上传
上传一个html
成功了
访问返回的路径就可以了
接着上传一个phpinfo()试试,为什么是php,因为前面的指纹信息已经告诉了 ,以及返回包的apache信息
看一眼禁用函数
头晕这种,这个时候哥斯拉就用上了
连接
直接getshell,有着很多的信息,貌似规模非常的大,这里就不继续横向了,点到为止
然后换证书的时候…这下白忙活了,怪我当时没细心看兑换限制,只能换个别的咯
总结一下
- 首先就是运气成分
- 还有就是多试一试,不要去感觉这没有那没有,试了就有成功的可能,别嫌麻烦
- 然后利用Vue这种框架的一些特性,前端决定的信息太多,结合js多多分析。
- 最后就是多多实战,积累经验