Java代码审计入门篇

  • 格式:pdf
  • 大小:1.90 MB
  • 文档页数:8

Java代码审计⼊门篇

作者:

原⽂来⾃:

本期⽃哥带来Java的⼀些环境和⼯具准备。Java这个语⾔相对于PHP来说还是⽐较复杂的,所以⼀开始接触到Java源码审计的时候会遇到⼀些关于环境和配置上⼀些困难,本⽂记录⽃哥在开始去审计Java代码的⼀些准备,希望能够帮助到刚⼊门的新⼿朋友们。0×00 Java环境说明

1. 安装Java环境

安装完成后默认的安装⽬录:

环境变量的配置,环境变量配置主要是告诉我们⾃⼰的电脑Java安装完后⼏个关键⽂件的路径。

●JDK的安装路径在哪⾥?——JAVA_HOME

●JDK命令⽂件位置(bin⽂件夹路径)——PATH

●类库⽂件的位置(lib⽂件夹路径)—— CLASSPATH

2. 运⾏Java程序

Java的代码要执⾏前是需要事先编译的,编译器先将Java源⽂件编译成⼆进制的⽂件,⽽进⼀步解析器在解析成⼆进制的⽂件。

HelloWorld.java

⼀般java源码⽂件没有办法像PHP或者Python那样直接解析,所以不借助IDE的话,我们需要通过javac这个命令去进⾏编译。

编译完后得到.class相应的字节码⽂件,这是可以⽤java直接解析。

3. Java反编译

由于很多时候我们得到并不是java的源码⽂件,⽽是.class结尾的字节码⽂件。所以我们需要⼀个⼯具帮助我们反编译看到相应的源代码。那这⾥推荐⼤家使⽤jd-gui这个⼯具。

下图描述的上述过程:4. Java平台

刚接触到Java平台的时候,会接触到⼏个名词,如JavaSE,JavaEE,JavaME等等名词。简单来理解:

●Java SE —— 开发电脑软件

●Java EE —— 开发WEB⽹站

●Java ME —— 开发⼿机软件

Java SE(Java Platform,Standard Edition):允许开发和部署在桌⾯、服务器、嵌⼊式环境和实时环境中使⽤的 Java 应⽤程序。JavaSE 包含了⽀持 Java Web 服务开发的类。

Java EE(Java Platform,Enterprise Edition):Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信API,⽤来实现企业级的⾯向服务体系结构和 Web 2.0应⽤程序。

Java ME(Java Platform,Micro Edition): 为在移动设备和嵌⼊式设备(⽐如⼿机、PDA、电视机顶盒和打印机)上运⾏的应⽤程序提供⼀个健壮且灵活的环境。0×02 Tomcat的安装和使⽤

1. Tomcat简介

常见的Java服务器:Tomcat、Weblogic、JBoss、GlassFish、Jetty、Resin、IBM Websphere等。Tomcat服务器是⼀个免费的开放源代码的Web应⽤服务器,属于轻量级应⽤服务器,在中⼩型系统和并发访问等很多的场合下被普遍使⽤,是开发和调试JSP程序的⾸选。 Tomcat安装包可以去到apache的官⽹去下载,解压后它的⽬录结构如下:2.Tomcat部署源码

例⼦:javapms公测版源码部署

将ROOT⽬录重命名为javapms1.4拷贝到tomcat的webapp⽬录下。

访问

0×03 IDE的使⽤

1.选择适合⾃⼰的IDE

个⼈⽐较习惯使⽤IDEA,除了IDEA以外,myeclipse也是⼀个不错的选择。2.IDEA上部署WEB项⽬

因为在IDE上部署项⽬的话,更⽅便我们去调试代码和代码跟踪。

例⼦:javapms公测版源码部署。

配置运⾏程序,如配置tomcat。

安装:

3.IDEA上调试功能

这⾥主要⽤到的是IDEA的Debug功能。下⾯是⼏个调试中会⽤到的⼏个快捷键:

●F7 ,进⼊下⼀步,如果当前断点是⼀个⽅法,进⼊⽅法体。

●F8 ,进⼊下⼀步,但不会进⼊⽅法体内。

●Alt+Shift+F7 , 进⼊下⼀步,如果当前断点是⼀个⽅法,⽅法还有⽅法则循环进⼊。

●Shift+F8 ,跳出到下⼀个断点,也可以按F9来实现。

●Drop Frame ,当进⼊⼀个⽅法体想回退到⽅法体外可以使⽤该键。

0×04 Maven——项⽬管理和构建⼯具

1.Maven介绍

Maven是⼀种⾃动构建项⽬的⽅式,可以帮助我们⾃动从本地和远程仓库拉取关联jar包。 官⽹地址:

maven 远程仓库:

之前审计的WebGoat就是使⽤Maven部署起来的。

2.Maven部署项⽬

在IDEA上部署Maven项⽬,这边以部署WebGoat源码为例。

3.部署完成,运⾏与排错

如果使⽤旧版的IDEA,那么程序的兼容性⽐较⾼,直接运⾏StartWebGoat.java⽂件,该⽂件的完整路径是\WebGoat\webgoat-server\src\main\java\org\owasp\webgoat\StartWebGoat.java

然⽽不幸的是,使⽤最新版的IDEA报错了,报错信息如下:

这是由于WebGoat的代码编写不够规范,在项⽬下的pom.xml没有规范书写程序包com.beust.jcommander.internal的相关信息,需要补充完整,补充如下:

pom.xml的完整路径为\WebGoat\webgoat-container\pom.xml。

修改完成后,重新运⾏StartWebGoat.java,如果没有出错,看到控制台的Spring Boot运⾏界⾯说明编译和运⾏成功。

访问,即可看到WebGoat的登陆页⾯。

0×05 Fortify

Fortify是⼀个⾃动化的代码审计⼯具,⽃哥这⾥使⽤的是在FreeBuf上前辈们的2009年版的⼀款,框架是eclipse+规则库。⽽他的收费版本费⽤实在惊⼈。2009版的规则库都⽐较早期了,它允许我们⾃定义规则,所以可以在这个版本基础上增加审计规则。

有问题⼤家可以留⾔哦也欢迎⼤家到春秋论坛中来耍⼀耍