作者-叶子
扫描下方二维码进入社区:
相信大家都晓得过 CVE-2020-0688 ,由于部署完Exchange Server后使用了硬编码的 Machine Key ,从而导致篡改 ASP.NET Form 中的 VIEWSTATE 参数值打反序列化 RCE 。
复现起来确实很爽,但是实战用起来,确实也很拉跨。
比如说,对面 ban 掉了对外连接;比如说, web 目录不可写;再比如说,可写,但是对方会自动复原文件。
那么如何解决这些问题呢?
弯弯的一个师傅贴了文章,利用另一个 ActivitySurrogateSelectorFromFile gadget,它会call 一下 Assembly.Load 完成动态载入 .NET 组件,相当于我们可以在与aspx相同的环境下实现 .NET 任意代码执行,然后.NET中System.Web.HttpContext.Current可以获得http请求上下文,相当于可以即时写一个webshell,而这个webshell是无档案的。
如何操作呢?
使用以下命令即可:
这几个dll可以自己windows装一个.NET Framework在C盘找,或者直接从网上下。
ExploitClass.cs用下面这个可行
其中 Server.ClearError() 用来 stack 中记录的错误, context.Response.End() 来结束请求并回显,避免了后面可能出现的报错导致无法回显。POST 发送这个恶意的 VIEWSTATE 即可
然而有些服务器在gadget上打了微软的patch,返回时会报500,可以使用下面产生的VIEWSTATE,
它会使 DisableActivitySurrogateSelectorTypeCheck 变为 true
随后再发送第一个 VIEWSTATE 应该就没有问题了,再有问题建议自己本机搭建相同MachineKey环境或者干脆放弃。
原理参考:
https://silentbreaksecurity.com/re-animating-activitysurrogateselector/
可以拿赵师傅出的一道题看看,[BJDCTF 2nd]EasyAspDotNet:https://www.zhaoj.in/read-6497.html
HITCON 2018也提到了类似的问题 https://xz.aliyun.com/t/3019
PS:希望c.php没事
通知!
公众号招募文章投稿小伙伴啦!只要你有技术有想法要分享给更多的朋友,就可以参与到我们的投稿计划当中哦~感兴趣的朋友公众号首页菜单栏点击【商务合作-我要投稿】即可。期待大家的参与~
记得扫码
关注我们
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论