原本是像寫一篇 SELinux 的文章的。而我寫總結文章的時候,總會去想原因是什么,為什么會有這種需求。而我發覺 SELinux 的需求是編程人員的神奇代碼或者維護者的腦袋短路而造成系統容易被攻擊。就想找個充滿漏洞的系統來證明 SELinux 的必要性。就找到了 DVWA 。因為它存在很多方面的漏洞,而且還有不同級別的攻擊方式,覺得還挺好玩的。。。所以就不如開發一遍新大陸,把攻防兩端的手段也記錄一下。
DVWA 介紹
DVWA 就是個充滿漏洞的系統, 全稱是 Damn Vulnerable Web Application(該死的充滿漏洞的網絡應用),漏洞大體有這么幾個:
- Brute Force(暴力(破解))
- Command Injection(命令行注入)
- CSRF(跨站請求偽造)
- File Inclusion(文件包含)
- File Upload(文件上傳)
- Insecure CAPTCHA(不安全的驗證碼)
- SQL Injection(SQL注入)
- SQL Injection(Blind)(SQL盲注)
- XSS(Reflected)(反射型跨站腳本)
- XSS(Stored)(存儲型跨站腳本)
而且還有級別的
- 低級:這安全級別非常容易受到攻擊,毫無安全措施可言。它的作用是,用錯誤的編碼讓 Web應用程序的漏洞表現出來,並作為教授或者學習基本開發技術的平台。
- 中級:這個級別,開發人員會嘗試保護但是失敗。。。主要是提供一些不良代碼實踐(反模式)。它還對用戶提出挑戰,以改進他們的開發技術。
- 高級:這選項是中級難度的擴展,會混用更難攻擊的代碼或者替換不良代碼來嘗試保護。該漏洞可能不允許相同程度的利用(exploitation),類似於各種 Capture The Flags(CTFs)競賽。
- 不可能。這個級別應該可以抵御所有漏洞。這是用來將有漏洞的代碼和安全性代碼做對比的。
看完這些介紹是否覺得有點像玩電子游戲,有不同級別的挑戰,有各種的成就。
安裝
以前安裝覺得還是有點麻煩的,我之前也沒怎么寫過 php。。。感謝大殺器 docker。
# 因為 80 端口我給了本機的 ngnix
docker run --rm -it -p 5678:80 vulnerables/web-dvwa
而進入到 docker 里面可以這樣。 先用獲取容器的 id
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
56e69b5b67b6 vulnerables/web-dvwa "/main.sh" 26 hours ago Up 26 hours 0.0.0.0:5678->80/tcp
再進入
sudo docker exec -it 56e69b5b67b6 bash
來看看它默認的環境 查看發行版
cat /etc/issue
Debian GNU/Linux 9
你看得沒錯,root 用戶進程 再根據 Debian 的 SELinux 設置
check-selinux-installation
bash: check-selinux-installation: command not found
應該是沒有安裝 SELinux的。
看下 php 版本
打開網頁看看,我的地址是 192.168.0.110
KaliLinux
對了說起網絡安全, 想起了一個專門給滲透用的 Linux 發行版 KaliLinux ,預裝了很多滲透用的的工具(有些工具還挺難裝的),之后會用到的。而我選擇用虛擬機,或許官方也知道很多人用虛擬機吧,官方專門有虛擬機的鏡像文件下載(密碼默認是 toor)
DVWA 系列的目錄(已完結)
- 暴力破解 Brute Froce
- 命令行注入 Command Injection
- CSRF 攻擊 Cross Site Request Forgery
- 文件包含 File Inclusion
- 文件上傳漏洞 File Upload
- 不安全的驗證碼 Insecure CAPTCHA
- weak sessionId
- SQL注入 SQL Injection
- SQL 盲注 SQL Injection Blind
- 反射型 XSS 攻擊
- 存儲型 XSS 攻擊 Stored Cross Site Scripting
- DOM型 XSS 攻擊 DOM Based Cross Site Scripting
- js 攻擊 JavaScript Attacks
- 繞過內容安全策略 Content Security Policy (CSP) Bypass