Kate Li (Taiwan)的部落格

首頁

分享你的科技,為安全加點溫度.

作者 budney 時間 2020-03-26
all

Java這個語言相對於PHP來說還是比較複雜的,所以一開始接觸到Java源碼稽核的時候會遇到一些關於環境和配寘上一些困難,本文記錄鬥哥在開始去稽核Java程式碼的一些準備,希望能夠幫助到剛入門的新手朋友們。

0x00 Java環境說明

1.安裝Java環境

首先是要安裝JAVA相應的JDK安裝包和相應的環境變數的配寘。

安裝完成後默認的安裝目錄:

環境變數的配寘,環境變數配寘主要是告訴我們自己的電腦Java安裝完後幾個關鍵檔案的路徑。

●JDK的安裝路徑在哪裡?——JAVA_HOME

●JDK命令檔案位置(bin資料夾路徑)——PATH

●類別庫檔案的位置(lib資料夾路徑)——CLASSPATH

2.運行Java程式

Java的程式碼要執行前是需要事先編譯的,編譯器先將Java原始檔案編譯成二進位的檔案,而進一步解析器在解析成二進位的檔案。

HelloWorld.java

[PHP]純文字查看複製程式碼

一般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、電視機上盒和打印機)上運行的應用程序提供一個健壯且靈活的環境。

0x02 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目錄下。

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

0x03 IDE的使用

1.選擇適合自己的IDE

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

2.IDEA上部署WEB項目

因為在IDE上部署項目的話,更方便我們去調試程式碼和程式碼跟踪。例子:javapms公測版源碼部署。

配寘運行程式,如配寘tomcat。

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

3.IDEA上調試功能

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

下麵是幾個調試中會用到的幾個快速鍵:

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

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

●Alt+Shift+F7,進入下一步,如果當前中斷點是一個方法,方法還有方法則迴圈進入。

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

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

0x04 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的相關資訊,需要補充完整,補充如下:

[PHP]純文字查看複製程式碼

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版的規則庫都比較早期了,它允許我們自定義規則,所以可以在這個版本基礎上新增稽核規則。