Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86388123

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

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.png 6.png 7.png 8.png 9.png 10.png 11.png得到加密生成Password的代碼:

12.png生成salt的代碼:

13.png經動態調試,發現workload默認為12,生成的salt格式示例:$2a$12$DVT1iwOoi3YwkHO6L6QSoe,如下圖

14.png具體加密算法getEncryptedPassword()的實現細節:

15.png 16.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.png 20.png

計算結果為$2a$12$1hKeH4aM2LY4BvYpKT9Z5.p9cD453FjBAPYjp0ek94n936WRRAYme,同數據庫得到的password項一致

綜上,根據以上算法可以用來對用戶口令進行暴破

0x05 小結本文分析了ADAudit Plus數據加密的算法,區分域用戶,編寫實現代碼,後續根據算法可以用來對用戶口令進行暴破。