Java代碼審計入門篇

做者:i春秋核心白帽yanzmiphp

原文來自:https://bbs.ichunqiu.com/thread-42149-1-1.htmlhtml

 

本期鬥哥帶來Java代碼審計的一些環境和工具準備。java

Java這個語言相對於PHP來講仍是比較複雜的,因此一開始接觸到Java源碼審計的時候會遇到一些關於環境和配置上一些困難,本文記錄鬥哥在開始去審計Java代碼的一些準備,但願可以幫助到剛入門的新手朋友們。web

0×00 Java環境說明apache

1. 安裝Java環境tomcat

image.png

安裝完成後默認的安裝目錄:服務器

image.png

環境變量的配置,環境變量配置主要是告訴咱們本身的電腦Java安裝完後幾個關鍵文件的路徑。併發

●JDK的安裝路徑在哪裏?——JAVA_HOMEapp

image.png

●JDK命令文件位置(bin文件夾路徑)——PATH框架

image.png

●類庫文件的位置(lib文件夾路徑)—— CLASSPATH

image.png

2. 運行Java程序

Java的代碼要執行前是須要事先編譯的,編譯器先將Java源文件編譯成二進制的文件,而進一步解析器在解析成二進制的文件。

HelloWorld.java

image.png

通常java源碼文件沒有辦法像PHP或者Python那樣直接解析,因此不借助IDE的話,咱們須要經過javac這個命令去進行編譯。

image.png

編譯完後獲得.class相應的字節碼文件,這是能夠用java直接解析。

image.png

image.png

 

3. Java反編譯

因爲不少時候咱們獲得並非java的源碼文件,而是.class結尾的字節碼文件。因此咱們須要一個工具幫助咱們反編譯看到相應的源代碼。那這裏推薦你們使用jd-gui這個工具。

image.png

下圖描述的上述過程:

image.png

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的官網去下載,解壓後它的目錄結構以下:

image.png

2.Tomcat部署源碼

例子:javapms公測版源碼部署

image.png

image.png

 

將ROOT目錄重命名爲javapms1.4拷貝到tomcat的webapp目錄下。

image.png

訪問http://127.0.0.1:8080/javapms1.4/

 

image.png

image.png

0×03 IDE的使用

1.選擇適合本身的IDE

我的比較習慣使用IDEA,除了IDEA之外,myeclipse也是一個不錯的選擇。

image.png

2.IDEA上部署WEB項目

由於在IDE上部署項目的話,更方便咱們去調試代碼和代碼跟蹤。 

例子:javapms公測版源碼部署。

image.png

image.png

image.png

 

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

 

image.png

image.png

image.png

image.png

image.png

image.png

image.png

 

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

image.png

3.IDEA上調試功能

這裏主要用到的是IDEA的Debug功能。

image.png

下面是幾個調試中會用到的幾個快捷鍵:

●F7 ,進入下一步,若是當前斷點是一個方法,進入方法體。

●F8 ,進入下一步,但不會進入方法體內。

●Alt+Shift+F7 , 進入下一步,若是當前斷點是一個方法,方法還有方法則循環進入。

●Shift+F8 ,跳出到下一個斷點,也能夠按F9來實現。

●Drop Frame ,當進入一個方法體想回退到方法體外能夠使用該鍵。


0×04 Maven——項目管理和構建工具

1.Maven介紹

Maven是一種自動構建項目的方式,能夠幫助咱們自動從本地和遠程倉庫拉取關聯jar包。 

官網地址:

image.png

maven 遠程倉庫:

image.png

以前審計的WebGoat就是使用Maven部署起來的。

image.png

2.Maven部署項目

在IDEA上部署Maven項目,這邊以部署WebGoat源碼爲例。

image.png

image.png

image.pngimage.pngimage.png

image.png

image.png

image.png

image.png

image.png

 

3.部署完成,運行與排錯

若是使用舊版的IDEA,那麼程序的兼容性比較高,直接運行StartWebGoat.java文件,該文件的完整路徑是\WebGoat\webgoat-server\src\main\java\org\owasp\webgoat\StartWebGoat.java

然而不幸的是,使用最新版的IDEA報錯了,報錯信息以下:

image.png

這是因爲WebGoat的代碼編寫不夠規範,在項目下的pom.xml沒有規範書寫程序包com.beust.jcommander.internal的相關信息,須要補充完整,補充以下:

image.png

pom.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版的規則庫都比較早期了,它容許咱們自定義規則,因此能夠在這個版本基礎上增長審計規則。

 

image.png

有問題你們能夠留言哦也歡迎你們到春秋論壇中來耍一耍  >>>點擊跳轉

相關文章
相關標籤/搜索