代碼審計(jì)與實(shí)操_第1頁(yè)
代碼審計(jì)與實(shí)操_第2頁(yè)
代碼審計(jì)與實(shí)操_第3頁(yè)
代碼審計(jì)與實(shí)操_第4頁(yè)
代碼審計(jì)與實(shí)操_第5頁(yè)
已閱讀5頁(yè),還剩309頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)閱讀全文

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

文檔簡(jiǎn)介

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

代碼審計(jì)與實(shí)操

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

安厚霖張臻馮玉濤楊曄李強(qiáng)◎副主編

內(nèi)容簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

中國(guó)鐵道出版社有限公司,2022.4

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

ISBN978-7-113-28884-6

Ⅰ.①代…Ⅱ.①胡…②時(shí)…③李…Ⅲ.①源代碼-

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

中國(guó)版本圖書(shū)館CIP數(shù)據(jù)核字(2022)第028536號(hào)

書(shū)名:代碼審計(jì)與實(shí)操

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

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

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

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

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

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

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

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

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

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

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

書(shū)號(hào):ISBN978-7-113-28884-6

定價(jià):54.00元

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

凡購(gòu)買(mǎi)鐵道版圖書(shū),如有印制質(zhì)量問(wèn)題,請(qǐng)與本社教材圖書(shū)營(yíng)銷(xiāo)部聯(lián)系調(diào)換。電話(huà):(010)63550836

打擊盜版舉報(bào)電話(huà):(010)63549461

代碼審計(jì)與實(shí)操

主編:

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

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

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

副主編:

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

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

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

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

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

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

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

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

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

張超媖湖北省高級(jí)人民法院

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

咸鶴群青島大學(xué)

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

高洪雨山東電力高等專(zhuān)科學(xué)校(國(guó)網(wǎng)技術(shù)學(xué)院)

前言

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

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

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

代碼審計(jì)的方法通常包括白盒、黑盒、灰盒等方式。白盒是指通過(guò)對(duì)源代碼的分析

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

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

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

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

代碼審計(jì)要求的門(mén)檻較高,通常需要審計(jì)人員對(duì)PHP代碼非常熟悉且具有多年的

從業(yè)經(jīng)驗(yàn),能夠?qū)ΤR?jiàn)框架、常見(jiàn)CMS(內(nèi)容管理系統(tǒng))、常見(jiàn)功能漏洞有分析經(jīng)驗(yàn)。

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

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

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

本書(shū)首先對(duì)代碼審計(jì)的定義、代碼審計(jì)的流程、代碼審計(jì)的分類(lèi)進(jìn)行了系統(tǒng)的介紹,

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

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

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

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

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

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

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

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

副主編。編寫(xiě)分工:?jiǎn)卧?、單元5由時(shí)瑞鵬編寫(xiě),單元2、單元3由胡前偉編寫(xiě),單元

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

13、單元14由馮玉濤、楊曄、李強(qiáng)共同編寫(xiě)。

I

代碼審計(jì)與實(shí)操

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

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

/,屬于收費(fèi)內(nèi)容,如需購(gòu)買(mǎi),請(qǐng)咨詢(xún)360安全人才能力發(fā)展中心。

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

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

必備的重要參考書(shū)。

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

懇請(qǐng)讀者批評(píng)指正。

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

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

應(yīng)用。

編者

2021年7月

II

目錄

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

小結(jié)30

1.1代碼審計(jì)簡(jiǎn)介2

習(xí)題30

1.1.1代碼審計(jì)定義2

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

1.1.3代碼審計(jì)分類(lèi)3

2.1影響代碼審計(jì)的配置33

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

2.1.1PHP的配置文件33

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

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

1.2.2實(shí)驗(yàn):Windows與Linux搭建

2.1.3安全模式34

74CMS4

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

1.3代碼審計(jì)工具概要8

配置35

1.4代碼編輯工具8

2.1.5魔術(shù)引號(hào)及遠(yuǎn)程文件相關(guān)

1.5自動(dòng)代碼審計(jì)工具11

配置35

1.5.1Seay代碼審計(jì)工具11

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

1.5.2RIPS代碼審計(jì)工具13

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

1.5.3VCG代碼審計(jì)工具14

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

1.5.4FortifySCA代碼審計(jì)工具14

2.2.2可能存在漏洞的點(diǎn)39

1.5.5自動(dòng)化審計(jì)工具部署15

2.3弱類(lèi)型的安全40

1.6代碼審計(jì)輔助工具16

2.4常見(jiàn)危險(xiǎn)函數(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實(shí)驗(yàn):BurpSuite數(shù)據(jù)包攔截...19

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

1.6.4編解碼工具21

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

1.6.5正則表達(dá)式測(cè)試工具22

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

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

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

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

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

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

I

代碼審計(jì)與實(shí)操

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

2.5.4實(shí)驗(yàn):定向功能法分析YXCMS4.2.2存儲(chǔ)型XSS漏洞81

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

2.5.5通讀全文法514.3XSS漏洞繞過(guò)84

2.5.6實(shí)驗(yàn):通讀全文法分析74CMS4.3.1編解碼繞過(guò)84

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

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

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

4.4XSS漏洞防御89

單元3SQL注入漏洞審計(jì)????????????????58

4.5XSS審計(jì)CMS實(shí)驗(yàn)90

3.1SQL注入漏洞挖掘594.5.1實(shí)驗(yàn):BlueCMS1.6反射XSS

3.1.1SQL注入漏洞簡(jiǎn)介59審計(jì)90

3.1.2SQL注入漏洞分類(lèi)概述594.5.2實(shí)驗(yàn):BlueCMS1.6存儲(chǔ)XSS

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

3.2SQL注入分類(lèi)604.5.3實(shí)驗(yàn):74CMS3.4寬字節(jié)注入

3.2.1無(wú)過(guò)濾參數(shù)注入60反射XSS審計(jì)95

3.2.2無(wú)過(guò)濾HTTP頭注入614.5.4實(shí)驗(yàn):74CMS3.0存儲(chǔ)XSS

3.2.3字符串替換繞過(guò)注入63審計(jì)98

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

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

3.3.2解碼注入繞過(guò)65

單元5CSRF漏洞審計(jì)?????????????????104

3.3.3字符串替換繞過(guò)67

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

3.5SQL注入CMS實(shí)驗(yàn)705.1.1CSRF漏洞簡(jiǎn)介105

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

3.5.1實(shí)驗(yàn):BlueCMS1.6Union

5.2CSRF漏洞分類(lèi)105

注入70

5.2.1GET型CSRF漏洞105

3.5.2實(shí)驗(yàn):74CMS3.0寬字節(jié)

5.2.2POST型CSRF漏洞106

注入73

5.3CSRF漏洞防御107

小結(jié)

775.3.1驗(yàn)證HTTPReferer字段107

習(xí)題775.3.2驗(yàn)證Token109

5.3.3驗(yàn)證碼驗(yàn)證109

單元4XSS漏洞審計(jì)????????????????????79

5.4CSRF審計(jì)CMS實(shí)驗(yàn)110

4.1XSS漏洞挖掘805.4.1實(shí)驗(yàn):74CMS3.0CSRF

4.1.1XSS漏洞簡(jiǎn)介80審計(jì)110

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

4.2XSS漏洞分類(lèi)81審計(jì)113

II

目錄

小結(jié)1167.4文件包含漏洞審計(jì)CMS實(shí)驗(yàn)145

習(xí)題1177.4.1實(shí)驗(yàn):phpmyadmin4.8.1文件

包含審計(jì)145

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

7.4.2實(shí)驗(yàn):織夢(mèng)cmsV5.7包含Cache

審計(jì)????????????????????????????????118

審計(jì)147

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

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

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

單元8任意文件操作漏洞審計(jì)?????????151

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

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

6.2代碼執(zhí)行漏洞審計(jì)實(shí)驗(yàn)1248.1.1文件上傳漏洞簡(jiǎn)介152

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

審計(jì)1248.1.3文件上傳漏洞繞過(guò)152

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

審計(jì)127審計(jì)157

6.3命令執(zhí)行漏洞挖掘1298.2文件寫(xiě)入漏洞挖掘與實(shí)驗(yàn)159

6.3.1命令執(zhí)行漏洞簡(jiǎn)介1298.2.1文件寫(xiě)入漏洞簡(jiǎn)介159

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

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

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

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

6.4命令執(zhí)行審計(jì)CMS實(shí)驗(yàn)135與實(shí)驗(yàn)163

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

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

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

單元7文件包含漏洞審計(jì)???????????????141

經(jīng)驗(yàn)164

7.1文件包含漏洞挖掘1428.3.4實(shí)驗(yàn):MetInfo6.0.0文件讀取

7.1.1文件包含漏洞簡(jiǎn)介142漏洞審計(jì)165

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

7.1.3文件包含漏洞防御1428.4.1文件刪除漏洞簡(jiǎn)介167

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

7.3文件包含漏洞繞過(guò)1448.4.3實(shí)驗(yàn):74CMS3.0文件刪除

7.3.1擴(kuò)展名過(guò)濾繞過(guò)(本地文件漏洞審計(jì)168

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

7.3.2擴(kuò)展名過(guò)濾繞過(guò)(遠(yuǎn)程文件小結(jié)171

包含)144習(xí)題171

III

代碼審計(jì)與實(shí)操

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

10.4.2反序列化漏洞介紹198

9.1XXE漏洞挖掘175

10.5反序列化漏洞CMS實(shí)驗(yàn)200

9.1.1XXE漏洞簡(jiǎn)介175

小結(jié)204

9.1.2XXE漏洞挖掘方法175

習(xí)題204

9.2XXE漏洞分類(lèi)175

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

9.4XXE審計(jì)CMS實(shí)驗(yàn)177

11.1驗(yàn)證碼功能漏洞208

9.5SSRF漏洞挖掘180

11.1.1驗(yàn)證碼功能介紹208

9.5.1SSRF漏洞簡(jiǎn)介180

11.1.2驗(yàn)證碼常見(jiàn)安全問(wèn)題208

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

11.1.3驗(yàn)證碼繞過(guò)方式209

9.6SSRF漏洞分類(lèi)181

11.1.4實(shí)驗(yàn):驗(yàn)證碼功能漏洞導(dǎo)致任

9.6.1CURL引起的SSRF181

意用戶(hù)注冊(cè)實(shí)踐212

9.6.2file_get_contents引起的

11.2密碼重置功能漏洞214

SSRF182

11.2.1密碼重置功能介紹214

9.6.3fsocketopen造成的SSRF182

11.2.2密碼重置功能的常見(jiàn)案例...214

9.7SSRF漏洞繞過(guò)183

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

9.8SSRF漏洞防御183

11.2.4實(shí)驗(yàn):任意用戶(hù)密碼重置...218

9.9SSRF審計(jì)CMS實(shí)驗(yàn)184

11.3交易支付功能漏洞222

小結(jié)185

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

習(xí)題186

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

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

審計(jì)???????????????????????????????188問(wèn)題223

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

10.1變量覆蓋漏洞挖掘189

小結(jié)225

10.1.1變量覆蓋漏洞簡(jiǎn)介189

習(xí)題226

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

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

10.2變量覆蓋漏洞案例190

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

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

12.2留言板存儲(chǔ)型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任意文件寫(xiě)入236

10.2.5$$變量覆蓋193

小結(jié)237

10.3變量覆蓋審計(jì)CMS實(shí)驗(yàn)194

習(xí)題238

10.4反序列化漏洞196

IV

目錄

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

13.1Java代碼審計(jì)入門(mén)24014.1Django框架概述272

13.1.1JavaEE介紹24014.1.1Django框架簡(jiǎn)介272

13.1.2Java代碼審計(jì)基礎(chǔ)24114.1.2實(shí)驗(yàn):Django搭建274

13.2Java代碼中的SQL注入漏洞24414.2Django框架常見(jiàn)漏洞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平臺(tái)SQL注入漏洞14.2.4Django中的SQL注入漏洞282

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

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

13.3.1Java中的XSS漏洞簡(jiǎn)介25014.2.6Django中的其他漏洞284

13.3.2Java中XSS漏洞防御25314.3Flask框架常見(jiàn)漏洞284

13.3.3JEESNS平臺(tái)XSS漏洞分析..25414.3.1Flask框架介紹284

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

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

簡(jiǎn)介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ù)語(yǔ)?????????????????????????295

13.5.4MCMS平臺(tái)文件上傳漏洞

分析263

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

13.6Java代碼中的SSRF漏洞264

13.6.1Java中的SSRF漏洞簡(jiǎn)介264

參考文獻(xiàn)????????????????????????????????????299

13.6.2Java中的SSRF漏洞防御266

13.6.3Hawtio平臺(tái)SSRF漏洞分析..266

小結(jié)268

習(xí)題268

V

單元1

代碼審計(jì)基礎(chǔ)

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

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

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

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

第三部分介紹代碼審計(jì)中常用的審計(jì)工具,包括代碼編輯工具、自動(dòng)代碼審計(jì)工具、代

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

工具)。

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

單元導(dǎo)圖:

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

●了解代碼審計(jì)概念;

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

●熟悉常用代碼審計(jì)工具使用方法;

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

1

代碼審計(jì)與實(shí)操

1.1代碼審計(jì)簡(jiǎn)介

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

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

1.1.1代碼審計(jì)定義

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

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

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

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

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

費(fèi)的成本。測(cè)試過(guò)程不會(huì)對(duì)線(xiàn)上業(yè)務(wù)造成影響,不會(huì)導(dǎo)致諸如系統(tǒng)宕機(jī)、服務(wù)卡死、數(shù)據(jù)庫(kù)阻

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

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

通常,代碼審計(jì)的對(duì)象幾乎可以是所有的編程語(yǔ)言,常見(jiàn)的語(yǔ)言包括Java、C、C#、PHP、

Python和JSP等,本書(shū)將以PHP為主介紹代碼審計(jì)案例。

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

(1)熟悉PHP開(kāi)發(fā)語(yǔ)言。

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

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

1.1.2代碼審計(jì)流程

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

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

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

客戶(hù)關(guān)注的重點(diǎn)對(duì)源代碼進(jìn)行手工審計(jì)。

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

圖1-1代碼審計(jì)流程圖

2

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

(1)代碼審計(jì)階段。

(2)審計(jì)實(shí)施階段。

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

(4)成果匯報(bào)階段。

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

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

審計(jì)報(bào)告。

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

1.1.3代碼審計(jì)分類(lèi)

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

分類(lèi)包括自動(dòng)化審計(jì)和人工審計(jì)。在審計(jì)過(guò)程中通常采用上述兩種方法相結(jié)合的方式進(jìn)行審計(jì),

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

1.自動(dòng)化審計(jì)

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

工作的效率。但是,自動(dòng)化審計(jì)也存在缺點(diǎn),包括:

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

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

2.人工審計(jì)

相比于自動(dòng)化審計(jì)而言,人工審計(jì)更加準(zhǔn)確,卻也更加耗費(fèi)時(shí)間與精力。人工審計(jì)通常要

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

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

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

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

建需要秉承以下原則:

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

3

代碼審計(jì)與實(shí)操

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

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

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

1.2.1phpStudy環(huán)境介紹

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

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

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

該工具的常用功能進(jìn)行介紹。

1.服務(wù)控制

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

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

2.phpStudy支持的軟件版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.2.2實(shí)驗(yàn):Windows與Linux搭建74CMS

1.實(shí)驗(yàn)介紹

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

4

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

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

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

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

2.預(yù)備知識(shí)

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

3.實(shí)驗(yàn)?zāi)康?/p>

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

4.實(shí)驗(yàn)環(huán)境

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

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

5.實(shí)驗(yàn)步驟

第一部分:Windows搭建74CMS。

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

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

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

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

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

務(wù)啟動(dòng)失敗。

圖1-7phpStudy啟動(dòng)與停止

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

5

代碼審計(jì)與實(shí)操

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

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

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

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

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

庫(kù)名稱(chēng)、管理員用戶(hù)名密碼等。安裝過(guò)程如圖1-9所示。

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

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

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

用戶(hù)名、密碼登錄后臺(tái)。

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

6

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

第二部分:CentOS7搭建74CMS。

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

yuminstall-ywget

wget-Oinstall.sh/install.sh

shinstall.sh

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

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

圖1-11phpStudy安裝成功圖

(2)在瀏覽器中輸入54:9080/4EC69D并輸入用戶(hù)名進(jìn)行登錄,通過(guò)“首頁(yè)”

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

所示。

圖1-12phpStudy配置圖

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

徑下使用命令“echohello>index.php”,然后使用瀏覽器訪(fǎng)問(wèn)“http://主機(jī)IP/index.php”顯示頁(yè)

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

圖1-13index頁(yè)面瀏覽圖

7

代碼審計(jì)與實(shí)操

1.3代碼審計(jì)工具概要

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

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

對(duì)自動(dòng)審計(jì)及人工審計(jì)使用的工具進(jìn)行介紹。

1.自動(dòng)代碼審計(jì)工具

自動(dòng)代碼審計(jì)工具可快速地掃描程序中的常規(guī)漏洞,并進(jìn)行驗(yàn)證分析。此類(lèi)工具的使用在

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

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

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

定的誤報(bào)率,而誤報(bào)率過(guò)高則會(huì)一定程度上增加審計(jì)的工作量。

根據(jù)代碼語(yǔ)言的不同使用的審計(jì)工具也不同,PHP、Java、Python都存在很多開(kāi)源的自動(dòng)代

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

2.人工代碼審計(jì)工具

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

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

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

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

(2)對(duì)數(shù)據(jù)進(jìn)行正則表達(dá)式匹配:正則表達(dá)式測(cè)試工具。

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

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

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

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

1.4代碼編輯工具

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

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

具可以達(dá)到事半功倍的效果。

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

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

Editplus、UltraEdit等。此類(lèi)工具普遍支持編程語(yǔ)言高亮字體顯示、全局搜索等特點(diǎn)。由于其啟動(dòng)

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

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

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

此類(lèi)工具常見(jiàn)的特點(diǎn)包括:支持不同語(yǔ)言高亮、對(duì)代碼進(jìn)行本地及遠(yuǎn)程調(diào)試功能、自動(dòng)掃描代碼

8

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

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

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

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

1.SublimeText

SublimeText是一款跨平臺(tái)且識(shí)別多種語(yǔ)言的文件編輯器,支持安裝在MacOS、Linux、

Windows平臺(tái)上,使用此工具可以編輯HTML、CSS、JavaScript、PHP等應(yīng)用程序。因?yàn)槠潴w積

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

量比較小時(shí),建議直接使用SublimeText查看代碼。下面對(duì)該工具的特點(diǎn)進(jìn)行介紹:

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

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

所示。

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

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

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

碼自動(dòng)對(duì)齊)、Git(代碼及版本管理)等。用戶(hù)可通過(guò)選擇Preferences→PackageControl命令

進(jìn)行插件的搜索,如圖1-15所示。

圖1-15搜索SublimeText插件

9

代碼審計(jì)與實(shí)操

2.VSCode

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

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

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

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

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

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

圖1-16VSCode界面

VSCode工具的特點(diǎn)如下:

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

(2)工具完全開(kāi)源免費(fèi)且集成Git。

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

(4)支持強(qiáng)大的插件擴(kuò)展功能。

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

3.PhpStorm

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

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

工具的項(xiàng)目界面。

圖1-17PhpStorm界面

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

10

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

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

薦使用該工具,這主要因?yàn)樵摴ぞ甙ㄒ韵绿攸c(diǎn):

(1)支持語(yǔ)法高亮、自動(dòng)補(bǔ)全、自動(dòng)掃描檢測(cè)PHP代碼中語(yǔ)法錯(cuò)誤。

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

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

1.5自動(dòng)代碼審計(jì)工具

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

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

源代碼審計(jì)工具:Seay、RIPS、VCG、FortifySCA。

1.5.1Seay代碼審計(jì)工具

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

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

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

助代碼白盒測(cè)試的一種方法。很多初學(xué)者在學(xué)習(xí)代碼審計(jì)時(shí)都會(huì)首選Seay系統(tǒng),這主要是因?yàn)?/p>

該工具具有安裝簡(jiǎn)單、審計(jì)簡(jiǎn)單、開(kāi)源、學(xué)習(xí)簡(jiǎn)單等特點(diǎn)。

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

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

下面對(duì)Seay代碼審計(jì)工具的常見(jiàn)功能進(jìn)行介紹。

1.代碼自動(dòng)審計(jì)

單擊“新建項(xiàng)目”按鈕導(dǎo)入項(xiàng)目,然后選擇“自動(dòng)審計(jì)”選項(xiàng)卡,單擊“開(kāi)始”按鈕即可

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

列表框。用戶(hù)可以通過(guò)雙擊漏洞選項(xiàng)定位至指定代碼,同時(shí)定位的代碼將以高亮形式顯示,代

碼自動(dòng)審計(jì)結(jié)果如圖1-18所示。

圖1-18Seay自動(dòng)審計(jì)

11

代碼審計(jì)與實(shí)操

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

況,這需要用戶(hù)單擊“編碼”選項(xiàng)切換為不顯示亂碼的編碼方式。

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論