天天看點

一本真正入門級别的Java代碼安全審計專業技術圖書上架啦!

在“攻”方面,傳統的通過掃描器掃描站點或利用 NDay來滲透的方式已經受到了很大的制約,現在及未來的典型滲透測試流程是:确定站點指紋→通過旁站掃描備份或開源程式得到源代碼→代碼審計→利用審計出來的漏洞制定修訂措施,是以代碼審計能力也越發重要。

在“防”方面,國内有大量網站都曾遭到過拖庫,其中相當一部分漏洞是因為代碼導緻的。如果企業安全人員具備代碼審計的能力,能夠提前做好代碼審計工作,在黑客發現系統漏洞之前找出安全隐患,提前部署相應安全防禦措施,可落實“安全左移”,提高應用系統的安全性,進而“治未病”。

在主流的大型應用中,Java俨然成為了首選開發語言。目前國内外大型企業大多采用Java作為核心的開發語言,是以對于安全從業者來說,Java代碼審計已經成為了自身應該掌握的關鍵技能。

市面上最新上架的一本關于Java代碼安全審計方面的圖書:

Java代碼審計(入門篇)

一本真正入門級别的Java代碼安全審計專業技術圖書上架啦!

本書是一本Java代碼審計入門圖書,通過大量的示例介紹代碼審計的常用入門知識。全書内容分為9章,主要介紹了代碼審計的基礎知識、代碼審計的環境搭建、輔助工具簡介、Java EE基礎知識補充、OWASP Top十 2017内外的代碼審計經驗介紹、JSPXCMS代碼審計實戰以及IAST與RASP技術的介紹等内容,另外,本書還對Java安全編碼規範索引進行了簡單的介紹。

本書适合安全從業人員、軟體開發人員以及對代碼安全感興趣的讀者閱讀。

本書内容:

  • 初識Java代碼審計;
  • 代碼審計環境搭建;
  • 代碼審計輔助工具簡介;
  • Java EE基礎知識;
  • “OWASP Top 十 2017”漏洞的代碼審計;
  • “OWASP Top 十 2017”之外常見漏洞的代碼審計;
  • Java EE開發架構安全審計;
  • Jspxcms代碼審計實戰;
  • 小話IAST與RASP。

本書特點

(1)市面上缺乏關于Java代碼安全審計圖書品種,本書的出版是對其的補充。

(2)從理論到實踐,非常适合Java 代碼審計的入門學習。

(3)對結構的劃分較為合理,可幫助讀者由“單點到代碼全局”了解漏洞,并達到“從入門到适度提高”的學習目的。

(4)對初學者較為“友好”,可幫助安全人員或研發人員補充實用的預備知識。

(5)設定的案例較為豐富、詳實,利于讀者掌握較全面的系統知識。

(6)對案例的講解較為詳細,友善讀者同步進行實際操作,紮實地掌握知識和技能。

本書結構

在本書編寫過程中,遵從的主旨是“通過較詳細的漏洞點剖析以及代碼審計實戰示範幫助讀者朋友初步了解Java代碼審計,夯實Java代碼審計的基本功,并邁入Java代碼審計的大門”。為此,我們對内容結構做了如下組織。

(1)第1~4章介紹Java代碼審計預備知識。

(2)第5章和第6章介紹典型的Java Web漏洞。

(3)第7章介紹Java EE開發架構安全審計。

(4)第8章介紹開源Java Web應用代碼審計實戰知識。

(5)第9章介紹“互動式應用程式安全測試”與“運作時應用自保護”的相關知識。

(6)附錄幫助讀者了解Java安全編碼規範。

本書将理論講解和實驗操作相結合,深入淺出、循序漸進,并通過大量的圖文解說,友善初學者快速掌握Java代碼安全審計的具體方法和流程,并逐漸建立對Java代碼安全審計的系統性認知。

第1章 初識Java代碼審計

本章簡單介紹了Java代碼安全審計的基本範疇、代碼審計的意義、代碼審計所需的基礎以及Java代碼審計的常用思路。

第2章 代碼審計環境搭建

本章介紹了Java代碼審計環境的搭建方法,主要包括:JDK的下載下傳與安裝、Docker的漏洞驗證環境搭建、對Weblogic和Tomcat進行遠端調試以及項目建構工具的使用等基本知識。

第3章 代碼審計輔助工具簡介

本章簡單介紹了在代碼審計過程中需要用到的工具或平台,包括代碼編輯器、測試工具、反編譯工具、Java代碼靜态掃描工具以及漏洞資訊公開平台。

第4章 Java EE基礎知識

本章介紹了Java EE基礎知識,主要包括Java EE 分層模型、MVC模式與MVC架構的定義、主流Java MVC架構簡介、Servlet知識點、filter知識點、反射機制、ClassLoader類加載機制、Java動态代理和Java Web安全開發架構等基礎知識。

第5章 “OWASP Top 10 2017”漏洞的代碼審計

本章介紹了“OWASP Top 10 2017”十大Web 應用程式安全風險清單中的典型Java代碼審計案例(注入、失效的身份認證、敏感資訊洩露、XML外部實體注入、失效的通路控制、安全配置錯誤、跨站腳本攻擊、不安全的反序列化、使用含有已知漏洞元件以及不足的日志記錄和監控),這些案例可幫助讀者在較短時間内了解并掌握高頻漏洞的代碼審計關鍵問題。

第6章 “OWASP Top 10 2017”之外常見漏洞的代碼審計

本章主要介紹CSRF 漏洞的原理和執行個體、SSRF 漏洞的原理和執行個體、URL 跳轉與釣魚漏洞講解、檔案包含漏洞講解、檔案上傳講解、檔案下載下傳講解、檔案寫入講解、檔案解壓講解、Web後門講解、邏輯漏洞講解、CORS/SCP 介紹、拒絕服務攻擊原理和執行個體、點選劫持漏洞原理和執行個體、HPP漏洞介紹等知識點,這些知識點能夠幫助讀者了解漏洞的形成原因,了解漏洞的利用方式以及漏洞修複方法。

第7章 Java EE開發架構安全審計

Java EE開發架構雖然極大提高了生産效率,卻可能為Web應用帶來緻命的危害。本章主要通過詳細的代碼審計過程講解SSM、Struts2、Spring Boot等架構的代碼審計技巧,以及Struts2遠端代碼執行漏洞開發架構的錯誤使用案例。

第8章 Jspxcms代碼審計實戰

實踐是檢驗漏洞挖掘學習效果的最好方式,通過實踐審計,能夠幫助審計者了解真實環境中的審計情形,友善審計者體驗真實場景。本章主要通過Jspxcms源程式執行個體講解了SQL注入、XSS、SSRF以及RCE漏洞的審計過程。

第9章 小話IAST與RASP

IAST是“互動式應用程式安全測試”對代碼審計有所補益,RASP(運作時應用自保護)是動态防禦的有效技術。本章的主要内容是對IAST與RASP進行簡要介紹,并對二者共同的核心子產品Java-agent進行實驗探究和原理淺析。

附錄 Java安全編碼規範索引

Java安全編碼的核心基礎是一系列的編碼指南和安全規範。本章的主要内容是向讀者朋友分享一些Java 安全編碼規範。

Java代碼審計 學習路徑

一本真正入門級别的Java代碼安全審計專業技術圖書上架啦!

細節展示

一本真正入門級别的Java代碼安全審計專業技術圖書上架啦!
一本真正入門級别的Java代碼安全審計專業技術圖書上架啦!

代碼審計的意義

2020年10月的CNVD安全月報顯示,Web應用程式的漏洞占比34%,顯而易見,Web應用程式仍然是安全防禦的重中之重,是以對業務代碼進行安全審計是十分重要的,如圖1-1所示。

一本真正入門級别的Java代碼安全審計專業技術圖書上架啦!

圖1-1 Web應用程式漏洞影響重大

随着Java Web應用越來越廣泛,安全審計已經成為安全測試人員需要直面的工作。雖然PHP在中小型網際網路中仍占據一席之地,但在主流的大型應用中,Java仍是首選的開發語言,國内外大型企業大多以Java作為核心的開發語言。是以對于安全從業者來說,Java代碼審計已經成為需要掌握的關鍵技能。

代碼審計對攻防研究有着重要的意義。在“攻”方面,如果滲透測試人員、漏洞研究人員不了解代碼審計,則在滲透測試的實戰過程中難以“細緻入微”,可能遇到的麻煩包括但不限于以下幾種。

  • 遺漏在網站代碼裡的潛在漏洞。
  • 盲目測試,做無用功。

舉例說明,以往的通過掃描器掃描站點或利用NDay進行滲透測試的方式已經受到了很大的制約,現在及未來比較典型的滲透測試流程是:确定站點指紋→通過旁站掃描備份或開源程式得到源代碼→代碼審計→利用審計出來的漏洞。是以對于滲透測試人員而言,代碼審計能力也顯得越發重要。

在“防”方面,國内有大量網站曾遭到拖庫,其中相當一部分漏洞就是因為代碼導緻的。本書作者也曾經幫助多家企業開展過Java代碼審計項目以及Java安全開發教育訓練。在工作中發現,即使對于有着雄厚的研發能力、完備的安全合規要求以及明确的人員分工的IT巨頭,其應用系統的源碼也可能存在“阿喀琉斯之踵”般的緻命弱點;而小型機關則經常有着“重業務,輕安全”或者“對Web安全漏洞了解得不全面、深入”的通病(這在注入、越權、反序列化、應用程式依賴庫等漏洞類型顯得較為明顯)。如果企業安全人員具備代碼審計的能力,就能提前做好代碼審計工作,在黑客發現系統漏洞之前找出安全隐患,提前部署好相應的安全防禦措施,落實“安全左移”,提高應用系統的安全性,進而“治未病”。

唯一不變的是變化本身,随着雲計算技術的蓬勃發展,傳統上雲實踐中的應用更新緩慢、架構臃腫、無法快速疊代等“痛點”日益明顯。基于此,雲原生技術蓬勃發展;變化中亦有不變,通過分析雲原生的代表技術微服務和聲明式 API的安全風險可以發現,應用安全仍是其中的防護重點。因而,若在雲原生安全建設初期踐行“源代碼安全審計”,将安全投資更多地放到開發安全,包括安全編碼、供應鍊(軟體庫、開源軟體)安全、鏡像(倉庫)安全等,可起到減少安全投資、增加攻擊難度的效果。代碼安全審計在當下以至未來均可對Web應用安全的防護重要作用。

術業有專攻。安全人員與研發、測試人員看代碼的視角也往往不同。基于此,我們認為從安全人員的角度幫助對Java安全經驗有所欠缺的研發、測試人員快速地了解并掌握高頻且重要的Java代碼審計知識、搭建知識技能架構,亦或是幫助已具備相關經驗的人士進行查缺補漏均具有重要意義。

2 Java代碼審計所需的基礎能力

Java代碼審計要求代碼審計人員能夠“動靜結合”。在“動”方面,要求代碼審計人員具備調試程式的能力。若代碼邏輯比較複雜,則可以通過多次調試或關鍵位置設定斷點輔助了解。在“靜”方面,要求代碼審計人員具備一定的程式設計基礎,了解基本文法與面向對象思想。若代碼審計人員能夠通過閱讀代碼了解代碼邏輯,并善于查閱文檔和資料,就能解決大多數問題。

本書将在第4章介紹部分Java EE的知識作為鋪墊,以便幫助讀者了解漏洞的形成和漏洞利用的方法。

3 代碼審計的常用思路

為了在應用代碼中尋找目标代碼的漏洞,需要有明确的方法論做指導。方法論的選擇則要視目标程式和要尋找的漏洞類型而定,以下是一些常用思路。

(1)接口排查(“正向追蹤”):先找出從外部接口接收的參數,并跟蹤其傳遞過程,觀察是否有參數校驗不嚴的變量傳入高危方法中,或者在傳遞的過程中是否有代碼邏輯漏洞(為了提高排查的全面性,代碼審計人員可以向研發人員索要接口清單)。  

(2)危險方法溯源(“逆向追蹤”):檢查敏感方法的參數,并檢視參數的傳遞與處理,判斷變量是否可控并且已經過嚴格的過濾。

(3)功能點定向審計:根據經驗判斷該類應用通常會在哪些功能中出現漏洞,直接審計該類功能的代碼。

(4)第三方元件、中間件版本比對:檢查Web應用所使用的第三方元件或中間件的版本是否受到已知漏洞的影響。

(5)更新檔比對:通過對更新檔做比對,反推漏洞出處。

(6)“黑盒測試”+“白盒測試”:我認為“白盒測試少直覺,黑盒測試難入微”。雖然代碼審計的過程須以“白盒測試”為主,但是在過程中輔以“黑盒測試”将有助于快速定位到接口或做更全面的分析判斷。互動式應用安全測試技術IAST就結合了“黑盒測試”與“白盒測試”的特點。