| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
项目地址
API文档
见图
对应
该成员方法调用ApplicationContext.getCryption(),根据选择的不同加密器和payload动态获得对应的Cryption实例
获取到实例JavaAesBase64,然后将pass & key 传入
执行到
跟进到
然后生成最终的后门文件。
分析一下是如何做到动态选择加密实例的?
跟进
其中并没有cryptionMap的生成过程,跟进其被赋值的过程,发现了
查看该方法在哪被调用了
程序启动时通过scanCryption()扫描/shells/cryptions/目录下的.class文件,最后调用core.ApplicationContext#scanClassX实现动态加载。
最终的调用栈为
见图
对应
“测试连接”
1、获取payload指令控制器,比如JavaDynamicPayload在shells/payloads/java/JavaShell.java,在这个对象中包含给webshell运行的动态payload shells/payloads/java/assets/payload.class
2、获取加密器实例,比如JAVA_AES_RAW在shells/cryptions/JavaAes/JavaAesRaw.java
3、初始化加密器,传入后门URL,密码等上下文,给shell发送payload.class
4、初始化payload指令控制器,传入上下文数据
5、下发一个test指令,将参数methodName=test加密后发送请求,
shell加载的payload.class代码中实现一个test方法,
执行后返回“ok”即为后门连接成功
| Back | FazBrowse Home | New Git URL |