DVWA-web通用型漏洞

1.Brute Force

原理

利用密码字典,一个个枚举用户名、密码来完成登录

防范

  1. 增加密码的复杂程度
  2. 增加登录验证码
  3. 限制输入错误密码的次数

2.Command Injection

原理

在Web应用中,有时候会用到一些命令执行的函数,如php中system、exec、shell_exec等,当对用户输入的命令没有进行限制或者过滤不严导致用户可以执行任意命令时,就会造成命令执行漏洞。

利用

3.File Inclusion

原理

如果允许客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式。

涉及的主要函数

include、require

include:当代码执行到它的时候才加载文件,发生错误的时候只是给一个警告,然后继续往下执行

require:只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行

include_once、require_once

include_once:与 include 相同,若文件中代码已被包含则不会再次包含

require_once:与 require 相同,若文件中代码已被包含则不会再次包含

利用

本地包含

包含读出目标机上其它文件

远程包含

如果目标主机的allow_url_fopen和allow_url_include为On,就可以有更大的利用空间,可以指定其它 URL上的一个包含PHP代码的webshell来直接运行

4.File Upload

什么是文件上传漏洞

当文件上传时,如果服务端的脚本语言没有对上传的文件进行检查和过滤,那假如,渗透者直接上传恶意代码文件,那么就有可能直接控制整个网站,或者说以此为跳板,直接拿下服务器,这就是文件上传漏洞。

文件上传漏洞的防御及绕过

  1. 前端限制
  2. 检查拓展名
    • 黑名单检测
    • 白名单检测
  3. 检查 HTTP Header 中的 Content-Type
  4. 分析文件头内容来检查文件类型
  5. 限制Web Server对于特定类型文件的行为

绕过技巧:http://www.7ten7.top/2018/12/15/upload-labs_writeup/

5.SQL Injection

原理

通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

sql注入带来的威胁

  • 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
  • 绕过认证,列如绕过验证登录网站后台。
  • 注入可以借助数据库的存储过程进行提权等操作

注入示例

DVWA-LOW Write up



6.SQL Injection (Blind)

利用

页面没有显示位,没有输出SQL语句执行错误信息,只能通过页面返回正常不正常来判断是否存在注入

常用函数

  • length() 返回字符串的长度
  • substr() 截取字符串
  • ascii() 返回字符串的ASCII码

布尔盲注利用过程

  1. 判断是整型还是字符型
  2. 获取数据库的个数
  3. 判断第一个数据库名有多少个字符
  4. 判断第一个数据库的第一个字符
  5. 判断数据表同数据库
  6. 判断字段同数据库

7.XSS

XSS是跨站脚本攻击的缩写,是一种网站应用程序的安全漏洞攻击,是代码注入的一种。

Reflected

通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。
参考:https://yq.aliyun.com/articles/480157

Stored

恶意脚本代码被存储进被攻击的数据库,当其他用户正常浏览网页时,站点从数据库中读取了非法用户存入非法数据,恶意脚本代码被执行。这种攻击类型通常在留言板等地方出现。

DOM

基于DOM的XSS,通过对具体DOM代码进行分析,根据实际情况构造dom节点进行XSS跨站脚本攻击。

注:domxss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的。dom-based与非dom-based,反射和存储是两个不同的分类标准。

8.CSRF

原理

跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。

利用

构造攻击页面:

1
2
3
4
5
6
7
8
9
10
<html>
<head></head>
<body>
<img src="http://127.0.0.1/DVWA-master/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#" border="0" style="display:none;"/>

<h1>404</h1>

<h2>file not found.</h2>
</body>
</html>

当访问该页面时,密码就被改为了 hack