前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有关VIEWSTATE exploit在实战中的应用问题

有关VIEWSTATE exploit在实战中的应用问题

作者头像
字节脉搏实验室
发布2020-09-08 11:05:50
1.9K0
发布2020-09-08 11:05:50
举报
文章被收录于专栏:字节脉搏实验室

文章源自【字节脉搏社区】-字节脉搏实验室

作者-叶子

扫描下方二维码进入社区:

相信大家都晓得过 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没事

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档