记一次某授权单位的"丝滑"渗透
前言
接到某单位的渗透测试,纯黑盒的渗透测试,没有给资产信息和资产列表,,,,
信息搜集
直接百度搜索公司找到官网,并没有发现有用的信息,只通过查找子域名,解析一下ip,直接扫描c段,扫描端口,web服务开放的端口

有后台,但是没有前端,到这里不确定是不是该公司的资产,但是乌拉哇的一波操作之后并没有找到其它可以利用的地方,官网是在是没有什么可以利用姿势,,,,但是只是后台并没有账号和密码,尝试一下爆破依旧无果,这个时候在官网看到单位邮箱

类似于个人邮箱,但是不确定,爆破一下管理员账号密码没有用,直接拿邮箱的zxx
上,依旧没有密码,直接想着自己生成字典,尝试一下
https://www.ddosi.org/pass8/

直接爆破,比较有意思的是,竟然有密码,直接登录

内容管理这一块儿可以确定是甲方资产了,有指纹,真是让人惊喜意外,直接google搜索源码直接审计
审计上传点儿
导入maven项目,本地部署,令人无语的地方在环境搭建,有docker环境的话直接审还是比较舒服的,fortify
扫描,确实有点慢

根据扫描结果,分析代码位置
xxxxx\ofcms-admin\src\main\java\com\ofsoft\cms\admin\controller\cms\TemplateController.java

控制层后端功能点儿模板文件
,构造数据包,下断点

函数
类file.java中的file方法先初始化获取pathname,后对路径无过滤

在28行向下开始获取到文件名以及文件内容

26行结束时文件已写入,test..html
文件名写错了,请忽略不计。

成功写入,接下来就尝试写入jsp文件且需要jsp文件被解析才能使用,但是经过测试该路径下的文件无法访问,那么需要判断文件上传的路径能不能可控

这里在56行的时候直接拼接了url,所以这里可以确定参数dirs
这里的路径也是可以可控的,同样在44行的方法中调用了类file的方法,filename也是可控的,经过测试可以判断在路径static
下的jsp能够被解析,上传文件的时候需要对webshell进行编码

访问之后冰蝎连接

利用
构造数据包进行上传,这里有一点儿就是路径猜测的问题,因为上面分析到后面的绝对路径,但是文件目录结构跟本地搭还是有点儿不同,所以上传的时候多做测试即可。
http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.shell.jsp

ok,完事儿,接下来就是内网渗透了,内网穿透到自己的vps慢慢玩儿
小结
开源的cms换了个壳,指纹识别的时候就已经可以尝试直接利用了,顺便自己分析一下,,,这就是这个题目的原因,可以直接利用确实还算"丝滑"。