1.网上拿到的源码java源代码怎么用?
2.代码跟源码有什么区别
3.一文看懂内存马
网上拿到的java源代码怎么用?
网上下载的java代码怎么运行?
如果是runnable的jar,直接双击就可以运行
如果是分析源码,导入到eclipse里编译运行
JAVA源代码怎么运行
.java文件的源码话,非项目那种单篇幅的分析源代码需要先进行编译,生成.class文件可以在命令控制台下用java文件名进行运行,源码编译java文件需要javac.exe程序应该是分析eclemma 源码jdk中的工具,所以你需要下载jdk并配置环境变量,源码然后在控制台运行javac编译源文件所在目录下的分析java文件,会在本目录下生成一个同名的源码.class文件
(没有报错的情况下),然后运行java文件名即可运行该代码(前提是分析你这篇文件需要有main方法)。
网上的源码那些java源代码怎么用教你个比较实用的方法:
先弄清楚这个源代码是什么工程,自己创建一个这样的分析工程,复制这个源代码的源码src目录,覆盖你的分析src目录,这样的源码wp整站源码打包好处是不会有jdk版本和乱码的问题。
Java网站的源代码怎么在本地运行首先java网站是基于jdk运行的。你得先装jdk。去官网下载一个jdk安装。然后你得编译你的项目,打包到容器(tomcat,weblogic,jboss等)中运行即可。再提醒一下就是,看看你的源代码有木有用到数据库或者其他类型的服务。如果有的话,你得装数据库或服务,并且初始化数据。再启动你的你的容器。
代码跟源码有什么区别
源代码一般指的是:Html代码。
而代码指的是服务器所解析的语言,即服务器将代码翻译成为源代码。协议栈源码分析这种源代码浏览器可以识别,并从网页里面按照一定规则显示给用户,也就是我们看到的网页。
代码一般有:asp,php,aspx,jsp等等。
IIs将asp,aspx语言翻译成为Html语言。
apache可以将php=>html
tomcat,weblogic可以将jsp->html.
一文看懂内存马
webshell的变迁过程大致如下:
web服务器管理页面——> 大马——>小马拉大马——>一句话木马——>加密一句话木马——>加密内存马
内存马是无文件攻击的一种常用手段,随着攻防演练热度越来越高:攻防双方的博弈,流量分析、EDR等专业安全设备被蓝方广泛使用,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。歪歪漫画源码最新
Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站、应用。但传统的Webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于Webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度。
目标:访问任意url或者指定url,带上命令执行参数,即可让服务器返回命令执行结果
实现:以java为例,bios引导程序源码客户端发起的web请求会依次经过Listener、Filter、Servlet三个组件,我们只要在这个请求的过程中做手脚,在内存中修改已有的组件或者动态注册一个新的组件,插入恶意的shellcode,就可以达到我们的目的。
根据内存马注入的方式,大致可以将内存马划分为如下两类
1.servlet-api型 通过命令执行等方式动态注册一个新的listener、filter或者servlet,从而实现命令执行等功能。特定框架、容器的内存马原理与此类似,如spring的controller内存马,tomcat的valve内存马 2.字节码增强型 通过java的instrumentation动态修改已有代码,进而实现命令执行等功能。
2.1 Servlet
Servlet 是运行在 Web 服务器或应用服务器上的程序,是作为来自 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。它负责处理用户的请求,并根据请求生成相应的返回信息提供给用户。
2.1.1 Filter
简介
filter也称之为过滤器,是对Servlet技术的一个强补充,其主要功能是在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest ,根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据;在HttpServletResponse到达客户端之前,拦截HttpServletResponse ,根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
基本工作原理
实现
filter的生命周期
filter链 当多个filter同时存在的时候,组成了filter链。web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter。当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法,通过判断FilterChain中是否还有filter决定后面是否还调用filter。
2.1.3 Listener
简介
JavaWeb开发中的监听器(Listener)就是Application、Session和Request三大对象创建、销毁或者往其中添加、修改、删除属性时自动执行代码的功能组件。
用途
可以使用监听器监听客户端的请求、服务端的操作等。通过监听器,可以自动出发一些动作,比如监听在线的用户数量,统计网站访问量、网站访问监控等。
2.2 Tomcat
Tomcat 作为Servlet容器,将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,传递给servlet;同时会将响应的信息封装为HttpServletResponse类型的response对象,然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器。
2.3 其他java背景知识
2.3.1 java反射
2.3.2 java instrumentation
3 内存马实现
使用新增servlet的方式就需要绑定指定的URL。如果我们想要更加隐蔽,做到内存马与URL无关,无论这个url是原生servlet还是某个struts action,甚至无论这个url是否真的存在,只要我们的请求传递给tomcat,tomcat就能相应我们的指令,那就得通过注入新的或修改已有的filter或者listener的方式来实现了。比如早期rebeyond师傅开发的memshell,就是通过修改org.apache.catalina.core.ApplicationFilterChain类的internalDoFilter方法来实现的,后期冰蝎最新版本的内存马为了实现更好的兼容性,选择hook javax.servlet.http.HttpServlet#service 函数,在weblogic选择hook weblogic.servlet.internal.ServletStubImpl#execute 函数。
4 内存马检测与排查
在java中,只有被JVM加载后的类才能被调用,或者在需要时通过反射通知JVM加载。所以特征都在内存中,表现形式为被加载的class。需要通过某种方法获取到JVM的运行时内存中已加载的类, Java本身提供了Instrumentation类来实现运行时注入代码并执行,因此产生一个检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测。