java代码审计入门篇-女黑客 - Powered by Discuz! Archiver

nvhack 发表于 2018-12-20 18:36:53

java代码审计入门篇

感谢作者发表这么好的帖子,爱春秋确实不错。作者:i春秋核心白帽yanzmi原文来自:https://bbs.ichunqiu.com/thread-42149-1-1.html
本期斗哥带来Java代码审计的一些环境和工具准备。Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计Java代码的一些准备,希望能够帮助到刚入门的新手朋友们。0×00 Java环境说明1. 安装Java环境http://image.3001.net/images/20180628/15301556129627.png!small安装完成后默认的安装目录:http://image.3001.net/images/20180628/15301556246692.png!small环境变量的配置,环境变量配置主要是告诉我们自己的电脑Java安装完后几个关键文件的路径。●JDK的安装路径在哪里?——JAVA_HOMEhttp://image.3001.net/images/20180628/15301556311459.png!small●JDK命令文件位置(bin文件夹路径)——PATHhttp://image.3001.net/images/20180628/15301556429724.png!small●类库文件的位置(lib文件夹路径)—— CLASSPATHhttp://image.3001.net/images/20180628/15301556492272.png!small2. 运行Java程序Java的代码要执行前是需要事先编译的,编译器先将Java源文件编译成二进制的文件,而进一步解析器在解析成二进制的文件。HelloWorld.javahttp://image.3001.net/images/20180628/15301556656256.png!small一般java源码文件没有办法像PHP或者Python那样直接解析,所以不借助IDE的话,我们需要通过javac这个命令去进行编译。http://image.3001.net/images/20180628/15301556734555.png!small编译完后得到.class相应的字节码文件,这是可以用java直接解析。http://image.3001.net/images/20180628/15301556792239.png!smallhttp://image.3001.net/images/20180628/15301556892186.png!small
3. Java反编译由于很多时候我们得到并不是java的源码文件,而是.class结尾的字节码文件。所以我们需要一个工具帮助我们反编译看到相应的源代码。那这里推荐大家使用jd-gui这个工具。http://image.3001.net/images/20180628/1530155698828.png!small下图描述的上述过程:http://image.3001.net/images/20180628/15301557064795.png!small4. 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的官网去下载,解压后它的目录结构如下:http://image.3001.net/images/20180628/15301557155170.png!small2.Tomcat部署源码例子:javapms公测版源码部署http://image.3001.net/images/20180628/15301557233165.png!smallhttp://image.3001.net/images/20180628/15301557306053.png!small
将ROOT目录重命名为javapms1.4拷贝到tomcat的webapp目录下。http://image.3001.net/images/20180628/15301557368745.png!small访问http://127.0.0.1:8080/javapms1.4/
http://image.3001.net/images/20180628/15301557436956.png!smallhttp://image.3001.net/images/20180628/15301557639138.png!small0×03 IDE的使用1.选择适合自己的IDE个人比较习惯使用IDEA,除了IDEA以外,myeclipse也是一个不错的选择。http://image.3001.net/images/20180628/15301557702224.png!small2.IDEA上部署WEB项目因为在IDE上部署项目的话,更方便我们去调试代码和代码跟踪。 例子:javapms公测版源码部署。http://image.3001.net/images/20180628/15301557791295.png!smallhttp://image.3001.net/images/20180628/1530155786733.png!smallhttp://image.3001.net/images/20180628/15301557923691.png!small
配置运行程序,如配置tomcat。
http://image.3001.net/images/20180628/15301557997444.png!smallhttp://image.3001.net/images/20180628/1530155804214.png!smallhttp://image.3001.net/images/20180628/15301558125055.png!smallhttp://image.3001.net/images/20180628/15301558212426.png!smallhttp://image.3001.net/images/20180628/15301558259851.png!smallhttp://image.3001.net/images/20180628/15301558291541.png!smallhttp://image.3001.net/images/20180628/15301558322897.png!small
安装:http://127.0.0.1:8080/javapms1.4http://image.3001.net/images/20180628/15301558554909.png!small3.IDEA上调试功能这里主要用到的是IDEA的Debug功能。http://image.3001.net/images/20180628/15301558752732.png!small下面是几个调试中会用到的几个快捷键:●F7 ,进入下一步,如果当前断点是一个方法,进入方法体。●F8 ,进入下一步,但不会进入方法体内。●Alt+Shift+F7 , 进入下一步,如果当前断点是一个方法,方法还有方法则循环进入。●Shift+F8 ,跳出到下一个断点,也可以按F9来实现。●Drop Frame ,当进入一个方法体想回退到方法体外可以使用该键。
0×04 Maven——项目管理和构建工具1.Maven介绍Maven是一种自动构建项目的方式,可以帮助我们自动从本地和远程仓库拉取关联jar包。 官网地址:http://image.3001.net/images/20180628/15301558875998.png!smallmaven 远程仓库:http://image.3001.net/images/20180628/15301558915835.png!small之前审计的WebGoat就是使用Maven部署起来的。http://image.3001.net/images/20180628/15301559034380.png!small2.Maven部署项目在IDEA上部署Maven项目,这边以部署WebGoat源码为例。http://image.3001.net/images/20180628/15301559091730.png!smallhttp://image.3001.net/images/20180628/15301559124455.png!smallhttp://image.3001.net/images/20180628/15301559169759.png!smallhttp://image.3001.net/images/20180628/15301559258653.png!smallhttp://image.3001.net/images/20180628/15301559307085.png!smallhttp://image.3001.net/images/20180628/15301559349852.png!smallhttp://image.3001.net/images/20180628/15301559397169.png!smallhttp://image.3001.net/images/20180628/15301559437282.png!smallhttp://image.3001.net/images/20180628/15301559492301.png!smallhttp://image.3001.net/images/20180628/15301559539814.png!small
3.部署完成,运行与排错如果使用旧版的IDEA,那么程序的兼容性比较高,直接运行StartWebGoat.java文件,该文件的完整路径是\WebGoat\webgoat-server\src\main\java\org\owasp\webgoat\StartWebGoat.java然而不幸的是,使用最新版的IDEA报错了,报错信息如下:http://image.3001.net/images/20180628/15301559935820.png!small这是由于WebGoat的代码编写不够规范,在项目下的pom.xml没有规范书写程序包com.beust.jcommander.internal的相关信息,需要补充完整,补充如下:http://image.3001.net/images/20180628/15301560105703.png!smallpom.xml的完整路径为\WebGoat\webgoat-container\pom.xml。修改完成后,重新运行StartWebGoat.java,如果没有出错,看到控制台的Spring Boot运行界面说明编译和运行成功。 访问http://127.0.0.1:8080/WebGoat,即可看到WebGoat的登陆页面。
0×05 Fortify 代码审计工具Fortify是一个自动化的代码审计工具,斗哥这里使用的是在FreeBuf上前辈们的2009年版的一款,框架是eclipse+规则库。而他的收费版本费用实在惊人。2009版的规则库都比较早期了,它允许我们自定义规则,所以可以在这个版本基础上增加审计规则。
http://image.3001.net/images/20180628/15301560535797.png!small
页: [1]
查看完整版本: java代码审计入门篇