相关推荐
【网络安全-SQL注入(4)】一篇文章带你了解sql server数据库三大权限,以及三大权限的SQL注入,SQL注入点利用以及getshell
2024-11-10 22:33

  

【网络安全-SQL注入(4)】一篇文章带你了解sql server数据库三大权限,以及三大权限的SQL注入,SQL注入点利用以及getshell

   首先分享一个自己做的很不错的网路安全笔记,内容详细介绍了许多知识

分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取

不知道怎么获取的可以私信联系我,欢迎技术交流

sqlserver SQL注入靶场的安装教程

欢迎技术交流

本篇文章主要讲解了sql server数据库是如何sql注入的,对于三大权限又如何进行SQL注入。sqlserver数据库主要通过报错信息来爆出数据,权限不同所能利用程度不同。之前我也出过详细的博客来讲解MySQL数据库SQL注入,以及access数据库的SQL注入,有兴趣可以学习了解,链接如下

首先知道一下mssql的权限:sa、dbowner、public三大权限,sa是最高权限(类似于windows的system、linux的root权限)

## sa权限:数据库操作,文件管理,命令执行,注册表读取等,高权限

## db权限:文件管理,数据库操作等

## public权限:数据库操作等

 sql server的默认端口号为1433,oracle是1521,mysql是3306,在windows下通过 netstat -an -p tcp -o 指令就能看到,并且可以查看到对应的进程pid,在通过任务管理器中的pid可以看到进程是谁。sql server默认是可以远程连接的,mysql需要授权才能远程连接。

db_name() ## 数据库名 @@version ## 版本信息 user_name() ## 当前用户 host_name() ##  计算机名称

--空格   ## 单行注释

 ## 多行注释

写了一个1.aspx页面专门用来进行测试,我放在了代码目录的sqlserver文件夹下面的1.aspx文件里,所以我们直接访问这个网址来进行 漏洞测试即可,网址 http://192.168.169.200/sqlserver/1.aspx?xxser=1

 接下来我们开始判断是否有注入点

首先,判断是否是MsSQL注入点,也就是先判断一下网站的数据库是不是mssql数据库,可提交如下查询.
 
 

 运行以后没有报错,说明数据库是SQL server数据库

首先sql server是基于报错注入,让他故意报错,返回报错信息中返回我们想要的数据

 
其中的system_user是查询当前数据库系统的用户名,返回值是字符型,因此在与数字int整型数据进行 对比时,会因为类型不匹配而造成数据库报错。从返回的错误信息中,可得知当前系统用户名。

 

用order by 猜字段数目

order by 1 order by 2 ... order by n-1 order by n 

如果 order by n 时没报错,而order by n+1 时报错了,说明查询时存在n个字段

当 order by 4的时候报错了,而order by 3的时候没爆错,说明后端查询时查询了三个字段 

sqlserver对数据类型比较严谨

先试一试 union select 1,2,3

报错了,从报错信息看,其中有字符串,因为报错说'yuan'转换成Int失败 ,逐步调试

## 一般来说列都是id,对应的就是int型 union select 1,'2',3 union select 1,'2','3'

 

 成功了,说明中间的字段是字符串类型,第一个,第三个字段为数字类型

通过提示的报错信息不断尝试,终于发现了有admin表 ,其中有admin字段

继续尝试,发现admin 表里有俩字段名是user,password,第一字段大概率是id字段,可以验证一下 

 果然没有报错,说明我们的猜想是正确的

1-9-1 查询系统信息

and @@version> 1 and user_name()> 1 and db_name()> 1

@@version是字符串,0是整数型;利用mssql在转换类型的时候出错,会提示信息

 1-9-2 爆库

 

 

 

##查询所有数据库名,除了master,iNethinkCMSand (select top 1 name from master..sysdatabases where name not in ('master','aini'))> 0 

爆出来的字段不断加入到上述查询语句中进行排除,挨个把字段名爆出来 

1-9-3 爆表

跟上面的爆库一个玩法

 

 1-9-4 爆裂

 

1-9-5 爆数据

我们之前通过联合查询知道了在admin表里有user和password字段

 

,判断是否是MsSQL注入点,也就是先判断一下网站的数据库是不是mssql数据库,可提交如下查询

 

 sysobjects是一个mssql自带的系统表

# 注入:比如  http://192.168.169.200/sqlserver/1.aspx?xxser=1 and exists (select * from sysobjects) ## 页面返回正常,则说明为MsSQL注入点。 ## 一般aspx多数是配合mssql数据库的。

1、用Windows 身份验证方式或 sa用户 连接服务器,打开安全性 → 右击登录名 → 新建登录名

 

2、常规设置

## 1、输入账户名,密码 ## 2、去掉密码策略的勾 ## 3、根据需要选择默认数据库,默认语言

3、服务器角色

根据需要授予角色权限,默认勾选 Public,一般够用了。  

4,用户映射

## 勾选映射的数据库,即该用户可以访问的数据库,这边实际上就是一个对数据库访问权限的控制 ## 勾选数据库角色成员身份,这边实际上就是一个对数据库操作权限的控制  ## db_datereader:只读的权限  ## db_datawirter:只写的权限  ## db_owner: 数据库拥有者权限,增删改查备份等都可以做  ## public权限:默认权限,增删改查都可以,如果想让用户只读,那么就再勾选上db_datereader角色

5,安全对象、状态 默认即可,可以不设置。如有特殊需要再去设置。

​ 接下来就可以新建数据库,然后新建用户、分配权限进行操作了。

3-1-1 检查是否为sa权限

如果返回的是sa,那么可以直接判断出用户的权限,但是这里只有提交如下链接查询的权限

 

执行成功,则说明是sa权限 

 但是这个语句有点问题,我们先忽略他吧,因为不管输入的名称是不是sysadmin,都不会报错。

3-1-2 判断一下xp_cmdshell存储过程是否存在

xp_cmdshell是mssql数据库的扩展存储功能,这个功能可以直接执行操作系统的指令(ipconfig、pwd等等),默认情况下这个功能是禁用状态的,所以我们先要看看是否开启了,但我们需要打开的时候,我们可以自行打开,但是这个功能只能是sa这样的权限用户才能开启,dbowner、public等权限都是不能开启的,好,检查一下是否开启了

 

没有报错,说明扩展存储功能是开着的 

 如果发现报错了,说明扩展没有开启,那么我们需要恢复一下或者说打开一下这个功能,如下操作

3-1-3 恢复xp_cmdshell

 

 没有报错,说明恢复成功

开启了xp_cmdshell,我们接下来就可以添加用户等操作了。

3-1-4 添加账号

 

先看看有哪些用户,我们穿件一个test用户试一试 

   没有报错,说明执行成功了

用ner user 命令查看发现确实创建了一个test用户 

3-1-5 将账号添加到管理员组

 

 没有报错,说明执行成功了

3-1-6 开3389远程连接端口

既然已经是管理员组的用户了,那么别人想远程控制你的电脑,那么他就可以开启3389端口,默认远程桌面是关闭的。下面的是通过cmd指令修改注册表的一个选项来开启3389

 没有报错,执行成功了

我的电脑右击,属性,远程 可以看到远程桌面已经开启了 

然后,比如通过我们物理机,我的物理机是win10,来远程连接一下win2003的虚拟机,win10上使用快捷键【win】【R】,输入【mstsc】调出远程桌面界面。

 

 然后就是让你输入用户名和密码,我们已经创建了一个名为test  密码为123456的用户

用这个账号密码登录,就可以控制人家电脑了

那这样的话,就可以搞事情了。所以,如果你是运维人员,千万不要启动sa账号,因为可以直接执行系统指令,你看我们数据库这里,肯定是启用了的  

3-2-1 检查是不是dbowner权限

 

执行成功了,说明是dbowner权限 

接下来,我们需要找到网站路径,就是下面这个: C:wwwiisaspxsqlserver  

3-2-2 查找网站代码路径

2-1 网页报错

1.通过报错或者baidu、google等查找,不过还是通过扫描工具来的快一些。

2-2 搜索

baidu或者google等,通过site:xxx.com等来查找,看看有没有什么报错的页面或者敏感网页路径信息之类的

2-3 目录扫描 

我们用过的7kb、 穿山甲什么的。

用御剑扫描看看

2-4 通过查询语句查找

通过相关语句查找,但是也需要一个条件,需要对方开启了xp_cmdshell  

 

首先如果有black表就删除以后,重新创建black表,确保这个表存在 

 

通过执行系统命令查找网站真实路径保存在black表中 

 

最后从black表中查询即可,当然了,页面时没有回显的,所以通过报错的形式把信息带出来

 

3-2-3 一句话木马拿到webshell

通过注入语句来搞:比较麻烦一些

 

现在网站跟路径没有muma.asp文件,我们注入一个试一试 

 执行成功了,我们看看到底有没有写入成功

用工具连接一下吧,我就用蚁剑进行连接

发现能成功连接上目标主机了 

还可以利用一些工具对目标网站数据库进行备份数据等,添加系统用户,权限维持等 

通过这种权限登录的用户是拿不到webshell和系统执行指令权限的,属于最低权限,但是可以取到数据库的用户名和密码,拖库什么的都可以,只要发现注入点,基本都可以拖库,但是能不能拿到操作系统权限,这个要看当前数据库用户的权限了。

3-3-1 获取当前数据库名

 

 ​​​​​​​看到报错信息里面已经拿到数据库名称了

3-3-2 获取mssql所有数据库名

 

 

通过不断修改db_name();里面的数字,可以通过报错来爆出数据库名 

 3-3-3 获取当前数据库所有表名

 

3-3-4 获取表名和字段名

 

 

 

 

3-3-5 

如此往复就能看到所有admin表中的字段。  

3-3-5 获取字段内容

 

直接账号密码都拿出来了 

还是发现,手工来写注入语句,太繁琐了,通过工具跑,简单一些,后期专门写一篇博客,讲解各种工具来进行SQL注入  

 

这些要记下来,注入的时候主要找的就是这三个表,这几个字段  

所有的数据库防护手段基本都是一样的,就是对用户提交的数据做严格的过滤。

 

 

  

   首先分享一个自己做的很不错的网路安全笔记,内容详细介绍了许多知识

分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取

    以上就是本篇文章【【网络安全-SQL注入(4)】一篇文章带你了解sql server数据库三大权限,以及三大权限的SQL注入,SQL注入点利用以及getshell】的全部内容了,欢迎阅览 ! 文章地址:http://gzhdwind.xhstdz.com/quote/69407.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://gzhdwind.xhstdz.com/mobile/ , 查看更多   
发表评论
0评