十、DVWA靶场全通关-上

Web安全-实验环境介绍
  • DVWA介绍
    • Web应用程序(DVWA)是一个PHP/MYSQL Web应用程序。
    • 主要目标是帮助安全专业人员在合法环境中测试他们的技能和工具,帮助web开发人员更好理解保护web应用程序的过程,并帮助教师/学生在教师环境中教授/学习web应用程序安全性
    • 官网
  • DVWA实验环境操作
    • 默认情况下,DVWA系统登陆的用户admin,密码password
    • 点击登陆后的侧边栏切换不同的实验内容
  • DVWA参考文档
    • 在DVWA实验环境中,具有对DVWA的实验内容的参考文档
  • DVWA切换难度操作
    • DVWA环境中可以通过DVWA Security难度按钮,切换不同 的难度
Web安全-DVWA介绍
  • DVWA home介绍
    • DVWA目的是实践一些最常见的Web漏洞,具有各种各样的困难级别
    • DVWA还包括一个Web应用防火墙(WAF),PHPIDS,它可以在任何阶段启用,以进一步增加难度
    • 每个页面底部都有一个帮助按钮,可以查看该漏洞的提示。
    • 还有更多的链接用于进一步的背景阅读,这涉及到安全问题
    • 注意:不要上传您的主机提供商的公共HTML文件夹或任何面向Internet的服务器,以免收到损害。建议使用虚拟机,设置NAT联网模式。在客户及内部,可以下载和安装web服务器和数据库的XAMPP
    • More Training Resources
  • DVWA Instructions介绍
    • 下载
    • 安装
    • 配置
  • DVWA Set/Reset DB介绍
    • 什么情况下使用Create/Reset DB?
      • 当测试的操作改变程序数据库时,需要使用这个功能重置数据库
  • DVWA Security介绍
    • 什么情况下使用Security?
      • 当需要修改当前DVWA的级别时
      • 配置默认级别为Low(config/config.inc.php)
    • 启动PHPIDS(入侵检测系统)
  • DVWA Info介绍
  • DVWA Logout 介绍
    • 登出DVWA
Web安全-DVWA暴力破解(Low级别)
  • 暴力破解介绍
    • 原理:使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。理论上来说,只要字典足够庞大,枚举总是能够成功。
  • 暴力破解工具环境搭建
    • 安装Java运行环境
  • 暴力破解字典准备
    • 自己手写
    • 网上收集
  • 暴力破解工具使用
    • 登录DVWA
    • Brute Force的使用(暴破)
    • Burpsuite工具
      • 设置代理127.0.0.1:8080
      • 浏览器设置代理127.0.0.1:8080
      • 浏览器输入登录(这里我们不知道密码,随意输入)
      • burpsuite点击forward
      • 右键—>Send to Intruder
      • 点击Intruder
        • 点击Positions(这里的Attack type有多种模式,选择Sniper对应单一数据)
          • 点击Clear取消变量
          • 双击要破解的数据,点击add添加变量
        • 点击Payloads(选择攻击模块、字典)
          • Payload Sets可以选择Runtime file
          • 添加字典(字典文件命名不能有汉字字符)
        • 点击最上方的Intruder—>start attack
          • 因此,密码为password
    • Low级别源代码分析
Web安全-暴力破解(medium级别)
  • 切换级别(medium级别)

  • 点击Brute Force

  • 打开Burpsuite开启截包

  • Brute Force输入用户名和密码点击登录(这里暴破用户名和密码,所以两个都输入错误的)

  • 截到的包如下

  • 然后点击Action(或者右键),send to Intruder

  • Intruder的Positions

    • Attack type --> Cluster bomb
    • Clear$–清除变量
    • Add&–对要暴破的数据添加变量
  • Intruder的Payloads

  • 注意:Payload要一 一对应变量

    • 第一个变量为用户名,所以第一个Payload设置为用户名的Payload
  • 结果

  • medium级别源代码分析

Web安全-暴力破解(high级别)
  • 切换级别

  • 点击Brute Force

  • 截包,截到的包中多了一个user_token参数是不断变化的,因此上两种方法显然不可行

  • 将截取到的包send to sequencer进行anti-CSRF分析(截两次包分析比较)
    在这里插入图片描述

    • 第一个包token
      在这里插入图片描述

    • 第二个包token

  • 破解

    • 抓包——发送到intruder模块——Position设置password和user_token为变量,选择攻击模式为Pitchfork
    • Payload1——选择密码字典
    • Payload2设置为Recursive grep类型
    • option——Recursive grep类型只支持单线程,设置线程为1
    • option——Grep Extract
    • 按下图进行添加
    • option——Redirections勾选Always
      + 在Payload的Payload options
    • 点击start attack
Web安全-暴力破解(impossible级别)
  • 代码分析

    • 使用POST提交用户名和密码,更加安全,并对用户输入过滤处理(stripslashes,mysqli_real_escape_string)

      使用Anti-CSRF token防止无脑暴力破解

    • 设置登录失败次数,限制暴力破解,三次错误登录,用户被锁定15分钟

      使用PDO,防止SQL注入

  • 防止暴力破解措施

    1. 设置Anti-CSRF token,设置验证码
    2. 设置登录失败次数和锁定时间
    3. 过滤用户输入,防止SQL注入
Web安全-命令执行漏洞(Low级别)
  • 命令执行介绍

  • Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的

  • Windows cmd命令

    • 执行ping 127.0.0.1,正常测试本地网卡

    • 在命令后面添加了其他命令(分别实践,查看不同的执行效果)

      • ping 127.0.0.1 && ipconfig

      • ping 127.0.0.1 & ipconfig

      • ping 127.0.0.1 || ipconfig

      • ping 127.0.0.1 | ipconfig

      • ping 127.0.0.1 ; ipconfig

  • DVWA命令执行测试(Command Injection模块)

    • ​ 代码分析

    • PHP中"·"是作为连接符,由代码分析可以知道,需要两个命令执行,所以可以使用一下格式的命令进行执行:

      • 127.0.0.1 && ipconfig(乱码只是编码不同)
  • 使用Burpsuite来探测当前输入框是否存在命令执行(手工耗费量大)

    • Burpsuite抓包
    • 发送到Intruder,
      • Options设置包里的IP地址为变量
      • Payloads设置对应的字典文件,开始执行
        + 点击结果,Response–>Render,查看页面返回的情况
Web安全-命令执行漏洞(medium级别)
  • DVWA命令给执行测试

    • 使用Low级别可以的命令测试
      • 127.0.0.1 && ipconfig
      • 结果,显然是不可行
  • 代码分析
    在这里插入图片描述

  • 绕过黑名单

    • 使用&绕过黑名单(&不在黑名单中)
    • 127.0.0.1 & ipconfig
Web安全-命令执行漏洞(high级别)
  • 代码分析
    在这里插入图片描述

  • 绕过黑名单

    • 使用|绕过黑名单

      • 127.0.0.1 |ipconfig
  • 使用Burpsuite探测黑名单里有哪些字符

    • Burpsuite截包
    • send to Intruder
      • Options设置IP为变量
      • Payloads设置对应的字典
    • 开始执行
Web安全-命令执行漏洞(impossible级别)
  • 代码分析
  • 总结
    1. 过滤黑名单
    2. 替换、转义关键字
    3. 对于IP地址,可以使用"."为分界,将所有数字拆分到数组,单个判断是否为数字is_numeric()
Web安全-CSRF(Low级别)
  • CSRF 跨站伪造请求介绍

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

  • CSRF漏洞利用

    • 构造恶意链接(此链接是正常修改成功时的链接进行修改)
      • http://192.168.3.20/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#
      • 当用户在当前cookie没有过期时,点击该链接完成用户密码修改
      • 使用短链接伪装
        • http://dwz.cn/
  • CSRF漏洞高级利用

    • 构造恶意页面,使用img标签隐藏真实目的
    <img src="http://ip/dvwa/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#" border="0" style="display:none;" />
    
    <h1>
        404
    </h1>
    <h2>
      	file not found.
    </h2>
    
    • 注意:如果用户用A浏览器访问站点,又使用B浏览器访问恶意页面,不会触发漏洞
Web安全-CSRF(medium级别)
  • 代码分析

stripos()函数查找字符串在另以字符串中第一次出现的位置(不区分大小写),如果没有找到返回false

$_SERVER[‘HTTP_REFERER’]查询当前页的前一页的地址信息

$_SERVER[‘SERVER_NAME’]获取域名

  • CSRF漏洞利用

    • referer表示从哪一个页面请求过来
  • 攻击过程

    • 首先修改密码,burpsuite抓包

      ​ 可以看到多了一个referer值

    • 构造恶意链接,点击测试

      ​ 可以看到没起作用

    • 构造恶意页面,点击跳转,截包

    <h1>你已经获得了百万奖金,请点击领取......</h1>
    <a href="http://192.168.3.23/DVWA/vulnerabilities/csrf/?password_new=test&password_conf=test&Change=Change#" referer="no-referer-when-downgrade">
    	点击领取
    </a>
    
    • 效果图
    • 截包

      ​ 并没有referer值,手工添加一个
    • 放行,成功修改
Web安全-CSRF(high级别)
  • 代码分析

High级别的代码加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求

  • CSRF漏洞利用
    • 只有获取token才能进行CSRF,但是浏览器的跨域问题,不能直接获取,所以比较难以利用。但是如果服务器存在存储XSS可以来获取token。然后构造url和代码进行CSRF利用
    • 一般情况下,在CSRF中使用token,可以防御大部分CSRF利用
    • High级别的CSRF在DVWA存储XSS中将介绍如何利用
Web安全-CSRF(impossible级别)
  • 代码分析
  • 总结
    1. 为了防止CSRF,可以加入Anti-CSRF,每次向客户端发送一个随机数,当客户端向服务端发送数据时,比对随机数以此来确定客户端身份
    2. 获取当前用户密码,以此判断是否时当前用户的操作,而非CSRF攻击
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值