利用 Navicat 自带的http隧道进行脱裤



0x01 基本环境说明:

1
2
目标边界机器lnmp01的域名及内网ip: www.rootkit.org 192.168.32.167
目标内网中数据库[暂以mysql为例]服务器[win7]的内网ip: 192.168.32.168

1
很明显,lnmp01和win7在目标内网是可以互通的

0x02 实际脱裤可能会面临的一些困境:

1
2
3
4
5
6
想脱数据,但目标数据库不允许root用户外连,可能的原因多种多样,一般只grant到指定的ip才能连
目标站库分离[再正常不过],数据库在内网的某台机器上
即使没分离,当前的数据库用户又不允许外联,另外,由于当前数据库用户权限不够,也没法自己开启外联
即使是root,不知道什么乱七八糟的原因,没法grant允许root外连...
边界防火墙阻断外部ip对内部数据库端口[假设为3306]的访问等等....
还在为脱裤烦恼吗,嘿嘿……navicat也许可以帮到你

0x03 我们最终要实现的效果:

1
通过lnmp01这台机器,脱取内网win7机器上的所有数据

0x04 大概思路,前提是你现在至少已经有了一个菜刀的webshell 可执行系统命令,且能正常上传文件的情况下:

1
2
3
4
在数据量非常少的情况下,可考虑直接用菜刀,大马或者针对各种数据库的脱裤脚本来脱,一两万还是勉强可行的
还有一种,就是你也可以通过拦截菜刀的发送的sql语句,借助py把里面的语句替换成你自己的,以此来实现导出数据,不过效率肯定不是太高....
如果数据量非常多的情况下,传统的方法,还可能会利用端口转发,把目标本地或内网指定机器的数据库端口转发到自己vps上,然后在vps本地再用navicat来脱,至于转发工具就非常多了,如,ew,socat之流....
还有一种,就是咱们今天要介绍到的,利用Navicat自身提供的http代理连接方式,说白点儿就是http隧道,其实也是个烂大街的招儿了,但相见恨晚,嘿嘿……

0x05 具体操作,如下:
  首先,上传对应数据库的代理脚本[目前我们看到,暂只支持postgresql,sqlite以及mysql],这里暂以mysql为例,即上传Navicat安装目录下的ntunnel_mysql.php脚本到目标网站的任意目录中


  然后,在浏览器中尝试访问该脚本,从界面乍一看,还以为是个脱裤脚本,其实,那只是个连接测试,它只是为了测试你的代理能否连接成功,做了下简单的连接验证而已

  此时,在本地打开Navicat配置http连接,这里的通道地址就写你上面访问的那个url,说白点儿就是个代理端,记得勾上使用base64编码,防止waf从中作祟,然后主机名写localhost,账号密码写lnmp01本地数据库用户的账号即可,因为要连接lnmp01本地的mysql


  再来尝试连接目标内网中win7机器上的mysql,此时主机名ip就要写目标内网那台机器的ip了,数据库账号密码也要写那台机器上的数据库账号密码


  最后,实际的连接效果如下,此时即可尽情的脱裤了,navicat的速度和稳定性还是非常值得信赖的,唯一的缺陷就是速度可能会稍慢,不过这已经足以轻松秒杀市面上所有的脱裤脚本了

0x06 一点拓展:
    从上面的选项卡中我们也可以清晰的看到,除了可使用http隧道,它还支持通过ssh隧道和ssl加密 的方法来连接,不得不说,Navicat实在是写的太贴心了,原谅自己用了这么年,直到今天才领悟到它的精髓,哈哈……实在是尴尬

一些小结:
    这也是无意间听同事说到的,顿时感觉耳目一新,所以就回来好奇的多喵了一眼,说实话自己用http隧道用了这么多年,当时一看到Navicat的选项心里就已经猜中了90% 它大概是怎么实现的,其实早该想到了,结果回来仔细一看,原来都是烂大街的东西了,所以这里就顺便记录下,当备忘吧