使用SQLite从*选择Code_Execution From*;

2020-06-14 01:12:13

SQLite是世界上部署最多的软件之一。然而,从安全的角度来看,它只是通过WebSQL和浏览器利用的狭隘视角来检查的。我们相信这只是冰山一角。在我们的长期研究中,我们在SQLite中试验了利用内存损坏问题,而不依赖于SQL语言以外的任何环境。使用我们的查询劫持和面向查询编程的创新技术,我们证明了可靠地利用SQLite引擎中的内存损坏问题是可能的。我们将通过几个真实场景演示这些技术:使用密码窃取的后端服务器,以及使用更高的权限实现IOS持久化。

每个人都知道,从黑客的角度来看,数据库是王冠上的宝石,但是如果你可以把数据库作为黑客工具本身使用呢?我们发现,简单地查询恶意SQLite数据库就可能导致远程代码执行。我们使用未记录的SQLite3行为和内存损坏漏洞来利用查询数据库是安全的这一假设。

多么?。我们创建了一个恶意的SQLite数据库,该数据库利用了用于打开它的软件。仅探讨了其中的几种可能性,我们将在窃取密码的后端解析凭据文件并通过替换其联系人数据库…来实现IOS持久化。

风景是无穷无尽的(提示:是不是有人说Windows100是0天?)。这非常可怕,因为SQLite3现在实际上内置于任何现代系统中。

在我们的演讲中,我们还讨论了SQLite内部机制以及我们滥用它们的新方法。我们必须发明我们自己的ROP链技术,只使用SQL CREATE语句。我们对堆喷射和SELECT子查询使用了JOIN语句,对x64指针解包和算术使用了JOIN语句。这是一个使用熟悉的结构化查询语言来利用原语的新领域,为通用地利用数据库引擎中的内存损坏问题奠定了基础。