changeUserInfo信息泄露+ofsLogin任意用户登录
1diot9 Lv4

补丁文件是这两个:SecurityRuleOfcLogin.class,SecurityRuelForMobileChangeInfo.class,位置:\ecology\WEB-INF\myclasses\weaver\security\rules\ruleImp

ofsLogin.jsp任意用户登录

image.png

由补丁得知漏洞路由/mobile/plugin/1/ofsLogin.jsp

看一下jsp逻辑:

将传入的token和计算的token比较,相同的话才鉴权通过:

img

默认规则是通过loginid进行登录。注意,这里syscode必须是IM,因为表中默认值为IM。但是理论上写任意的也是查询到空,但是这里就是不行,不知道为什么:

img

img

HrmResource表:

img

默认是空的,需要自行创建:

img

gopage参数就是重定向,成功登录后会进行跳转,写成wui/index.html就能跳转到首页,不写也没事:

img

那现在的目标就是想办法让token相同了。

处理最后一个参数,其他我们都可控:

img

但是最后一个参数也是硬编码在配置文件里的,所以我们能够知道\ecology\WEB-INF\prop\transferE9.properties

img

于是可以得出token:

1
2
3
4
5
6
7
8
9
public static void main(String[] args) throws Exception {
String loginid = "baka";
String receiver = loginid;
String timestamp = "1";
String syscode = "IM";
String secretKey = "u6skkR";
String loginTokenFromThird = AESCoder.encrypt(receiver+timestamp, syscode+secretKey);
System.out.println(loginTokenFromThird);
}

但是我们的loginid哪里来?

这里就要用另一个信息泄露漏洞。

changeUserinfo.jsp

仍然能在漏洞补丁中找到路由:/mobile/plugin/changeUserInfo.jsp

img

找到对应jsp文件,看一下是怎么信息泄露的

传入的参数有:

img

先看type=getLoginid:

img

对mobile进行一个模糊查询,当mobile唯一时,直接返回对应的loginid,不唯一时返回0,不存在时返回-1

img

img

当type=getUserid时:

img

会根据我们传入的loginId是否存在给出不同回显,具体逻辑在hr.getUserId:

img

能找到就返回对应的Id,否则返回0,能用来爆破

img

再看type=status时:

img

也是根据loginId是否存在给出不一样的值,不过这里只有没修改过密码的loginId才会返回21,其他都是返回-1

img

小结

其实我是有这两个补丁类的,但是不知道为什么没有生效,可能是因为我把安全设置关了?后面发现缺少,把安全设置关了就被拦截了,具体怎么关可以看我写的泛微ecology9前置。

由 Hexo 驱动 & 主题 Keep
本站由 提供部署服务
总字数 52.9k 访客数 访问量