【技术原创】ADAudit Plus利用分析——数据加密分析
2023-8-18 12:0:0 Author: www.4hou.com(查看原文) 阅读量:18 收藏

导语:本文分析了ADAudit Plus数据加密的算法,区分域用户,编写实现代码,后续根据算法可以用来对用户口令进行暴破。

0x00 前言

在上篇文章《ADAudit Plus漏洞调试环境搭建》介绍了漏洞调试环境的搭建细节,经测试发现数据库的部分数据做了加密,本文将要介绍数据加密的相关算法。

0x01 简介

本文将要介绍以下内容:

数据加密的位置

算法分析

算法实现

0x02 数据加密的位置

测试环境同《ADAudit Plus漏洞调试环境搭建》保持一致

数据库连接的完整命令:"C:\Program Files\ManageEngine\ADAudit Plus\pgsql\bin\psql" "host=127.0.0.1 port=33307 dbname=adap user=postgres password=Stonebraker"

查询加密口令的命令示例:SELECT * FROM public.aaapassword ORDER BY password_id ASC;

返回结果示例:

1.png经测试,对应Web管理页面的位置为Admin->Technicians,如下图

2.png

点击Add technicians可以添加用户,这里可以选择添加自定义用户或者域用户

添加自定义用户需要输入口令,如下图

3.png添加域用户不需要输入域用户的口令,如下图

4.png

0x03 算法分析

1.加密算法细节

经分析,加密算法细节位于C:\Program Files\ManageEngine\ADAudit Plus\lib\AdvAuthentication.jar中的com.adventnet.authentication.util->AuthUtil.class

添加用户的实现代码:

5.png6.png7.png8.png9.png10.png11.png得到加密生成Password的代码:

12.png生成salt的代码:

13.png经动态调试,发现workload默认为12,生成的salt格式示例:$2a$12$DVT1iwOoi3YwkHO6L6QSoe,如下图

14.png具体加密算法getEncryptedPassword()的实现细节:

15.png16.png

在此处下断点,经动态调试得出以下结论:

如果是域用户,会使用默认口令admin作为明文,随机生成salt,算法使用bcrypt,通过固定算法计算得出密文,密文前29字节对应加密使用的salt

如果不是域用户,会使用用户口令作为明文去计算,例如默认用户admin,会使用实际的口令作为明文去加密得到密文

也就是说,在查询表public.aaapassword时,我们只需要取出password项前29字节作为加密使用的salt,不需要关注表public.aaapassword中的salt项

2.区分是否为域用户

查询命令示例:SELECT * FROM public.aaalogin ORDER BY login_id ASC;

返回结果示例:

17.png

其中,domainname为ADAuditPlus Authentication代表自定义添加的用户

这里使用inner join查询自动筛选出非域用户和对应的hash,命令示例:SELECT aaalogin.login_id,aaalogin.name,aaalogin.domainname,aaapassword.password FROM public.aaalogin as aaalogin INNER JOIN public.aaapassword AS aaapassword on aaalogin.login_id=aaapassword.password_id WHERE aaalogin.domainname = 'ADAuditPlus Authentication';

返回结果示例:

18.png

0x04 算法实现

测试参数如下:

已知明文为123456

查询数据库得到的password项为$2a$12$1hKeH4aM2LY4BvYpKT9Z5.p9cD453FjBAPYjp0ek94n936WRRAYme

从中可知salt为password项的前29字节,即$2a$12$1hKeH4aM2LY4BvYpKT9Z5.

计算密文的测试代码如下:

19.png20.png

计算结果为$2a$12$1hKeH4aM2LY4BvYpKT9Z5.p9cD453FjBAPYjp0ek94n936WRRAYme,同数据库得到的password项一致

综上,根据以上算法可以用来对用户口令进行暴破

0x05 小结

本文分析了ADAudit Plus数据加密的算法,区分域用户,编写实现代码,后续根据算法可以用来对用户口令进行暴破。

本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址

  • 分享至

取消 嘶吼

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟


文章来源: https://www.4hou.com/posts/MKQB
如有侵权请联系:admin#unsafe.sh