四、 程式安全之學習平台的開發
4.3.1 Exercise Driver 及War Game Driver的功能架構
在這個系統中,有二個核心的功能:Exercise Driver 及 War Game Driver,在下面我們將介紹這 2 個 Drivers 的功能。
Exercise Driver 可將使用者上傳的可單獨執行之功能單元,所包含的多 支程式以及資料庫所需的 Table Scripts & Table Data,可快速、簡單及盡可 能不修改原始碼的情況下,部署到 Application Server 及 Database Server。
讓這個功能單元成為系統的一個 Exercise,而在此分享及解決方案共創的過 程中,達到使用者安全知識及安全技術的實質累積,Exercise Driver 的功能 架構請參閱圖 7。
圖 7:Exercise Driver 的功能架構
War Game Driver 可將 Bug Tracking System 在 Web2.0 運作機制下,所 快速與廣泛累積的功能單元,在加入關卡所需的提示及過關條件的物件 下,可自動轉換成適合 War Game System 的關卡。提示物件是針對此關卡 所含程式安全弱點的相關說明,以協助使用者在學習關卡的破解過程中,
能了解此弱點的相關知識,在破解關卡後,達到提升程式安全能力;在過 關條作物作中,War Game Driver 會針對不同程式安全弱點,以不同方式加 入過關條件,例如:針對 SQL Injection 的弱點,系統將會對此關卡用到的 Database 插入一筆含有 Secret Key 資料的 Record,只要使用者能透過這個 弱點,取得非授權的 Data 時,則將得到這個 Secret Key,而完成關卡。War Game Driver 的功能架構,請參閱圖 8。
資料庫 Exercise Driver
User
功能單元
。pubinfo.cs
。searchPubinfo1.aspx
。searchPubinfo1.aspx.cs
。searchPubinfo.xsl
Bug Tracking System
。pubinfo_DBscript.sql 。pubinfo_DBscript.sql
。pubinfo DBdata txt 。pubinfo_DBdata.txt
功能單元轉換成關卡 意事項,在這個範例中,我們將上傳一個內含 SQL Injection 的功能單 元(出版書籍的查詢功能),相關資料包括 4 支程式以及 1 個 DB Create
War Game Driver User
圖 9:Bug Tracking 中 View & Download 網頁
圖 10:Bug Tracking 中 Upload 網頁
圖 11:上傳作業完成後,系統顯示該次執行的詳解結果
圖 12:上傳完成,在 View & Download 頁面可看到新的功能單元
圖 13:功能單元的詳細內容
4.4 PL-SWAP War Game 系統
在 PL-SWAP 已開發完成的 War Game 系統中,我們已將 2007 年 OWASP 公佈的十大 Web 安全漏洞中,直接與程式碼安全品質有關,且該 組織認為[必要]及[建議]檢測修補的弱點,製作成相關的練習關卡,弱點類 型包括有 1) 跨站腳本攻擊(Cross Site Scripting,XSS)、2)注入缺失(Injection Flaw) 以及 3)不安全的物件參考(Insecure Direct Object Reference)[3]。
這系統開發的目的,除了讓開發人員,能在不觸法的情況下,有一個 訓練學習 Web 程式安全的實戰平台,讓使用者在學習關卡的破解過程中,
提升程式安全能力。另外在 War Game 關卡的設計方式上,融入了駭客攻 擊的手法,讓開發人員更能真實體驗 Web 程式安全弱點的攻擊。
4.4.1
關卡的設計方式在 Stored XSS-駭客攻擊示意圖中(圖 14),呈現了該弱點遭受攻擊的最 大 Scope,若是將 Application1 和 Application2 視為同一個 Application 時,
就是我們最常見及最常討論的 Scope。但是不管 Scope 的大小,Stored XSS 弱點的攻擊必定包含了三個角色:攻擊者、受害者及內含 XSS 弱點的 Application。以 Stored XSS 關卡為例,我們在設計中加入了圖 14 中呈現的 Scenario。
Application1 Input Form 輸入含有惡意程式的資料 攻擊者
2. Application1 未對使用 者輸入的資料做驗證,即存
3. Application2 未對從 資料庫讀取出的資料做驗 證,即呈現在網頁上
受害者 4. 受害者點閱該筆內
含惡意程式的資料
意的程式即存入應用程式後端的資料庫(圖 16)。
3. 存入資料庫的這段 script 含義是,任何執行此惡意程式的受害者,其個 人的 Cookie 資訊將在無法查覺的情況下,透過其瀏覽器,自動送到遠 端的駭客程式(malicious.aspx),此程式在接受到 Cookie 時,隨即將資 料儲存到檔案中)(圖 17)。
4. 系統未對從資料庫讀取出的資料做安全驗證,即呈現在網頁上(圖 18)。
5. 關卡中提供了受害者機制,如此讓攻擊模式的三個角色可明確區分出 來;我們透過此受害者機制,可真實模擬 user 及 admin 點閱該筆資料 的情況(圖 19)。
6. 攻擊者成功竊取 admin 的 cookie 資訊(圖 20)。
7. 攻擊者在竊取 admin cookie 資訊後,很容易的即可偽造 admin 的 Cookie
(圖 21),達到假冒 admin 的身份進入該網站(圖 22)。
所以要通過本關卡,只要成功竊取到,系統預先藏在 admin cookie 中的通關 Secret Key(通關所需的相關資訊)即可。
圖 15:提供新增的功能,可將資料發表到網站上
圖 16:在 Input Form 輸入含有惡意程式的資料
圖 17:遠端惡意程式的原始碼:可將接收到的 Cookie 存入檔案
圖 18:含有惡意程式的資料在網頁呈現供使用者點閱
圖 19:模擬 Stored XSS 受害者角色的機制
SQL_auth=user;
SQL_sid=LtQ6NjPhMFbxISxIde9ybCpApzSHRSG8eoImbm3FrM dnTtII1qnvCTtQM90y23ZKic;
(*** 7th:_GameCheckPoint=http://whchang.itri.org.tw/
WebVulnerability/XSS/StoredXSSTarget.aspx ***) SQL_auth=admin;
SQL_sid=Imbm3FrMdnTtIILtQ6NjPhMFbxISxSG8eo1qIde9ybCp ApzM90y23ZKicSHRnvCTtQ;
(*** 7th:_GameCheckPoint=http://whchang.itri.org.t w/WebVulnerability/XSS/StoredXSSTarget.aspx ***)
圖 20:攻擊者從受害者竊取到 Cookie 的實際內容
圖 21:攻擊者很容易的即可偽造受害者的 Cookie
4.4.3
以線上網站做 Stored XSS 弱點攻擊的實例我們將關卡設計的 Scenario,針對線上網站做一次實際攻擊演練,以說 明這 Scenario 即是駭客實際的攻擊手法之一,讓開發人員達到知己知彼的 境界,而能更容易且有效的防範駭客攻擊。在未獲得允許的情況下,即對 某一個網站做 Web 弱點攻擊或測試,是一種非法的行為,請勿任意嘗試。
我們接下來針對某一個財團法人企業內部的一個已上線的網站,所做 實際攻擊的過程,是以協助該網站做安全測試為前提,在獲得該網站開發 人員的允許以及監督下執行的。
1. 以自己的帳號(920333)登入該網站,在個人設定功能,可看到自己個人 的資料以及所屬的權限等級(零顆星:會員一級)(圖 23)。
2. 在網站內的公開討論區,發表一篇內含惡意程式的文章(圖 24)。
3. 在點選送出按鈕後,此篇文章即被公佈在網站上,提供任何使用者點 閱(圖 25)。
4. 當網站的管理者點閱這篇文章時(以社交工程學的知識,讓管理者來 點閱這篇文章),管理者在不知情的情況下,瀏覽器即執行了那段惡 意程式,並將管理者個人的 Cookie 資訊,傳送到我們在遠端的程式 (malicious.aspx),並將該 Cookie 儲存在檔案中(圖 26)。
5. 在拿到這些資訊時,我們只要寫幾行簡單的程式,即可偽造管理者的 cookie,達到假冒管理者的身份進入網站(圖 27)。
6. 當我們成功假冒管理者的身份進入網站後,在個人設定功能,看到的 將是管理者的資料以及在這個網站的權限等級(五顆星:管理者)(圖 28),到此,整個網站的命運,以及所有會員個人資訊就完全掌握在 我們手裡了(圖 29)。
圖 23:以自己的帳號登入,將顯示自己的個人資料及權限等級
圖 25:含有惡意程式的文章被呈現在網站上供其他使用者點閱
PHPSESSID=37dvsmh9hg98pdg7i8vkif5g52;
Itribbs_itri_org_tw_newbb2_LV=1215623237
Itribbs_itri_org_tw_newbb2_LT=1094l1215623237
圖 26:管理者被竊取 Cookie 中的資訊內容
圖 27:駭客偽造管理者的 Cookie 資訊並進入該網站
圖 28:駭客假冒管理員身份成功登入該網站,權限等級顯示為管理員
圖 29:駭客取得整個網站主控權以及所有會員的個人資訊
4.5 WebGoat 與 PL-SWAP 的比較與探討
OWASP 的WebGoat 與 PL-SWAP 都是 Web 程式弱點學習平台。但是 WebGoat 的全貌就是一個 War Game 系統,而目前此計畫是由 12 位以上的 參與人員所共同執行;而 PL-SWAP 的全貌是 War Game 系統以及 Bug Tracking 系統(圖 30)。
在 WebGoat 以及 PL-SWAP 的 War Game 中,每一個關卡的設計,都是 內含一個 Web 程式弱點,讓使用者能在不觸法的情況下,有一個訓練學習 Web 程式安全的實戰平台,並從中學習程式弱點的知識。但在 PL-SWAP War Game 的關卡設計方式中,我們更融入了駭客實際攻擊的手法,將讓使用者 在完成每一個關卡後,更確實達到提升程式安全能力的目的。
另外透過 PL-SWAP Bug Tracking 系統的運作機制,使用者可以分享功 能單元(問題或是解決方案)、更可以達到與他人共同創作與技術的交流,
以實質累積安全知識及技術;對 PL-SWAP 平台而言,則可以借此達到快速 及廣泛累積 War Game 關卡的題目。
WebGoat
War Game 系統
PL-SWAP
War Game 系統
Bug Tracking 系統 新的關卡設計,在學習關
卡的破解過程中,提升程 式安全能力
War Game Driver
Exercise Driver
績效考核 出題系統
在功能單元分享及 解決方案共創的過 程中,實質累 Users
自動轉換 Users
在玩中學的過程中,
學習相關知識
圖 30:WebGoat 與 PL-SWAP 平台的架構
五、 結論與未來研究方向
5.1 結論
在這篇論文中,我們拿掃描工具對 Web 程式做實際測試,產出各工具 的效能評估報告,以解決目前具參考性價值的資料缺乏的情況。
另外我們實作了包含 War Game 及 Bug Tracking 系統的 PL-SWAP 平 台。在 War Game 系統,我們將駭客攻擊的手法融入在關卡中,改善 WebGoat 在關卡設計方法上的不足,以確實達到通關者能提升安全方面的知識及安 全危害的意識;在 Bug Tracking 系統,我們以 Function Unit 為基礎,提供 使用者分享與共同創作的環境,達到有效的知識學習及技術交流。而在 Bug Tracking 這個運作機制下,PL-SWAP 平台也將達到快速及廣泛累積用於 War Game 關卡的題目。
5.2 未來研究方向
在平台的實作上,仍有可以加強改善的部份:這個系統是 Open 的,所 以將接受各種開發人員的習慣、手法所開發出來的功能單元,要讓功能單 元順利部署且正常執行,則功能單元中各原始碼的版本及 namespace 的控管 是非常重要的,目前是以規範使用者的方式達到控管。針對此問題,可以 使用別的方法來實作,例如:系統直接修改功能單元中的 source code,以 解決該問題。
在平台的加值應用上:PL-SWAP 是一個獨立且有完整功能的應用程 式,但是若我們以應用程式整合的角度觀察它,也許我們可以將它與測驗 系統做整合:以 PL-SWAP 擔任題庫及出題系統的角色,搭配一個前端測驗 系統,將成為一個學習 Web 應用程式安全的測驗系統。
參考文獻
[1] G.A. Di Lucca, A.R. Fasolino, M. Mastoianni, P. Tramontana, Identifying cross site scripting vulnerabilities in Web applications, Proceedings, Sixth IEEE International Workshop on Web Site Evolution, WSE 2004, pp. 71–80, Sept 2004.
[2] OWASP, WebGoat Project,
http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project, August 2008.
[3] OWASP Taiwan, 最新 2007 年OWASP十大Web資安漏洞, http://www.owasp.org/index.php/Taiwan, July 2008.
[4] OWASP Taiwan BLOG, OWASP不只提供Guide與Top 10, http://owasp.org.tw/blog, May 2007.
[5] P. Neff, Web Application Security,
[5] P. Neff, Web Application Security,