审计的同时翻一翻历史漏洞
诶嘿,漏洞+1
让我们把视角切换到代码审计。。。拿到代码第一步,先看看组件。在pom.xml中一眼就定位到了那个在搔首弄姿的shiro
激动的心,颤抖的手,直接一手全局搜索关键字“setCipherKey”,这个方法是修改密钥的。查看是否存在,存在就说明有默认key,存在默认key,那接下来的工作就好办了。很好,没有,下一个。
既然是shiro,那可以搜一下未授权的接口情况,看看能不能从未授权的接口做点文章出来,全局搜索“anon”,这是代表shiro框架不需要认证就能访问的接口路径。还是蛮多的未授权接口的。
嗯?userfiles?好眼熟的路径,这不是jeesite框架的路径吗?jeesite,jeeplus,可能jeeplus有参考jeesite部分吧。jeesite有一个任意文件读取的漏洞,详细内容可以参考
https://www.yulegeyu.com/2021/06/19/JEESITE-V1-2-7-%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E6%BC%8F%E6%B4%9E/
试一手,漏洞又+1
不过搞来搞去目前都是一些不痛不痒的漏洞,孩子喜欢的是权限,需要的是shell。再回头看看这个未授权的路径呢,有一个/sys/file/webupload,感觉有戏啊,跟进一下代码,瞬间萎了,他在接口实现的地方设置了只有user权限才能访问
没关系,还有一个注册接口/sys/register/registerUser也是anon,跟进到对应代码看,这里没有@RequiresPermissions({"user"})
那么思路清晰,只需要根据括号里面的参数类型构造参数mobileLogin、randomCode、roleName、loginName、password就好了
最后构造出来mobileLogin=false&randomCode=1&roleName=system&loginName=admin1&password=1qaz!QAZ***注册成功(此处图忘记截了)
拿着注册的账号密码登录到后台,现在我们在回头看看上面提到的webupload/upload路径的文件上传。可以看到首先获取get传参uploadPath的路径,然后吧路径直接拼接到了fileUrl和fileDir变量里面去,并且filePath是fileDir直接拼接了上传文件的名称。这里可以发现代码中一没有对uploadPath做校验,导致可以通过../的方式上传到其他目录(正常的上传路径不解析webshell文件时候可以通过目录穿越的方式将webshell文件上传到其他目录去),二没有对文件后缀做校验,可以直接上传jsp文件。
那思路就清晰了改一下两个参数uploadPath=/../../../../../opt/tomcat8.5/webapps/jeeplus/webpage/error(这里的路径是上面报错注入显示出来的web目录情况),然后filename = 1.jsp
撤!
原文始发于微信公众号(跟着斯叔唠安全):【看完你也行】从源码泄露到后台rce
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论