Java代码审计
文章平均质量分 91
主要介绍Java代码审计技术
平凡的学者
以红队为终极目标
展开
-
命令注入漏洞
命令注入漏洞原理示例代码命令注入的局限无法进行命令注入的原因原理命令注入是指在某种开发需求中,需要引入对系统本地命令的支持来完成某些特定的功能。当未对可控输入的参数进行严格的过滤时,则有可能发生命令注入。攻击者可以使用命令注入来执行系统终端命令,直接接管服务器的控制权限。在开发过程中,开发人员可能需要对系统文件进行移动、删除或者执行一些系统命令。Java的Runtime类可以提供调用系统命令的功能。如下代码可根据用户输入的指令执行系统命令。由于cmd参数可控,用户可以在服务器上执行任意系统命令,相当于原创 2021-10-06 14:18:50 · 2400 阅读 · 0 评论 -
SQL注入
class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象:  ...原创 2021-10-05 19:32:14 · 6683 阅读 · 4 评论 -
Java动态代理
Java动态代理前言静态代理动态代理Proxy类InvocationHandler接口前言代理是Java中的一种设计模式,主要用于提供对目标对象另外的访问方式,即通过代理对象访问目标对象。这样,就可以在目标对象实现的基础上,加强额外的功能操作,实现扩展目标对象的功能。代理模式的关键点在于代理对象和目标对象,代理对象是对目标对象的扩展,并且代理对象会调用目标对象。Java代理的方式有3种:静态代理、动态代理和CGLib代理。静态代理所谓静态代理,顾名思义,当确定代理对象和被代理对象后,就无法再去代理原创 2021-09-22 15:28:37 · 174 阅读 · 0 评论 -
ClassLoader类加载机制
类加载机制前言ClassLoader类loadClass()方法的流程自定义的类加载器前言Java程序是由class文件组成的一个完整的应用程序。在程序运行时,并不会一次性加载所有的class文件进入内存,而是通过Java的类加载机制进行动态加载,从而转换成java.lang.Class类的一个实例。ClassLoader类ClassLoader是一个抽象类,主要功能是通过指定的类的名称,找到或生成对应的字节码,返回一个java.lang.Class类的实例。开发者可以继承ClassLoader类来原创 2021-09-16 16:27:15 · 608 阅读 · 1 评论 -
Java反射
反射什么是反射反射的基本运用获取类对象获取类方法获取成员变量什么是反射反射(Reflection)是Java的特征之一。C/C++语言不存在反射,反射的存在使运行中的Java程序能够获取自身的信息,并且可以操作类或对象的内部属性。根据官方的解释是反射能使Java代码能够发现有关已加载类的字段、方法和构造函数的信息,并在安全限制内使用反射的字段、方法和构造函数对其底层对应的对象进行操作。 通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。同样,Java的反射机制也是如此,在运行状态原创 2021-09-11 11:09:22 · 121 阅读 · 0 评论 -
filter过滤器
Java Web过滤器前言filter的配置基于web.xml的配置前言filter被称为过滤器,是Servlet2.3新增的一个特性,同时它也是Servlet技术中最实用的技术。开发人员可以通过Filter技术,能够实现对所有Web资源的管理,如实现权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。filter的配置filter由<filter>和<filter-mapping>两组标签组成。如果Servlet版本大于3.0,也可以使用注解的方式来配置filter。原创 2021-09-03 18:02:43 · 2758 阅读 · 0 评论 -
Servlet
Servlet基于web.xml基于注解方式基于注解方式的注解参数Servlet的访问流程Servlet的接口方法init()接口service()接口doGet()/doPost()等接口destroy()接口getServletConfig()接口基于web.xml<?xml version="1.0" encoding="utf-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="h原创 2021-09-01 11:33:04 · 347 阅读 · 0 评论 -
了解MVC模式与MVC框架
MVCMVC的概念模型(Model)控制器(Controller)视图(View)MVC工作流程MVC的概念MVC全名是Model View Controller,M是指数据模型,V是指用户界面,C是控制器。使用MVC最直接的目的就是将M和V实现代码分离,C则是确保M和V的同步,一旦M改变,V就应该同步更新。简单说,MVC是一个设计模式,它强制性地使应用程序的输入、处理和输出分开。MVC应用程序被分成3个核心部件:Model、View、Controller。模型(Model)表示携带数据的对象或Ja原创 2021-08-21 20:11:57 · 616 阅读 · 0 评论 -
Java EE分层模型
Java EEJava EE分层模型Java EE的核心技术Java数据库连接(JDBC)Java命名和目录接口(JNDI)企业级JavaBean(EJB)远程方法调用(RMI)ServletJSPJava EE分层模型Web开发之初的开发者在开发项目时,会把所有的代码都写在页面上,包括数据库连接代码、事务控制代码以及各种校验和逻辑控制代码等。如果项目规模巨大,一个文件可能有上万行代码。如果开发人员需要修改业务功能或者定位Bug,会有非常大的麻烦,可维护性差。那随着时间的推移,Java EE分层模型应运原创 2021-08-21 11:45:47 · 942 阅读 · 0 评论 -
项目构建工具
Maven前言基础知识掌握前言在实际的Java应用程序中,开发者会使用一些项目管理工具来快速构建和管理项目。作为安全人员,了解一定的项目构建方法有助于快速搭建漏洞环境和审计应用程序是否存在潜在的风险。基础知识掌握...原创 2021-08-07 19:01:56 · 813 阅读 · 0 评论 -
IDEA远程调试
远程调试前言对Jar包进行远程调试对Weblogic进行远程调试对Tomcat进行远程调试补充前言IDEA可以在无源代码的情况下进行远程调试,只需将程序的class文件或jar包添加到项目依赖即可对一些未开源的Java程序或大型中间件进行远程调试。我们将以冰蝎的Behinder.jar为例,并以CVE-2017-10271和CVE-2017-12615漏洞环境为例介绍如何使用IDEA配合docker对Weblogic和Tomcat中间件进行调试。对Jar包进行远程调试首先我们在IDEA上新建一个Ja原创 2021-08-01 16:13:47 · 2349 阅读 · 9 评论