前言
一转眼貌似很长时间都没更新博客了,甚至连标题的大小和格式都有点忘了,今后应该尽量保持每周更新一次,主要是平常上课太忙了,在学校还总是不定时会刷新一些烂事,就耽误了很多时间。这篇文章用于记载我最近的一次由目标到供应链,拿到供应链弱口令,进而到后台测试未授权,最后通杀的过程,虽然最终只是一个貌似没法利用的SSRF,只能完成一个简单的带外,但起码算是体会到了一次通杀的乐趣,哈哈。
这次的通杀是一个CMS的前台漏洞,这套CMS貌似是某信创系统,因此许多国内的edu和gov都在用,一句话总结漏洞成因就是由于上传接口未作鉴权,导致“远程抓取图片”功能可以被普通游客使用,前台默认是不允许添加不带域名的url,但是通过抓包可以绕过这个小限制,进而把服务端的请求带到我们自己的主机上。下面我将再次模拟回到最初的渗透测试情境,与大家一起复盘这次测试过程。
测试过程
本次测试过程写的比较详细,包括了从最初发现特征,提取指纹,查找供应链,到最终供应链渗透,进而通杀,希望通过这次的过程为大家和我自己增长经验,提供思路。
CMS特征提取,指纹发现
-
与往常一样,从fofa中找一些资产,想测试一波, 我本人测试的习惯一般都会根据ip地址来避开站群系统,寻找其他ip的边缘资产,因为这种资产一般相较于站群系统,资产较为脆弱。
-
今天打开某个系统的前台网站,看起来就像普通的CMS站点一样,平平无奇
-
一如既往打开F12看一下js中有没有泄露的接口
-
可以看到这个前端的js很有东西,里面的config.js和util.js里面看起来都是很有用的东西,写了许多许多的接口地址,比如config.js
-
但是经过测试发现有的接口要么访问了就是没权限,要么就是访问了之后被拦截了,估计是做了ip白名单,只能在内网访问,接下来把视角放到util.js中去,一开始看很乱,但是往下翻找找一些像url路径写法的东西看一看,于是在下面发现了ueditor的常用路径。
-
发现ueditor后一开始想着通过拼接路径,看看能不能找到ueditor的路径,然后试一试能不能摸到ueditor的controller.php,进而测试功能,但是找了半天也没找到它这个网站把ueditor具体安到哪里了,只能放弃这条攻击链
-
迷茫之中想到了github泄露,于是尝试一波,比如这个js的变量名(P8CONFIG.RESOURCE)貌似很奇怪,直接把它当特征搜索一下吧:到github直接搜索,左边点击code选项,选择“在代码内容中查找”,结果如下。
-
果然还是有收获的,开头第一个直接就发现了在github中有用户上传了源码,,也发现了其他用户曾经在github中归档备份的前端页面的js代码也包含这个内容,可见这套系统的普遍与通用性。
-
能看出这个用户上传源码是在六年前了,正常思路有了源码之后可以直接展开代码审计,直接由黑盒转向白盒,但是毕竟这是一套站群的cms系统,体量十分庞大,再加上github搜索到的这个源码也有年头了,或许跟网上现有的版本不符,先下载下来,继续看一下,下一个目标:找出什么系统,直接供应链打击。在github中直接浏览一下,在项目中搜索一下版权文字,例如:powerby,发现了程序供应商:
供应链漏洞挖掘
-
找到软件供应商后瞬间好说了,直接浏览官网,找一下有没有演示系统,许多cms供应商都会搭建演示系统,方便买方实际体验,进而取得好的销售效果,但是这些演示系统由于不是正式使用的系统,因此里面没有敏感或重要的内容,进而导致供应商通常会把演示系统设置为弱口令
-
发现了演示系统,和大多数系统差不多,光看前台页面已经有那味了,哈哈
-
这种演示系统一般一切设置均为默认,因此系统的后台路径什么的都是不变的,从github中看到后台页面就单纯地是/admin.php,直接访问一下,发现确实跳转到了登录界面
-
OK,弱口令直接进到后台了, 可以看到功能点非常的多,接下来也就是进入了漫长的测试过程,我的步骤基本就是开着Burp的XiaYue插件,各种点点点,不过最终也没测出来哪里由未授权。。。
-
之后又想了一下,一般这种CMS系统的文件上传模块都是用网上开源的,自己二次开发,拿来直接用,就比如开头发现的ueditor和github上发现的ckeditor,于是进而到后台里看了看发布文章的上传模块,抓包,打开url发现看着貌似也像通用的
-
直接burp抓包,去掉Cookie,发现竟然还真的能用,直接越权了,但是还存在一个问题:光上传没有用,有后缀名白名单,无法造成危害。于是将目标对准“网路抓取”功能:
SSRF漏洞利用
-
一般这种都存在ssrf,我直接输入自己的OOB服务器ip试了试,发现弹窗了:
-
可见应该是做了检查,没关系,直接抓包,改包后发现正常回显,我们直接修改参数,改为自己服务器的地址,发现仍然正常回显:
-
直接打开我们的服务器,”nc -lvvp 521”开启监听521端口,若存在ssrf,那么我们的主机会收到来自对方服务器的请求
-
再次发送Payload,OK,可以看到已经收到了请求,因此ssrf证实存在,通杀GET!
后续
后续我尝试利用其他ssrf的扩大危害方法,但是都失败了,例如伪协议,端口探测等等,但总感觉这还有可利用的点,欢迎各位师傅们留言,互相讨论,最终也是提交了edu,小小刷了一波,哈哈哈,但是全是低危,很菜,吼吼~
image-20240325131036934
image-20240325131055323
总结复盘
这次的漏洞很简单,利用难度也较低,但整个由发现到通杀的过程非常有趣,这次渗透测试反映出其实挺多站群系统其实也有漏洞的,在日常的测试中多多关注前端的js,同时遇到一些可能是特征的js代码段或前端代码段,可以考虑去github中搜索,也许可以发现源码,在不断的信息收集中想办法找到程序的供应商,想办法从供应商的演示站找到漏洞,进而进行供应链打击,这是一条很不错的渗透测试思路。最后,很高兴可以与各位师傅分享,欢迎大家对我的文章和思路进行批评和指导,感谢阅读~