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

访客6年前关于黑客接单1154

上周末,一个好兄弟找我说一个很重要的方针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]  黑客接单网

相关文章

30秒攻破恣意密码保护的PC:深化了解5美元黑客神器PoisonTap

近来,闻名硬件黑客Samy Kamkar运用5美元设备打造的黑客东西PoisonTap,只需30秒,就可以攻破设置有恣意暗码的电脑体系,并完成长时间后门装置。PoisonTap不是暴力破解暗码,而是...

DVNA:Node.js打造的开源攻防渠道

这是一款仍在活跃研制中的软件,假如你想要现在测验它现有缝隙,需求确保自己添加了Express结构。 DVNA简介 首要,期望咱们多多支撑UX/UI,协助咱们修正bug和优化文档。 DVNA(Damn...

极客必知:iPhone备份番外篇-黑客接单平台

假如你长时刻混迹于暗码破解的第一线,那么就十分清楚破解相同内容的不同文件格局对破解的速度的影响是十分大的。例如,破解维护RAR文档暗码所需的时刻是破解具有相同内容的ZIP文档暗码的十倍,而破解保存在O...

一名代码审计新手的实战阅历与感悟

blueCMS介绍 个人认为,作为一个要入门代码审计的人,审计流程应该从简略到困难,逐渐提高。因而我主张咱们的审计流程为——DVWA——blueCMS——其他小众CMS——结构。一起做总结,搞清楚缝隙...

【对立蠕虫】怎么维护网页里的按钮,不被 XSS 主动点击

前语 XSS 主动点按钮有什么损害? 在交际网络里,大多操作都是经过点击按钮建议的。例如宣布留言,假设留言体系有 BUG,那么 XSS 就能主动点击发送按钮,发布带有恶意代码的留言。老友看了中招后,又...

子域名收集思路与技巧整理

前语 本文合适Web安全爱好者,其中会说到8种思路,7个东西和还有1个小程序,看本文前需求了解相关的Web基础知识、子域名相关概念和Python 程序的基础知识。 感谢我的老友龙哥的技巧大放送以及Or...