ViewState反序列化绕过防护提权

admin 2025年3月6日19:56:13评论27 views字数 2582阅读8分36秒阅读模式

0x00 前言

某师傅遇到的两个ViewState反序列化场景的提权案例,这里简单记录下他遇到的几个问题以及给他提供的一些绕过方法和利用思路。
另外还有SharpViewStateKing利用工具的一个小BUG问题,大家在实战渗透中如果有遇到这样类似问题时可以参考这篇文章解决。

0x01 问题记录

问题一:

使用@Rcoil师傅的SharpViewStateKing利用工具连上了,但因当前权限或其他原因Web路径下没法上传Webshell,而且里边安装的有网站安全狗IIS版和服务器安全狗等多个安全防护软件,Command模块执行命令时会提示:[!] ExecCMD error:拒绝访问,如下图所示。

ViewState反序列化绕过防护提权

注意:如果这台机器上存在其他Web中间件(如:Nginx、Apache、Tomcat)时可以先通过FileManager文件管理功能找到Web路径上传一个Webshell,然后在哥斯拉等Webshell管理工具的命令终端或内存执行进行提权,或者也可以想办法上线CobaltStrike后再使用PostExpKit插件进行提权。

使用Load Assembly模块可以内存加载PrintNotifyPotato,但是执行我们自己上传的cmd.exe都不行,CS马更不用说了,提示:[!] Cannot create process Win32Error:193,如下图所示。

ViewState反序列化绕过防护提权

以上问题之前在《2.5 新版安全狗安全防护绕过》这篇文章中有记录过,我们只要在cmd /c传参处加上IIS网站安全狗的内置白名单文件即可绕过,只要csc.exe可正常执行说明是OK的,如下图所示。

"C:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe"
ViewState反序列化绕过防护提权

问题二:

我们在测试中发现csc.exe虽然可以执行,也可以使用../跨目录方式执行whoami.exe,但是这里仍然无法直接执行CS马上线,不是提示Win32Error:2就是Win32Error:193...,如下图所示。

注意查看目标主机上是否存在我们使用的白名单文件?注意使用....跨目录时得确定是否已到达正确目录下?Win32Error:2(这种应该是没有找到执行的对应文件)Win32Error:193(这种应该是被某些防护功能拦截了)
C:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe........system32cmd.exeC:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe........system32whoami.exeC:WindowsMicrosoft.NETFramework64v2.0.50727csc.exe..........UsersPubliccs.exeC:windowsMicrosoft.NETFramework64v4.0.30319csc.exe..........ProgramData2muma.exe
ViewState反序列化绕过防护提权
ViewState反序列化绕过防护提权

以上193报错可能还是被拦截的问题,因为我们在本地测试中确定在正常情况下是可以这样执行的,如果执行exp后停留在这个界面(无回显)说明已经执行成功了,进程结束后就会有回显,如下图所示。

ViewState反序列化绕过防护提权

注意:师傅在实战测试中发现使用PrintNotifyPotato执行CS马时会提示Win32Error:193,但是又可以执行他们团队师傅用Golang重写的一个PetitPotato,是个思路,可以试试,如下图所示。

ViewState反序列化绕过防护提权

0x02 BUG记录

以上问题开始以为是这个工具Load AssemblyArgs传参处没有处理好(闭合或需转义问题),但在测试后发现原来是Args传参处的一个小BUG(没有处理好带有空格的命令,加""一样),只要是在Args传参处执行任何带有空格的命令都会失败,只执行了空格前的命令,如下图所示。
sc qcnet usertasklist /svc
ViewState反序列化绕过防护提权

0x03 利用思路

如果大家在实战中遇到以上这些问题时可以尝试使用以下几种方法进行进一步测试,这里我们只简单记录分享下利用思路和最终测试截图,就不去写具体操作过程了,实战中大家自行验证。

方法一:

Github找到可利用提权exp源码,将执行自定义命令改为执行shellcode即可,这里我们以PrintNotifyPotato这个提权exp为例演示,其他提权exp自行测试,如下图所示。

ViewState反序列化绕过防护提权

方法二:

Github找一个Csharp执行shellcode源码,CobaltStrike生成C# shellcode替换重新编译下,然后通过内存加载执行这个.Net程序上线后使用PostExpKit插件提权,如下图所示。

ViewState反序列化绕过防护提权
方法三:

某师傅测试的另一种利用方式:使用一个Csharp执行命令工具sharpcmd.exe执行CobaltStrike木马上线后再使用PostExpKit插件提权。

注意:我这边测试使用Sharp4PSCommand.exe执行会导致w3wp.exe进程崩溃重启,这可能与目标环境有关吧,所以改用的sharpcmd.exe,如下图所示。

ViewState反序列化绕过防护提权

另外提供一个思路:

使用哥斯拉ShellcodeLoader功能将shellcode注入到IIS网站安全狗的内置白名单文件上线CobaltStrike后再去执行命令进行提权就不会拦截了。

或者在已上线CobaltStrike的情况下可以使用spawnto命令设置注入拉起进程为内置白名单文件应该也行,已在本地进行测试(可行)。

ViewState反序列化绕过防护提权

0x04 注意事项

我们在实战测试中无论是遇到RCE远程命令执行漏洞还是Webshell管理工具(菜刀、蚁剑、冰蝎、哥斯拉)等,还是高权限MSSQL注入或者说是各种反序列化漏洞等,只要是能执行命令的利用方式都大差不差,不要局限于某个场景的利用方式,多测试积累经验,得学会灵活运用。写这篇文章本来是打算在本地模拟实战场景进行测试的,但不知道为啥在Win10/2012/2016安装的网站安全狗IIS版的“禁止IIS执行程序”防护功能都没有生效(已安装IIS6兼容),尝试重装多次并重启都没用...。安全狗被收购后就停更了,不想再去纠结这问题了,就这样吧!!!
ViewState反序列化绕过防护提权
学习网安实战技能课程,戳“阅读原文“

原文始发于微信公众号(蚁景网安):ViewState反序列化绕过防护提权

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月6日19:56:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ViewState反序列化绕过防护提权https://cn-sec.com/archives/3805966.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息