摘要:Web滲透測試是網絡空間安全專業的一門重要課程,具有極強的實踐性,要求學生動手進行Web網站的滲透測試。然而,傳統的講授與實驗結合的教學方式在該課程中的效果并不理想。CTF,即Capture The Flag(奪旗賽) ,是利用網絡安全知識尋找題目中隱藏的Flag(旗) 。將CTF競賽形式的題型引入教學演示和實驗中,學生在動手完成演示示例或實驗(找到Flag) 后,能夠顯著提升學習成就感,增強對網絡安全知識的興趣,從而提高課程的教學效果。
關鍵詞:Web;滲透測試;CTF;競賽;網絡空間安全
中圖分類號:G642" " " 文獻標識碼:A
文章編號:1009-3044(2025)08-0165-03
開放科學(資源服務) 標識碼(OSID)
0 引言
Web滲透測試課程主要的教學內容為常見的Web滲透漏洞的攻擊和防范,包括信息收集、Web基礎、SQL注入漏洞、文件上傳漏洞、反序列化漏洞、暴力破解漏洞、命令執行漏洞、文件包含漏洞、XXE漏洞、XSS漏洞等。課程要求學生掌握這些常見Web滲透測試的方法,尤其是能夠進行動手實操,完成相應Web網站的滲透任務。然而,傳統的講授與實驗結合的教學方式存在諸多問題,導致教學效果不佳。因此,針對這些問題進行教學改革,將CTF競賽模式引入教學中,以提升教學效果[1-3]。
1 問題分析
1.1 學生想學習實用的網絡安全知識,但難以下手、容易放棄
網絡安全專業的學生大多懷有“黑客”的夢想(在法律允許的情況下進行滲透攻擊) ,認為“黑客”形象十分酷炫。然而,要達到“黑客”的水平,學生需要掌握大量計算機基礎知識和網絡安全知識,部分同學往往不知道從何入手,容易產生放棄的心理,因此需要相應的引導。而傳統的講授+實驗的方式,實驗上手難度相對較大,目的不明確,導致學生在入門學習的時候跟不上,容易放棄。
1.2 學生想參與網絡安全競賽,但是入門不容易,成績不佳
國內外網絡安全相關競賽眾多,學生參與這些競賽可以獲得豐富的知識。如果能在競賽中獲獎,將對就業或繼續深造大有裨益。然而,競賽入門并不容易,許多同學參與后成績不佳。
1.3 傳統的教學方式難以滿足該課程對動手能力和學生興趣的要求
Web滲透測試課程要求學生具備較強的動手能力,能夠完成Web網站的滲透測試操作。而傳統、單一的PPT模式的知識傳授方式,已經不適用于這種動手能力要求較高的課程;傳統的實驗,配置煩瑣,目的性、趣味性也不強,浪費學生不少時間,學生的興趣也不強。
1.4 傳統的考核方式難以滿足該課程對動手能力的要求
Web滲透測試課程不要求學生開發出某個系統或工具,該課程的考核重點在學生的動手能力,要求學生能靈活運用所學的滲透方法進行實際操作,因此,筆試、大作業等傳統形式的考核都不太適用該課程。
1.5 課程內知識不足以滿足優秀就業、深造的要求
Web滲透測試課程學時有限,旨在引導學生入門Web滲透測試領域,學習所需的基礎知識和操作方法。然而,優秀的就業機會和深造要求學生在網絡安全知識的深度與廣度上具備更高水平,因此需要對學生的知識拓展進行相應引導。
2 課程改革
2.1 改革實驗環境搭建
課程中常需使用特定環境進行演示和測試,如Kali、SQLi-labs(包含phpMyAdmin) 、Upload-labs、XSS闖關和XSS平臺。然而,這些環境的搭建步驟煩瑣,容易出錯,不同系統間可能出現兼容性問題,若在學生個人電腦上搭建,耗時較長。
以SQLi-labs實驗環境為例,其安裝配置步驟較多:首先需安裝PHP環境,通常使用phpStudy;為方便數據庫管理,建議安裝數據庫管理工具如phpMyAdmin。接著,下載SQLi-labs的源代碼,解壓至網站對應目錄,修改數據庫配置文件,并執行數據庫初始化操作。學生在實際安裝配置過程中,由于電腦軟件配置各異,可能會遇到一些問題。例如,有些同學在學習Web開發課程時安裝了其他Web服務器,可能與phpStudy集成的Web服務器發生沖突;而在學習數據庫課程時,安裝的數據庫服務器也可能與phpStudy集成的Web服務器產生沖突。解決這些問題往往需要耗費大量時間。因此,課程教學應更多地集中于Web滲透的原理與實操,而不應在環境搭建上耗費過多時間。
為此,在校內服務器上搭建了一個CTF形式的實驗網站(使用開源的GZCTF競賽平臺) ,將常用的環境直接放置于平臺上(如圖1所示) 。學生無須在個人電腦上重復搭建環境,只需打開實驗網站,點擊相應的實驗環境即可使用。
每個實驗環境以CTF題的形式提供,都使用docker鏡像進行配置[4-5],如某個學生在實驗網站上啟動了SQLi-labs這個實驗環境,就會啟動獨立的一個docker容器,這個docker容器的實驗環境只服務于該同學,與其他同學開啟的實驗環境是相互獨立、隔離的,不同同學之間的操作不會相互影響。該docker鏡像使用Dockerfile來進行自定義的環境配置(如圖2所示) ,首先使用基礎的base_image_nginx_mysql_php_73鏡像,該基礎鏡像包含通用的Web服務器、數據庫、PHP環境,然后將SQLi-labs、phpMyAdmin、數據庫備份文件等拷貝到容器中,修改SQLi-labs的數據庫配置文件,并將已經初始化好的數據庫備份文件導入到數據庫中,Web服務器和PHP的一些特定配置,也在這里修改好。使用該Dockerfile構建出來的docker鏡像,即包含完整可用的SQLi-labs和phpMyAdmin環境,其他的環境,如kali、Upload-labs、xss-lab、xssplatform,使用類似的方法進行搭建。
學生在實驗網站上點擊開啟對應環境即可使用,這些環境運行在實驗網站對應的服務器上,而不是學生本地的電腦上,節約學生時間的同時,也不會與學生本地電腦上的軟件配置有沖突,使用便捷,且不容易出問題。
2.2 改革示例演示
在課程教學中,首先講解相關理論知識,然后通過實例演示以更好地理解和運用這些知識。之前的實例演示通常在某些基礎環境上進行,例如講解Union SQL注入時,需要先配置好SQLi-labs環境,然后使用該環境中的示例進行演示。然而,這些環境的搭建耗費了學生大量時間,且SQLi-labs中的題目眾多,示例演示的針對性較弱。改革后,常用的基礎環境無須學生自行搭建,學生只需在實驗網站上點擊即可開啟使用。同時,大部分示例演示已改為CTF題形式,這些CTF題不需要學生自行搭建基礎環境,直接在實驗網站上點擊即可開啟。每個CTF題與對應知識點緊密相關,具有更強的針對性,演示效果顯著提升。
學生完成CTF題形式的示例演示后,實驗網站能夠即時判斷對錯,并給予相應分數,增強了成就感,有效激發了學生的學習興趣。學生在課程中提前接觸CTF競賽形式的題目,為后續想參加CTF競賽的學生提供了良好的入門途徑。
此外,課程中部分知識點內容較多,演示步驟煩瑣,所需時間較長,導致許多同學在演示過程中難以跟上。改革后,將這些內容較多的示例拆解為多個CTF題,每個CTF題對應一部分步驟。在示例演示結束后,給予學生一定時間進行動手實操,學生在完成相應CTF題后,能夠充分理解前面的步驟,再繼續演示后續步驟對應的CTF題,這樣有助于學生更好地理解內容較多的知識點。如講解Union SQL注入時(如圖3所示) ,將示例演示拆分為6個CTF題,第1題為登錄框繞過,用于演示SQL注入的基本原理,第2題用于演示使用Union SQL注入獲取數據庫名,第3題用于也用于演示數據庫名的獲取,但是對目標網站的數據庫查詢語句用的列數進行了變化,加深對Union SQL注入的理解,第4題用于演示某個數據庫中所有表名的獲取,第5題用于演示某個表中所有列名的獲取,最后,第6題演示了Union SQL注入的所有步驟,包括上述的數據庫名獲取、表名獲取、列名獲取,以及最后某個表中數據的獲取。改革前,大約一半的學生能夠在課堂上完成Union SQL注入的示例;改革后,幾乎所有學生都能在課程中完成這一示例。
2.3 改革課程考核
Web滲透測試課程重點考核學生的動手實踐能力,因此,課程考核的改革重點關注實驗和大作業這兩個部分。
改革前,實驗考核主要通過兩個方面進行:一是學生現場實驗的檢查,但由于該課程實驗題操作性強且步驟較多,課堂時間有限,導致檢查時間不足;二是學生提交的實驗報告,主要描述實驗過程,部分同學可能出現抄襲,教師在查看實驗報告時需耗費大量時間進行抄襲檢查。此外,通過實驗報告的方式,難以有效考核學生的真實實踐能力。
引入CTF形式的實驗網站進行教學改革后,實驗考核可以在實驗網站上方便地進行。教師發布CTF形式的實驗題目,學生打開題目,利用所學知識完成相應步驟后提交答案。實驗時間截止后,教師可以輕松導出學生成績,從而節省判題時間。此外,實驗網站集成了作弊檢測功能,同一道題每位學生提交的答案均不同,若直接復制他人答案將被平臺檢測出來。因此,學生必須掌握解題的全部步驟才能得分,這樣可以更客觀、公正地考核學生對課程的掌握程度。
對于大作業的考核,在改革前,要求學生提交一定數量的CTF題的解題報告,對于參加CTF競賽遇到的題目或較難的題,有得分加成,這種方式在一定程度上能考查出學生的實踐動手能力,因此,在改革后,保留了該方式,并在此基礎上增加了期末測驗環節。期末測驗同樣在實驗網站上進行,如圖4所示,為某次期末測驗的排行榜結果的部分截圖,期末測驗要求學生在固定時間內線下集中進行,測驗題型為CTF形式,考查范圍包括整個課程的教學內容,分為低、中、高不同的難度,并有少部分拓展題,需要學生有很好的自學能力。這種期末測驗的方式,相比大作業實驗報告的形式,可以更好地考查出學生真實的實踐動手能力。
2.4 改革課外引入
Web滲透測試課程內教學學時有限,為進一步提升學生學習網絡安全知識的欲望,提高知識儲備的深度或廣度,重點對CTF競賽進行課外引入。在課程內引入了CTF形式的實驗和期末測驗,這種形式與CTF競賽類似,因此,學生在課程內就可以對CTF競賽有一定的了解。在課外,對感興趣的學生進行競賽相關培訓,整理競賽相關的學習資料,錄制教學視頻,不定期轉發線上CTF競賽通知,并在學校內組織了CTF競賽,指導學生參加線上、線下不同級別的CTF競賽。
3 改革成效
本課程以2021級網絡空間安全1、2班和2022級網絡空間安全1、2班為研究對象進行教學改革。前者為改革前的兩個班級,學生人數共計89人;后者為改革后的兩個班級,學生人數共計80人。如表1所示,改革前后成績對比的數據表明,改革后80分及以上的學生占比明顯增加,說明學生對課程內容的掌握程度更好。改革后,70分以下學生占比也明顯降低,學生上課積極性更高,學生跟不上教學節奏的情況更少。
在改革后,對學生競賽進行了更多的引導、培訓和組織,學生能夠更快入門CTF競賽,拓展了學生網絡安全相關知識的深度和廣度,對應競賽獲獎也更多。改革前,2023年藍橋杯網絡安全賽省賽獲獎8人,進入國賽1人;改革后,2024年藍橋杯網絡安全省賽獲獎增長至13人,進入國賽2人。
4 總結
實踐證明,將CTF形式引入Web滲透測試課程的教學模式是可行的,通過搭建CTF形式的實驗平臺,改革實驗環境搭建、示例演示、課程考核、課外引入,嘗試解決學生學習容易放棄、競賽上手不易、動手能力不夠、興趣不強、考核方式不夠科學、課外知識引入不夠等問題,取得了很好的效果。
參考文獻:
[1] 豆利.基于CTF模式的網絡安全課程教學改革實踐研究[J].電腦知識與技術,2023,19(21):125-127.
[2] 曾煌存.CTF競賽融入網絡安全課程教學的研究[J].網絡安全技術與應用,2024(6):90-92.
[3] 洪寶惜.融合CTF模式的網絡安全防護課程教學實踐[J].電腦與電信,2023(3):94-97.
[4] 朱曉陽,桑林俐,廖章杰,等.基于Docker部署賽題的CTF競技仿真靶場設計與開發[J].信息與電腦(理論版),2022,34(17):17-19.
[5] 王濟昂,朱雨晨,馬越,等.基于Docker容器化部署的CTF線上靶場系統[J].電子技術與軟件工程,2021(7):210-212.
【通聯編輯:王 力】