Java程式碼審計入門篇
原文來自:https://bbs.ichunqiu.com/thread-42149-1-1.html
本期鬥哥帶來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目錄下。
訪問http://127.0.0.1:8080/javapms1.4/
0×03 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 ,當進入一個方法體想回退到方法體外可以使用該鍵。
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執行介面說明編譯和執行成功。
訪問http://127.0.0.1:8080/WebGoat,即可看到WebGoat的登陸頁面。
0×05 Fortify 程式碼審計工具
Fortify是一個自動化的程式碼審計工具,鬥哥這裡使用的是在FreeBuf上前輩們的2009年版的一款,框架是eclipse+規則庫。而他的收費版本費用實在驚人。2009版的規則庫都比較早期了,它允許我們自定義規則,所以可以在這個版本基礎上增加審計規則。
有問題大家可以留言哦也歡迎大家到春秋論壇中來耍一耍 >>>點選跳轉
相關文章
- 程式碼審計入門總結
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇4 - XXE漏洞審計Java
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇2 - SQL隱碼攻擊漏洞審計JavaSQL
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇3 - 檔案上傳漏洞審計Java
- Java程式碼審計篇 - ofcms系統審計思路講解 - 篇1 - 環境搭建、路由機制Java路由
- Java審計之SQL隱碼攻擊篇JavaSQL
- 免費開源的程式碼審計工具 Gosec 入門使用Go
- Java 審計之SSRF篇Java
- Java 程式碼審計 — 1. ClassLoaderJava
- Java審計之XSS篇Java
- Java 審計之XXE篇Java
- 入門程式碼程式設計程式設計
- java程式碼審計人工漏洞檢測方法Java
- Java審計之命令執行篇Java
- CSCMS程式碼審計
- PHP程式碼審計PHP
- buu 程式碼審計
- Java程式碼混淆工具入門——Allatori~Java
- 好程式設計師Java培訓分享SpringBoot入門篇程式設計師JavaSpring Boot
- 普通人轉行程式設計師之自學java入門篇行程程式設計師Java
- JAVA NIO程式設計入門(二)Java程式設計
- JAVA NIO程式設計入門(一)Java程式設計
- JAVA NIO 程式設計入門(三)Java程式設計
- java Swing程式設計入門Java程式設計
- Java 集合類入門篇Java
- java入門之初讀___java程式設計思想Java程式設計
- 滲透測試工具方法基礎程式碼審計篇
- 什麼是程式碼審計?程式碼審計有什麼好處?
- Graudit程式碼安全審計
- 程式碼審計————目錄
- aspx程式碼審計-2
- JFinalcms程式碼審計
- JAVA入門程式Java
- 哪些業務場景需要做程式碼審計?程式碼審計很重要嗎?
- 程式碼審計是什麼?程式碼審計操作流程分為幾步?
- Java入門之基礎程式設計Java程式設計
- oasys系統程式碼審計
- Java反序列化 - CC1鏈 (程式碼審計)Java