实战复盘:内网环境渗透ms-SQL数据库

2024-05-26 17:52

本文主要是介绍实战复盘:内网环境渗透ms-SQL数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

渗透环境:如下图所示,web服务器、ms-SQL服务器、PC客户端在同一个网络中,彼此之间,没有路由器或防火墙的隔离,这是一种危险的网络结构,入侵ms-SQL服务器,非常容易。(实战中,web服务是一个中控考勤服务)

渗透原理:在win7机(或是kali虚拟机)上,浏览内网web,会触发web服务器联系ms-SQL数据库服务器,获取数据;在kali虚机上,我们可以截流web发送给ms-SQL的数据包,修改其中的sql语句,再将它发给ms-SQL执行,达到操控ms-SQL的目的。比如,我们可以增加一个新用户,然后,以新用户登入数据库。这样,我们就完全控制了ms-SQL数据库。这种攻击法,叫做中间人攻击。

渗透步骤:攻击步骤并不复杂,需要编写简单的脚本。过程中,只有二进制格式的字符串制作,略微复杂一点。我们将虚拟机kali作为攻击机,所有的操作都在kali上进行。bettercap和wireshark是kali的内置软件,无需安装,需要注意的是,kali的网卡需采用桥接模式。
一、使用bettercap,发动中间人攻击,使kali成为中间人。

1、 编辑 spoof.cap 脚本。可以使用各种编辑工具,可以使用vi,其命令是 vi spoof.cap。内容只有两行,#后面是注释。见下图:

2、将kali变成中间人。只有一行命令

bettercap --gateway-override  192.168.1.9 -caplet spoof.cap

# 将ms-SQL服务器视为网关,kali才能变成web和ms-SQL的中间人

3、检查kali是否成功变成中间人。在模拟环境中,可以到web服务器和ms-SQL服务器上,使用 arp -a(同时适用于win系统和linux系统), 查看ip地址和mac码,检验中间人攻击是否成功。但在真实环境中,因为你无法操作服务器,所以只能跳过此步骤。实战说明:在kali上分别ping一下两台服务器,有助于arp欺骗迅速生效。

二、用浏览器访问网页,用wireshark抓包,捕获的sql语句越长越好

1、启动wireshark并设定好捕获参数。图中左上第一个就是捕获按钮,第二个是停止捕获。

2、浏览器中,尝试浏览不同的网页。

3、在wireshark捕获的数据中,我们要寻找一个特定的数据包,该数据包中原始的sql语句越长越好,足够的长度才能为我们篡改sql语句,提供足够多的字符空间。tds.query可以过滤出所有的数据库相关包,我们可以查看sql语句,找到长度足够的sql语句。上图中,列出了很多sql语句包,384是最长的,所以,它就是我们要找的特定数据包

4、重复操作浏览器,确保特定数据包能够重复出现

5、从特定数据包中抽取其原生的sql语句,制作二进制格式的字符串,这个步骤难度最大,是成功与否的关键。上图中间区域,tabular data stream--tds query packet下面,可以看到完整的sql语句,它的确够长。鼠标放到下面蓝色区域,右键选择  as Escaped String,再粘贴到编辑器中,变成如下图所示,需要手工处理一下,对照上副图,下图中删除白底数据,保留蓝底数据,然后删除头尾的引号、斜杠等,使它变成一个标准的二进制格式的字符串,它就是我们抽取的原始sql字符串,然后,复制到后面sql_replace.js截图的第7行。

6、退出bettercap和wireshark

到目前为止,我们可以截留、监控、转发数据包,但是,我们还不能篡改数据。我们需要让数据经过一个代理tcp.proxy,在代理服务里面,才能修改数据。

三、编写2个脚本,一个是bettercap自动运行的脚本spoof.cap;另一个是替换sql语句的脚本sql_replace.js。

1、修改spoof.cap脚本,其内容从2行变成7行。原来的脚本,是用于启动arp欺骗攻击,增加的脚本作用是启动tcp.proxy代理。见下图:

2、编写篡改数据的脚本,文件名为 sql_replace.js,采用javascript语言 。tcp.proxy代理会调用它,篡改数据。

脚本中有两个函数:

第一个是onLoad(),bettercap运行成功后,会在屏幕上提示:tcp module loader ----------------;

第二个函数示onData(from,to,data),其中,只有data参数有用, data就是系统截留的数据包,截留后,传递给onData函数,让它分析和修改,data被修改后,会自动转发到ms-sql服务器,在其上执行。为了便于分析,原始的data要转换生成为strFromNet(图中第17行);onData()函数有二个重要的变量:一是strTotarget,它是我们伪造的sql语句,直接键盘敲入(图中第6行)。我们用它替换特定数据包中的原始sql语句;二是strFromCap,它是步骤二中,wireshark捕获的特定数据包中,抽取的原始sql语句,我们需要将它粘贴到这里(见图中第7行,为了方便阅读,图中数据截去了尾部,实际要长很多)。onData函数原理很简单,我们要在所有的捕获的数据包中搜索原始sql语句(图中第18行),一旦搜索到,将其替换成伪造的sql语句(图中第20行-38行),如果伪造的sql语句长度超过原生sql语句的长度,替换就会失败。如果短于原句,则填充空格补全。

四、重新运行bettercap,加载上述脚本,注意屏幕上应该有提示。

bettercap --gateway-override  192.168.1.9 -caplet spoof.cap

此时,onData()函数已经加载,随时都可能篡改数据了。

五、重复网页操作,完成对ms-SQL的渗透。

如果屏幕上提示: ------find it----  表示找到了特定数据包。如果没有出现这个提示,可能因为没有成为中间人,或是没有进行正确的网页操作,最大的可能是,捕获的原生sql数据包二进制转换出错了,需要重新转换一次。

如果屏幕上提示:  ------crack sucessed!:):):) 表示替换成功。

如果屏幕上提示: -----but,its too short to replace with long command!-----表示替换失败。

修改strTotarget的值,你可以执行任何sql语句,增加用户,删除用户,其他等都可以。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取

CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

这篇关于实战复盘:内网环境渗透ms-SQL数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005172

相关文章

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安