
补丁文件是这两个:SecurityRuleOfcLogin.class,SecurityRuelForMobileChangeInfo.class,位置:\ecology\WEB-INF\myclasses\weaver\security\rules\ruleImp
ofsLogin.jsp任意用户登录
由补丁得知漏洞路由/mobile/plugin/1/ofsLogin.jsp
看一下jsp逻辑:
将传入的token和计算的token比较,相同的话才鉴权通过:
默认规则是通过loginid进行登录。注意,这里syscode必须是IM,因为表中默认值为IM。但是理论上写任意的也是查询到空,但是这里就是不行,不知道为什么:
HrmResource表:
默认是空的,需要自行创建:
gopage参数就是重定向,成功登录后会进行跳转,写成wui/index.html就能跳转到首页,不写也没事:
那现在的目标就是想办法让token相同了。
处理最后一个参数,其他我们都可控:
但是最后一个参数也是硬编码在配置文件里的,所以我们能够知道\ecology\WEB-INF\prop\transferE9.properties
于是可以得出token:
1 | public static void main(String[] args) throws Exception { |
但是我们的loginid哪里来?
这里就要用另一个信息泄露漏洞。
changeUserinfo.jsp
仍然能在漏洞补丁中找到路由:/mobile/plugin/changeUserInfo.jsp
找到对应jsp文件,看一下是怎么信息泄露的
传入的参数有:
先看type=getLoginid:
对mobile进行一个模糊查询,当mobile唯一时,直接返回对应的loginid,不唯一时返回0,不存在时返回-1
当type=getUserid时:
会根据我们传入的loginId是否存在给出不同回显,具体逻辑在hr.getUserId:
能找到就返回对应的Id,否则返回0,能用来爆破
再看type=status时:
也是根据loginId是否存在给出不一样的值,不过这里只有没修改过密码的loginId才会返回21,其他都是返回-1
小结
其实我是有这两个补丁类的,但是不知道为什么没有生效,可能是因为我把安全设置关了?后面发现缺少,把安全设置关了就被拦截了,具体怎么关可以看我写的泛微ecology9前置。