fofa查询随便点的一个虚拟仿真实训系统,存在多处未授权、逻辑漏洞,并且存在文件上传漏洞导致getshell,检索下来差不多十几个学校在用
从虚拟仿真系统入手感觉容易一些,一个系统可能很多学校都会用
fofa语法
1.验码复用导致绕过审核登录
这个逻辑缺陷挺离谱的,之前没遇到过
提供账户注册功能,注册后可以使用账户密码登录(需要审核),也可以手机验证码直接登录,但是如果没有注册填写完整信息,直接登录的账号是访客账号,没有权限
首先注册一个账号 10086/test123456_
注册这里填写信息,需要获取手机验证码(后来无意发现这里没有校验验证码)
用注册的账户密码登录,提示账号正在审核中,无法登录
审核未通过的时候,用手机号验证码登录,点击获取验证码会提示已经注册,不会再发送验证码
但是验证码可以重复使用,直接用刚才注册获取到的验证码登录
登录成功,点击右上角进入教学空间,成功进入,权限检验没问题
2.token泄露
findsomething找到了一个接口 /pubapi/userinfo,字面意思上是查看用户信息的
访问,返回无用户id,意思就是缺少用户id的参数,常见的一般就是id,uid,uuid,userId,userid,xxid这些
拼接上uid=,返回了该用户的user_token,并且测试了一下id是顺序的,也就是说通过这个接口可以遍历获取全站用户的token
token是认证身份用的,那就好说了,找一下接口然后添加上获取到的token进行利用
未授权创建/上传实训资源
观察了一下burp的请求包,有一个鉴权字段Authorization
丢到jwt解密一下,没什么有价值的信息,这里的uid=0应该是个缺省值
发现Authorization的值是通过/pubapi/authorize
接口返回的access_token
找到了一个创建实训资源的接口,提示需要Ut,猜测Ut就是user_token
添加Ut字段,值为刚才通过/pubapi/userinfo
获取到的教师账号的token,创建成功
再发送一次,发现labid是顺序的,可遍历
查看用户实训资源
/eapi/console/myresource?type=1&page=1&limit=20
替换token为哪个用户的就能看哪个用户的资源和id
未授权删除实训资源
既然labid是顺序的,就会导致遍历recourseid删除所有资源
/eapi/console/delrecourse?type=1&recourseid=
删除一个不存在的会提示删除失败
3.存储桶遍历
上面获取user_token的接口返回了头像的地址,发现是存储桶
访问url,删除域名后面的路径,泄露了存储桶的所有key
key拼接到后面就可以访问查看/下载该文件
https://xxxxx.xxx.myhuaweicloud.com/{key}
4.GetShell
进入到后台,创建课程的功能点里有个上传课程标准
上传php,没有过滤,直接上传成功,并且返回了文件地址
访问返回的地址,解析成功
在后台一共找到了三个上传的接口,有的接口做了过滤,有的没有
请勿非法渗透