原本是像写一篇 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 版本
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