前言
Damn Vulnerable Web Application (DVWA) 是一个用来进行web漏洞模拟的 PHP/MySQL 应用,一共有列举了 10 种web安全漏洞,4 种安全等级。
Damn Vulnerable Web Application (DVWA)(译注:可以直译为:”该死的”不安全Web应用程序),是一个编码差的、易受攻击的 PHP/MySQL Web应用程序。 它的主要目的是帮助信息安全专业人员在合法的环境中,练习技能和测试工具,帮助 Web 开发人员更好地了解如何加强 Web 应用程序的安全性,并帮助学生和教师在可控的教学环境中了解和学习 Web 安全技术。
下载安装DVWA
直接下载:https://codeload.github.com/ethicalhack3r/DVWA/zip/master
下载完成后,将DVWA目录放到www目录下,然后修改数据库配置DVWA/config/config.inc.php
然后在页面上打开setup.php文件,点击创建数据库
跳转到login.php后
基本介绍
- 默认的用户名 admin,密码 password
- 可以到security.php设置不同等级的防护级别,其中Impossible级表示不存在漏洞,无法攻击,可以通过左下角看到当前的防护等级
- 右下角的 “View Source” 可以看到当前防护等级的源代码,“View Help”可以查看漏洞介绍和攻击方法
常见的Web攻击手段
一、暴力破解
暴力破解是根据常用的字典,不断的去试,最终猜出用户的账号和密码,可以通过根据实现自动化
爆破工具 Hydra
Hydra是一款网络登录破解工具,可以通过暴力破解方式来猜解用户名和密码,从而获取系统的访问权限。它可以支持多种协议,如FTP、SSH、Telnet、SMTP等,而且还可以通过自定义模块来支持其他的协议。Hydra是一个非常强大的工具,但是需要谨慎使用,因为它可能会对目标系统造成不必要的影响。
Hydra的优点- 支持多种协议:Hydra支持多种常见的协议,包括HTTP、FTP、SMTP、POP3等,可以用于测试各种不同的网络服务。
- 高效快速:Hydra采用多线程技术,可以同时进行多个连接和尝试,从而提高破解的效率和速度。
- 灵活性强:Hydra提供了多种选项和参数,可以根据需要进行自定义配置,适用于不同的测试需求。
安装Hydra
- 安装Hydra
- 在Linux系统中使用以下命令进行安装:
sudo apt-get install hydra
- 在macOS系统中使用Homebrew进行安装:
brew install hydra
- 在Windows系统中,可以使用Cygwin进行安装:
apt-cyg install hydra
- 在Linux系统中使用以下命令进行安装:
常用参数
-l:指定用户名
-P:指定密码字典文件路径
-t:指定线程数
-vV:显示详细输出信息
# 例子
# 新建文件 user.txt 和 password.txt,用于存放账号和密码
# ssh
hydra -L user.txt -P password.txt -t 2 -vV -e ns IP地址 ssh
# HTTP
# get方式提交,破解web登录:
hydra -L 用户名字典 -P 密码字典 -t 线程 -v -e ns IP地址 http-get /admin/
hydra -L 用户名字典 -P 密码字典 -t 线程 -v -e ns -f IP地址 http-get /admin/index.php
# post方式提交,破解web登录:
hydra -f -l 用户名 -P 密码字典 -V -s 9900 IP地址 http-post-form "/admin/index.php?action=login:user=USER&pw=PASS:"
#/index.php …这个是登录的 url
#后门是POST的数据 其中的用户名密码使用 USER PASS 来代替
# 破解https
hydra -m /index.php -l 用户名 -P 密码字典.txt IP地址 https
二、命令注入
“Command Injection”漏洞是一种常见的安全问题,攻击者可以通过它在服务器上执行任意命令
以下是几种可能的攻击方式:
- 基本命令注入:如果应用程序没有正确地处理用户输入,攻击者可以在输入中添加额外的命令。例如,如果应用程序允许用户输入一个IP地址来ping,攻击者可以输入”127.0.0.1; ls”,这将先执行ping命令,然后执行ls命令。
- 利用管道:攻击者可以使用管道(|)来执行多个命令。例如,输入”127.0.0.1 | ls”,这将先执行ping命令,然后执行ls命令。
- 利用逻辑运算符:攻击者可以使用逻辑运算符(&&, ||)来执行多个命令。例如,输入”127.0.0.1 && ls”或”127.0.0.1 || ls”。
- 利用命令分隔符:攻击者可以使用命令分隔符(;)来执行多个命令。例如,输入”127.0.0.1; ls”。
- 利用子命令:攻击者可以使用子命令()来执行命令。例如,输入
127.0.0.1; `ls`
防止命令注入的最佳实践是永远不要信任用户输入,总是对用户输入进行适当的验证和清理。如果可能,避免在服务器上执行用户输入的命令。如果必须执行,应使用白名单或其他限制来限制可执行的命令。
三、跨站脚本 XSS
四、跨站请求伪造 CSRF
五、文件上传
六、不安全的验证码
七、SQL注入
八、SQL盲注
九、弱session ID
其他
相关文章:
https://websec.readthedocs.io/zh/latest/vuln/sql/classify.html