记一次Smartbi从登录绕过到三连Shell
背景:某客户系统由Smartbi框架二次开发,存在登录绕过,可获取Web管理员权限,进入后台后可利用各种方法进行命令执行Getshell,最终使用三种不同方法拿下服务器控制权限
登录绕过获取管理员权限:
一般Smartbi存在三个默认用户,system,public,service
此处尝试得service可成功获取cookie
替换至浏览器中:

此处成功登录获取管理员权限
数据包:
POST /xxx/vision/RMIServlet HTTP/1.1 |
进入后台获取管理员权限后,尝试Getshell:
其中定制处,可执行计划任务:

这里执行ping命令验证是否执行成功
可以看到此处成功执行
计划任务代码:
importPackage(Packages.java.lang); |
其中还存在添加数据源的功能点,并且支持mysql数据库,尝试JDBC反序列化:
VPS启动fake-mysql-cli:
Fuzz测试mysql版本:
8.x: |
此处Fuzz得5.x版本:
先测试是否可以dnslog回显,连接字符串处写相应版本payload,用户名处写对应deser_URLDNS_http://your-dns-log ,密码随意填:
点击测试连接

此时收到请求
尝试执行命令:
Fuzz得可利用CC31链子

成功执行命令
在后台还存在执行数据库命令的功能:
查询数据库secure_file_priv权限,此处为空值,说明无任何限制,可以数据库权限进行任意读写
尝试读取hosts文件,成功读取
尝试写入webshell,由于into dumpfile无回显,此处会报错,但不影响运行结果
从网上下载源码得到Smartbi的业务路径
路径为相对路径的../../Tomcat/webapps/xxx/vision/
访问webshell:
执行whoami命令,获取服务器system权限
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 做 讓 人 远 远 聽 見 的 風!
评论