前言

Damn Vulnerable Web Application (DVWA) 是一个用来进行web漏洞模拟的 PHP/MySQL 应用,一共有列举了 10 种web安全漏洞,4 种安全等级。

Damn Vulnerable Web Application (DVWA)(译注:可以直译为:”该死的”不安全Web应用程序),是一个编码差的、易受攻击的 PHP/MySQL Web应用程序。 它的主要目的是帮助信息安全专业人员在合法的环境中,练习技能和测试工具,帮助 Web 开发人员更好地了解如何加强 Web 应用程序的安全性,并帮助学生和教师在可控的教学环境中了解和学习 Web 安全技术。

下载安装DVWA

官网:http://www.dvwa.co.uk/

直接下载:https://codeload.github.com/ethicalhack3r/DVWA/zip/master
下载完成后,将DVWA目录放到www目录下,然后修改数据库配置DVWA/config/config.inc.php

然后在页面上打开setup.php文件,点击创建数据库

跳转到login.php后

基本介绍

  1. 默认的用户名 admin,密码 password
  2. 可以到security.php设置不同等级的防护级别,其中Impossible级表示不存在漏洞,无法攻击,可以通过左下角看到当前的防护等级
  3. 右下角的 “View Source” 可以看到当前防护等级的源代码,“View Help”可以查看漏洞介绍和攻击方法

常见的Web攻击手段

一、暴力破解

暴力破解是根据常用的字典,不断的去试,最终猜出用户的账号和密码,可以通过根据实现自动化

爆破工具 Hydra

Hydra是一款网络登录破解工具,可以通过暴力破解方式来猜解用户名和密码,从而获取系统的访问权限。它可以支持多种协议,如FTP、SSH、Telnet、SMTP等,而且还可以通过自定义模块来支持其他的协议。Hydra是一个非常强大的工具,但是需要谨慎使用,因为它可能会对目标系统造成不必要的影响。

Hydra的优点- 支持多种协议:Hydra支持多种常见的协议,包括HTTP、FTP、SMTP、POP3等,可以用于测试各种不同的网络服务。

  • 高效快速:Hydra采用多线程技术,可以同时进行多个连接和尝试,从而提高破解的效率和速度。
  • 灵活性强:Hydra提供了多种选项和参数,可以根据需要进行自定义配置,适用于不同的测试需求。

安装Hydra

  • 安装Hydra
    1. 在Linux系统中使用以下命令进行安装:sudo apt-get install hydra
    2. 在macOS系统中使用Homebrew进行安装:brew install hydra
    3. 在Windows系统中,可以使用Cygwin进行安装:apt-cyg install hydra

常用参数

-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”漏洞是一种常见的安全问题,攻击者可以通过它在服务器上执行任意命令

以下是几种可能的攻击方式:

  1. 基本命令注入:如果应用程序没有正确地处理用户输入,攻击者可以在输入中添加额外的命令。例如,如果应用程序允许用户输入一个IP地址来ping,攻击者可以输入”127.0.0.1; ls”,这将先执行ping命令,然后执行ls命令。
  2. 利用管道:攻击者可以使用管道(|)来执行多个命令。例如,输入”127.0.0.1 | ls”,这将先执行ping命令,然后执行ls命令。
  3. 利用逻辑运算符:攻击者可以使用逻辑运算符(&&, ||)来执行多个命令。例如,输入”127.0.0.1 && ls”或”127.0.0.1 || ls”。
  4. 利用命令分隔符:攻击者可以使用命令分隔符(;)来执行多个命令。例如,输入”127.0.0.1; ls”。
  5. 利用子命令:攻击者可以使用子命令()来执行命令。例如,输入
    127.0.0.1; `ls`

防止命令注入的最佳实践是永远不要信任用户输入,总是对用户输入进行适当的验证和清理。如果可能,避免在服务器上执行用户输入的命令。如果必须执行,应使用白名单或其他限制来限制可执行的命令。

三、跨站脚本 XSS

四、跨站请求伪造 CSRF

五、文件上传

六、不安全的验证码

七、SQL注入

八、SQL盲注

九、弱session ID

其他

相关文章:

https://websec.readthedocs.io/zh/latest/vuln/sql/classify.html

https://github.com/digininja/DVWA/blob/master/README.zh.md