Java代码审计入门篇
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 应⽤程序。
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、电视机顶盒和打印机)上运⾏的应⽤程序提供⼀个健壮且灵活的环境。
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版的规则库都⽐较早期了,它允许我们⾃定义规则,所以可以在这个版本基础上增加审计规则。
有问题⼤家可以留⾔哦也欢迎⼤家到春秋论坛中来耍⼀耍。