0x00 前言
ViewState
反序列化场景的提权案例,这里简单记录下他遇到的几个问题以及给他提供的一些绕过方法和利用思路。SharpViewStateKing
利用工具的一个小BUG问题,大家在实战渗透中如果有遇到这样类似问题时可以参考这篇文章解决。0x01 问题记录
问题一:
使用@Rcoil师傅的SharpViewStateKing利用工具连上了,但因当前权限或其他原因Web路径下没法上传Webshell,而且里边安装的有网站安全狗IIS版和服务器安全狗等多个安全防护软件,Command
模块执行命令时会提示:[!] ExecCMD error:拒绝访问
,如下图所示。
注意:如果这台机器上存在其他Web中间件(如:Nginx、Apache、Tomcat)时可以先通过FileManager
文件管理功能找到Web路径上传一个Webshell,然后在哥斯拉等Webshell管理工具的命令终端或内存执行进行提权,或者也可以想办法上线CobaltStrike后再使用PostExpKit
插件进行提权。
使用Load Assembly
模块可以内存加载PrintNotifyPotato
,但是执行我们自己上传的cmd.exe
都不行,CS马更不用说了,提示:[!] Cannot create process Win32Error:193
,如下图所示。
以上问题之前在《2.5 新版安全狗安全防护绕过》这篇文章中有记录过,我们只要在cmd /c
传参处加上IIS网站安全狗的内置白名单文件即可绕过,只要csc.exe
可正常执行说明是OK的,如下图所示。
"C:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe"
问题二:
我们在测试中发现csc.exe
虽然可以执行,也可以使用../
跨目录方式执行whoami.exe
,但是这里仍然无法直接执行CS马上线,不是提示Win32Error:2
就是Win32Error:193
...,如下图所示。
注意查看目标主机上是否存在我们使用的白名单文件?
注意使用....跨目录时得确定是否已到达正确目录下?
Win32Error:2(这种应该是没有找到执行的对应文件)
Win32Error:193(这种应该是被某些防护功能拦截了)
C:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe........system32cmd.exe
C:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe........system32whoami.exe
C:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe..........UsersPubliccs.exe
C:windowsMicrosoft.NETFramework64v4.0.30319csc.exe..........ProgramData2muma.exe
以上193
报错可能还是被拦截的问题,因为我们在本地测试中确定在正常情况下是可以这样执行的,如果执行exp后停留在这个界面(无回显)说明已经执行成功了,进程结束后就会有回显,如下图所示。
注意:师傅在实战测试中发现使用PrintNotifyPotato
执行CS马时会提示Win32Error:193
,但是又可以执行他们团队师傅用Golang重写的一个PetitPotato
,是个思路,可以试试,如下图所示。
0x02 BUG记录
Load Assembly
的Args
传参处没有处理好(闭合或需转义问题),但在测试后发现原来是Args
传参处的一个小BUG(没有处理好带有空格的命令,加""
一样),只要是在Args
传参处执行任何带有空格的命令都会失败,只执行了空格前的命令,如下图所示。sc qc
net user
tasklist /svc
0x03 利用思路
方法一:
Github找到可利用提权exp源码,将执行自定义命令改为执行shellcode即可,这里我们以PrintNotifyPotato
这个提权exp为例演示,其他提权exp自行测试,如下图所示。
方法二:
Github找一个Csharp执行shellcode源码,CobaltStrike生成C# shellcode替换重新编译下,然后通过内存加载执行这个.Net程序上线后使用PostExpKit
插件提权,如下图所示。
某师傅测试的另一种利用方式:使用一个Csharp执行命令工具sharpcmd.exe
执行CobaltStrike木马上线后再使用PostExpKit
插件提权。
注意:我这边测试使用Sharp4PSCommand.exe
执行会导致w3wp.exe
进程崩溃重启,这可能与目标环境有关吧,所以改用的sharpcmd.exe
,如下图所示。
另外提供一个思路:
使用哥斯拉ShellcodeLoader
功能将shellcode注入到IIS网站安全狗的内置白名单文件上线CobaltStrike后再去执行命令进行提权就不会拦截了。
或者在已上线CobaltStrike的情况下可以使用spawnto
命令设置注入拉起进程为内置白名单文件应该也行,已在本地进行测试(可行)。
0x04 注意事项
Win10/2012/2016
安装的网站安全狗IIS版的“禁止IIS执行程序”防护功能都没有生效(已安装IIS6兼容),尝试重装多次并重启都没用...。安全狗被收购后就停更了,不想再去纠结这问题了,就这样吧!!!原文始发于微信公众号(蚁景网安):ViewState反序列化绕过防护提权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论