爱春秋java代码审计,Java代码审计入门篇

本文详细介绍了Java代码审计的环境和工具准备,包括JDK安装、环境变量配置、Java程序运行与反编译。此外,还讲解了Tomcat服务器的安装与Web应用部署,推荐了IDEA作为开发工具,并介绍了Maven的使用方法。最后提到了Fortify代码审计工具,用于自动化代码审计。
摘要由CSDN通过智能技术生成

本期斗哥带来Java代码审计的一些环境和工具准备。

Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计Java代码的一些准备,希望能够帮助到刚入门的新手朋友们。

0x00 Java环境说明

1. 安装Java环境

首先是要安装JAVA相应的JDK安装包和相应的环境变量的配置。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

配置.webp.jpg (23.31 KB, 下载次数: 62)

2018-6-26 13:47 上传

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

目录.webp.jpg (25.4 KB, 下载次数: 74)

2018-6-26 13:48 上传

环境变量的配置,环境变量配置主要是告诉我们自己的电脑Java安装完后几个关键文件的路径。

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

home.webp (1).jpg (60.94 KB, 下载次数: 55)

2018-6-26 14:00 上传

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

path.webp.jpg (61.5 KB, 下载次数: 63)

2018-6-26 14:01 上传

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

class.webp.jpg (64.98 KB, 下载次数: 57)

2018-6-26 14:01 上传

2. 运行Java程序

Java的代码要执行前是需要事先编译的,编译器先将Java源文件编译成二进制的文件,而进一步解析器在解析成二进制的文件。

HelloWorld.java

[PHP] 纯文本查看 复制代码public class HelloWorld {

public static void main(String[] args){

System.out.println("Hello World,This is a test");

}

}

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

编译.webp.jpg (53.48 KB, 下载次数: 62)

2018-6-26 14:03 上传

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

解析.webp.jpg (49.81 KB, 下载次数: 60)

2018-6-26 14:03 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

命令.webp.jpg (40.61 KB, 下载次数: 61)

2018-6-26 14:04 上传

3. Java反编译

由于很多时候我们得到并不是java的源码文件,而是.class结尾的字节码文件。所以我们需要一个工具帮助我们反编译看到相应的源代码。那这里推荐大家使用jd-gui这个工具。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

工具.webp.jpg (38.09 KB, 下载次数: 70)

2018-6-26 14:04 上传

下图描述的上述过程:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

过程.webp.jpg (61.08 KB, 下载次数: 54)

2018-6-26 14:05 上传

4. Java平台

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

●Java SE —— 开发电脑软件

●Java EE —— 开发WEB网站

●Java ME —— 开发手机软件

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

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

Java ME(Java Platform,Micro Edition): 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。

0x02 Tomcat的安装和使用

1. Tomcat简介

常见的Java服务器:Tomcat、Weblogic、JBoss、GlassFish、Jetty、Resin、IBM Websphere等。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问等很多的场合下被普遍使用,是开发和调试JSP程序的首选。

Tomcat安装包可以去到apache的官网去下载,解压后它的目录结构如下:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

如下.webp.jpg (70.76 KB, 下载次数: 62)

2018-6-26 14:05 上传

2.Tomcat部署源码

例子:javapms公测版源码部署

8f3ff2fbfdd7c7c8339951a6542705fa.gif

部署.webp.jpg (61.06 KB, 下载次数: 58)

2018-6-26 14:06 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

品牌.webp.jpg (45.21 KB, 下载次数: 67)

2018-6-26 14:06 上传

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

目录下.webp.jpg (32.63 KB, 下载次数: 58)

2018-6-26 14:06 上传

访问http://127.0.0.1:8080/javapms1.4/

8f3ff2fbfdd7c7c8339951a6542705fa.gif

4 1.webp.jpg (28.48 KB, 下载次数: 66)

2018-6-26 14:07 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

4 2.webp.jpg (73.09 KB, 下载次数: 70)

2018-6-26 14:07 上传

0x03 IDE的使用

1.选择适合自己的IDE

个人比较习惯使用IDEA,除了IDEA以外,myeclipse也是一个不错的选择。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

选择.webp.jpg (18.84 KB, 下载次数: 59)

2018-6-26 14:08 上传

2.IDEA上部署WEB项目

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

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

部1.webp.jpg (30.52 KB, 下载次数: 52)

2018-6-26 14:09 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

部2.webp.jpg (29.78 KB, 下载次数: 64)

2018-6-26 14:09 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

部3.webp.jpg (58.41 KB, 下载次数: 66)

2018-6-26 14:09 上传

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

t 1.webp.jpg (39.57 KB, 下载次数: 63)

2018-6-26 14:13 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

t 2.webp.jpg (63.79 KB, 下载次数: 61)

2018-6-26 14:13 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

t3.webp.jpg (72.41 KB, 下载次数: 69)

2018-6-26 14:13 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

t 4.webp.jpg (66.78 KB, 下载次数: 58)

2018-6-26 14:14 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

t 5.webp.jpg (32.85 KB, 下载次数: 60)

2018-6-26 14:14 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

t 6.webp.jpg (64.16 KB, 下载次数: 59)

2018-6-26 14:14 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

t 7.webp.jpg (68.64 KB, 下载次数: 62)

2018-6-26 14:14 上传

安装:http://127.0.0.1:8080/javapms1.4

8f3ff2fbfdd7c7c8339951a6542705fa.gif

1.4.webp.jpg (20.43 KB, 下载次数: 57)

2018-6-26 14:16 上传

3.IDEA上调试功能

这里主要用到的是IDEA的Debug功能。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

功能.webp.jpg (44.69 KB, 下载次数: 83)

2018-6-26 14:17 上传

下面是几个调试中会用到的几个快捷键:

●F7 ,进入下一步,如果当前断点是一个方法,进入方法体。

●F8 ,进入下一步,但不会进入方法体内。

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

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

●Drop Frame ,当进入一个方法体想回退到方法体外可以使用该键。

0x04 Maven——项目管理和构建工具

1.Maven介绍

Maven是一种自动构建项目的方式,可以帮助我们自动从本地和远程仓库拉取关联jar包。

官网地址:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

地址.webp.jpg (72.71 KB, 下载次数: 58)

2018-6-26 14:18 上传

maven 远程仓库:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

cangku.webp.jpg (74.72 KB, 下载次数: 65)

2018-6-26 14:18 上传

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

起来.webp.jpg (76.79 KB, 下载次数: 61)

2018-6-26 14:18 上传

2.Maven部署项目

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例1.webp.jpg (48.64 KB, 下载次数: 68)

2018-6-26 14:22 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例2.webp.jpg (40.87 KB, 下载次数: 50)

2018-6-26 14:22 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例3.webp.jpg (28.96 KB, 下载次数: 76)

2018-6-26 14:22 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例4.webp.jpg (80.15 KB, 下载次数: 73)

2018-6-26 14:22 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例5.webp.jpg (25.92 KB, 下载次数: 69)

2018-6-26 14:22 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例6.webp.jpg (38.62 KB, 下载次数: 57)

2018-6-26 14:23 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例7.webp.jpg (38.25 KB, 下载次数: 50)

2018-6-26 14:23 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例8.webp.jpg (29.28 KB, 下载次数: 71)

2018-6-26 14:23 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例.webp.jpg (80.22 KB, 下载次数: 68)

2018-6-26 14:23 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例10.webp.jpg (117.9 KB, 下载次数: 64)

2018-6-26 14:23 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

例11.webp.jpg (28.92 KB, 下载次数: 59)

2018-6-26 14:23 上传

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

如果使用旧版的IDEA,那么程序的兼容性比较高,直接运行StartWebGoat.java文件,该文件的完整路径是\WebGoat\webgoat-server\src\main\java\org\owasp\webgoat\StartWebGoat.java

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

报错.webp.jpg (55.75 KB, 下载次数: 78)

2018-6-26 14:25 上传

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

[PHP] 纯文本查看 复制代码

com.beust

jcommander

1.35

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

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

访问http://127.0.0.1:8080/WebGoat,即可看到WebGoat的登陆页面。

0x05 Fortify 代码审计工具

Fortify是一个自动化的代码审计工具,斗哥这里使用的是在FreeBuf上前辈们的2009年版的一款,框架是eclipse+规则库。而他的收费版本费用实在惊人。2009版的规则库都比较早期了,它允许我们自定义规则,所以可以在这个版本基础上增加审计规则。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

规则.webp.jpg (134.04 KB, 下载次数: 67)

2018-6-26 14:25 上传

8f3ff2fbfdd7c7c8339951a6542705fa.gif

qrcode_for_gh_223e082fe8a7_344.jpg (12 KB, 下载次数: 63)

2018-6-26 14:26 上传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值