使用“进程注入”完成无文件复生 WebShell

访客5年前关于黑客接单1131

上周末,一个好兄弟找我说一个很重要的方针shell丢了,这个shell之前是经过一个S2代码履行的缝隙拿到的,现在缝隙还在,不过web目录悉数不可写,问我有没有办法搞个webshell持续做内网。正好我之前一向有个经过“进程注入”来完成内存webshell的主意,于是就趁这个时机以Java为例做了个内存webshell出来(暂时叫它memShell吧),给咱们共享一下:)
前语
一般在浸透过程中,咱们通常会用到webshell,一个以文件的办法存在于Web容器内的歹意脚本文件。咱们经过webshell来让Web Server来履行咱们的恣意指令。如果在某些机选情况下,咱们不想或许不能在Web目录下面写入文件,是不是就束手无策了?当然不是,写入webshell并不是让Web Server来履行咱们恣意代码的仅有办法,经过直接修正进程的内存也能够完成这个意图。咱们只需具有一个web容器进程履行用户的权限,理论上就能够彻底操控该进程的地址空间(更切当的说是地址空间中的非Kernel部分),包含地址空间内的数据和代码。OS层进程注入的办法有许多,不过详细到Java环境,咱们不需要运用操作系统层面的进程注入办法。Java为咱们供给了更便利的接口:Java Instrumentation。
Java Instrumentation简介
先看下官方概念:java Instrumentation指的是能够用独立于应用程序之外的署理(agent)程序来监测和帮忙运行在JVM上的应用程序。这种监测和帮忙包含但不限于获取JVM运行时状况,替换和修正类界说等。简略一句话归纳下:Java Instrumentation能够在JVM发动后,动态修正已加载或许未加载的类,包含类的特点、办法。该机制最早于Java SE5 引进,Java SE6之后的机制相对于Java SE5有较大改善,由于现在Java SE5这种古玩等级的环境现已不多,此处不再赘述。
下面看一个简略的比如:首要新建3个Java工程Example、Agent和AgentStarter。
在工程Example中新建2个类:
Bird.java:
public class Bird {
    public void say()
    {
        System.out.println("bird is gone.");
    }
}
然后把编译后的Bird.class仿制出来,放到D盘根目录。然后把Bird.java再改成如下:
Bird.java:
public class Bird {
    public void say()
    {
        System.out.println("bird say hello");
    }
}
Main.java:
public class Main {
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        while(true)
        {
            Bird bird=new Bird();
            bird.say();
            Thread.sleep(3000);
        }   
    }
}
把整个工程打包成可履行jar包normal.jar,放到D盘根目录。在工程Agent中新建2个类:
AgentEntry.java:
public class AgentEntry {
   public static void agentmain(String agentArgs, Instrumentation inst)
           throws ClassNotFoundException, UnmodifiableClassException,
           InterruptedException {
       inst.addTransformer(new Transformer (), true);
        Class[] loadedClasses = inst.getAllLoadedClasses();
        for (Class c : loadedClasses) {
            if (c.getName().equals("Bird")) {
                try {
                    inst.retransformClasses(c);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
       System.out.println("Class changed!");
   }
}
Transformer.java:
public class Transformer implements ClassFileTransformer {
   static byte[] mergeByteArray(byte[]... byteArray) {
       int totalLength = 0;
       for(int i = 0; i if(byteArray[i] == null) {
               continue;

[1] [2] [3] [4] [5] [6]  黑客接单网

相关文章

ARM架构上用来替代JTAG的调试协议SWD-黑客接单平台

关于嵌入式开发人员和专门进犯硬件的黑客来说,JTAG 实践上是调试和拜访微处理器寄存器的标准。该协议已运用多年,至今仍在运用,JTAG调试接口有必要运用VCC、GND电源信号,以及TMS、TCK、TD...

某HR业务网站逻辑漏洞挖掘案例以及POC编写思路分享-黑客接单平台

东西预备 BurpSuiteFree (或许咱们最喜爱最常用的抓包神器,需求Java环境); 火狐浏览器(个人比较喜爱的浏览器;360/Chrome等浏览器都能够); SwitchyOmega插件(设...

利用PHP解析字符串函数parse_str的特性来绕过IDS、IPS和WAF-黑客接单平台

众所周知,PHP将查询字符串(在URL或正文中)转换为$_GET或$_POST中的相关数组。例如:/ ?foo=bar被转换为Array([foo] => "bar")。查询字符串解析进程运用下...

代码审计第三讲实战发掘sql注入缝隙

 为了更好去发掘php缝隙,关于盛行的结构,咱们也要了解一下,这样才干发掘到高位缝隙。关于结构学习,不同公司有不同结构,所以关于结构,也因人而应,别的看公司需求,假如你的公司大部分选用某一种结构,你来...

代码审计第五节

 代码审计第五讲首要介绍了一些实例发掘缝隙,从而剖析xss缝隙,在实践cms中的影响。本例先从dvwa实践比如开端剖析,因为观看人数水平参差不急,所以从最根底开端讲起。让每一个看文章有所收成。 DVW...