代碼審計與實操_第1頁
代碼審計與實操_第2頁
代碼審計與實操_第3頁
代碼審計與實操_第4頁
代碼審計與實操_第5頁
已閱讀5頁,還剩309頁未讀, 繼續(xù)免費閱讀

付費閱讀全文

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

高等職業(yè)教育系列叢書·信息安全專業(yè)技術(shù)教材

代碼審計與實操

胡前偉時瑞鵬李華風(fēng)◎主編

安厚霖張臻馮玉濤楊曄李強◎副主編

內(nèi)容簡介

代碼審計是一種以發(fā)現(xiàn)程序錯誤、安全漏洞和違反程序規(guī)范為目標(biāo)的源代碼分析技術(shù)。本書首

先對代碼審計的定義、代碼審計的流程、代碼審計的分類進行了系統(tǒng)的介紹,以phpStudy為例,介

紹了代碼審計環(huán)境的搭建以及當(dāng)前常用的代碼審計工具;其次詳細介紹了SQL注入漏洞審計、XSS

漏洞審計、CSRF漏洞審計、代碼執(zhí)行與命令執(zhí)行漏洞審計、文件包含漏洞審計、任意文件操作漏

洞審計、XXE與SSRF漏洞審計、變量覆蓋與反序列化漏洞審計、業(yè)務(wù)功能審計、YXCMS審計等內(nèi)

容;最后介紹了當(dāng)前常用的程序設(shè)計語言Java和Python的代碼審計案例。

本書是校企合作開發(fā)的教材,注重所述內(nèi)容的可操作性和實用性,適合作為高等職業(yè)院校計算

機類相關(guān)專業(yè)的教材,也可以作為網(wǎng)絡(luò)操作系統(tǒng)安全管理的參考用書。

圖書在版編目(CIP)數(shù)據(jù)

代碼審計與實操/胡前偉,時瑞鵬,李華風(fēng)主編.—北京:

中國鐵道出版社有限公司,2022.4

(高等職業(yè)教育系列叢書.信息安全專業(yè)技術(shù)教材)

ISBN978-7-113-28884-6

Ⅰ.①代…Ⅱ.①胡…②時…③李…Ⅲ.①源代碼-

高等職業(yè)教育-教材Ⅳ.①TP311.52

中國版本圖書館CIP數(shù)據(jù)核字(2022)第028536號

書名:代碼審計與實操

作者:胡前偉時瑞鵬李華風(fēng)

策劃:翟玉峰編輯部電話:(010)83517321

責(zé)任編輯:翟玉峰?彭立輝

封面設(shè)計:尚明龍

責(zé)任校對:安海燕

責(zé)任印制:樊啟鵬

出版發(fā)行:中國鐵道出版社有限公司(100054,北京市西城區(qū)右安門西街8號)

網(wǎng)址:/51eds/

印刷:三河市興達印務(wù)有限公司

版次:2022年4月第1版2022年4月第1次印刷

開本:787mm×1092mm1/16印張:19.5字?jǐn)?shù):472千

書號:ISBN978-7-113-28884-6

定價:54.00元

版權(quán)所有侵權(quán)必究

凡購買鐵道版圖書,如有印制質(zhì)量問題,請與本社教材圖書營銷部聯(lián)系調(diào)換。電話:(010)63550836

打擊盜版舉報電話:(010)63549461

代碼審計與實操

主編:

編審委員會胡前偉360安全人才能力發(fā)展中心

時瑞鵬天津職業(yè)大學(xué)

李華風(fēng)武漢市財政學(xué)校

副主編:

安厚霖天津職業(yè)大學(xué)

張臻天津職業(yè)大學(xué)

馮玉濤360安全人才能力發(fā)展中心

楊曄浙江警官職業(yè)學(xué)院

李強武漢市東西湖職業(yè)技術(shù)學(xué)校

委員:(按姓氏筆畫排序)

韋凱深圳職業(yè)技術(shù)學(xué)院

許學(xué)添廣東司法警官職業(yè)學(xué)院

李博文遼寧職業(yè)技術(shù)學(xué)院

張超媖湖北省高級人民法院

陳云志杭州職業(yè)技術(shù)學(xué)院

咸鶴群青島大學(xué)

宣樂飛杭州職業(yè)技術(shù)學(xué)院

高洪雨山東電力高等??茖W(xué)校(國網(wǎng)技術(shù)學(xué)院)

前言

代碼審計是一種以發(fā)現(xiàn)程序錯誤、安全漏洞和違反程序規(guī)范為目標(biāo)的源代碼分析技

術(shù),是對程序編寫過程中源代碼的全面分析。其目的是發(fā)現(xiàn)錯誤,找到安全隱患,從而

提高程序的安全性和可靠性,減少受到網(wǎng)絡(luò)攻擊的可能性。

代碼審計的方法通常包括白盒、黑盒、灰盒等方式。白盒是指通過對源代碼的分析

找到應(yīng)用缺陷;黑盒通常不涉及源代碼,多使用模糊測試的方式;而灰盒則是黑盒與白

盒相結(jié)合的方式。與其他信息安全技術(shù)相比,代碼審計是一種主動安全防御技術(shù),通過

代碼審計,可以從根本上加強信息系統(tǒng)的安全性和可靠性,對減少因信息系統(tǒng)漏洞造成

的損失有重要的意義和作用。

代碼審計要求的門檻較高,通常需要審計人員對PHP代碼非常熟悉且具有多年的

從業(yè)經(jīng)驗,能夠?qū)ΤR娍蚣堋⒊R奀MS(內(nèi)容管理系統(tǒng))、常見功能漏洞有分析經(jīng)驗。

除此之外,可以對多種編程語言進行分析審計。因此,本書將以教學(xué)為目的對代碼審計

課程進行講解,同時配以相應(yīng)漏洞的CMS審計實踐,從而深化讀者對代碼審計的理解,

最終達到實現(xiàn)安全防御的目的。

本書首先對代碼審計的定義、代碼審計的流程、代碼審計的分類進行了系統(tǒng)的介紹,

以phpStudy為例,介紹了代碼審計環(huán)境的搭建以及當(dāng)前常用的代碼審計工具;其次詳細

介紹了SQL注入漏洞審計、XSS漏洞審計、CSRF漏洞審計、代碼執(zhí)行與命令執(zhí)行漏洞

審計、文件包含漏洞審計、任意文件操作漏洞審計、XXE與SSRF漏洞審計、變量覆蓋

與反序列化漏洞審計、業(yè)務(wù)功能審計、YXCMS審計等內(nèi)容;最后介紹了對當(dāng)前常用的

程序設(shè)計語言Java和Python的代碼審計案例。

本書由360安全人才能力發(fā)展中心胡前偉、天津職業(yè)大學(xué)電子信息與工程學(xué)院時瑞鵬、

武漢市財政學(xué)校李華風(fēng)任主編并負責(zé)全書統(tǒng)稿,天津職業(yè)大學(xué)安厚霖和張臻、360安全

人才能力發(fā)展中心馮玉濤、浙江警官職業(yè)學(xué)院楊曄、武漢市東西湖職業(yè)技術(shù)學(xué)校李強任

副主編。編寫分工:單元1、單元5由時瑞鵬編寫,單元2、單元3由胡前偉編寫,單元

4、單元6由李華風(fēng)編寫,單元7至單元11由安厚霖編寫,單元12由張臻編寫,單元

13、單元14由馮玉濤、楊曄、李強共同編寫。

I

代碼審計與實操

本書教學(xué)資源系統(tǒng)全面,配套PPT教學(xué)課件、習(xí)題答案等電子資源,與教材完全同步,

讀者可自行下載(網(wǎng)址/51eds/)。本書中的實驗環(huán)境,已部署在

/,屬于收費內(nèi)容,如需購買,請咨詢360安全人才能力發(fā)展中心。

本書注重所述內(nèi)容的可操作性和實用性,以網(wǎng)絡(luò)安全管理人員為主要讀者群體,同

時兼顧廣大計算機網(wǎng)絡(luò)愛好者的需求,是一本開展網(wǎng)絡(luò)操作系統(tǒng)安全管理的實用教材和

必備的重要參考書。

由于時間倉促,編者的知識水平和認(rèn)知能力有限,書中難免存在疏漏和不妥之處,

懇請讀者批評指正。

特別聲明:本書所講的代碼審計技術(shù)以及涉及的案例與代碼,是為了更好地幫助讀

者及相關(guān)公司找到安全隱患,從而有針對性地進行代碼審計和安全防御,不能進行其他

應(yīng)用。

編者

2021年7月

II

目錄

單元1代碼審計基礎(chǔ)????????????????????????11.7.4PhpStorm遠程調(diào)試配置27

小結(jié)30

1.1代碼審計簡介2

習(xí)題30

1.1.1代碼審計定義2

1.1.2代碼審計流程2單元2代碼審計前導(dǎo)??????????????????????32

1.1.3代碼審計分類3

2.1影響代碼審計的配置33

1.2代碼審計環(huán)境搭建3

2.1.1PHP的配置文件33

1.2.1phpStudy環(huán)境介紹4

2.1.2傳遞變量相關(guān)的PHP配置33

1.2.2實驗:Windows與Linux搭建

2.1.3安全模式34

74CMS4

2.1.4文件上傳及目錄權(quán)限相關(guān)

1.3代碼審計工具概要8

配置35

1.4代碼編輯工具8

2.1.5魔術(shù)引號及遠程文件相關(guān)

1.5自動代碼審計工具11

配置35

1.5.1Seay代碼審計工具11

2.1.6錯誤信息相關(guān)配置37

1.5.2RIPS代碼審計工具13

2.2代碼審計基本函數(shù)38

1.5.3VCG代碼審計工具14

2.2.1代碼調(diào)試函數(shù)38

1.5.4FortifySCA代碼審計工具14

2.2.2可能存在漏洞的點39

1.5.5自動化審計工具部署15

2.3弱類型的安全40

1.6代碼審計輔助工具16

2.4常見危險函數(shù)43

1.6.1數(shù)據(jù)包分析工具16

2.4.1代碼執(zhí)行函數(shù)43

1.6.2瀏覽器輔助插件工具17

2.4.2包含函數(shù)43

1.6.3實驗:BurpSuite數(shù)據(jù)包攔截...19

2.4.3命令執(zhí)行函數(shù)44

1.6.4編解碼工具21

2.4.4文件操作函數(shù)44

1.6.5正則表達式測試工具22

2.4.5變量覆蓋函數(shù)44

1.6.6數(shù)據(jù)庫監(jiān)控工具222.4.6特殊函數(shù)45

1.7代碼審計動態(tài)調(diào)試環(huán)境搭建242.5代碼審計思路46

1.7.1動態(tài)調(diào)試原理252.5.1敏感函數(shù)參數(shù)回溯法46

1.7.2Xdebug安裝與配置252.5.2實驗:敏感函數(shù)參數(shù)回溯法

1.7.3安裝Xdebughelper插件26分析74CMS案例47

I

代碼審計與實操

2.5.3定向功能分析法484.2.1反射型XSS漏洞81

2.5.4實驗:定向功能法分析YXCMS4.2.2存儲型XSS漏洞81

圖片上傳功能494.2.3DOM型XSS漏洞83

2.5.5通讀全文法514.3XSS漏洞繞過84

2.5.6實驗:通讀全文法分析74CMS4.3.1編解碼繞過84

案例524.3.2HTML編寫不規(guī)范繞過86

小結(jié)564.3.3黑名單過濾繞過86

習(xí)題564.3.4寬字節(jié)注入繞過88

4.4XSS漏洞防御89

單元3SQL注入漏洞審計????????????????58

4.5XSS審計CMS實驗90

3.1SQL注入漏洞挖掘594.5.1實驗:BlueCMS1.6反射XSS

3.1.1SQL注入漏洞簡介59審計90

3.1.2SQL注入漏洞分類概述594.5.2實驗:BlueCMS1.6存儲XSS

3.1.3SQL注入漏洞挖掘經(jīng)驗60審計93

3.2SQL注入分類604.5.3實驗:74CMS3.4寬字節(jié)注入

3.2.1無過濾參數(shù)注入60反射XSS審計95

3.2.2無過濾HTTP頭注入614.5.4實驗:74CMS3.0存儲XSS

3.2.3字符串替換繞過注入63審計98

3.3SQL注入繞過addslashes64小結(jié)101

3.3.1寬字節(jié)注入繞過64習(xí)題101

3.3.2解碼注入繞過65

單元5CSRF漏洞審計?????????????????104

3.3.3字符串替換繞過67

3.4SQL注入防御685.1CSRF漏洞挖掘105

3.5SQL注入CMS實驗705.1.1CSRF漏洞簡介105

5.1.2CSRF漏洞挖掘經(jīng)驗105

3.5.1實驗:BlueCMS1.6Union

5.2CSRF漏洞分類105

注入70

5.2.1GET型CSRF漏洞105

3.5.2實驗:74CMS3.0寬字節(jié)

5.2.2POST型CSRF漏洞106

注入73

5.3CSRF漏洞防御107

小結(jié)

775.3.1驗證HTTPReferer字段107

習(xí)題775.3.2驗證Token109

5.3.3驗證碼驗證109

單元4XSS漏洞審計????????????????????79

5.4CSRF審計CMS實驗110

4.1XSS漏洞挖掘805.4.1實驗:74CMS3.0CSRF

4.1.1XSS漏洞簡介80審計110

4.1.2XSS漏洞挖掘經(jīng)驗805.4.2實驗:YzmCMS5.8CSRF

4.2XSS漏洞分類81審計113

II

目錄

小結(jié)1167.4文件包含漏洞審計CMS實驗145

習(xí)題1177.4.1實驗:phpmyadmin4.8.1文件

包含審計145

單元6代碼執(zhí)行與命令執(zhí)行漏洞

7.4.2實驗:織夢cmsV5.7包含Cache

審計????????????????????????????????118

審計147

6.1代碼執(zhí)行漏洞挖掘119小結(jié)149

6.1.1代碼執(zhí)行漏洞簡介119習(xí)題150

6.1.2代碼執(zhí)行漏洞常見函數(shù)119

單元8任意文件操作漏洞審計?????????151

6.1.3代碼執(zhí)行漏洞審計經(jīng)驗123

6.1.4代碼執(zhí)行漏洞防御1238.1文件上傳漏洞挖掘與實驗152

6.2代碼執(zhí)行漏洞審計實驗1248.1.1文件上傳漏洞簡介152

6.2.1YCCMS3.3代碼執(zhí)行漏洞8.1.2文件上傳漏洞挖掘經(jīng)驗152

審計1248.1.3文件上傳漏洞繞過152

6.2.2YzmCMS3.6代碼執(zhí)行漏洞8.1.4實驗:FineCMS文件上傳漏洞

審計127審計157

6.3命令執(zhí)行漏洞挖掘1298.2文件寫入漏洞挖掘與實驗159

6.3.1命令執(zhí)行漏洞簡介1298.2.1文件寫入漏洞簡介159

6.3.2命令執(zhí)行漏洞常見函數(shù)1308.2.2文件寫入漏洞挖掘經(jīng)驗160

6.3.3命令執(zhí)行漏洞連接符1338.2.3實驗:74CMS3.0文件寫入

6.3.4命令執(zhí)行漏洞審計經(jīng)驗134漏洞審計160

6.3.5命令執(zhí)行漏洞防御1348.3文件讀?。ㄏ螺d)漏洞挖掘

6.4命令執(zhí)行審計CMS實驗135與實驗163

小結(jié)1388.3.1文件讀取漏洞簡介163

習(xí)題1388.3.2文件下載漏洞簡介164

8.3.3文件讀?。ㄏ螺d)漏洞挖掘

單元7文件包含漏洞審計???????????????141

經(jīng)驗164

7.1文件包含漏洞挖掘1428.3.4實驗:MetInfo6.0.0文件讀取

7.1.1文件包含漏洞簡介142漏洞審計165

7.1.2文件包含漏洞審計經(jīng)驗1428.4文件刪除漏洞挖掘與實驗167

7.1.3文件包含漏洞防御1428.4.1文件刪除漏洞簡介167

7.2文件包含漏洞案例1438.4.2文件刪除漏洞挖掘經(jīng)驗168

7.3文件包含漏洞繞過1448.4.3實驗:74CMS3.0文件刪除

7.3.1擴展名過濾繞過(本地文件漏洞審計168

包含)1448.5文件操作漏洞防御170

7.3.2擴展名過濾繞過(遠程文件小結(jié)171

包含)144習(xí)題171

III

代碼審計與實操

單元9XXE與SSRF漏洞審計???????17410.4.1序列化介紹196

10.4.2反序列化漏洞介紹198

9.1XXE漏洞挖掘175

10.5反序列化漏洞CMS實驗200

9.1.1XXE漏洞簡介175

小結(jié)204

9.1.2XXE漏洞挖掘方法175

習(xí)題204

9.2XXE漏洞分類175

9.3XXE漏洞防御177單元11業(yè)務(wù)功能審計???????????????????207

9.4XXE審計CMS實驗177

11.1驗證碼功能漏洞208

9.5SSRF漏洞挖掘180

11.1.1驗證碼功能介紹208

9.5.1SSRF漏洞簡介180

11.1.2驗證碼常見安全問題208

9.5.2SSRF漏洞挖掘經(jīng)驗180

11.1.3驗證碼繞過方式209

9.6SSRF漏洞分類181

11.1.4實驗:驗證碼功能漏洞導(dǎo)致任

9.6.1CURL引起的SSRF181

意用戶注冊實踐212

9.6.2file_get_contents引起的

11.2密碼重置功能漏洞214

SSRF182

11.2.1密碼重置功能介紹214

9.6.3fsocketopen造成的SSRF182

11.2.2密碼重置功能的常見案例...214

9.7SSRF漏洞繞過183

11.2.3密碼重置功能防御方法218

9.8SSRF漏洞防御183

11.2.4實驗:任意用戶密碼重置...218

9.9SSRF審計CMS實驗184

11.3交易支付功能漏洞222

小結(jié)185

11.3.1交易支付功能漏洞介紹222

習(xí)題186

11.3.2交易支付功能漏洞挖掘223

單元10變量覆蓋與反序列化漏洞11.3.3交易支付功能常見安全

審計???????????????????????????????188問題223

11.3.4交易支付功能防御方法225

10.1變量覆蓋漏洞挖掘189

小結(jié)225

10.1.1變量覆蓋漏洞簡介189

習(xí)題226

10.1.2變量覆蓋漏洞審計經(jīng)驗189

10.1.3變量覆蓋漏洞防御189單元12YXCMS審計??????????????????228

10.2變量覆蓋漏洞案例190

12.1審計前準(zhǔn)備229

10.2.1extract()函數(shù)使用不當(dāng)190

12.2留言板存儲型XSS分析232

10.2.2parse_str()函數(shù)使用不當(dāng)191

12.3碎片管理SQL注入漏洞分析234

10.2.3import_request_variables()函數(shù)

12.4任意文件操作漏洞分析236

使用不當(dāng)191

12.4.1YMCMS任意文件刪除236

10.2.4全局變量覆蓋192

12.4.2YMCMS任意文件寫入236

10.2.5$$變量覆蓋193

小結(jié)237

10.3變量覆蓋審計CMS實驗194

習(xí)題238

10.4反序列化漏洞196

IV

目錄

單元13Java代碼審計?????????????????239單元14Python框架安全??????????????271

13.1Java代碼審計入門24014.1Django框架概述272

13.1.1JavaEE介紹24014.1.1Django框架簡介272

13.1.2Java代碼審計基礎(chǔ)24114.1.2實驗:Django搭建274

13.2Java代碼中的SQL注入漏洞24414.2Django框架常見漏洞276

13.2.1JDBC的SQL注入24414.2.1Django中的XSS漏洞276

13.2.2Mybatis的SQL注入24514.2.2Django的XSS案例278

13.2.3Java的SQL注入漏洞防御24714.2.3Django中的CSRF漏洞281

13.2.4OFCMS平臺SQL注入漏洞14.2.4Django中的SQL注入漏洞282

分析24914.2.5Django中的格式化字符串

13.3Java代碼中的XSS漏洞250漏洞282

13.3.1Java中的XSS漏洞簡介25014.2.6Django中的其他漏洞284

13.3.2Java中XSS漏洞防御25314.3Flask框架常見漏洞284

13.3.3JEESNS平臺XSS漏洞分析..25414.3.1Flask框架介紹284

13.4Java命令執(zhí)行漏洞25614.3.2Flask中的SSTI漏洞286

13.4.1Java中的命令執(zhí)行漏洞14.4Tornado框架常見漏洞288

簡介25614.4.1Tornado框架介紹288

13.4.2Java中命令執(zhí)行漏洞防御25814.4.2Tornado中任意文件讀取

13.5Java文件操作漏洞258漏洞289

13.5.1Java文件上傳漏洞258小結(jié)292

13.5.2Java文件讀取漏洞261習(xí)題292

13.5.3Java文件刪除漏洞262

附錄A相關(guān)術(shù)語?????????????????????????295

13.5.4MCMS平臺文件上傳漏洞

分析263

附錄B各單元習(xí)題參考答案???????????296

13.6Java代碼中的SSRF漏洞264

13.6.1Java中的SSRF漏洞簡介264

參考文獻????????????????????????????????????299

13.6.2Java中的SSRF漏洞防御266

13.6.3Hawtio平臺SSRF漏洞分析..266

小結(jié)268

習(xí)題268

V

單元1

代碼審計基礎(chǔ)

本單元介紹了代碼審計中需要具備的基礎(chǔ)知識,主要分為四部分進行介紹。

第一部分主要介紹代碼審計的基本概念,包括:代碼審計的定義、代碼審計的流程等。

第二部分以phpStudy搭建騎士CMS人才管理系統(tǒng)為案例,詳細介紹Windows及Linux

操作系統(tǒng)下PHP代碼審計環(huán)境的搭建方法。

第三部分介紹代碼審計中常用的審計工具,包括代碼編輯工具、自動代碼審計工具、代

碼審計輔助工具(包括正則表達式、數(shù)據(jù)包分析、編解碼、加解密、數(shù)據(jù)庫執(zhí)行監(jiān)控等常用

工具)。

第四部分介紹代碼審計中Xdebug與PhpStorm動態(tài)調(diào)試環(huán)境搭建方法。

單元導(dǎo)圖:

學(xué)習(xí)目標(biāo):

●了解代碼審計概念;

●掌握代碼審計CMS環(huán)境搭建方法;

●熟悉常用代碼審計工具使用方法;

●掌握代碼審計動態(tài)環(huán)境搭建方法。

1

代碼審計與實操

1.1代碼審計簡介

代碼審計既是企業(yè)安全運營及安全從業(yè)者必備的基本技能,也是一種以發(fā)現(xiàn)程序錯誤、安

全漏洞和違反程序規(guī)范為目標(biāo)的源代碼分析技能。本節(jié)將對代碼審計進行介紹。

1.1.1代碼審計定義

代碼審計是防御性編程范式的一部分,旨在檢測代碼中存在的安全缺陷,針對存在的缺陷

提供解決方案,降低程序使用時的安全風(fēng)險。幾乎可以通過對源代碼進行審計的方式發(fā)現(xiàn)所有

代碼層面的安全漏洞,包括常見的Web安全漏洞、業(yè)務(wù)邏輯漏洞、應(yīng)用程序漏洞,以及應(yīng)用程

序配置文件中的不安全因素等。

在軟件發(fā)布前進行代碼審計,可將不安全因素扼殺在萌芽狀態(tài),極大縮減了后期修復(fù)所花

費的成本。測試過程不會對線上業(yè)務(wù)造成影響,不會導(dǎo)致諸如系統(tǒng)宕機、服務(wù)卡死、數(shù)據(jù)庫阻

塞和業(yè)務(wù)數(shù)據(jù)丟失等風(fēng)險。但由于代碼審計需要深入理解代碼邏輯和業(yè)務(wù)結(jié)構(gòu),因此對審計人

員的能力素質(zhì)要求較高,需要花費的精力也更多。

通常,代碼審計的對象幾乎可以是所有的編程語言,常見的語言包括Java、C、C#、PHP、

Python和JSP等,本書將以PHP為主介紹代碼審計案例。

代碼審計作為安全領(lǐng)域中難度較高的一門學(xué)科,需要讀者在學(xué)習(xí)本課程之前具備以下條件:

(1)熟悉PHP開發(fā)語言。

(2)熟悉Web安全常見漏洞及利用方法。

(3)熟悉數(shù)據(jù)庫語言。

1.1.2代碼審計流程

對程序代碼進行白盒(代碼審計)的方式檢查應(yīng)用程序的安全性,在代碼審計初期,需要

源代碼審計人員審計Web應(yīng)用的架構(gòu)設(shè)計、功能模塊,并與客戶相關(guān)人員協(xié)商審計重點及代碼

提供等信息。然后,源代碼審計人員使用工具對源代碼的脆弱性和安全型進行初步分析,根據(jù)

客戶關(guān)注的重點對源代碼進行手工審計。

一般情況下,代碼審計的基本流程主要包括四個階段(見圖1-1):

圖1-1代碼審計流程圖

2

單元1代碼審計基礎(chǔ)

(1)代碼審計階段。

(2)審計實施階段。

(3)審計復(fù)查階段。

(4)成果匯報階段。

審計人員對程序源代碼使用自動化審計工具進行漏洞掃描,并對掃描結(jié)果進行人工審計確

認(rèn),如圖1-2所示。同時,還需要對源代碼的常規(guī)漏洞和業(yè)務(wù)邏輯漏洞進行審計,最終輸出代碼

審計報告。

圖1-2漏洞掃描及結(jié)果確認(rèn)

1.1.3代碼審計分類

代碼審計所采用的方式主要包括工具審計、人工確認(rèn)、人工抽取代碼進行檢查。代碼審計

分類包括自動化審計和人工審計。在審計過程中通常采用上述兩種方法相結(jié)合的方式進行審計,

從而保證對應(yīng)用程序代碼審計的全面性。

1.自動化審計

在源代碼的靜態(tài)安全審計中,使用自動化審計工具代替人工漏洞挖掘,可以顯著提高審計

工作的效率。但是,自動化審計也存在缺點,包括:

(1)漏洞誤報多:很多自動化掃描出的漏洞都不準(zhǔn)確,需要人工審計進行確認(rèn)。

(2)漏洞識別率低:二次注入、邏輯安全等漏洞不能被掃描工具識別。

2.人工審計

相比于自動化審計而言,人工審計更加準(zhǔn)確,卻也更加耗費時間與精力。人工審計通常要

從程序的配置文件開始梳理系統(tǒng),如application-context.xml、php.ini、web.xml等。然后,分析

程序的數(shù)據(jù)流,針對程序開發(fā)框架不同,其傳遞的流程也不盡相同。

1.2代碼審計環(huán)境搭建

由于很多漏洞都依賴于軟件版本(如文件解析漏洞、中間件漏洞),因此代碼審計的環(huán)境搭

建需要秉承以下原則:

(1)環(huán)境搭建過程盡量簡單易管理。

3

代碼審計與實操

(2)環(huán)境支持開發(fā)語言、數(shù)據(jù)庫等依賴環(huán)境支持多種版本。

基于以上原則,本書使用phpStudy工具進行集成環(huán)境搭建,從而簡化環(huán)境搭建過程,將重

點更側(cè)重于漏洞代碼審計的技能。本節(jié)將介紹代碼審計環(huán)境搭建方法。

1.2.1phpStudy環(huán)境介紹

phpStudy是一款PHP調(diào)試環(huán)境的程序集成包,使用phpStudy搭建環(huán)境可以實現(xiàn)一次性安裝、

無須配置、方便PHP調(diào)試環(huán)境。該工具支持Windows、Linux、Mac三種操作系統(tǒng),與phpStudy

集成環(huán)境類似的工具有XAMPP、APPServer、WampServer等。這里以phpStudy2018為例,對

該工具的常用功能進行介紹。

1.服務(wù)控制

phpStudy主界面如圖1-3所示,該工具默認(rèn)提供了Apache與MySQL兩種服務(wù),可通過單

擊界面中“啟動”“停止”“重啟”按鈕控制服務(wù)狀態(tài)。

2.phpStudy支持的軟件版本

phpStudy程序包集成了很多Web應(yīng)用環(huán)境,包括:

(1)Web應(yīng)用中間件部分包括IIS、Apache、Nginx。

(2)數(shù)據(jù)庫包括MySQL。

(3)PHP語言版本PHP7、PHP6、PHP5等版本。

在phpStudy主界面單擊“切換版本”按鈕,將顯示phpStudy2018支持服務(wù)的不同版本,

如圖1-4所示。用戶可根據(jù)不同的審計需求選擇合適的版本從而更方便地切換實驗環(huán)境。

圖1-3phpStudy主界面圖1-4phpStudy支持版本

3.MySQL數(shù)據(jù)庫管理

phpStudy中MySQL數(shù)據(jù)庫默認(rèn)使用的管理員密碼均為root,用戶可通過“其他選項菜

單”→“MySQL工具”→“設(shè)置或修改密碼”對數(shù)據(jù)庫管理員密碼進行修改,如圖1-5所示。

phpStudy還支持多種數(shù)據(jù)庫管理工具,包括MySQL-Front、phpMyAdmin。用戶可通過單擊

上述工具連接本機數(shù)據(jù)庫。圖1-6所示為MySQL-Front使用界面。

除上述功能外,phpStudy具有的功能還包括站點域名管理、環(huán)境端口檢測、配置文件修

改、網(wǎng)站根目錄等。

1.2.2實驗:Windows與Linux搭建74CMS

1.實驗介紹

本次實驗將在Windows及Linux系統(tǒng)下使用phpStudy集成環(huán)境搭建74CMS3.6人才管理系統(tǒng)。

4

單元1代碼審計基礎(chǔ)

注意:CMS網(wǎng)站有很多類型,如74CMS、BlueCMS、ZZCMS等。不同的CMS搭建方法

也存在差異,本節(jié)以74CMS為例進行搭建。

圖1-5修改MySQL密碼圖1-6MySQL-Front管理工具

2.預(yù)備知識

參考1.2.1節(jié)phpStudy環(huán)境介紹。

3.實驗?zāi)康?/p>

掌握使用phpStudy搭建74CMS的方法。

4.實驗環(huán)境

Windows操作系統(tǒng)主機;CentOS7操作系統(tǒng)主機;74CMS3.6安裝包;phpStudy2018安裝

包Windows與Linux版本(PHP5.0版本及以上、MySQL5.0版本及以上)。

5.實驗步驟

第一部分:Windows搭建74CMS。

(1)安裝phpStudy并啟動Apache與MySQL。解壓phpStudy2018安裝包,然后雙擊PhpStudy.

exe。單擊“啟動”按鈕開啟Apache與MySQL服務(wù),Apache服務(wù)默認(rèn)開啟在本機的80端口提

供HTTP服務(wù),MySQL服務(wù)默認(rèn)開啟在本機的3306端口提供數(shù)據(jù)庫服務(wù)。單擊“停止”按鈕

可以將兩個服務(wù)關(guān)閉,如圖1-7所示。

注意:如果Apache或MySQL服務(wù)啟動失敗,很有可能是端口80或3306被占用導(dǎo)致的服

務(wù)啟動失敗。

圖1-7phpStudy啟動與停止

(2)單擊“其他選項菜單”找到“網(wǎng)站根目錄”打開phpStudy默認(rèn)提供的網(wǎng)站路徑,這里

5

代碼審計與實操

路徑為C:\PhpStudy\PHPTutorial\WWW,如圖1-8所示。

圖1-8網(wǎng)站根路徑圖

(3)將本實驗提供74CMS文件中的upload文件夾復(fù)制到網(wǎng)站根路徑。在Chrome瀏覽器中

輸入“http://主機IP地址/安裝目錄/install”。若訪問成功則顯示圖1-9所示界面。根據(jù)安裝向

導(dǎo)自行進行安裝,在安裝過程中需要填寫數(shù)據(jù)庫用戶名及密碼(與phpStudy對應(yīng))、自定義數(shù)據(jù)

庫名稱、管理員用戶名密碼等。安裝過程如圖1-9所示。

圖1-9網(wǎng)站安裝過程簡易圖

(4)向?qū)О惭b后,若顯示“恭喜您,您已成功安裝騎士cms”字樣則安裝成功,如圖1-10

所示。單擊“網(wǎng)站首頁”按鈕,瀏覽網(wǎng)站安裝后的結(jié)果,同時也可單擊“網(wǎng)站后臺”按鈕輸入

用戶名、密碼登錄后臺。

圖1-10網(wǎng)站安裝成功

6

單元1代碼審計基礎(chǔ)

第二部分:CentOS7搭建74CMS。

在Linux操作系統(tǒng)下使用以下命令:

yuminstall-ywget

wget-Oinstall.sh/install.sh

shinstall.sh

(1)下載phpStudy的非docker版本進行安裝。安裝成功后,界面顯示瀏覽器訪問地址及系

統(tǒng)登錄的賬號及密碼,如圖1-11所示。

圖1-11phpStudy安裝成功圖

(2)在瀏覽器中輸入54:9080/4EC69D并輸入用戶名進行登錄,通過“首頁”

選項卡關(guān)閉nginx并啟動apache2.4.39。單擊“數(shù)據(jù)庫”選項卡,安裝MySQL5.7.27版本,如圖1-12

所示。

圖1-12phpStudy配置圖

(3)通過上述管理界面可查看Web根路徑為“/www/admin/localhost_80/wwwroot”,在該路

徑下使用命令“echohello>index.php”,然后使用瀏覽器訪問“http://主機IP/index.php”顯示頁

面,則說明網(wǎng)站搭建成功,如圖1-13所示。

圖1-13index頁面瀏覽圖

7

代碼審計與實操

1.3代碼審計工具概要

在代碼審計過程中,為保證審計代碼的完整性與準(zhǔn)確性,通常需要使用自動化代碼審計與

人工審計相結(jié)合的方式,不同的審計方式也將使用各種各樣的審計工具來提升工作效率,下面

對自動審計及人工審計使用的工具進行介紹。

1.自動代碼審計工具

自動代碼審計工具可快速地掃描程序中的常規(guī)漏洞,并進行驗證分析。此類工具的使用在

一定程度上提升了代碼審計的效率。

但是,自動審計工具的缺點也很明顯。自動代碼審計工具只能根據(jù)靜態(tài)代碼審計常規(guī)漏洞。

而對于代碼邏輯、業(yè)務(wù)邏輯類型的漏洞卻很難發(fā)現(xiàn)。同時,自動審計工具的掃描結(jié)果也存在一

定的誤報率,而誤報率過高則會一定程度上增加審計的工作量。

根據(jù)代碼語言的不同使用的審計工具也不同,PHP、Java、Python都存在很多開源的自動代

碼審計工具。本單元主要介紹PHP代碼審計工具,包括Seay、RIPS、VCG等。

2.人工代碼審計工具

人工代碼審計過程中,往往會使用動態(tài)調(diào)試與審計小工具相結(jié)合的方式。很多程序在設(shè)計

之初都會考慮常見安全漏洞問題,尤其對于用戶傳入的數(shù)據(jù)都會經(jīng)過嚴(yán)格的過濾篩選與編碼加

密。針對數(shù)據(jù)流操作的不同方式,一般會將審計工具分為以下幾類:

(1)對數(shù)據(jù)進行編碼及加密:加密、解密編碼解碼工具。

(2)對數(shù)據(jù)進行正則表達式匹配:正則表達式測試工具。

人工分析利用漏洞的漏洞測試案例代碼(EXP)需要的工具:

(1)測試EXP:數(shù)據(jù)包抓包分析工具。

(2)SQL注入漏洞測試:數(shù)據(jù)庫執(zhí)行監(jiān)控工具。

使用上述代碼審計工具可以更方便地測試程序中各種功能漏洞。

1.4代碼編輯工具

代碼編輯工具是代碼審計的必備工具,利用代碼編輯工具可以更方便地查看代碼、調(diào)試功能、

查找內(nèi)容等。而代碼編輯工具發(fā)展至今也多種多樣,在代碼審計過程中選擇適合的代碼編輯工

具可以達到事半功倍的效果。

一般將代碼編輯工具分為兩類:輕量級代碼編輯工具、集成開發(fā)工具。

(1)輕量級代碼編輯工具:常用的輕量級代碼編輯工具包括SublimeText、Notepad++、

Editplus、UltraEdit等。此類工具普遍支持編程語言高亮字體顯示、全局搜索等特點。由于其啟動

快、對文本操作方便,適用于審計代碼量小的PHP文件。

(2)集成開發(fā)工具:常用的集成開發(fā)工具包括VisualStudioCode(VSCode)、ZendStudio、

PhpStorm、PhpDesigner等,此類工具設(shè)計之初是為了程序開發(fā)便捷,因此其具有的功能非常全面。

此類工具常見的特點包括:支持不同語言高亮、對代碼進行本地及遠程調(diào)試功能、自動掃描代碼

8

單元1代碼審計基礎(chǔ)

語法錯誤等,但是功能的全面也導(dǎo)致此類工具啟動較慢且安裝困難。因此,此類工具更適用于

審計開源框架程序,大型CMS等復(fù)雜程序。

本節(jié)介紹三款適用于PHP代碼的編輯工具:SublimeText、VSCode、PhpStorm。

1.SublimeText

SublimeText是一款跨平臺且識別多種語言的文件編輯器,支持安裝在MacOS、Linux、

Windows平臺上,使用此工具可以編輯HTML、CSS、JavaScript、PHP等應(yīng)用程序。因為其體積

小、擴展性強、打開文本速度快等優(yōu)點,目前已經(jīng)被很多計算機領(lǐng)域工作者使用。當(dāng)代碼審計

量比較小時,建議直接使用SublimeText查看代碼。下面對該工具的特點進行介紹:

(1)支持多種編碼格式:SublimeText支持的字符編碼包括ISO8859、UTF-8、GBK、GB2312

等,用戶可通過File→ReopenwithEncoding命令設(shè)置編碼字符集解決亂碼問題,如圖1-14

所示。

圖1-14SublimeText設(shè)置編碼

(2)支持外掛插件:SublimeText擁有強大的可擴展性,用戶可根據(jù)自己的需要安裝不同的

插件,如FileDiffs(文件比較)、MarkDownEditing(查看和編輯MarkDown文件)、Alignment(代

碼自動對齊)、Git(代碼及版本管理)等。用戶可通過選擇Preferences→PackageControl命令

進行插件的搜索,如圖1-15所示。

圖1-15搜索SublimeText插件

9

代碼審計與實操

2.VSCode

VSCode是微軟公司開發(fā)的一款跨平臺的源代碼編輯器。該工具除了支持PHP語言外,還

支持C++、Java、Python、Go等語言。圖1-16所示為VSCode工具界面,該界面包括三部分:

活動欄、側(cè)邊欄、編輯欄。

(1)活動欄:從上至下依次為搜索、使用Git、debug調(diào)試、使用插件。

(2)側(cè)邊欄:用于瀏覽項目文件或文件夾結(jié)構(gòu)。

(3)編輯欄:用于編輯代碼。

圖1-16VSCode界面

VSCode工具的特點如下:

(1)支持Windows、Linux、Mac多個操作系統(tǒng)版本。

(2)工具完全開源免費且集成Git。

(3)支持多種文件格式,包括HTML、CSS、XML、Less等。

(4)支持強大的插件擴展功能。

(5)支持調(diào)試功能。

3.PhpStorm

PhpStorm是JetBrains公司開發(fā)的一款商業(yè)PHP集成開發(fā)工具,旨在提高用戶效率,可深刻

理解用戶的編碼,提供智能代碼補全、快速導(dǎo)航及即時錯誤檢查功能。圖1-17所示為PhpStorm

工具的項目界面。

圖1-17PhpStorm界面

近幾年由于JetBrains公司開發(fā)的各款I(lǐng)DE(集成開發(fā)環(huán)境)逐漸流行,在進行代碼開發(fā)與

10

單元1代碼審計基礎(chǔ)

代碼審計時此款工具也受到很多計算機從業(yè)者的青睞。在審計大型CMS、PHP常用框架時也推

薦使用該工具,這主要因為該工具包括以下特點:

(1)支持語法高亮、自動補全、自動掃描檢測PHP代碼中語法錯誤。

(2)與ZendStudio相比,該工具屬于輕量級集成開發(fā)工具,啟動速度略快。

(3)支持本地調(diào)試與遠程調(diào)試,有利于代碼審計與代碼的流程走讀。

1.5自動代碼審計工具

在源代碼的靜態(tài)安全審計中,使用自動化工具代替人工漏洞挖掘,可以顯著提高審計工作

的效率。使用自動化代碼審計工具,是每一個代碼審計人員的必備能力。本節(jié)將介紹四款PHP

源代碼審計工具:Seay、RIPS、VCG、FortifySCA。

1.5.1Seay代碼審計工具

Seay代碼審計工具是由阿里巴巴公司使用C#開發(fā)的一款運行于Windows操作系統(tǒng)的PHP

代碼安全審計系統(tǒng)。該系統(tǒng)可以審計常見的Web安全漏洞,如SQL注入、代碼執(zhí)行漏洞、命令

執(zhí)行漏洞、XSS等。在對PHP代碼進行白盒測試時,使用Seay代碼審計系統(tǒng)進行代碼審計是輔

助代碼白盒測試的一種方法。很多初學(xué)者在學(xué)習(xí)代碼審計時都會首選Seay系統(tǒng),這主要是因為

該工具具有安裝簡單、審計簡單、開源、學(xué)習(xí)簡單等特點。

該系統(tǒng)支持的功能包括代碼自動審計、代碼調(diào)試、函數(shù)定位、插件擴展、自定義規(guī)則配置、

數(shù)據(jù)庫執(zhí)行監(jiān)控等。

下面對Seay代碼審計工具的常見功能進行介紹。

1.代碼自動審計

單擊“新建項目”按鈕導(dǎo)入項目,然后選擇“自動審計”選項卡,單擊“開始”按鈕即可

對已創(chuàng)建的項目進行自動化審計。當(dāng)審計系統(tǒng)發(fā)現(xiàn)可能存在漏洞的代碼后將把審計結(jié)果打印至

列表框。用戶可以通過雙擊漏洞選項定位至指定代碼,同時定位的代碼將以高亮形式顯示,代

碼自動審計結(jié)果如圖1-18所示。

圖1-18Seay自動審計

11

代碼審計與實操

注意:如果程序在開發(fā)過程中使用的編碼方式不同,將導(dǎo)致Seay導(dǎo)入項目后存在亂碼情

況,這需要用戶單擊“編碼”選項切換為不顯示亂碼的編碼方式。

2.定位函數(shù)功能

定位函數(shù)功能將從程序代碼中迅速定位出指定函數(shù)的位置,該功能在使用敏感函數(shù)參數(shù)回

溯法時發(fā)揮作用。假設(shè)用戶在進行代碼審計時發(fā)現(xiàn)dvwaHtmlEcho()函數(shù)需要查看,可以通過右

擊該函數(shù),從彈出的快捷菜單中選擇“定位函數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論