首页 > 编程控

TabShell 利用分析——执行 cmd 命令并获得返回结果 千万粉丝女网红哭诉被公司老板性骚扰?结局反转苹果 iOS16.5更新续航缩水,仅两款 iPhone 未受负面影响GPT之于SaaS,没有

时间:2023-06-08 09:45:07来源:aaa999

 

6月的1天,新的1天,快来看看小编今天的文章吧!

0x00 前言利用 TabShell 可以使用普通用户逃避沙箱并在 Exchange Powershell 中执行任意 cmd 命令,本文将要介绍利用 TabShell 执行 cmd 命令并获得返回结果的方法,分享通过 Python 编写脚本的细节。

0x01 简介本文将要介绍以下内容:执行 cmd 命令并获得返回结果的方法Python 实现0x02 执行 cmd 命令并获得返回结果的方法testanull 公开了1个利用的 POC,地址如下:https://gist.github.com/testanull/518871a2e2057caa2bc9c6ae6634103e

为了能够支持更多的命令,POC 需要做简单修改,细节如下:某些命令无法执行,例如 netstat -ano 或者 systeminfo解决方法:去掉命令:$ps.WaitForExit ( ) 执行 cmd 命令并获得返回结果的方法有以下两种:

1. 使用 Powershell 连接 Exchange 服务器,实现 TabShellPowershell 命令示例:需要注意以下问题:需要域内主机上执行需要 fqdn,没有支持 IP连接 url 可以选择 http 或 https

认证方式可以选择 Basic 或 Kerberos2. 通过 SSRF 漏洞调用 Exchange Powershell,实现 TabShell这里需要通过 Flask 建立本地代理服务器,方法可参考之前的文章《ProxyShell 利用分析 3 ——添加用户和文件写入》

0x03 Python 实现这里需要考虑两部分,1种是通过 SSRF 漏洞调用 Exchange Powershell 实现 TabShell 的 Python 实现,另1种是通过 Powershell Session 实现 TabShell 的 Python 实现,后者比前者需要额外考虑通信数据的编码和解码,具体细节如下:

1. 通过 SSRF 漏洞调用 Exchange Powershell 实现 TabShell 的 Python 实现为了分析中央的通信数据,抓取明文数据的方法可参考上1篇文章《渗透技巧—— Exchange Powershell 的 Python 实现》中的 0x04,在 Flask 中输出中央的通信数据

关键代码示例:通过分析中央的通信数据,我们可以总结出以下通信过程: ( 1 ) creationXml初始化,构造原始数据 ( 2 ) ReceiveData循环多次执行,返回结果中包含 "RunspaceState" 作为结束符

( 3 ) 执行命令 ;../../../../Windows/Microsoft.NET/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Utility/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Commands.Utility.dllInvoke-Expression

在返回数据中获得 CommandId ( 4 ) 读取输出结果通过 CommandId 读取命令执行结果 ( 5 ) 执行命令 $ExecutionContext.SessionState.LanguageMode=FullLanguage

( 6 ) 读取输出结果 ( 7 ) 执行命令并获得返回结果依次执行以下命令:在返回数据中获得 CommandId,并通过 CommandId 读取命令执行结果,这些命令的格式相同,发送数据的格式如下: ( 8 ) 执行命令并获得最终返回结果

发送数据的格式同 ( 7 ) 1致,执行的命令为: $Out,在返回数据中获得 CommandId,并通过 CommandId 读取最终的命令执行结果,提取执行结果的示例代码:2. 通过 Powershell Session 实现 TabShell 的 Python 实现

这里可以借鉴上1篇文章《渗透技巧—— Exchange Powershell 的 Python 实现》得出的经验:二者通信过程1致,只是通过 Powershell Session 实现 TabShell 的 Python 实现需要额外考虑通信数据的编码和解码

通信数据的编码和解码可参考上1篇文章《渗透技巧—— Exchange Powershell 的 Python 实现》中的 0x03数据的编码和解码示例代码如下:完整代码的输出结果如下图0x04 小结本文介绍了利用 TabShell 执行 cmd 命令并获得返回结果的方法,改进 POC,分享通过 Python 编写脚本的细节。

这是我对生活的1次思考,希望这篇文章能给你带来1丝启发和感悟。喜欢的小伙伴记得关注收藏点赞哦!"

用户评论(0条)

请文明上网,做现代文明人