![代碼審計與實操_第1頁](http://file4.renrendoc.com/view11/M00/27/38/wKhkGWWeVEuALIYDAADakVBHPIQ366.jpg)
![代碼審計與實操_第2頁](http://file4.renrendoc.com/view11/M00/27/38/wKhkGWWeVEuALIYDAADakVBHPIQ3662.jpg)
![代碼審計與實操_第3頁](http://file4.renrendoc.com/view11/M00/27/38/wKhkGWWeVEuALIYDAADakVBHPIQ3663.jpg)
![代碼審計與實操_第4頁](http://file4.renrendoc.com/view11/M00/27/38/wKhkGWWeVEuALIYDAADakVBHPIQ3664.jpg)
![代碼審計與實操_第5頁](http://file4.renrendoc.com/view11/M00/27/38/wKhkGWWeVEuALIYDAADakVBHPIQ3665.jpg)
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能設(shè)備安裝與維護勞務(wù)承包合同范本
- 2025年度住宅小區(qū)智能化改造承包合同范本
- 2025年度新型庫房租賃合同范本(含倉儲自動化設(shè)備)
- 2025年度教師教育評價項目聘用合同范本
- 2025年度旅游導(dǎo)覽口譯翻譯服務(wù)合同協(xié)議書
- 2025年度害蟲防治產(chǎn)品銷售與技術(shù)服務(wù)合同
- 2025年度大型活動安保服務(wù)勞務(wù)分包合同示范
- 2025年度人工智能芯片借款抵押股權(quán)投資合同
- 2025年度二手車居間買賣合同范本與居間協(xié)議樣本
- 2025年度智能城市基礎(chǔ)設(shè)施建設(shè)合同
- 醫(yī)院培訓(xùn)課件:《如何撰寫護理科研標(biāo)書》
- 風(fēng)車的原理小班課件
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年山東省濟南市中考英語試題卷(含答案)
- 2024年北師大版八年級上冊全冊數(shù)學(xué)單元測試題含答案
- 江蘇省南京市第二十九中2025屆數(shù)學(xué)高二上期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 六年級數(shù)學(xué)競賽試題及答案(六套)
- 八年級下學(xué)期期末考試語文試題(PDF版含答案)
- 臨床診療指南-口腔醫(yī)學(xué)分冊
- 浙教版八年級下冊科學(xué)第一章 電和磁整章思維導(dǎo)圖
- (正式版)SH∕T 3541-2024 石油化工泵組施工及驗收規(guī)范
評論
0/150
提交評論