資安 網站安全

網站滲透資安課程學習筆記 (五)

蔡佳芸 Joy Tsai 2025/09/12 09:11:29
35

網站滲透資安課程學習筆記 (五)

主要內容:

1. 資訊安全的風險管理

2. 利用 DVWA 進行練習

 

駭客的成本

如果駭客想要竊取資料勒索金錢,甚至是要上暗網販賣資料的話,也需要評估入侵的效益成本。就是所謂的是否有CP值

不過現代的技術高強的駭客也沒那麼多了,因為當駭客入侵學習成本太高,透過社交工程用騙的真的比較快。

 

資訊安全的風險管理

資安要考量的,不只是技術層面的防護,是一個流程,包含「預防、偵測、應變、復原」等。

其中的「預防」,要點之一就是資產與風險盤點,而風險管理,又是什麼?

 

風險就是所有不確定因素,包含天災與人禍

「天災」如:地震、颱風、洪水、海嘯、火山爆發、停電等

像是機房的安全防護,火警SOP,地震時是否會被震毀,異地備份要在哪

重要的資料就連機房選址是否在地震帶都該列為評估項目

 

廠房/機房失火時,該救嗎?

應該以人員安全為第一,撤離現場

 

確定火警發生時啟動火警應對程序,如果處理不了就就逃命

若沒有異地備份造成損失,那就是業主自身問題

 

可主張「緊急避險」原則,

根據台灣《職業安全衛生法》第 6 條,雇主有責任提供安全的工作環境,包含防火設施、緊急逃生通道、演練等。

民法第 149 條:「因避免自己或他人生命、身體、自由、財產上之急迫危難,而不得已之行為,不負賠償責任。」

刑法第 24 條也有相同精神:「因避免自己或他人之生命、身體、自由或財產上之現在之危難,而不得已所為之行為,不罰。」

 

「人禍」由人為行為、管理疏失或惡意攻擊造成的事件,如:社交工程、管理失誤、惡意行為

 

 

DVWA:Damn Vulnerable Web Application

DVWA 是什麼?

它是一個故意設計得非常不安全的 PHP/MySQL 網站。讓資安研究人員、學生、開發者 練習與測試 Web 資安漏洞。

DVWA共有十個模組,分別是 :

- Brute Force(暴力破解)
- Command Injection(命令注入)
- CSRF(跨站請求偽造)
- File Inclusion(檔案包含)
- File Upload(檔案上傳)
- Insecure CAPTCHA(不安全的驗證碼)
- SQL Injection(SQL注入)
- SQL Injection(Blind)(SQL盲注)
- XSS(Reflected)(反射型跨站腳本)
- XSS(Stored)(儲存型跨站腳本)

 

DVWA 如何啟用?

在 網站滲透資安課程學習筆記 (三)中有提到安裝VM以及靶機

啟動 Kali Linux,可以在 kali 裡面直接架設,前往 https://github.com/digininja/DVWA 

網路上有很多教學文章這邊就不多做介紹,

練習是裝到靶機 metasploitable之後,連到靶機 ip

將強度改為  low 來練習

 

練習一 CSRF(Cross-Site Request Forgery,跨站請求偽造)

CSRF 是? 

利用「使用者已經登入網站」的身分,強迫使用者在不知情的情況下發送請求,去執行某些動作。

- 攻擊者不能直接偷到密碼或 Cookie(那是 XSS 的領域)。

- 攻擊者利用的是「使用者已經登入」+「網站對請求沒有驗證真偽」。

 

在 low 級別中,是沒有任何驗證。點擊 CSRF 然後修改密碼,

有修改成功,並會發現網址變成如下。

http://123.123.123.1/DVWA/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change

意思是只要有人點擊後,只要他是已登入狀態就可以將密碼改成123456

實際上駭客會透過各種方式隱藏,隱藏在網頁裡,甚至利用短網址、轉址工具方法等,讓使用者點擊/被強迫點擊

 

 

練習二 XSS(Reflected)

在 網站滲透資安課程學習筆記 (四)篇中有介紹到,利用 input 注入 script

submit 之後就會跳出 alert 訊息。XSS stored 也是相同概念

 

練習三 SQL Injection (Blind)

1. 輸入以下,可知道存在 SQL Injection 漏洞

製造一個「永遠為真」的條件,繞過驗證

1’or 1’=’1

 

2. 輸入以下,拿到目前 DVWA 正在使用的資料庫名稱

1' and 1=1 union select 1, database()#

 

3. 輸入以下,可得到目前資料庫中有哪些資料表

1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

 

4. 拿到整個 users 表的帳號與密碼清單

1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

5. 破解密碼,可利用 John the Ripper 破解 

但因為這網站提供的都是常見密碼,所以把 admin 的試丟給 ai 破解,也不用幾秒

 

還有不同題目可以練習,把一開始調整的難度提高也是不同解法,有興趣可以試試,也有很多教學文

 

蔡佳芸 Joy Tsai